Documentation
Elligator
.
Elligator1
.
uProperties
Search
return to top
source
Imports
Init
Mathlib
Elligator.FiniteFieldBasic
Elligator.LegendreSymbol
Elligator.Elligator1.Variables
Elligator.Elligator1.cProperties
Elligator.Elligator1.rProperties
Elligator.Elligator1.sProperties
Imported by
Elligator
.
Elligator1
.
u_ne_zero
Elligator
.
Elligator1
.
u_pow_two_ne_zero
Elligator
.
Elligator1
.
u_comparison
Elligator
.
Elligator1
.
u_of_zero
source
theorem
Elligator
.
Elligator1
.
u_ne_zero
{
F
:
Type
u_1}
[
Field
F
]
[
Fintype
F
]
(
q
:
ℕ
)
(
field_cardinality
:
Fintype.card
F
=
q
)
(
q_prime_power
:
IsPrimePow
q
)
(
q_mod_4_congruent_3
:
q
%
4
=
3
)
(
t
:
{
n
:
F
//
n
≠
1
∧
n
≠
-
1
}
)
:
u
t
q
field_cardinality
q_prime_power
q_mod_4_congruent_3
≠
0
source
theorem
Elligator
.
Elligator1
.
u_pow_two_ne_zero
{
F
:
Type
u_1}
[
Field
F
]
[
Fintype
F
]
(
q
:
ℕ
)
(
field_cardinality
:
Fintype.card
F
=
q
)
(
q_prime_power
:
IsPrimePow
q
)
(
q_mod_4_congruent_3
:
q
%
4
=
3
)
(
t
:
{
n
:
F
//
n
≠
1
∧
n
≠
-
1
}
)
:
have
u_of_t
:=
u
t
q
field_cardinality
q_prime_power
q_mod_4_congruent_3
;
u_of_t
^
2
≠
0
source
theorem
Elligator
.
Elligator1
.
u_comparison
{
F
:
Type
u_1}
[
Field
F
]
[
Fintype
F
]
(
t
:
{
n
:
F
//
n
≠
1
∧
n
≠
-
1
}
)
(
s
:
F
)
(
s_h1
:
s
≠
0
)
(
s_h2
: (
s
^
2
-
2
)
*
(
s
^
2
+
2
)
≠
0
)
(
q
:
ℕ
)
(
field_cardinality
:
Fintype.card
F
=
q
)
(
q_prime_power
:
IsPrimePow
q
)
(
q_mod_4_congruent_3
:
q
%
4
=
3
)
:
let
t1
:=
↑
t
;
let
t2
:=
-
t1
;
have
h2_2
:=
⋯
;
have
u1
:=
u
t
q
field_cardinality
q_prime_power
q_mod_4_congruent_3
;
have
u2
:=
u
⟨
t2
,
h2_2
⟩
q
field_cardinality
q_prime_power
q_mod_4_congruent_3
;
u2
=
1
/
u1
source
theorem
Elligator
.
Elligator1
.
u_of_zero
{
F
:
Type
u_1}
[
Field
F
]
[
Fintype
F
]
(
q
:
ℕ
)
(
field_cardinality
:
Fintype.card
F
=
q
)
(
q_prime_power
:
IsPrimePow
q
)
(
q_mod_4_congruent_3
:
q
%
4
=
3
)
:
have
h1
:=
⋯
;
have
u_of_t
:=
u
⟨
0
,
h1
⟩
q
field_cardinality
q_prime_power
q_mod_4_congruent_3
;
u_of_t
=
1