aboutsummaryrefslogtreecommitdiff
path: root/src/Specific/GF1305.v
diff options
context:
space:
mode:
Diffstat (limited to 'src/Specific/GF1305.v')
-rw-r--r--src/Specific/GF1305.v37
1 files changed, 29 insertions, 8 deletions
diff --git a/src/Specific/GF1305.v b/src/Specific/GF1305.v
index b004a60d1..02ef714d9 100644
--- a/src/Specific/GF1305.v
+++ b/src/Specific/GF1305.v
@@ -15,6 +15,7 @@ Local Open Scope Z.
Definition modulus : Z := 2^130 - 5.
Lemma prime_modulus : prime modulus. Admitted.
+Definition int_width := 32%Z.
Instance params1305 : PseudoMersenneBaseParams modulus.
construct_params prime_modulus 5%nat 130.
@@ -26,16 +27,22 @@ Instance subCoeff : SubtractionCoefficient modulus params1305.
apply Build_SubtractionCoefficient with (coeff := mul2modulus); cbv; auto.
Defined.
+Definition freezePreconditions1305 : freezePreconditions params1305 int_width.
+Proof.
+ constructor; compute_preconditions.
+Defined.
+
(* END PseudoMersenneBaseParams instance construction. *)
(* Precompute k and c *)
Definition k_ := Eval compute in k.
Definition c_ := Eval compute in c.
+Definition c_subst : c = c_ := eq_refl c_.
(* Makes Qed not take forever *)
Opaque Z.shiftr Pos.iter Z.div2 Pos.div2 Pos.div2_up Pos.succ Z.land
Z.of_N Pos.land N.ldiff Pos.pred_N Pos.pred_double Z.opp Z.mul Pos.mul
- Let_In digits Z.add Pos.add Z.pos_sub.
+ Let_In digits Z.add Pos.add Z.pos_sub andb Z.eqb Z.ltb.
Local Open Scope nat_scope.
Lemma GF1305Base26_mul_reduce_formula :
@@ -45,8 +52,9 @@ Lemma GF1305Base26_mul_reduce_formula :
-> rep ls (f*g)%F}.
Proof.
eexists; intros ? ? Hf Hg.
- pose proof (carry_mul_opt_correct k_ c_ (eq_refl k) (eq_refl c_) [0;4;3;2;1;0]_ _ _ _ Hf Hg) as Hfg.
+ pose proof (carry_mul_opt_rep k_ c_ (eq_refl k) c_subst _ _ _ _ Hf Hg) as Hfg.
compute_formula.
+ exact Hfg.
Defined.
Lemma GF1305Base26_add_formula :
@@ -58,17 +66,30 @@ Proof.
eexists; intros ? ? Hf Hg.
pose proof (add_opt_rep _ _ _ _ Hf Hg) as Hfg.
compute_formula.
+ exact Hfg.
Defined.
-Lemma GF25519Base25Point5_sub_formula :
- forall f0 f1 f2 f3 f4 f5 f6 f7 f8 f9
- g0 g1 g2 g3 g4 g5 g6 g7 g8 g9,
- {ls | forall f g, rep [f0;f1;f2;f3;f4;f5;f6;f7;f8;f9] f
- -> rep [g0;g1;g2;g3;g4;g5;g6;g7;g8;g9] g
+Lemma GF1305Base26_sub_formula :
+ forall f0 f1 f2 f3 f4 g0 g1 g2 g3 g4,
+ {ls | forall f g, rep [f0;f1;f2;f3;f4] f
+ -> rep [g0;g1;g2;g3;g4] g
-> rep ls (f - g)%F}.
Proof.
eexists.
intros f g Hf Hg.
pose proof (sub_opt_rep _ _ _ _ Hf Hg) as Hfg.
compute_formula.
-Defined. \ No newline at end of file
+ exact Hfg.
+Defined.
+
+Lemma GF1305Base26_freeze_formula :
+ forall f0 f1 f2 f3 f4,
+ {ls | forall x, rep [f0;f1;f2;f3;f4] x
+ -> rep ls x}.
+Proof.
+ eexists.
+ intros x Hf.
+ pose proof (freeze_opt_preserves_rep _ c_subst freezePreconditions1305 _ _ Hf) as Hfreeze_rep.
+ compute_formula.
+ exact Hfreeze_rep.
+Defined.