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 |
1 2 3 4
|
gausslemma2dlem3 |
|- ( ph -> A. k e. ( ( M + 1 ) ... H ) ( R ` k ) = ( P - ( k x. 2 ) ) ) |
6 |
|
prodeq2 |
|- ( A. k e. ( ( M + 1 ) ... H ) ( R ` k ) = ( P - ( k x. 2 ) ) -> prod_ k e. ( ( M + 1 ) ... H ) ( R ` k ) = prod_ k e. ( ( M + 1 ) ... H ) ( P - ( k x. 2 ) ) ) |
7 |
6
|
oveq1d |
|- ( A. k e. ( ( M + 1 ) ... H ) ( R ` k ) = ( P - ( k x. 2 ) ) -> ( prod_ k e. ( ( M + 1 ) ... H ) ( R ` k ) mod P ) = ( prod_ k e. ( ( M + 1 ) ... H ) ( P - ( k x. 2 ) ) mod P ) ) |
8 |
5 7
|
syl |
|- ( ph -> ( prod_ k e. ( ( M + 1 ) ... H ) ( R ` k ) mod P ) = ( prod_ k e. ( ( M + 1 ) ... H ) ( P - ( k x. 2 ) ) mod P ) ) |
9 |
|
eldifi |
|- ( P e. ( Prime \ { 2 } ) -> P e. Prime ) |
10 |
|
fzfid |
|- ( P e. Prime -> ( ( M + 1 ) ... H ) e. Fin ) |
11 |
|
prmz |
|- ( P e. Prime -> P e. ZZ ) |
12 |
11
|
adantr |
|- ( ( P e. Prime /\ k e. ( ( M + 1 ) ... H ) ) -> P e. ZZ ) |
13 |
|
elfzelz |
|- ( k e. ( ( M + 1 ) ... H ) -> k e. ZZ ) |
14 |
|
2z |
|- 2 e. ZZ |
15 |
14
|
a1i |
|- ( k e. ( ( M + 1 ) ... H ) -> 2 e. ZZ ) |
16 |
13 15
|
zmulcld |
|- ( k e. ( ( M + 1 ) ... H ) -> ( k x. 2 ) e. ZZ ) |
17 |
16
|
adantl |
|- ( ( P e. Prime /\ k e. ( ( M + 1 ) ... H ) ) -> ( k x. 2 ) e. ZZ ) |
18 |
12 17
|
zsubcld |
|- ( ( P e. Prime /\ k e. ( ( M + 1 ) ... H ) ) -> ( P - ( k x. 2 ) ) e. ZZ ) |
19 |
|
neg1z |
|- -u 1 e. ZZ |
20 |
19
|
a1i |
|- ( k e. ( ( M + 1 ) ... H ) -> -u 1 e. ZZ ) |
21 |
20 16
|
zmulcld |
|- ( k e. ( ( M + 1 ) ... H ) -> ( -u 1 x. ( k x. 2 ) ) e. ZZ ) |
22 |
21
|
adantl |
|- ( ( P e. Prime /\ k e. ( ( M + 1 ) ... H ) ) -> ( -u 1 x. ( k x. 2 ) ) e. ZZ ) |
23 |
|
prmnn |
|- ( P e. Prime -> P e. NN ) |
24 |
16
|
zcnd |
|- ( k e. ( ( M + 1 ) ... H ) -> ( k x. 2 ) e. CC ) |
25 |
24
|
mulm1d |
|- ( k e. ( ( M + 1 ) ... H ) -> ( -u 1 x. ( k x. 2 ) ) = -u ( k x. 2 ) ) |
26 |
25
|
adantl |
|- ( ( P e. Prime /\ k e. ( ( M + 1 ) ... H ) ) -> ( -u 1 x. ( k x. 2 ) ) = -u ( k x. 2 ) ) |
27 |
26
|
oveq1d |
|- ( ( P e. Prime /\ k e. ( ( M + 1 ) ... H ) ) -> ( ( -u 1 x. ( k x. 2 ) ) mod P ) = ( -u ( k x. 2 ) mod P ) ) |
28 |
16
|
zred |
|- ( k e. ( ( M + 1 ) ... H ) -> ( k x. 2 ) e. RR ) |
29 |
23
|
nnrpd |
|- ( P e. Prime -> P e. RR+ ) |
30 |
|
negmod |
|- ( ( ( k x. 2 ) e. RR /\ P e. RR+ ) -> ( -u ( k x. 2 ) mod P ) = ( ( P - ( k x. 2 ) ) mod P ) ) |
31 |
28 29 30
|
syl2anr |
|- ( ( P e. Prime /\ k e. ( ( M + 1 ) ... H ) ) -> ( -u ( k x. 2 ) mod P ) = ( ( P - ( k x. 2 ) ) mod P ) ) |
32 |
27 31
|
eqtr2d |
|- ( ( P e. Prime /\ k e. ( ( M + 1 ) ... H ) ) -> ( ( P - ( k x. 2 ) ) mod P ) = ( ( -u 1 x. ( k x. 2 ) ) mod P ) ) |
33 |
10 18 22 23 32
|
fprodmodd |
|- ( P e. Prime -> ( prod_ k e. ( ( M + 1 ) ... H ) ( P - ( k x. 2 ) ) mod P ) = ( prod_ k e. ( ( M + 1 ) ... H ) ( -u 1 x. ( k x. 2 ) ) mod P ) ) |
34 |
1 9 33
|
3syl |
|- ( ph -> ( prod_ k e. ( ( M + 1 ) ... H ) ( P - ( k x. 2 ) ) mod P ) = ( prod_ k e. ( ( M + 1 ) ... H ) ( -u 1 x. ( k x. 2 ) ) mod P ) ) |
35 |
8 34
|
eqtrd |
|- ( 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 ) ) |