diff options
author | Andres Erbsen <andreser@mit.edu> | 2017-02-13 15:27:19 -0500 |
---|---|---|
committer | Andres Erbsen <andreser@mit.edu> | 2017-03-02 13:37:14 -0500 |
commit | 0a9ea9df752b078bbd89f765cf760081036bd51a (patch) | |
tree | df138d2d6db59ae3c718d1246e50aadb4e259a6d /src/Algebra | |
parent | f05368e47fb1e3892d31c8a6ab736c90b4a4d3c5 (diff) |
Weierstrass curve is a group
Diffstat (limited to 'src/Algebra')
-rw-r--r-- | src/Algebra/Field.v | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/Algebra/Field.v b/src/Algebra/Field.v index ddd2737a3..73a004cb3 100644 --- a/src/Algebra/Field.v +++ b/src/Algebra/Field.v @@ -1,4 +1,4 @@ -Require Import Crypto.Util.Relations Crypto.Util.Tactics. +Require Import Crypto.Util.Relations Crypto.Util.Tactics Crypto.Util.Notations. Require Import Coq.Classes.RelationClasses Coq.Classes.Morphisms. Require Import Crypto.Algebra Crypto.Algebra.Ring Crypto.Algebra.IntegralDomain. Require Coq.setoid_ring.Field_theory. @@ -385,6 +385,30 @@ Module _fsatz_test. Lemma fractional_equation_no_solution x (A:x<>1) (B:x<>opp two) (C:x*x+x <> two) (X:nine/(x*x + x - two) = opp three/(x+two) + seven*inv(x-1)) : False. Proof. fsatz. Qed. + + Local Notation "x ^ 2" := (x*x). Local Notation "x ^ 3" := (x^2*x). + Lemma weierstrass_associativity_main a b x1 y1 x2 y2 x4 y4 + (A: y1^2=x1^3+a*x1+b) + (B: y2^2=x2^3+a*x2+b) + (C: y4^2=x4^3+a*x4+b) + (Hi3: x2 <> x1) + λ3 (Hλ3: λ3 = (y2-y1)/(x2-x1)) + x3 (Hx3: x3 = λ3^2-x1-x2) + y3 (Hy3: y3 = λ3*(x1-x3)-y1) + (Hi7: x4 <> x3) + λ7 (Hλ7: λ7 = (y4-y3)/(x4-x3)) + x7 (Hx7: x7 = λ7^2-x3-x4) + y7 (Hy7: y7 = λ7*(x3-x7)-y3) + (Hi6: x4 <> x2) + λ6 (Hλ6: λ6 = (y4-y2)/(x4-x2)) + x6 (Hx6: x6 = λ6^2-x2-x4) + y6 (Hy6: y6 = λ6*(x2-x6)-y2) + (Hi9: x6 <> x1) + λ9 (Hλ9: λ9 = (y6-y1)/(x6-x1)) + x9 (Hx9: x9 = λ9^2-x1-x6) + y9 (Hy9: y9 = λ9*(x1-x9)-y1) + : x7 = x9 /\ y7 = y9. + Proof. split; fsatz. Qed. End _test. End _fsatz_test. |