Documentation
Elligator
.
Elligator1
.
rProperties
Search
return to top
source
Imports
Init
Mathlib
Elligator.FiniteFieldBasic
Elligator.LegendreSymbol
Elligator.Elligator1.Variables
Elligator.Elligator1.cProperties
Elligator.Elligator1.sProperties
Imported by
Elligator
.
Elligator1
.
r_ne_zero
Elligator
.
Elligator1
.
aux_neg_one_sq_of_sum_eq_zero
Elligator
.
Elligator1
.
four_add_r_ne_zero
Elligator
.
Elligator1
.
r_h1
Elligator
.
Elligator1
.
r_sub_two_ne_zero
source
theorem
Elligator
.
Elligator1
.
r_ne_zero
{
F
:
Type
u_1}
[
Field
F
]
[
Fintype
F
]
(
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
)
:
have
r_of_s
:=
r
s
s_h1
s_h2
q
field_cardinality
q_prime_power
q_mod_4_congruent_3
;
r_of_s
≠
0
source
theorem
Elligator
.
Elligator1
.
aux_neg_one_sq_of_sum_eq_zero
{
F
:
Type
u_1}
[
Field
F
]
[
Fintype
F
]
(
s
:
F
)
(
hs
:
s
≠
0
)
(
h2
:
2
≠
0
)
(
h
: (
2
/
s
^
2
)
^
2
+
4
*
(
2
/
s
^
2
)
+
1
=
0
)
:
IsSquare
(-
1
)
source
theorem
Elligator
.
Elligator1
.
four_add_r_ne_zero
{
F
:
Type
u_1}
[
Field
F
]
[
Fintype
F
]
(
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
)
:
have
r_of_s
:=
r
s
s_h1
s_h2
q
field_cardinality
q_prime_power
q_mod_4_congruent_3
;
4
+
r_of_s
≠
0
source
theorem
Elligator
.
Elligator1
.
r_h1
{
F
:
Type
u_1}
[
Field
F
]
[
Fintype
F
]
(
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
)
:
have
r_of_s
:=
r
s
s_h1
s_h2
q
field_cardinality
q_prime_power
q_mod_4_congruent_3
;
have
c_of_s
:=
c
s
s_h1
s_h2
q
field_cardinality
q_prime_power
q_mod_4_congruent_3
;
r_of_s
^
2
-
2
=
c_of_s
^
2
+
1
/
c_of_s
^
2
source
theorem
Elligator
.
Elligator1
.
r_sub_two_ne_zero
{
F
:
Type
u_1}
[
Field
F
]
[
Fintype
F
]
(
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
)
:
have
r_of_s
:=
r
s
s_h1
s_h2
q
field_cardinality
q_prime_power
q_mod_4_congruent_3
;
r_of_s
-
2
≠
0