| Step |
Hyp |
Ref |
Expression |
| 1 |
|
gausslemma2d.p |
|- ( ph -> P e. ( Prime \ { 2 } ) ) |
| 2 |
|
gausslemma2d.h |
|- H = ( ( P - 1 ) / 2 ) |
| 3 |
|
gausslemma2d.r |
|- R = ( x e. ( 1 ... H ) |-> if ( ( x x. 2 ) < ( P / 2 ) , ( x x. 2 ) , ( P - ( x x. 2 ) ) ) ) |
| 4 |
|
gausslemma2d.m |
|- M = ( |_ ` ( P / 4 ) ) |
| 5 |
|
gausslemma2d.n |
|- N = ( H - M ) |
| 6 |
1 2 3 4
|
gausslemma2dlem5a |
|- ( ph -> ( prod_ k e. ( ( M + 1 ) ... H ) ( R ` k ) mod P ) = ( prod_ k e. ( ( M + 1 ) ... H ) ( -u 1 x. ( k x. 2 ) ) mod P ) ) |
| 7 |
|
fzfi |
|- ( ( M + 1 ) ... H ) e. Fin |
| 8 |
7
|
a1i |
|- ( ph -> ( ( M + 1 ) ... H ) e. Fin ) |
| 9 |
|
neg1cn |
|- -u 1 e. CC |
| 10 |
9
|
a1i |
|- ( ( ph /\ k e. ( ( M + 1 ) ... H ) ) -> -u 1 e. CC ) |
| 11 |
|
elfzelz |
|- ( k e. ( ( M + 1 ) ... H ) -> k e. ZZ ) |
| 12 |
|
2z |
|- 2 e. ZZ |
| 13 |
12
|
a1i |
|- ( k e. ( ( M + 1 ) ... H ) -> 2 e. ZZ ) |
| 14 |
11 13
|
zmulcld |
|- ( k e. ( ( M + 1 ) ... H ) -> ( k x. 2 ) e. ZZ ) |
| 15 |
14
|
zcnd |
|- ( k e. ( ( M + 1 ) ... H ) -> ( k x. 2 ) e. CC ) |
| 16 |
15
|
adantl |
|- ( ( ph /\ k e. ( ( M + 1 ) ... H ) ) -> ( k x. 2 ) e. CC ) |
| 17 |
8 10 16
|
fprodmul |
|- ( ph -> prod_ k e. ( ( M + 1 ) ... H ) ( -u 1 x. ( k x. 2 ) ) = ( prod_ k e. ( ( M + 1 ) ... H ) -u 1 x. prod_ k e. ( ( M + 1 ) ... H ) ( k x. 2 ) ) ) |
| 18 |
7 9
|
pm3.2i |
|- ( ( ( M + 1 ) ... H ) e. Fin /\ -u 1 e. CC ) |
| 19 |
|
fprodconst |
|- ( ( ( ( M + 1 ) ... H ) e. Fin /\ -u 1 e. CC ) -> prod_ k e. ( ( M + 1 ) ... H ) -u 1 = ( -u 1 ^ ( # ` ( ( M + 1 ) ... H ) ) ) ) |
| 20 |
18 19
|
mp1i |
|- ( ph -> prod_ k e. ( ( M + 1 ) ... H ) -u 1 = ( -u 1 ^ ( # ` ( ( M + 1 ) ... H ) ) ) ) |
| 21 |
|
nnoddn2prm |
|- ( P e. ( Prime \ { 2 } ) -> ( P e. NN /\ -. 2 || P ) ) |
| 22 |
|
nnre |
|- ( P e. NN -> P e. RR ) |
| 23 |
22
|
adantr |
|- ( ( P e. NN /\ -. 2 || P ) -> P e. RR ) |
| 24 |
1 21 23
|
3syl |
|- ( ph -> P e. RR ) |
| 25 |
|
4re |
|- 4 e. RR |
| 26 |
25
|
a1i |
|- ( ph -> 4 e. RR ) |
| 27 |
|
4ne0 |
|- 4 =/= 0 |
| 28 |
27
|
a1i |
|- ( ph -> 4 =/= 0 ) |
| 29 |
24 26 28
|
redivcld |
|- ( ph -> ( P / 4 ) e. RR ) |
| 30 |
29
|
flcld |
|- ( ph -> ( |_ ` ( P / 4 ) ) e. ZZ ) |
| 31 |
4 30
|
eqeltrid |
|- ( ph -> M e. ZZ ) |
| 32 |
31
|
peano2zd |
|- ( ph -> ( M + 1 ) e. ZZ ) |
| 33 |
|
nnz |
|- ( P e. NN -> P e. ZZ ) |
| 34 |
|
oddm1d2 |
|- ( P e. ZZ -> ( -. 2 || P <-> ( ( P - 1 ) / 2 ) e. ZZ ) ) |
| 35 |
33 34
|
syl |
|- ( P e. NN -> ( -. 2 || P <-> ( ( P - 1 ) / 2 ) e. ZZ ) ) |
| 36 |
35
|
biimpa |
|- ( ( P e. NN /\ -. 2 || P ) -> ( ( P - 1 ) / 2 ) e. ZZ ) |
| 37 |
1 21 36
|
3syl |
|- ( ph -> ( ( P - 1 ) / 2 ) e. ZZ ) |
| 38 |
2 37
|
eqeltrid |
|- ( ph -> H e. ZZ ) |
| 39 |
1 4 2
|
gausslemma2dlem0f |
|- ( ph -> ( M + 1 ) <_ H ) |
| 40 |
|
eluz2 |
|- ( H e. ( ZZ>= ` ( M + 1 ) ) <-> ( ( M + 1 ) e. ZZ /\ H e. ZZ /\ ( M + 1 ) <_ H ) ) |
| 41 |
32 38 39 40
|
syl3anbrc |
|- ( ph -> H e. ( ZZ>= ` ( M + 1 ) ) ) |
| 42 |
|
hashfz |
|- ( H e. ( ZZ>= ` ( M + 1 ) ) -> ( # ` ( ( M + 1 ) ... H ) ) = ( ( H - ( M + 1 ) ) + 1 ) ) |
| 43 |
41 42
|
syl |
|- ( ph -> ( # ` ( ( M + 1 ) ... H ) ) = ( ( H - ( M + 1 ) ) + 1 ) ) |
| 44 |
38
|
zcnd |
|- ( ph -> H e. CC ) |
| 45 |
31
|
zcnd |
|- ( ph -> M e. CC ) |
| 46 |
|
1cnd |
|- ( ph -> 1 e. CC ) |
| 47 |
44 45 46
|
nppcan2d |
|- ( ph -> ( ( H - ( M + 1 ) ) + 1 ) = ( H - M ) ) |
| 48 |
47 5
|
eqtr4di |
|- ( ph -> ( ( H - ( M + 1 ) ) + 1 ) = N ) |
| 49 |
43 48
|
eqtrd |
|- ( ph -> ( # ` ( ( M + 1 ) ... H ) ) = N ) |
| 50 |
49
|
oveq2d |
|- ( ph -> ( -u 1 ^ ( # ` ( ( M + 1 ) ... H ) ) ) = ( -u 1 ^ N ) ) |
| 51 |
20 50
|
eqtrd |
|- ( ph -> prod_ k e. ( ( M + 1 ) ... H ) -u 1 = ( -u 1 ^ N ) ) |
| 52 |
51
|
oveq1d |
|- ( ph -> ( prod_ k e. ( ( M + 1 ) ... H ) -u 1 x. prod_ k e. ( ( M + 1 ) ... H ) ( k x. 2 ) ) = ( ( -u 1 ^ N ) x. prod_ k e. ( ( M + 1 ) ... H ) ( k x. 2 ) ) ) |
| 53 |
17 52
|
eqtrd |
|- ( ph -> prod_ k e. ( ( M + 1 ) ... H ) ( -u 1 x. ( k x. 2 ) ) = ( ( -u 1 ^ N ) x. prod_ k e. ( ( M + 1 ) ... H ) ( k x. 2 ) ) ) |
| 54 |
53
|
oveq1d |
|- ( ph -> ( prod_ k e. ( ( M + 1 ) ... H ) ( -u 1 x. ( k x. 2 ) ) mod P ) = ( ( ( -u 1 ^ N ) x. prod_ k e. ( ( M + 1 ) ... H ) ( k x. 2 ) ) mod P ) ) |
| 55 |
6 54
|
eqtrd |
|- ( ph -> ( prod_ k e. ( ( M + 1 ) ... H ) ( R ` k ) mod P ) = ( ( ( -u 1 ^ N ) x. prod_ k e. ( ( M + 1 ) ... H ) ( k x. 2 ) ) mod P ) ) |