diff options
author | Jason Gross <jgross@mit.edu> | 2017-06-26 00:34:03 -0400 |
---|---|---|
committer | Jason Gross <jasongross9@gmail.com> | 2017-06-26 10:02:10 -0400 |
commit | 689bd71a2a5afd5ce652ff123252f163f5047b74 (patch) | |
tree | b0743697e6daacd38ff9e45274910d880306b04d /src/Arithmetic/MontgomeryReduction | |
parent | b259663f37d8cf05ad247c1fe3232b08f6e09e8b (diff) |
Add nonzero synthesis
Diffstat (limited to 'src/Arithmetic/MontgomeryReduction')
-rw-r--r-- | src/Arithmetic/MontgomeryReduction/WordByWord/Definition.v | 6 | ||||
-rw-r--r-- | src/Arithmetic/MontgomeryReduction/WordByWord/Proofs.v | 8 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/Arithmetic/MontgomeryReduction/WordByWord/Definition.v b/src/Arithmetic/MontgomeryReduction/WordByWord/Definition.v index 3959fb4f5..d1221d006 100644 --- a/src/Arithmetic/MontgomeryReduction/WordByWord/Definition.v +++ b/src/Arithmetic/MontgomeryReduction/WordByWord/Definition.v @@ -97,6 +97,10 @@ Section WordByWordMontgomery. := sub_cps zero A rest. Definition opp (A : T R_numlimbs) : T R_numlimbs := opp_cps A id. + Definition nonzero_cps (A : T R_numlimbs) {cpsT} (f : Z -> cpsT) : cpsT + := @nonzero_cps R_numlimbs A cpsT f. + Definition nonzero (A : T R_numlimbs) : Z + := nonzero_cps A id. End WordByWordMontgomery. -Hint Opaque redc pre_redc redc_body redc_loop add sub opp : uncps. +Hint Opaque redc pre_redc redc_body redc_loop add sub opp nonzero : uncps. diff --git a/src/Arithmetic/MontgomeryReduction/WordByWord/Proofs.v b/src/Arithmetic/MontgomeryReduction/WordByWord/Proofs.v index a053e8106..f36f55a0f 100644 --- a/src/Arithmetic/MontgomeryReduction/WordByWord/Proofs.v +++ b/src/Arithmetic/MontgomeryReduction/WordByWord/Proofs.v @@ -316,6 +316,14 @@ Section WordByWordMontgomery. Lemma eval_opp_mod_N : eval opp mod eval N = (-eval Av) mod eval N. Proof. t. Qed. End add_sub. + + Section nonzero. + Lemma nonzero_cps_id Av {cpsT} f : @nonzero_cps R_numlimbs Av cpsT f = f (@nonzero R_numlimbs Av). + Proof. unfold nonzero, nonzero_cps; autorewrite with uncps; reflexivity. Qed. + + Lemma eval_nonzero Av : small Av -> @nonzero R_numlimbs Av = 0 <-> eval Av = 0. + Proof. apply eval_nonzero. Qed. + End nonzero. End WordByWordMontgomery. Hint Rewrite redc_body_cps_id redc_loop_cps_id pre_redc_cps_id redc_cps_id add_cps_id sub_cps_id opp_cps_id : uncps. |