aboutsummaryrefslogtreecommitdiff
path: root/src/CompleteEdwardsCurve/CompleteEdwardsCurveTheorems.v
diff options
context:
space:
mode:
Diffstat (limited to 'src/CompleteEdwardsCurve/CompleteEdwardsCurveTheorems.v')
-rw-r--r--src/CompleteEdwardsCurve/CompleteEdwardsCurveTheorems.v18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/CompleteEdwardsCurve/CompleteEdwardsCurveTheorems.v b/src/CompleteEdwardsCurve/CompleteEdwardsCurveTheorems.v
index 996c5d672..e3496775f 100644
--- a/src/CompleteEdwardsCurve/CompleteEdwardsCurveTheorems.v
+++ b/src/CompleteEdwardsCurve/CompleteEdwardsCurveTheorems.v
@@ -6,7 +6,11 @@ Require Import Coq.Logic.Eqdep_dec.
Require Import Crypto.Tactics.VerdiTactics.
Require Import Coq.Classes.Morphisms.
Require Import Coq.Relations.Relation_Definitions.
-Require Import Crypto.Util.Tuple Crypto.Util.Notations Crypto.Util.Tactics.
+Require Import Crypto.Util.Tuple Crypto.Util.Notations.
+Require Import Crypto.Util.Tactics.UniquePose.
+Require Import Crypto.Util.Tactics.DestructHead.
+Require Import Crypto.Util.Tactics.BreakMatch.
+Require Import Crypto.Util.Tactics.SetoidSubst.
Require Export Crypto.Util.FixCoqMistakes.
Module E.
@@ -33,7 +37,7 @@ Module E.
{nonzero_a : a <> 0}
{square_a : exists sqrt_a, sqrt_a^2 = a}
{nonsquare_d : forall x, x^2 <> d}.
-
+
Local Notation onCurve x y := (a*x^2 + y^2 = 1 + d*x^2*y^2) (only parsing).
Local Notation point := (@E.point F Feq Fone Fadd Fmul a d).
Local Notation eq := (@E.eq F Feq Fone Fadd Fmul a d).
@@ -50,7 +54,7 @@ Module E.
| _ => intro
| |- Equivalence _ => split
| |- abelian_group => split | |- group => split | |- monoid => split
- | |- is_associative => split | |- is_commutative => split
+ | |- is_associative => split | |- is_commutative => split
| |- is_left_inverse => split | |- is_right_inverse => split
| |- is_left_identity => split | |- is_right_identity => split
| _ => progress destruct_head' @E.point
@@ -175,7 +179,7 @@ Module E.
| _ => solve [trivial | eapply solve_correct; fsatz]
end.
Local Ltac t := repeat t_step.
-
+
Program Definition decompress (b:bool*F) : option point :=
exist_option _
match b return option (F*F) with
@@ -219,7 +223,7 @@ Module E.
{nonzero_a : not (Feq Fa Fzero)}
{square_a : exists sqrt_a, Feq (Fmul sqrt_a sqrt_a) Fa}
{nonsquare_d : forall x, not (Feq (Fmul x x) Fd)}.
-
+
Context {K Keq Kzero Kone Kopp Kadd Ksub Kmul Kinv Kdiv}
{fieldK: @Algebra.field K Keq Kzero Kone Kopp Kadd Ksub Kmul Kinv Kdiv}
{Keq_dec:DecidableRel Keq}.
@@ -264,7 +268,7 @@ Module E.
etransitivity; [|eexact X]; clear X.
(* TODO: Ring.of_Z of isomorphism *)
Admitted.
-
+
Local Notation Fpoint := (@E.point F Feq Fone Fadd Fmul Fa Fd).
Local Notation Kpoint := (@E.point K Keq Kone Kadd Kmul Ka Kd).
Local Notation FzeroP := (E.zero(nonzero_a:=nonzero_a)(d:=Fd)).
@@ -311,4 +315,4 @@ Module E.
end.
Qed.
End Homomorphism.
-End E. \ No newline at end of file
+End E.