t2 Variable Properties #
In this file we introduce some generally helpful lemmas for t2 as introduced in
Elligator.Elligator1.Variables.
References #
See [bernstein2013a], Section 3.3.
theorem
Elligator.Elligator1.t2_eq_t
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(t : { t : F // t ≠ 1 ∧ t ≠ -1 })
(hs_ne_zero : s ≠ 0)
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(X_h :
have P := ϕ (↑t) hs_ne_zero sq_ne_pm_two hq_card hq_mod;
have X := X t s;
have X2 := X2 s (↑P) q;
X2 = X)
:
theorem
Elligator.Elligator1.t2_eq_t'
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(t : { t : F // t ≠ 1 ∧ t ≠ -1 })
(hs_ne_zero : s ≠ 0)
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(X_h :
have P := ϕ (↑t) hs_ne_zero sq_ne_pm_two hq_card hq_mod;
have X' := X ⟨-↑t, ⋯⟩ s;
have X2 := X2 s (↑P) q;
X2 = X')
:
def
Elligator.Elligator1.t'
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { p : F × F // p ∈ EOverF sq_ne_pm_two hq_card hq_mod })
:
F
t' is the t equivalent used in the proof reverse argumentation of Theorem 3 part C.
Equations
- Elligator.Elligator1.t' sq_ne_pm_two hq_card hq_mod P = (1 - Elligator.Elligator1.u' sq_ne_pm_two hq_card hq_mod P) / (1 + Elligator.Elligator1.u' sq_ne_pm_two hq_card hq_mod P)
Instances For
theorem
Elligator.Elligator1.t'_ne_one_and_t'_ne_neg_one_of_X2_ne_one
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { p : F × F // p ∈ EOverF sq_ne_pm_two hq_card hq_mod })
(P_props : ϕOverFProps s ↑P)
(x_ne_zero : (↑P).1 ≠ 0)
(y_ne_one : (↑P).2 ≠ 1)
:
theorem
Elligator.Elligator1.one_add_t'_ne_zero
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { p : F × F // p ∈ EOverF sq_ne_pm_two hq_card hq_mod })
(P_props : ϕOverFProps s ↑P)
(x_ne_zero : (↑P).1 ≠ 0)
(y_ne_one : (↑P).2 ≠ 1)
:
theorem
Elligator.Elligator1.u'_eq_one_sub_t'_div_one_add_t'
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { p : F × F // p ∈ EOverF sq_ne_pm_two hq_card hq_mod })
(P_props : ϕOverFProps s ↑P)
(x_ne_zero : (↑P).1 ≠ 0)
(y_ne_one : (↑P).2 ≠ 1)
:
theorem
Elligator.Elligator1.u'_eq_u
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { p : F × F // p ∈ EOverF sq_ne_pm_two hq_card hq_mod })
(P_props : ϕOverFProps s ↑P)
(x_ne_zero : (↑P).1 ≠ 0)
(y_ne_one : (↑P).2 ≠ 1)
(X_h :
have X := X2 s (↑P) q;
X ≠ 1)
:
theorem
Elligator.Elligator1.v'_eq_v
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { p : F × F // p ∈ EOverF sq_ne_pm_two hq_card hq_mod })
(P_props : ϕOverFProps s ↑P)
(x_ne_zero : (↑P).1 ≠ 0)
(y_ne_one : (↑P).2 ≠ 1)
(X_h :
have X := X2 s (↑P) q;
X ≠ 1)
:
theorem
Elligator.Elligator1.X'_eq_X
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { p : F × F // p ∈ EOverF sq_ne_pm_two hq_card hq_mod })
(P_props : ϕOverFProps s ↑P)
(x_ne_zero : (↑P).1 ≠ 0)
(y_ne_one : (↑P).2 ≠ 1)
(X_h :
have X := X2 s (↑P) q;
X ≠ 1)
:
theorem
Elligator.Elligator1.Y'_eq_Y
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { p : F × F // p ∈ EOverF sq_ne_pm_two hq_card hq_mod })
(P_props : ϕOverFProps s ↑P)
(x_ne_zero : (↑P).1 ≠ 0)
(y_ne_one : (↑P).2 ≠ 1)
(X_h :
have X := X2 s (↑P) q;
X ≠ 1)
:
def
Elligator.Elligator1.x'
{F : Type u_1}
[Field F]
[Fintype F]
{s : F}
{q : ℕ}
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { p : F × F // p ∈ EOverF sq_ne_pm_two hq_card hq_mod })
:
F
x' is the x equivalent used in the proof reverse argumentation of Theorem 3 part C.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Elligator.Elligator1.x'_eq_x
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { p : F × F // p ∈ EOverF sq_ne_pm_two hq_card hq_mod })
(P_props : ϕOverFProps s ↑P)
(x_ne_zero : (↑P).1 ≠ 0)
(y_ne_one : (↑P).2 ≠ 1)
(X_h :
have X' := X2 s (↑P) q;
X' ≠ 1)
:
def
Elligator.Elligator1.y'
{F : Type u_1}
[Field F]
[Fintype F]
{s : F}
{q : ℕ}
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { p : F × F // p ∈ EOverF sq_ne_pm_two hq_card hq_mod })
:
F
y' is the y equivalent used in the proof reverse argumentation of Theorem 3 part C.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Elligator.Elligator1.y'_eq_y
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { p : F × F // p ∈ EOverF sq_ne_pm_two hq_card hq_mod })
(P_props : ϕOverFProps s ↑P)
(x_ne_zero : (↑P).1 ≠ 0)
(y_ne_one : (↑P).2 ≠ 1)
(X_h :
have X' := X2 s (↑P) q;
X' ≠ 1)
:
theorem
Elligator.Elligator1.x'_and_y'_fulfill_curve_equation
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { p : F × F // p ∈ EOverF sq_ne_pm_two hq_card hq_mod })
(P_props : ϕOverFProps s ↑P)
(x_ne_zero : (↑P).1 ≠ 0)
(y_ne_one : (↑P).2 ≠ 1)
(X_h :
have X' := X2 s (↑P) q;
X' ≠ 1)
:
theorem
Elligator.Elligator1.y_eq_y_of_P
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { p : F × F // p ∈ EOverF sq_ne_pm_two hq_card hq_mod })
(P_props : ϕOverFProps s ↑P)
(x_ne_zero : (↑P).1 ≠ 0)
(y_ne_one : (↑P).2 ≠ 1)
(X_h :
have X' := X2 s (↑P) q;
X' ≠ 1)
:
theorem
Elligator.Elligator1.x_eq_x_of_P
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { p : F × F // p ∈ EOverF sq_ne_pm_two hq_card hq_mod })
(P_props : ϕOverFProps s ↑P)
(x_ne_zero : (↑P).1 ≠ 0)
(y_ne_one : (↑P).2 ≠ 1)
(X_h :
have X' := X2 s (↑P) q;
X' ≠ 1)
:
theorem
Elligator.Elligator1.x_y_of_P_eq_x_y
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(sq_ne_pm_two : (s ^ 2 - 2) * (s ^ 2 + 2) ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { p : F × F // p ∈ EOverF sq_ne_pm_two hq_card hq_mod })
(P_props : ϕOverFProps s ↑P)
(x_ne_zero : (↑P).1 ≠ 0)
(y_ne_one : (↑P).2 ≠ 1)
(X_h :
have X' := X2 s (↑P) q;
X' ≠ 1)
: