X2 Variable Properties #
In this file we introduce some generally helpful lemmas for X2 as introduced in
Elligator.Elligator1.Variables.
References #
See [bernstein2013a], Section 3.3, Theorem 3.
theorem
Elligator.Elligator1.X2_h1
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { P : F × F // ϕOverFProps s P })
:
theorem
Elligator.Elligator1.X2_ne_zero
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { P : F × F // ϕOverFProps s P })
:
theorem
Elligator.Elligator1.y_divisor_ne_zero_with_X2_for_X
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { P : F × F // ϕOverFProps s P })
:
theorem
Elligator.Elligator1.y_with_X2
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { P : F × F // ϕOverFProps s P })
(y_eq_one : (↑P).2 ≠ 1)
:
theorem
Elligator.Elligator1.y_with_X2_of_X2_eq_one
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { P : F × F // ϕOverFProps s P })
(y_eq_one : (↑P).2 ≠ 1)
:
theorem
Elligator.Elligator1.X2_observation1_of_X2_ne_one
{F : Type u_1}
[Field F]
[Fintype F]
[DecidableEq F]
{s : F}
{q : ℕ}
(hs_ne_zero : s ≠ 0)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { P : F × F // ϕOverFProps s P })
(y_eq_one : (↑P).2 ≠ 1)
:
theorem
Elligator.Elligator1.X2_observation2_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 // ϕOverFProps s P })
(y_eq_one : (↑P).2 ≠ 1)
:
theorem
Elligator.Elligator1.x_pow_two_of_X2_ne_one_eq1
{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 })
(P_props : ϕOverFProps s ↑P)
:
theorem
Elligator.Elligator1.x_pow_two_of_X2_ne_one_eq2_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)
(y_eq_one : (↑P).2 ≠ 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
- Elligator.Elligator1.Y' sq_ne_pm_two hq_card hq_mod P = (Elligator.Elligator1.c s - 1) * s * Elligator.Elligator1.X2 s (↑P) q * (1 + Elligator.Elligator1.X2 s (↑P) q) / (↑P).1
Instances For
theorem
Elligator.Elligator1.Y'_pow_two_eq_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)
(y_eq_one : (↑P).2 ≠ 1)
:
theorem
Elligator.Elligator1.X2_ne_one_and_X2_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)
(hq_card : Fintype.card F = q)
(hq_mod : q % 4 = 3)
(P : { P : F × F // ϕOverFProps s P })
(y_ne_one : (↑P).2 ≠ 1)
: