MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  wilthlem2 Structured version   Visualization version   Unicode version

Theorem wilthlem2 24795
Description: Lemma for wilth 24797: induction step. The "hand proof" version of this theorem works by writing out the list of all numbers from  1 to  P  -  1 in pairs such that a number is paired with its inverse. Every number has a unique inverse different from itself except  1 and  P  -  1, and so each pair multiplies to  1, and  1 and  P  -  1  ==  -u 1 multiply to  -u 1, so the full product is equal to  -u 1. Here we make this precise by doing the product pair by pair.

The induction hypothesis says that every subset  S of  1 ... ( P  -  1 ) that is closed under inverse (i.e. all pairs are matched up) and contains 
P  -  1 multiplies to  -u 1  mod  P. Given such a set, we take out one element  z  =/=  P  -  1. If there are no such elements, then 
S  =  { P  -  1 } which forms the base case. Otherwise,  S  \  { z ,  z ^ -u 1 } is also closed under inverse and contains  P  -  1, so the induction hypothesis says that this equals  -u 1; and the remaining two elements are either equal to each other, in which case wilthlem1 24794 gives that  z  =  1 or  P  -  1, and we've already excluded the second case, so the product gives  1; or  z  =/=  z ^ -u 1 and their product is  1. In either case the accumulated product is unaffected. (Contributed by Mario Carneiro, 24-Jan-2015.) (Proof shortened by AV, 27-Jul-2019.)

Hypotheses
Ref Expression
wilthlem.t  |-  T  =  (mulGrp ` fld )
wilthlem.a  |-  A  =  { x  e.  ~P ( 1 ... ( P  -  1 ) )  |  ( ( P  -  1 )  e.  x  /\  A. y  e.  x  (
( y ^ ( P  -  2 ) )  mod  P )  e.  x ) }
wilthlem2.p  |-  ( ph  ->  P  e.  Prime )
wilthlem2.s  |-  ( ph  ->  S  e.  A )
wilthlem2.r  |-  ( ph  ->  A. s  e.  A  ( s  C.  S  ->  ( ( T  gsumg  (  _I  |`  s ) )  mod 
P )  =  (
-u 1  mod  P
) ) )
Assertion
Ref Expression
wilthlem2  |-  ( ph  ->  ( ( T  gsumg  (  _I  |`  S ) )  mod 
P )  =  (
-u 1  mod  P
) )
Distinct variable groups:    x, s,
y, A    P, s, x, y    ph, x, y    S, s, x, y    T, s, x, y
Allowed substitution hint:    ph( s)

Proof of Theorem wilthlem2
Dummy variables  w  z are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 simpr 477 . . . . . . . . 9  |-  ( (
ph  /\  S  C_  { ( P  -  1 ) } )  ->  S  C_ 
{ ( P  - 
1 ) } )
2 wilthlem2.s . . . . . . . . . . . . . 14  |-  ( ph  ->  S  e.  A )
3 eleq2 2690 . . . . . . . . . . . . . . . 16  |-  ( x  =  S  ->  (
( P  -  1 )  e.  x  <->  ( P  -  1 )  e.  S ) )
4 eleq2 2690 . . . . . . . . . . . . . . . . 17  |-  ( x  =  S  ->  (
( ( y ^
( P  -  2 ) )  mod  P
)  e.  x  <->  ( (
y ^ ( P  -  2 ) )  mod  P )  e.  S ) )
54raleqbi1dv 3146 . . . . . . . . . . . . . . . 16  |-  ( x  =  S  ->  ( A. y  e.  x  ( ( y ^
( P  -  2 ) )  mod  P
)  e.  x  <->  A. y  e.  S  ( (
y ^ ( P  -  2 ) )  mod  P )  e.  S ) )
63, 5anbi12d 747 . . . . . . . . . . . . . . 15  |-  ( x  =  S  ->  (
( ( P  - 
1 )  e.  x  /\  A. y  e.  x  ( ( y ^
( P  -  2 ) )  mod  P
)  e.  x )  <-> 
( ( P  - 
1 )  e.  S  /\  A. y  e.  S  ( ( y ^
( P  -  2 ) )  mod  P
)  e.  S ) ) )
7 wilthlem.a . . . . . . . . . . . . . . 15  |-  A  =  { x  e.  ~P ( 1 ... ( P  -  1 ) )  |  ( ( P  -  1 )  e.  x  /\  A. y  e.  x  (
( y ^ ( P  -  2 ) )  mod  P )  e.  x ) }
86, 7elrab2 3366 . . . . . . . . . . . . . 14  |-  ( S  e.  A  <->  ( S  e.  ~P ( 1 ... ( P  -  1 ) )  /\  (
( P  -  1 )  e.  S  /\  A. y  e.  S  ( ( y ^ ( P  -  2 ) )  mod  P )  e.  S ) ) )
92, 8sylib 208 . . . . . . . . . . . . 13  |-  ( ph  ->  ( S  e.  ~P ( 1 ... ( P  -  1 ) )  /\  ( ( P  -  1 )  e.  S  /\  A. y  e.  S  (
( y ^ ( P  -  2 ) )  mod  P )  e.  S ) ) )
109simprd 479 . . . . . . . . . . . 12  |-  ( ph  ->  ( ( P  - 
1 )  e.  S  /\  A. y  e.  S  ( ( y ^
( P  -  2 ) )  mod  P
)  e.  S ) )
1110simpld 475 . . . . . . . . . . 11  |-  ( ph  ->  ( P  -  1 )  e.  S )
1211snssd 4340 . . . . . . . . . 10  |-  ( ph  ->  { ( P  - 
1 ) }  C_  S )
1312adantr 481 . . . . . . . . 9  |-  ( (
ph  /\  S  C_  { ( P  -  1 ) } )  ->  { ( P  -  1 ) }  C_  S )
141, 13eqssd 3620 . . . . . . . 8  |-  ( (
ph  /\  S  C_  { ( P  -  1 ) } )  ->  S  =  { ( P  - 
1 ) } )
1514reseq2d 5396 . . . . . . 7  |-  ( (
ph  /\  S  C_  { ( P  -  1 ) } )  ->  (  _I  |`  S )  =  (  _I  |`  { ( P  -  1 ) } ) )
16 mptresid 5456 . . . . . . 7  |-  ( z  e.  { ( P  -  1 ) } 
|->  z )  =  (  _I  |`  { ( P  -  1 ) } )
1715, 16syl6eqr 2674 . . . . . 6  |-  ( (
ph  /\  S  C_  { ( P  -  1 ) } )  ->  (  _I  |`  S )  =  ( z  e.  {
( P  -  1 ) }  |->  z ) )
1817oveq2d 6666 . . . . 5  |-  ( (
ph  /\  S  C_  { ( P  -  1 ) } )  ->  ( T  gsumg  (  _I  |`  S ) )  =  ( T 
gsumg  ( z  e.  {
( P  -  1 ) }  |->  z ) ) )
1918oveq1d 6665 . . . 4  |-  ( (
ph  /\  S  C_  { ( P  -  1 ) } )  ->  (
( T  gsumg  (  _I  |`  S ) )  mod  P )  =  ( ( T 
gsumg  ( z  e.  {
( P  -  1 ) }  |->  z ) )  mod  P ) )
20 wilthlem2.p . . . . . . . . . . . 12  |-  ( ph  ->  P  e.  Prime )
21 prmnn 15388 . . . . . . . . . . . 12  |-  ( P  e.  Prime  ->  P  e.  NN )
2220, 21syl 17 . . . . . . . . . . 11  |-  ( ph  ->  P  e.  NN )
2322nncnd 11036 . . . . . . . . . 10  |-  ( ph  ->  P  e.  CC )
24 ax-1cn 9994 . . . . . . . . . 10  |-  1  e.  CC
25 negsub 10329 . . . . . . . . . 10  |-  ( ( P  e.  CC  /\  1  e.  CC )  ->  ( P  +  -u
1 )  =  ( P  -  1 ) )
2623, 24, 25sylancl 694 . . . . . . . . 9  |-  ( ph  ->  ( P  +  -u
1 )  =  ( P  -  1 ) )
27 neg1cn 11124 . . . . . . . . . 10  |-  -u 1  e.  CC
28 addcom 10222 . . . . . . . . . 10  |-  ( ( P  e.  CC  /\  -u 1  e.  CC )  ->  ( P  +  -u 1 )  =  (
-u 1  +  P
) )
2923, 27, 28sylancl 694 . . . . . . . . 9  |-  ( ph  ->  ( P  +  -u
1 )  =  (
-u 1  +  P
) )
3026, 29eqtr3d 2658 . . . . . . . 8  |-  ( ph  ->  ( P  -  1 )  =  ( -u
1  +  P ) )
31 cnring 19768 . . . . . . . . . 10  |-fld  e.  Ring
32 wilthlem.t . . . . . . . . . . 11  |-  T  =  (mulGrp ` fld )
3332ringmgp 18553 . . . . . . . . . 10  |-  (fld  e.  Ring  ->  T  e.  Mnd )
3431, 33mp1i 13 . . . . . . . . 9  |-  ( ph  ->  T  e.  Mnd )
35 nnm1nn0 11334 . . . . . . . . . . 11  |-  ( P  e.  NN  ->  ( P  -  1 )  e.  NN0 )
3622, 35syl 17 . . . . . . . . . 10  |-  ( ph  ->  ( P  -  1 )  e.  NN0 )
3736nn0cnd 11353 . . . . . . . . 9  |-  ( ph  ->  ( P  -  1 )  e.  CC )
38 cnfldbas 19750 . . . . . . . . . . 11  |-  CC  =  ( Base ` fld )
3932, 38mgpbas 18495 . . . . . . . . . 10  |-  CC  =  ( Base `  T )
40 id 22 . . . . . . . . . 10  |-  ( z  =  ( P  - 
1 )  ->  z  =  ( P  - 
1 ) )
4139, 40gsumsn 18354 . . . . . . . . 9  |-  ( ( T  e.  Mnd  /\  ( P  -  1
)  e.  CC  /\  ( P  -  1
)  e.  CC )  ->  ( T  gsumg  ( z  e.  { ( P  -  1 ) } 
|->  z ) )  =  ( P  -  1 ) )
4234, 37, 37, 41syl3anc 1326 . . . . . . . 8  |-  ( ph  ->  ( T  gsumg  ( z  e.  {
( P  -  1 ) }  |->  z ) )  =  ( P  -  1 ) )
4323mulid2d 10058 . . . . . . . . 9  |-  ( ph  ->  ( 1  x.  P
)  =  P )
4443oveq2d 6666 . . . . . . . 8  |-  ( ph  ->  ( -u 1  +  ( 1  x.  P
) )  =  (
-u 1  +  P
) )
4530, 42, 443eqtr4d 2666 . . . . . . 7  |-  ( ph  ->  ( T  gsumg  ( z  e.  {
( P  -  1 ) }  |->  z ) )  =  ( -u
1  +  ( 1  x.  P ) ) )
4645oveq1d 6665 . . . . . 6  |-  ( ph  ->  ( ( T  gsumg  ( z  e.  { ( P  -  1 ) } 
|->  z ) )  mod 
P )  =  ( ( -u 1  +  ( 1  x.  P
) )  mod  P
) )
47 neg1rr 11125 . . . . . . . 8  |-  -u 1  e.  RR
4847a1i 11 . . . . . . 7  |-  ( ph  -> 
-u 1  e.  RR )
4922nnrpd 11870 . . . . . . 7  |-  ( ph  ->  P  e.  RR+ )
50 1zzd 11408 . . . . . . 7  |-  ( ph  ->  1  e.  ZZ )
51 modcyc 12705 . . . . . . 7  |-  ( (
-u 1  e.  RR  /\  P  e.  RR+  /\  1  e.  ZZ )  ->  (
( -u 1  +  ( 1  x.  P ) )  mod  P )  =  ( -u 1  mod  P ) )
5248, 49, 50, 51syl3anc 1326 . . . . . 6  |-  ( ph  ->  ( ( -u 1  +  ( 1  x.  P ) )  mod 
P )  =  (
-u 1  mod  P
) )
5346, 52eqtrd 2656 . . . . 5  |-  ( ph  ->  ( ( T  gsumg  ( z  e.  { ( P  -  1 ) } 
|->  z ) )  mod 
P )  =  (
-u 1  mod  P
) )
5453adantr 481 . . . 4  |-  ( (
ph  /\  S  C_  { ( P  -  1 ) } )  ->  (
( T  gsumg  ( z  e.  {
( P  -  1 ) }  |->  z ) )  mod  P )  =  ( -u 1  mod  P ) )
5519, 54eqtrd 2656 . . 3  |-  ( (
ph  /\  S  C_  { ( P  -  1 ) } )  ->  (
( T  gsumg  (  _I  |`  S ) )  mod  P )  =  ( -u 1  mod  P ) )
5655ex 450 . 2  |-  ( ph  ->  ( S  C_  { ( P  -  1 ) }  ->  ( ( T  gsumg  (  _I  |`  S ) )  mod  P )  =  ( -u 1  mod  P ) ) )
57 nss 3663 . . 3  |-  ( -.  S  C_  { ( P  -  1 ) }  <->  E. z ( z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )
58 cnfld1 19771 . . . . . . . . . 10  |-  1  =  ( 1r ` fld )
5932, 58ringidval 18503 . . . . . . . . 9  |-  1  =  ( 0g `  T )
60 cnfldmul 19752 . . . . . . . . . 10  |-  x.  =  ( .r ` fld )
6132, 60mgpplusg 18493 . . . . . . . . 9  |-  x.  =  ( +g  `  T )
62 cncrng 19767 . . . . . . . . . . 11  |-fld  e.  CRing
6332crngmgp 18555 . . . . . . . . . . 11  |-  (fld  e.  CRing  ->  T  e. CMnd )
6462, 63ax-mp 5 . . . . . . . . . 10  |-  T  e. CMnd
6564a1i 11 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  T  e. CMnd )
662adantr 481 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  S  e.  A )
67 f1oi 6174 . . . . . . . . . . . 12  |-  (  _I  |`  S ) : S -1-1-onto-> S
68 f1of 6137 . . . . . . . . . . . 12  |-  ( (  _I  |`  S ) : S -1-1-onto-> S  ->  (  _I  |`  S ) : S --> S )
6967, 68ax-mp 5 . . . . . . . . . . 11  |-  (  _I  |`  S ) : S --> S
709simpld 475 . . . . . . . . . . . . . 14  |-  ( ph  ->  S  e.  ~P (
1 ... ( P  - 
1 ) ) )
7170elpwid 4170 . . . . . . . . . . . . 13  |-  ( ph  ->  S  C_  ( 1 ... ( P  - 
1 ) ) )
72 elfzelz 12342 . . . . . . . . . . . . . 14  |-  ( z  e.  ( 1 ... ( P  -  1 ) )  ->  z  e.  ZZ )
7372ssriv 3607 . . . . . . . . . . . . 13  |-  ( 1 ... ( P  - 
1 ) )  C_  ZZ
7471, 73syl6ss 3615 . . . . . . . . . . . 12  |-  ( ph  ->  S  C_  ZZ )
75 zsscn 11385 . . . . . . . . . . . 12  |-  ZZ  C_  CC
7674, 75syl6ss 3615 . . . . . . . . . . 11  |-  ( ph  ->  S  C_  CC )
77 fss 6056 . . . . . . . . . . 11  |-  ( ( (  _I  |`  S ) : S --> S  /\  S  C_  CC )  -> 
(  _I  |`  S ) : S --> CC )
7869, 76, 77sylancr 695 . . . . . . . . . 10  |-  ( ph  ->  (  _I  |`  S ) : S --> CC )
7978adantr 481 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  (  _I  |`  S ) : S --> CC )
80 fzfi 12771 . . . . . . . . . . . 12  |-  ( 1 ... ( P  - 
1 ) )  e. 
Fin
81 ssfi 8180 . . . . . . . . . . . 12  |-  ( ( ( 1 ... ( P  -  1 ) )  e.  Fin  /\  S  C_  ( 1 ... ( P  -  1 ) ) )  ->  S  e.  Fin )
8280, 71, 81sylancr 695 . . . . . . . . . . 11  |-  ( ph  ->  S  e.  Fin )
83 1ex 10035 . . . . . . . . . . . 12  |-  1  e.  _V
8483a1i 11 . . . . . . . . . . 11  |-  ( ph  ->  1  e.  _V )
8578, 82, 84fdmfifsupp 8285 . . . . . . . . . 10  |-  ( ph  ->  (  _I  |`  S ) finSupp 
1 )
8685adantr 481 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  (  _I  |`  S ) finSupp  1 )
87 disjdif 4040 . . . . . . . . . 10  |-  ( { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) }  i^i  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  =  (/)
8887a1i 11 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) }  i^i  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  =  (/) )
89 undif2 4044 . . . . . . . . . 10  |-  ( { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) }  u.  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  =  ( { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) }  u.  S
)
90 simprl 794 . . . . . . . . . . . 12  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  z  e.  S )
9110simprd 479 . . . . . . . . . . . . . 14  |-  ( ph  ->  A. y  e.  S  ( ( y ^
( P  -  2 ) )  mod  P
)  e.  S )
9291adantr 481 . . . . . . . . . . . . 13  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  A. y  e.  S  ( (
y ^ ( P  -  2 ) )  mod  P )  e.  S )
93 oveq1 6657 . . . . . . . . . . . . . . . 16  |-  ( y  =  z  ->  (
y ^ ( P  -  2 ) )  =  ( z ^
( P  -  2 ) ) )
9493oveq1d 6665 . . . . . . . . . . . . . . 15  |-  ( y  =  z  ->  (
( y ^ ( P  -  2 ) )  mod  P )  =  ( ( z ^ ( P  - 
2 ) )  mod 
P ) )
9594eleq1d 2686 . . . . . . . . . . . . . 14  |-  ( y  =  z  ->  (
( ( y ^
( P  -  2 ) )  mod  P
)  e.  S  <->  ( (
z ^ ( P  -  2 ) )  mod  P )  e.  S ) )
9695rspcv 3305 . . . . . . . . . . . . 13  |-  ( z  e.  S  ->  ( A. y  e.  S  ( ( y ^
( P  -  2 ) )  mod  P
)  e.  S  -> 
( ( z ^
( P  -  2 ) )  mod  P
)  e.  S ) )
9790, 92, 96sylc 65 . . . . . . . . . . . 12  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( (
z ^ ( P  -  2 ) )  mod  P )  e.  S )
98 prssi 4353 . . . . . . . . . . . 12  |-  ( ( z  e.  S  /\  ( ( z ^
( P  -  2 ) )  mod  P
)  e.  S )  ->  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) }  C_  S
)
9990, 97, 98syl2anc 693 . . . . . . . . . . 11  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) }  C_  S )
100 ssequn1 3783 . . . . . . . . . . 11  |-  ( { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } 
C_  S  <->  ( {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) }  u.  S )  =  S )
10199, 100sylib 208 . . . . . . . . . 10  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) }  u.  S )  =  S )
10289, 101syl5req 2669 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  S  =  ( { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) }  u.  ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) )
10339, 59, 61, 65, 66, 79, 86, 88, 102gsumsplit 18328 . . . . . . . 8  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( T  gsumg  (  _I  |`  S )
)  =  ( ( T  gsumg  ( (  _I  |`  S )  |`  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  x.  ( T  gsumg  ( (  _I  |`  S )  |`  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) ) ) )
10499resabs1d 5428 . . . . . . . . . 10  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( (  _I  |`  S )  |`  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  =  (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) )
105104oveq2d 6666 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( T  gsumg  ( (  _I  |`  S )  |`  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  =  ( T  gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) ) )
106 difss 3737 . . . . . . . . . . . 12  |-  ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } )  C_  S
107 resabs1 5427 . . . . . . . . . . . 12  |-  ( ( S  \  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) 
C_  S  ->  (
(  _I  |`  S )  |`  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  =  (  _I  |`  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) )
108106, 107ax-mp 5 . . . . . . . . . . 11  |-  ( (  _I  |`  S )  |`  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  =  (  _I  |`  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )
109108oveq2i 6661 . . . . . . . . . 10  |-  ( T 
gsumg  ( (  _I  |`  S )  |`  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) )  =  ( T  gsumg  (  _I  |`  ( S  \  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) )
110109a1i 11 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( T  gsumg  ( (  _I  |`  S )  |`  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) )  =  ( T  gsumg  (  _I  |`  ( S  \  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) ) )
111105, 110oveq12d 6668 . . . . . . . 8  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( T  gsumg  ( (  _I  |`  S )  |`  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  x.  ( T  gsumg  ( (  _I  |`  S )  |`  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) ) )  =  ( ( T 
gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) )  x.  ( T 
gsumg  (  _I  |`  ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) ) ) )
112103, 111eqtrd 2656 . . . . . . 7  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( T  gsumg  (  _I  |`  S )
)  =  ( ( T  gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) )  x.  ( T 
gsumg  (  _I  |`  ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) ) ) )
113112oveq1d 6665 . . . . . 6  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( T  gsumg  (  _I  |`  S ) )  mod  P )  =  ( ( ( T  gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) )  x.  ( T 
gsumg  (  _I  |`  ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) ) )  mod  P
) )
114 prfi 8235 . . . . . . . . . 10  |-  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) }  e.  Fin
115114a1i 11 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) }  e.  Fin )
116 zsubrg 19799 . . . . . . . . . 10  |-  ZZ  e.  (SubRing ` fld )
11732subrgsubm 18793 . . . . . . . . . 10  |-  ( ZZ  e.  (SubRing ` fld )  ->  ZZ  e.  (SubMnd `  T ) )
118116, 117mp1i 13 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ZZ  e.  (SubMnd `  T ) )
119 f1oi 6174 . . . . . . . . . . 11  |-  (  _I  |`  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) : {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } -1-1-onto-> { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) }
120 f1of 6137 . . . . . . . . . . 11  |-  ( (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) : { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } -1-1-onto-> { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) }  ->  (  _I  |` 
{ z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) : {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } --> { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )
121119, 120ax-mp 5 . . . . . . . . . 10  |-  (  _I  |`  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) : {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } --> { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) }
12274adantr 481 . . . . . . . . . . 11  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  S  C_  ZZ )
12399, 122sstrd 3613 . . . . . . . . . 10  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) }  C_  ZZ )
124 fss 6056 . . . . . . . . . 10  |-  ( ( (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) : { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } --> { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) }  /\  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } 
C_  ZZ )  -> 
(  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) : { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } --> ZZ )
125121, 123, 124sylancr 695 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  (  _I  |` 
{ z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) : {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } --> ZZ )
12683a1i 11 . . . . . . . . . 10  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  1  e.  _V )
127125, 115, 126fdmfifsupp 8285 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  (  _I  |` 
{ z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) finSupp  1 )
12859, 65, 115, 118, 125, 127gsumsubmcl 18319 . . . . . . . 8  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( T  gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) )  e.  ZZ )
129128zred 11482 . . . . . . 7  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( T  gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) )  e.  RR )
130 1red 10055 . . . . . . 7  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  1  e.  RR )
13171adantr 481 . . . . . . . . . 10  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  S  C_  (
1 ... ( P  - 
1 ) ) )
132131ssdifssd 3748 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  C_  (
1 ... ( P  - 
1 ) ) )
133 ssfi 8180 . . . . . . . . 9  |-  ( ( ( 1 ... ( P  -  1 ) )  e.  Fin  /\  ( S  \  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) 
C_  ( 1 ... ( P  -  1 ) ) )  -> 
( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  e.  Fin )
13480, 132, 133sylancr 695 . . . . . . . 8  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  e.  Fin )
135 f1oi 6174 . . . . . . . . . 10  |-  (  _I  |`  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) : ( S  \  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) -1-1-onto-> ( S  \  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } )
136 f1of 6137 . . . . . . . . . 10  |-  ( (  _I  |`  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) : ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) -1-1-onto-> ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  ->  (  _I  |`  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) : ( S  \  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) --> ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )
137135, 136ax-mp 5 . . . . . . . . 9  |-  (  _I  |`  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) : ( S  \  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) --> ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )
138122ssdifssd 3748 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  C_  ZZ )
139 fss 6056 . . . . . . . . 9  |-  ( ( (  _I  |`  ( S  \  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) : ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) --> ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } )  /\  ( S  \  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) 
C_  ZZ )  -> 
(  _I  |`  ( S  \  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) : ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) --> ZZ )
140137, 138, 139sylancr 695 . . . . . . . 8  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  (  _I  |`  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) : ( S  \  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) --> ZZ )
141140, 134, 126fdmfifsupp 8285 . . . . . . . 8  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  (  _I  |`  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) finSupp  1 )
14259, 65, 134, 118, 140, 141gsumsubmcl 18319 . . . . . . 7  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( T  gsumg  (  _I  |`  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) )  e.  ZZ )
14349adantr 481 . . . . . . 7  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  P  e.  RR+ )
14434adantr 481 . . . . . . . . . . . 12  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  T  e.  Mnd )
14576adantr 481 . . . . . . . . . . . . 13  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  S  C_  CC )
146145, 90sseldd 3604 . . . . . . . . . . . 12  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  z  e.  CC )
147 id 22 . . . . . . . . . . . . 13  |-  ( w  =  z  ->  w  =  z )
14839, 147gsumsn 18354 . . . . . . . . . . . 12  |-  ( ( T  e.  Mnd  /\  z  e.  CC  /\  z  e.  CC )  ->  ( T  gsumg  ( w  e.  {
z }  |->  w ) )  =  z )
149144, 146, 146, 148syl3anc 1326 . . . . . . . . . . 11  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( T  gsumg  ( w  e.  { z }  |->  w ) )  =  z )
150149adantr 481 . . . . . . . . . 10  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =  1 )  ->  ( T  gsumg  ( w  e.  { z } 
|->  w ) )  =  z )
151 mptresid 5456 . . . . . . . . . . . 12  |-  ( w  e.  { z } 
|->  w )  =  (  _I  |`  { z } )
152 dfsn2 4190 . . . . . . . . . . . . . 14  |-  { z }  =  { z ,  z }
153 simpr 477 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =  1 )  ->  z  =  1 )
154153orcd 407 . . . . . . . . . . . . . . . 16  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =  1 )  ->  ( z  =  1  \/  z  =  ( P  -  1 ) ) )
15520adantr 481 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  P  e.  Prime )
156131, 90sseldd 3604 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  z  e.  ( 1 ... ( P  -  1 ) ) )
157 wilthlem1 24794 . . . . . . . . . . . . . . . . . 18  |-  ( ( P  e.  Prime  /\  z  e.  ( 1 ... ( P  -  1 ) ) )  ->  (
z  =  ( ( z ^ ( P  -  2 ) )  mod  P )  <->  ( z  =  1  \/  z  =  ( P  - 
1 ) ) ) )
158155, 156, 157syl2anc 693 . . . . . . . . . . . . . . . . 17  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( z  =  ( ( z ^ ( P  - 
2 ) )  mod 
P )  <->  ( z  =  1  \/  z  =  ( P  - 
1 ) ) ) )
159158biimpar 502 . . . . . . . . . . . . . . . 16  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  ( z  =  1  \/  z  =  ( P  -  1 ) ) )  ->  z  =  ( ( z ^ ( P  - 
2 ) )  mod 
P ) )
160154, 159syldan 487 . . . . . . . . . . . . . . 15  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =  1 )  ->  z  =  ( ( z ^ ( P  -  2 ) )  mod  P ) )
161160preq2d 4275 . . . . . . . . . . . . . 14  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =  1 )  ->  { z ,  z }  =  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )
162152, 161syl5eq 2668 . . . . . . . . . . . . 13  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =  1 )  ->  { z }  =  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } )
163162reseq2d 5396 . . . . . . . . . . . 12  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =  1 )  ->  (  _I  |`  { z } )  =  (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) )
164151, 163syl5eq 2668 . . . . . . . . . . 11  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =  1 )  ->  ( w  e. 
{ z }  |->  w )  =  (  _I  |`  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )
165164oveq2d 6666 . . . . . . . . . 10  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =  1 )  ->  ( T  gsumg  ( w  e.  { z } 
|->  w ) )  =  ( T  gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) ) )
166150, 165, 1533eqtr3d 2664 . . . . . . . . 9  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =  1 )  ->  ( T  gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  =  1 )
167166oveq1d 6665 . . . . . . . 8  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =  1 )  ->  ( ( T 
gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) )  mod  P )  =  ( 1  mod 
P ) )
168 df-pr 4180 . . . . . . . . . . . . . . 15  |-  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) }  =  ( { z }  u.  { ( ( z ^
( P  -  2 ) )  mod  P
) } )
169168reseq2i 5393 . . . . . . . . . . . . . 14  |-  (  _I  |`  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  =  (  _I  |`  ( {
z }  u.  {
( ( z ^
( P  -  2 ) )  mod  P
) } ) )
170 mptresid 5456 . . . . . . . . . . . . . 14  |-  ( w  e.  ( { z }  u.  { ( ( z ^ ( P  -  2 ) )  mod  P ) } )  |->  w )  =  (  _I  |`  ( { z }  u.  { ( ( z ^
( P  -  2 ) )  mod  P
) } ) )
171169, 170eqtr4i 2647 . . . . . . . . . . . . 13  |-  (  _I  |`  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  =  ( w  e.  ( { z }  u.  {
( ( z ^
( P  -  2 ) )  mod  P
) } )  |->  w )
172171oveq2i 6661 . . . . . . . . . . . 12  |-  ( T 
gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) )  =  ( T 
gsumg  ( w  e.  ( { z }  u.  { ( ( z ^
( P  -  2 ) )  mod  P
) } )  |->  w ) )
17364a1i 11 . . . . . . . . . . . . 13  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =/=  1 )  ->  T  e. CMnd )
174 snfi 8038 . . . . . . . . . . . . . 14  |-  { z }  e.  Fin
175174a1i 11 . . . . . . . . . . . . 13  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =/=  1 )  ->  { z }  e.  Fin )
176 elsni 4194 . . . . . . . . . . . . . . . 16  |-  ( w  e.  { z }  ->  w  =  z )
177176adantl 482 . . . . . . . . . . . . . . 15  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  w  e.  { z } )  ->  w  =  z )
178146adantr 481 . . . . . . . . . . . . . . 15  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  w  e.  { z } )  ->  z  e.  CC )
179177, 178eqeltrd 2701 . . . . . . . . . . . . . 14  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  w  e.  { z } )  ->  w  e.  CC )
180179adantlr 751 . . . . . . . . . . . . 13  |-  ( ( ( ( ph  /\  ( z  e.  S  /\  -.  z  e.  {
( P  -  1 ) } ) )  /\  z  =/=  1
)  /\  w  e.  { z } )  ->  w  e.  CC )
181145, 97sseldd 3604 . . . . . . . . . . . . . 14  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( (
z ^ ( P  -  2 ) )  mod  P )  e.  CC )
182181adantr 481 . . . . . . . . . . . . 13  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =/=  1 )  -> 
( ( z ^
( P  -  2 ) )  mod  P
)  e.  CC )
183 simprr 796 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  -.  z  e.  { ( P  - 
1 ) } )
184 velsn 4193 . . . . . . . . . . . . . . . . . 18  |-  ( z  e.  { ( P  -  1 ) }  <-> 
z  =  ( P  -  1 ) )
185183, 184sylnib 318 . . . . . . . . . . . . . . . . 17  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  -.  z  =  ( P  - 
1 ) )
186 biorf 420 . . . . . . . . . . . . . . . . 17  |-  ( -.  z  =  ( P  -  1 )  -> 
( z  =  1  <-> 
( z  =  ( P  -  1 )  \/  z  =  1 ) ) )
187185, 186syl 17 . . . . . . . . . . . . . . . 16  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( z  =  1  <->  ( z  =  ( P  - 
1 )  \/  z  =  1 ) ) )
188 ovex 6678 . . . . . . . . . . . . . . . . . . 19  |-  ( ( z ^ ( P  -  2 ) )  mod  P )  e. 
_V
189188elsn 4192 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( z ^ ( P  -  2 ) )  mod  P )  e.  { z }  <-> 
( ( z ^
( P  -  2 ) )  mod  P
)  =  z )
190 eqcom 2629 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( z ^ ( P  -  2 ) )  mod  P )  =  z  <->  z  =  ( ( z ^
( P  -  2 ) )  mod  P
) )
191189, 190bitri 264 . . . . . . . . . . . . . . . . 17  |-  ( ( ( z ^ ( P  -  2 ) )  mod  P )  e.  { z }  <-> 
z  =  ( ( z ^ ( P  -  2 ) )  mod  P ) )
192 orcom 402 . . . . . . . . . . . . . . . . 17  |-  ( ( z  =  ( P  -  1 )  \/  z  =  1 )  <-> 
( z  =  1  \/  z  =  ( P  -  1 ) ) )
193158, 191, 1923bitr4g 303 . . . . . . . . . . . . . . . 16  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( (
( z ^ ( P  -  2 ) )  mod  P )  e.  { z }  <-> 
( z  =  ( P  -  1 )  \/  z  =  1 ) ) )
194187, 193bitr4d 271 . . . . . . . . . . . . . . 15  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( z  =  1  <->  ( (
z ^ ( P  -  2 ) )  mod  P )  e. 
{ z } ) )
195194necon3abid 2830 . . . . . . . . . . . . . 14  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( z  =/=  1  <->  -.  ( (
z ^ ( P  -  2 ) )  mod  P )  e. 
{ z } ) )
196195biimpa 501 . . . . . . . . . . . . 13  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =/=  1 )  ->  -.  ( ( z ^
( P  -  2 ) )  mod  P
)  e.  { z } )
197 id 22 . . . . . . . . . . . . 13  |-  ( w  =  ( ( z ^ ( P  - 
2 ) )  mod 
P )  ->  w  =  ( ( z ^ ( P  - 
2 ) )  mod 
P ) )
19839, 61, 173, 175, 180, 182, 196, 182, 197gsumunsn 18359 . . . . . . . . . . . 12  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =/=  1 )  -> 
( T  gsumg  ( w  e.  ( { z }  u.  { ( ( z ^
( P  -  2 ) )  mod  P
) } )  |->  w ) )  =  ( ( T  gsumg  ( w  e.  {
z }  |->  w ) )  x.  ( ( z ^ ( P  -  2 ) )  mod  P ) ) )
199172, 198syl5eq 2668 . . . . . . . . . . 11  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =/=  1 )  -> 
( T  gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) )  =  ( ( T  gsumg  ( w  e.  {
z }  |->  w ) )  x.  ( ( z ^ ( P  -  2 ) )  mod  P ) ) )
200149adantr 481 . . . . . . . . . . . 12  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =/=  1 )  -> 
( T  gsumg  ( w  e.  {
z }  |->  w ) )  =  z )
201200oveq1d 6665 . . . . . . . . . . 11  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =/=  1 )  -> 
( ( T  gsumg  ( w  e.  { z } 
|->  w ) )  x.  ( ( z ^
( P  -  2 ) )  mod  P
) )  =  ( z  x.  ( ( z ^ ( P  -  2 ) )  mod  P ) ) )
202199, 201eqtrd 2656 . . . . . . . . . 10  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =/=  1 )  -> 
( T  gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) )  =  ( z  x.  ( ( z ^ ( P  - 
2 ) )  mod 
P ) ) )
203202oveq1d 6665 . . . . . . . . 9  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =/=  1 )  -> 
( ( T  gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  mod 
P )  =  ( ( z  x.  (
( z ^ ( P  -  2 ) )  mod  P ) )  mod  P ) )
204156, 72syl 17 . . . . . . . . . . . . 13  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  z  e.  ZZ )
20522adantr 481 . . . . . . . . . . . . . 14  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  P  e.  NN )
206 fzm1ndvds 15044 . . . . . . . . . . . . . 14  |-  ( ( P  e.  NN  /\  z  e.  ( 1 ... ( P  - 
1 ) ) )  ->  -.  P  ||  z
)
207205, 156, 206syl2anc 693 . . . . . . . . . . . . 13  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  -.  P  ||  z )
208 eqid 2622 . . . . . . . . . . . . . 14  |-  ( ( z ^ ( P  -  2 ) )  mod  P )  =  ( ( z ^
( P  -  2 ) )  mod  P
)
209208prmdiv 15490 . . . . . . . . . . . . 13  |-  ( ( P  e.  Prime  /\  z  e.  ZZ  /\  -.  P  ||  z )  ->  (
( ( z ^
( P  -  2 ) )  mod  P
)  e.  ( 1 ... ( P  - 
1 ) )  /\  P  ||  ( ( z  x.  ( ( z ^ ( P  - 
2 ) )  mod 
P ) )  - 
1 ) ) )
210155, 204, 207, 209syl3anc 1326 . . . . . . . . . . . 12  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( (
( z ^ ( P  -  2 ) )  mod  P )  e.  ( 1 ... ( P  -  1 ) )  /\  P  ||  ( ( z  x.  ( ( z ^
( P  -  2 ) )  mod  P
) )  -  1 ) ) )
211210simprd 479 . . . . . . . . . . 11  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  P  ||  (
( z  x.  (
( z ^ ( P  -  2 ) )  mod  P ) )  -  1 ) )
212 elfznn 12370 . . . . . . . . . . . . . . 15  |-  ( z  e.  ( 1 ... ( P  -  1 ) )  ->  z  e.  NN )
213156, 212syl 17 . . . . . . . . . . . . . 14  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  z  e.  NN )
214131, 97sseldd 3604 . . . . . . . . . . . . . . 15  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( (
z ^ ( P  -  2 ) )  mod  P )  e.  ( 1 ... ( P  -  1 ) ) )
215 elfznn 12370 . . . . . . . . . . . . . . 15  |-  ( ( ( z ^ ( P  -  2 ) )  mod  P )  e.  ( 1 ... ( P  -  1 ) )  ->  (
( z ^ ( P  -  2 ) )  mod  P )  e.  NN )
216214, 215syl 17 . . . . . . . . . . . . . 14  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( (
z ^ ( P  -  2 ) )  mod  P )  e.  NN )
217213, 216nnmulcld 11068 . . . . . . . . . . . . 13  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( z  x.  ( ( z ^
( P  -  2 ) )  mod  P
) )  e.  NN )
218217nnzd 11481 . . . . . . . . . . . 12  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( z  x.  ( ( z ^
( P  -  2 ) )  mod  P
) )  e.  ZZ )
219 1zzd 11408 . . . . . . . . . . . 12  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  1  e.  ZZ )
220 moddvds 14991 . . . . . . . . . . . 12  |-  ( ( P  e.  NN  /\  ( z  x.  (
( z ^ ( P  -  2 ) )  mod  P ) )  e.  ZZ  /\  1  e.  ZZ )  ->  ( ( ( z  x.  ( ( z ^ ( P  - 
2 ) )  mod 
P ) )  mod 
P )  =  ( 1  mod  P )  <-> 
P  ||  ( (
z  x.  ( ( z ^ ( P  -  2 ) )  mod  P ) )  -  1 ) ) )
221205, 218, 219, 220syl3anc 1326 . . . . . . . . . . 11  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( (
( z  x.  (
( z ^ ( P  -  2 ) )  mod  P ) )  mod  P )  =  ( 1  mod 
P )  <->  P  ||  (
( z  x.  (
( z ^ ( P  -  2 ) )  mod  P ) )  -  1 ) ) )
222211, 221mpbird 247 . . . . . . . . . 10  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( (
z  x.  ( ( z ^ ( P  -  2 ) )  mod  P ) )  mod  P )  =  ( 1  mod  P
) )
223222adantr 481 . . . . . . . . 9  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =/=  1 )  -> 
( ( z  x.  ( ( z ^
( P  -  2 ) )  mod  P
) )  mod  P
)  =  ( 1  mod  P ) )
224203, 223eqtrd 2656 . . . . . . . 8  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  z  =/=  1 )  -> 
( ( T  gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  mod 
P )  =  ( 1  mod  P ) )
225167, 224pm2.61dane 2881 . . . . . . 7  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( T  gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) )  mod  P )  =  ( 1  mod 
P ) )
226 modmul1 12723 . . . . . . 7  |-  ( ( ( ( T  gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  e.  RR  /\  1  e.  RR )  /\  (
( T  gsumg  (  _I  |`  ( S  \  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) )  e.  ZZ  /\  P  e.  RR+ )  /\  ( ( T  gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  mod 
P )  =  ( 1  mod  P ) )  ->  ( (
( T  gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) )  x.  ( T 
gsumg  (  _I  |`  ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) ) )  mod  P
)  =  ( ( 1  x.  ( T 
gsumg  (  _I  |`  ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) ) )  mod  P
) )
227129, 130, 142, 143, 225, 226syl221anc 1337 . . . . . 6  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( (
( T  gsumg  (  _I  |`  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) )  x.  ( T 
gsumg  (  _I  |`  ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) ) )  mod  P
)  =  ( ( 1  x.  ( T 
gsumg  (  _I  |`  ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) ) )  mod  P
) )
228142zcnd 11483 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( T  gsumg  (  _I  |`  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) )  e.  CC )
229228mulid2d 10058 . . . . . . . 8  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( 1  x.  ( T  gsumg  (  _I  |`  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) ) )  =  ( T  gsumg  (  _I  |`  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) ) )
230229oveq1d 6665 . . . . . . 7  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( (
1  x.  ( T 
gsumg  (  _I  |`  ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) ) )  mod  P
)  =  ( ( T  gsumg  (  _I  |`  ( S  \  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) )  mod  P ) )
231 ovex 6678 . . . . . . . . . . 11  |-  ( 1 ... ( P  - 
1 ) )  e. 
_V
232231elpw2 4828 . . . . . . . . . 10  |-  ( ( S  \  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } )  e.  ~P ( 1 ... ( P  - 
1 ) )  <->  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  C_  (
1 ... ( P  - 
1 ) ) )
233132, 232sylibr 224 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  e.  ~P ( 1 ... ( P  -  1 ) ) )
23411adantr 481 . . . . . . . . . . 11  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( P  -  1 )  e.  S )
235 eqcom 2629 . . . . . . . . . . . . . . 15  |-  ( z  =  ( P  - 
1 )  <->  ( P  -  1 )  =  z )
236184, 235bitri 264 . . . . . . . . . . . . . 14  |-  ( z  e.  { ( P  -  1 ) }  <-> 
( P  -  1 )  =  z )
237183, 236sylnib 318 . . . . . . . . . . . . 13  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  -.  ( P  -  1 )  =  z )
238 oveq1 6657 . . . . . . . . . . . . . . . 16  |-  ( ( P  -  1 )  =  ( ( z ^ ( P  - 
2 ) )  mod 
P )  ->  (
( P  -  1 ) ^ ( P  -  2 ) )  =  ( ( ( z ^ ( P  -  2 ) )  mod  P ) ^
( P  -  2 ) ) )
239238oveq1d 6665 . . . . . . . . . . . . . . 15  |-  ( ( P  -  1 )  =  ( ( z ^ ( P  - 
2 ) )  mod 
P )  ->  (
( ( P  - 
1 ) ^ ( P  -  2 ) )  mod  P )  =  ( ( ( ( z ^ ( P  -  2 ) )  mod  P ) ^ ( P  - 
2 ) )  mod 
P ) )
240205, 35syl 17 . . . . . . . . . . . . . . . . . . 19  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( P  -  1 )  e. 
NN0 )
241 nn0uz 11722 . . . . . . . . . . . . . . . . . . 19  |-  NN0  =  ( ZZ>= `  0 )
242240, 241syl6eleq 2711 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( P  -  1 )  e.  ( ZZ>= `  0 )
)
243 eluzfz2 12349 . . . . . . . . . . . . . . . . . 18  |-  ( ( P  -  1 )  e.  ( ZZ>= `  0
)  ->  ( P  -  1 )  e.  ( 0 ... ( P  -  1 ) ) )
244242, 243syl 17 . . . . . . . . . . . . . . . . 17  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( P  -  1 )  e.  ( 0 ... ( P  -  1 ) ) )
245 prmz 15389 . . . . . . . . . . . . . . . . . . . 20  |-  ( P  e.  Prime  ->  P  e.  ZZ )
246155, 245syl 17 . . . . . . . . . . . . . . . . . . 19  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  P  e.  ZZ )
247122, 234sseldd 3604 . . . . . . . . . . . . . . . . . . . 20  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( P  -  1 )  e.  ZZ )
248 1z 11407 . . . . . . . . . . . . . . . . . . . 20  |-  1  e.  ZZ
249 zsubcl 11419 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( P  -  1 )  e.  ZZ  /\  1  e.  ZZ )  ->  ( ( P  - 
1 )  -  1 )  e.  ZZ )
250247, 248, 249sylancl 694 . . . . . . . . . . . . . . . . . . 19  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( P  -  1 )  -  1 )  e.  ZZ )
251 dvdsmul1 15003 . . . . . . . . . . . . . . . . . . 19  |-  ( ( P  e.  ZZ  /\  ( ( P  - 
1 )  -  1 )  e.  ZZ )  ->  P  ||  ( P  x.  ( ( P  -  1 )  -  1 ) ) )
252246, 250, 251syl2anc 693 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  P  ||  ( P  x.  ( ( P  -  1 )  -  1 ) ) )
253205nncnd 11036 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  P  e.  CC )
25424a1i 11 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  1  e.  CC )
255240nn0cnd 11353 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( P  -  1 )  e.  CC )
256253, 254, 255subdird 10487 . . . . . . . . . . . . . . . . . . . . 21  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( P  -  1 )  x.  ( P  - 
1 ) )  =  ( ( P  x.  ( P  -  1
) )  -  (
1  x.  ( P  -  1 ) ) ) )
257253, 255mulcld 10060 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( P  x.  ( P  -  1 ) )  e.  CC )
258257, 253, 254subsubd 10420 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( P  x.  ( P  -  1 ) )  -  ( P  - 
1 ) )  =  ( ( ( P  x.  ( P  - 
1 ) )  -  P )  +  1 ) )
259255mulid2d 10058 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( 1  x.  ( P  - 
1 ) )  =  ( P  -  1 ) )
260259oveq2d 6666 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( P  x.  ( P  -  1 ) )  -  ( 1  x.  ( P  -  1 ) ) )  =  ( ( P  x.  ( P  -  1
) )  -  ( P  -  1 ) ) )
261253, 255, 254subdid 10486 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( P  x.  ( ( P  - 
1 )  -  1 ) )  =  ( ( P  x.  ( P  -  1 ) )  -  ( P  x.  1 ) ) )
262253mulid1d 10057 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( P  x.  1 )  =  P )
263262oveq2d 6666 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( P  x.  ( P  -  1 ) )  -  ( P  x.  1 ) )  =  ( ( P  x.  ( P  -  1
) )  -  P
) )
264261, 263eqtrd 2656 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( P  x.  ( ( P  - 
1 )  -  1 ) )  =  ( ( P  x.  ( P  -  1 ) )  -  P ) )
265264oveq1d 6665 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( P  x.  ( ( P  -  1 )  -  1 ) )  +  1 )  =  ( ( ( P  x.  ( P  - 
1 ) )  -  P )  +  1 ) )
266258, 260, 2653eqtr4d 2666 . . . . . . . . . . . . . . . . . . . . 21  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( P  x.  ( P  -  1 ) )  -  ( 1  x.  ( P  -  1 ) ) )  =  ( ( P  x.  ( ( P  - 
1 )  -  1 ) )  +  1 ) )
267256, 266eqtrd 2656 . . . . . . . . . . . . . . . . . . . 20  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( P  -  1 )  x.  ( P  - 
1 ) )  =  ( ( P  x.  ( ( P  - 
1 )  -  1 ) )  +  1 ) )
268267oveq1d 6665 . . . . . . . . . . . . . . . . . . 19  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( (
( P  -  1 )  x.  ( P  -  1 ) )  -  1 )  =  ( ( ( P  x.  ( ( P  -  1 )  - 
1 ) )  +  1 )  -  1 ) )
269250zcnd 11483 . . . . . . . . . . . . . . . . . . . . 21  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( P  -  1 )  -  1 )  e.  CC )
270253, 269mulcld 10060 . . . . . . . . . . . . . . . . . . . 20  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( P  x.  ( ( P  - 
1 )  -  1 ) )  e.  CC )
271 pncan 10287 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( P  x.  (
( P  -  1 )  -  1 ) )  e.  CC  /\  1  e.  CC )  ->  ( ( ( P  x.  ( ( P  -  1 )  - 
1 ) )  +  1 )  -  1 )  =  ( P  x.  ( ( P  -  1 )  - 
1 ) ) )
272270, 24, 271sylancl 694 . . . . . . . . . . . . . . . . . . 19  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( (
( P  x.  (
( P  -  1 )  -  1 ) )  +  1 )  -  1 )  =  ( P  x.  (
( P  -  1 )  -  1 ) ) )
273268, 272eqtrd 2656 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( (
( P  -  1 )  x.  ( P  -  1 ) )  -  1 )  =  ( P  x.  (
( P  -  1 )  -  1 ) ) )
274252, 273breqtrrd 4681 . . . . . . . . . . . . . . . . 17  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  P  ||  (
( ( P  - 
1 )  x.  ( P  -  1 ) )  -  1 ) )
275131, 234sseldd 3604 . . . . . . . . . . . . . . . . . . 19  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( P  -  1 )  e.  ( 1 ... ( P  -  1 ) ) )
276 fzm1ndvds 15044 . . . . . . . . . . . . . . . . . . 19  |-  ( ( P  e.  NN  /\  ( P  -  1
)  e.  ( 1 ... ( P  - 
1 ) ) )  ->  -.  P  ||  ( P  -  1 ) )
277205, 275, 276syl2anc 693 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  -.  P  ||  ( P  -  1 ) )
278 eqid 2622 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( P  -  1 ) ^ ( P  -  2 ) )  mod  P )  =  ( ( ( P  -  1 ) ^
( P  -  2 ) )  mod  P
)
279278prmdiveq 15491 . . . . . . . . . . . . . . . . . 18  |-  ( ( P  e.  Prime  /\  ( P  -  1 )  e.  ZZ  /\  -.  P  ||  ( P  - 
1 ) )  -> 
( ( ( P  -  1 )  e.  ( 0 ... ( P  -  1 ) )  /\  P  ||  ( ( ( P  -  1 )  x.  ( P  -  1 ) )  -  1 ) )  <->  ( P  -  1 )  =  ( ( ( P  -  1 ) ^
( P  -  2 ) )  mod  P
) ) )
280155, 247, 277, 279syl3anc 1326 . . . . . . . . . . . . . . . . 17  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( (
( P  -  1 )  e.  ( 0 ... ( P  - 
1 ) )  /\  P  ||  ( ( ( P  -  1 )  x.  ( P  - 
1 ) )  - 
1 ) )  <->  ( P  -  1 )  =  ( ( ( P  -  1 ) ^
( P  -  2 ) )  mod  P
) ) )
281244, 274, 280mpbi2and 956 . . . . . . . . . . . . . . . 16  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( P  -  1 )  =  ( ( ( P  -  1 ) ^
( P  -  2 ) )  mod  P
) )
282208prmdivdiv 15492 . . . . . . . . . . . . . . . . 17  |-  ( ( P  e.  Prime  /\  z  e.  ( 1 ... ( P  -  1 ) ) )  ->  z  =  ( ( ( ( z ^ ( P  -  2 ) )  mod  P ) ^ ( P  - 
2 ) )  mod 
P ) )
283155, 156, 282syl2anc 693 . . . . . . . . . . . . . . . 16  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  z  =  ( ( ( ( z ^ ( P  -  2 ) )  mod  P ) ^
( P  -  2 ) )  mod  P
) )
284281, 283eqeq12d 2637 . . . . . . . . . . . . . . 15  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( P  -  1 )  =  z  <->  ( (
( P  -  1 ) ^ ( P  -  2 ) )  mod  P )  =  ( ( ( ( z ^ ( P  -  2 ) )  mod  P ) ^
( P  -  2 ) )  mod  P
) ) )
285239, 284syl5ibr 236 . . . . . . . . . . . . . 14  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( P  -  1 )  =  ( ( z ^ ( P  - 
2 ) )  mod 
P )  ->  ( P  -  1 )  =  z ) )
286237, 285mtod 189 . . . . . . . . . . . . 13  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  -.  ( P  -  1 )  =  ( ( z ^ ( P  - 
2 ) )  mod 
P ) )
287 ioran 511 . . . . . . . . . . . . 13  |-  ( -.  ( ( P  - 
1 )  =  z  \/  ( P  - 
1 )  =  ( ( z ^ ( P  -  2 ) )  mod  P ) )  <->  ( -.  ( P  -  1 )  =  z  /\  -.  ( P  -  1
)  =  ( ( z ^ ( P  -  2 ) )  mod  P ) ) )
288237, 286, 287sylanbrc 698 . . . . . . . . . . . 12  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  -.  (
( P  -  1 )  =  z  \/  ( P  -  1 )  =  ( ( z ^ ( P  -  2 ) )  mod  P ) ) )
289 ovex 6678 . . . . . . . . . . . . 13  |-  ( P  -  1 )  e. 
_V
290289elpr 4198 . . . . . . . . . . . 12  |-  ( ( P  -  1 )  e.  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) }  <->  ( ( P  -  1 )  =  z  \/  ( P  -  1 )  =  ( ( z ^ ( P  - 
2 ) )  mod 
P ) ) )
291288, 290sylnibr 319 . . . . . . . . . . 11  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  -.  ( P  -  1 )  e.  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } )
292234, 291eldifd 3585 . . . . . . . . . 10  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( P  -  1 )  e.  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )
293 eldifi 3732 . . . . . . . . . . . . 13  |-  ( y  e.  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  ->  y  e.  S )
29492r19.21bi 2932 . . . . . . . . . . . . 13  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  y  e.  S )  ->  ( ( y ^
( P  -  2 ) )  mod  P
)  e.  S )
295293, 294sylan2 491 . . . . . . . . . . . 12  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  y  e.  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  -> 
( ( y ^
( P  -  2 ) )  mod  P
)  e.  S )
296 eldif 3584 . . . . . . . . . . . . 13  |-  ( y  e.  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  <->  ( y  e.  S  /\  -.  y  e.  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )
297155adantr 481 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  y  e.  S )  ->  P  e.  Prime )
298131sselda 3603 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  y  e.  S )  ->  y  e.  ( 1 ... ( P  - 
1 ) ) )
299 eqid 2622 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( y ^ ( P  -  2 ) )  mod  P )  =  ( ( y ^
( P  -  2 ) )  mod  P
)
300299prmdivdiv 15492 . . . . . . . . . . . . . . . . . . 19  |-  ( ( P  e.  Prime  /\  y  e.  ( 1 ... ( P  -  1 ) ) )  ->  y  =  ( ( ( ( y ^ ( P  -  2 ) )  mod  P ) ^ ( P  - 
2 ) )  mod 
P ) )
301297, 298, 300syl2anc 693 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  y  e.  S )  ->  y  =  ( ( ( ( y ^
( P  -  2 ) )  mod  P
) ^ ( P  -  2 ) )  mod  P ) )
302 oveq1 6657 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( y ^ ( P  -  2 ) )  mod  P )  =  z  ->  (
( ( y ^
( P  -  2 ) )  mod  P
) ^ ( P  -  2 ) )  =  ( z ^
( P  -  2 ) ) )
303302oveq1d 6665 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( y ^ ( P  -  2 ) )  mod  P )  =  z  ->  (
( ( ( y ^ ( P  - 
2 ) )  mod 
P ) ^ ( P  -  2 ) )  mod  P )  =  ( ( z ^ ( P  - 
2 ) )  mod 
P ) )
304303eqeq2d 2632 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( y ^ ( P  -  2 ) )  mod  P )  =  z  ->  (
y  =  ( ( ( ( y ^
( P  -  2 ) )  mod  P
) ^ ( P  -  2 ) )  mod  P )  <->  y  =  ( ( z ^
( P  -  2 ) )  mod  P
) ) )
305301, 304syl5ibcom 235 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  y  e.  S )  ->  ( ( ( y ^ ( P  - 
2 ) )  mod 
P )  =  z  ->  y  =  ( ( z ^ ( P  -  2 ) )  mod  P ) ) )
306 oveq1 6657 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( y ^ ( P  -  2 ) )  mod  P )  =  ( ( z ^ ( P  - 
2 ) )  mod 
P )  ->  (
( ( y ^
( P  -  2 ) )  mod  P
) ^ ( P  -  2 ) )  =  ( ( ( z ^ ( P  -  2 ) )  mod  P ) ^
( P  -  2 ) ) )
307306oveq1d 6665 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( y ^ ( P  -  2 ) )  mod  P )  =  ( ( z ^ ( P  - 
2 ) )  mod 
P )  ->  (
( ( ( y ^ ( P  - 
2 ) )  mod 
P ) ^ ( P  -  2 ) )  mod  P )  =  ( ( ( ( z ^ ( P  -  2 ) )  mod  P ) ^ ( P  - 
2 ) )  mod 
P ) )
308283adantr 481 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  y  e.  S )  ->  z  =  ( ( ( ( z ^
( P  -  2 ) )  mod  P
) ^ ( P  -  2 ) )  mod  P ) )
309301, 308eqeq12d 2637 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  y  e.  S )  ->  ( y  =  z  <-> 
( ( ( ( y ^ ( P  -  2 ) )  mod  P ) ^
( P  -  2 ) )  mod  P
)  =  ( ( ( ( z ^
( P  -  2 ) )  mod  P
) ^ ( P  -  2 ) )  mod  P ) ) )
310307, 309syl5ibr 236 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  y  e.  S )  ->  ( ( ( y ^ ( P  - 
2 ) )  mod 
P )  =  ( ( z ^ ( P  -  2 ) )  mod  P )  ->  y  =  z ) )
311305, 310orim12d 883 . . . . . . . . . . . . . . . 16  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  y  e.  S )  ->  ( ( ( ( y ^ ( P  -  2 ) )  mod  P )  =  z  \/  ( ( y ^ ( P  -  2 ) )  mod  P )  =  ( ( z ^
( P  -  2 ) )  mod  P
) )  ->  (
y  =  ( ( z ^ ( P  -  2 ) )  mod  P )  \/  y  =  z ) ) )
312 ovex 6678 . . . . . . . . . . . . . . . . 17  |-  ( ( y ^ ( P  -  2 ) )  mod  P )  e. 
_V
313312elpr 4198 . . . . . . . . . . . . . . . 16  |-  ( ( ( y ^ ( P  -  2 ) )  mod  P )  e.  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) }  <->  ( (
( y ^ ( P  -  2 ) )  mod  P )  =  z  \/  (
( y ^ ( P  -  2 ) )  mod  P )  =  ( ( z ^ ( P  - 
2 ) )  mod 
P ) ) )
314 vex 3203 . . . . . . . . . . . . . . . . . 18  |-  y  e. 
_V
315314elpr 4198 . . . . . . . . . . . . . . . . 17  |-  ( y  e.  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) }  <->  ( y  =  z  \/  y  =  ( ( z ^ ( P  - 
2 ) )  mod 
P ) ) )
316 orcom 402 . . . . . . . . . . . . . . . . 17  |-  ( ( y  =  z  \/  y  =  ( ( z ^ ( P  -  2 ) )  mod  P ) )  <-> 
( y  =  ( ( z ^ ( P  -  2 ) )  mod  P )  \/  y  =  z ) )
317315, 316bitri 264 . . . . . . . . . . . . . . . 16  |-  ( y  e.  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) }  <->  ( y  =  ( ( z ^ ( P  - 
2 ) )  mod 
P )  \/  y  =  z ) )
318311, 313, 3173imtr4g 285 . . . . . . . . . . . . . . 15  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  y  e.  S )  ->  ( ( ( y ^ ( P  - 
2 ) )  mod 
P )  e.  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) }  ->  y  e.  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )
319318con3d 148 . . . . . . . . . . . . . 14  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  y  e.  S )  ->  ( -.  y  e. 
{ z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) }  ->  -.  (
( y ^ ( P  -  2 ) )  mod  P )  e.  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) )
320319impr 649 . . . . . . . . . . . . 13  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  ( y  e.  S  /\  -.  y  e.  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  ->  -.  ( ( y ^
( P  -  2 ) )  mod  P
)  e.  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } )
321296, 320sylan2b 492 . . . . . . . . . . . 12  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  y  e.  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  ->  -.  ( ( y ^
( P  -  2 ) )  mod  P
)  e.  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } )
322295, 321eldifd 3585 . . . . . . . . . . 11  |-  ( ( ( ph  /\  (
z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } ) )  /\  y  e.  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) )  -> 
( ( y ^
( P  -  2 ) )  mod  P
)  e.  ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) )
323322ralrimiva 2966 . . . . . . . . . 10  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  A. y  e.  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ( ( y ^ ( P  - 
2 ) )  mod 
P )  e.  ( S  \  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) )
324292, 323jca 554 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( P  -  1 )  e.  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  /\  A. y  e.  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ( ( y ^ ( P  -  2 ) )  mod  P )  e.  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) )
325 eleq2 2690 . . . . . . . . . . 11  |-  ( x  =  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  ->  (
( P  -  1 )  e.  x  <->  ( P  -  1 )  e.  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) )
326 eleq2 2690 . . . . . . . . . . . 12  |-  ( x  =  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  ->  (
( ( y ^
( P  -  2 ) )  mod  P
)  e.  x  <->  ( (
y ^ ( P  -  2 ) )  mod  P )  e.  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) )
327326raleqbi1dv 3146 . . . . . . . . . . 11  |-  ( x  =  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  ->  ( A. y  e.  x  ( ( y ^
( P  -  2 ) )  mod  P
)  e.  x  <->  A. y  e.  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ( ( y ^ ( P  - 
2 ) )  mod 
P )  e.  ( S  \  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) ) )
328325, 327anbi12d 747 . . . . . . . . . 10  |-  ( x  =  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  ->  (
( ( P  - 
1 )  e.  x  /\  A. y  e.  x  ( ( y ^
( P  -  2 ) )  mod  P
)  e.  x )  <-> 
( ( P  - 
1 )  e.  ( S  \  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } )  /\  A. y  e.  ( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ( ( y ^ ( P  - 
2 ) )  mod 
P )  e.  ( S  \  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) ) ) )
329328, 7elrab2 3366 . . . . . . . . 9  |-  ( ( S  \  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } )  e.  A  <->  ( ( S  \  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } )  e. 
~P ( 1 ... ( P  -  1 ) )  /\  (
( P  -  1 )  e.  ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } )  /\  A. y  e.  ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ( ( y ^ ( P  -  2 ) )  mod  P )  e.  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } ) ) ) )
330233, 324, 329sylanbrc 698 . . . . . . . 8  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  e.  A
)
331 wilthlem2.r . . . . . . . . 9  |-  ( ph  ->  A. s  e.  A  ( s  C.  S  ->  ( ( T  gsumg  (  _I  |`  s ) )  mod 
P )  =  (
-u 1  mod  P
) ) )
332331adantr 481 . . . . . . . 8  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  A. s  e.  A  ( s  C.  S  ->  ( ( T  gsumg  (  _I  |`  s
) )  mod  P
)  =  ( -u
1  mod  P )
) )
333 sseqin2 3817 . . . . . . . . . . 11  |-  ( { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } 
C_  S  <->  ( S  i^i  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  =  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )
33499, 333sylib 208 . . . . . . . . . 10  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( S  i^i  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  =  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )
335 vex 3203 . . . . . . . . . . . 12  |-  z  e. 
_V
336335prnz 4310 . . . . . . . . . . 11  |-  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) }  =/=  (/)
337336a1i 11 . . . . . . . . . 10  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) }  =/=  (/) )
338334, 337eqnetrd 2861 . . . . . . . . 9  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( S  i^i  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  =/=  (/) )
339 disj4 4025 . . . . . . . . . 10  |-  ( ( S  i^i  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } )  =  (/)  <->  -.  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  C.  S
)
340339necon2abii 2844 . . . . . . . . 9  |-  ( ( S  \  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } ) 
C.  S  <->  ( S  i^i  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  =/=  (/) )
341338, 340sylibr 224 . . . . . . . 8  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  C.  S
)
342 psseq1 3694 . . . . . . . . . 10  |-  ( s  =  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  ->  (
s  C.  S  <->  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  C.  S
) )
343 reseq2 5391 . . . . . . . . . . . . 13  |-  ( s  =  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  ->  (  _I  |`  s )  =  (  _I  |`  ( S  \  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) )
344343oveq2d 6666 . . . . . . . . . . . 12  |-  ( s  =  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  ->  ( T  gsumg  (  _I  |`  s
) )  =  ( T  gsumg  (  _I  |`  ( S  \  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) ) )
345344oveq1d 6665 . . . . . . . . . . 11  |-  ( s  =  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  ->  (
( T  gsumg  (  _I  |`  s
) )  mod  P
)  =  ( ( T  gsumg  (  _I  |`  ( S  \  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) )  mod  P ) )
346345eqeq1d 2624 . . . . . . . . . 10  |-  ( s  =  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  ->  (
( ( T  gsumg  (  _I  |`  s ) )  mod 
P )  =  (
-u 1  mod  P
)  <->  ( ( T 
gsumg  (  _I  |`  ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) )  mod  P )  =  ( -u 1  mod  P ) ) )
347342, 346imbi12d 334 . . . . . . . . 9  |-  ( s  =  ( S  \  { z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  ->  (
( s  C.  S  ->  ( ( T  gsumg  (  _I  |`  s ) )  mod 
P )  =  (
-u 1  mod  P
) )  <->  ( ( S  \  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } )  C.  S  ->  ( ( T 
gsumg  (  _I  |`  ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) )  mod  P )  =  ( -u 1  mod  P ) ) ) )
348347rspcv 3305 . . . . . . . 8  |-  ( ( S  \  { z ,  ( ( z ^ ( P  - 
2 ) )  mod 
P ) } )  e.  A  ->  ( A. s  e.  A  ( s  C.  S  ->  ( ( T  gsumg  (  _I  |`  s ) )  mod 
P )  =  (
-u 1  mod  P
) )  ->  (
( S  \  {
z ,  ( ( z ^ ( P  -  2 ) )  mod  P ) } )  C.  S  ->  ( ( T  gsumg  (  _I  |`  ( S  \  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) )  mod  P )  =  ( -u 1  mod  P ) ) ) )
349330, 332, 341, 348syl3c 66 . . . . . . 7  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( T  gsumg  (  _I  |`  ( S  \  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) )  mod  P )  =  ( -u 1  mod  P ) )
350230, 349eqtrd 2656 . . . . . 6  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( (
1  x.  ( T 
gsumg  (  _I  |`  ( S 
\  { z ,  ( ( z ^
( P  -  2 ) )  mod  P
) } ) ) ) )  mod  P
)  =  ( -u
1  mod  P )
)
351113, 227, 3503eqtrd 2660 . . . . 5  |-  ( (
ph  /\  ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } ) )  ->  ( ( T  gsumg  (  _I  |`  S ) )  mod  P )  =  ( -u 1  mod  P ) )
352351ex 450 . . . 4  |-  ( ph  ->  ( ( z  e.  S  /\  -.  z  e.  { ( P  - 
1 ) } )  ->  ( ( T 
gsumg  (  _I  |`  S ) )  mod  P )  =  ( -u 1  mod  P ) ) )
353352exlimdv 1861 . . 3  |-  ( ph  ->  ( E. z ( z  e.  S  /\  -.  z  e.  { ( P  -  1 ) } )  ->  (
( T  gsumg  (  _I  |`  S ) )  mod  P )  =  ( -u 1  mod  P ) ) )
35457, 353syl5bi 232 . 2  |-  ( ph  ->  ( -.  S  C_  { ( P  -  1 ) }  ->  (
( T  gsumg  (  _I  |`  S ) )  mod  P )  =  ( -u 1  mod  P ) ) )
35556, 354pm2.61d 170 1  |-  ( ph  ->  ( ( T  gsumg  (  _I  |`  S ) )  mod 
P )  =  (
-u 1  mod  P
) )
Colors of variables: wff setvar class
Syntax hints:   -. wn 3    -> wi 4    <-> wb 196    \/ wo 383    /\ wa 384    = wceq 1483   E.wex 1704    e. wcel 1990    =/= wne 2794   A.wral 2912   {crab 2916   _Vcvv 3200    \ cdif 3571    u. cun 3572    i^i cin 3573    C_ wss 3574    C. wpss 3575   (/)c0 3915   ~Pcpw 4158   {csn 4177   {cpr 4179   class class class wbr 4653    |-> cmpt 4729    _I cid 5023    |` cres 5116   -->wf 5884   -1-1-onto->wf1o 5887   ` cfv 5888  (class class class)co 6650   Fincfn 7955   finSupp cfsupp 8275   CCcc 9934   RRcr 9935   0cc0 9936   1c1 9937    + caddc 9939    x. cmul 9941    - cmin 10266   -ucneg 10267   NNcn 11020   2c2 11070   NN0cn0 11292   ZZcz 11377   ZZ>=cuz 11687   RR+crp 11832   ...cfz 12326    mod cmo 12668   ^cexp 12860    || cdvds 14983   Primecprime 15385    gsumg cgsu 16101   Mndcmnd 17294  SubMndcsubmnd 17334  CMndccmn 18193  mulGrpcmgp 18489   Ringcrg 18547   CRingccrg 18548  SubRingcsubrg 18776  ℂfldccnfld 19746
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1722  ax-4 1737  ax-5 1839  ax-6 1888  ax-7 1935  ax-8 1992  ax-9 1999  ax-10 2019  ax-11 2034  ax-12 2047  ax-13 2246  ax-ext 2602  ax-rep 4771  ax-sep 4781  ax-nul 4789  ax-pow 4843  ax-pr 4906  ax-un 6949  ax-inf2 8538  ax-cnex 9992  ax-resscn 9993  ax-1cn 9994  ax-icn 9995  ax-addcl 9996  ax-addrcl 9997  ax-mulcl 9998  ax-mulrcl 9999  ax-mulcom 10000  ax-addass 10001  ax-mulass 10002  ax-distr 10003  ax-i2m1 10004  ax-1ne0 10005  ax-1rid 10006  ax-rnegex 10007  ax-rrecex 10008  ax-cnre 10009  ax-pre-lttri 10010  ax-pre-lttrn 10011  ax-pre-ltadd 10012  ax-pre-mulgt0 10013  ax-pre-sup 10014  ax-addf 10015  ax-mulf 10016
This theorem depends on definitions:  df-bi 197  df-or 385  df-an 386  df-3or 1038  df-3an 1039  df-tru 1486  df-ex 1705  df-nf 1710  df-sb 1881  df-eu 2474  df-mo 2475  df-clab 2609  df-cleq 2615  df-clel 2618  df-nfc 2753  df-ne 2795  df-nel 2898  df-ral 2917  df-rex 2918  df-reu 2919  df-rmo 2920  df-rab 2921  df-v 3202  df-sbc 3436  df-csb 3534  df-dif 3577  df-un 3579  df-in 3581  df-ss 3588  df-pss 3590  df-nul 3916  df-if 4087  df-pw 4160  df-sn 4178  df-pr 4180  df-tp 4182  df-op 4184  df-uni 4437  df-int 4476  df-iun 4522  df-iin 4523  df-br 4654  df-opab 4713  df-mpt 4730  df-tr 4753  df-id 5024  df-eprel 5029  df-po 5035  df-so 5036  df-fr 5073  df-se 5074  df-we 5075  df-xp 5120  df-rel 5121  df-cnv 5122  df-co 5123  df-dm 5124  df-rn 5125  df-res 5126  df-ima 5127  df-pred 5680  df-ord 5726  df-on 5727  df-lim 5728  df-suc 5729  df-iota 5851  df-fun 5890  df-fn 5891  df-f 5892  df-f1 5893  df-fo 5894  df-f1o 5895  df-fv 5896  df-isom 5897  df-riota 6611  df-ov 6653  df-oprab 6654  df-mpt2 6655  df-of 6897  df-om 7066  df-1st 7168  df-2nd 7169  df-supp 7296  df-wrecs 7407  df-recs 7468  df-rdg 7506  df-1o 7560  df-2o 7561  df-oadd 7564  df-er 7742  df-map 7859  df-en 7956  df-dom 7957  df-sdom 7958  df-fin 7959  df-fsupp 8276  df-sup 8348  df-inf 8349  df-oi 8415  df-card 8765  df-cda 8990  df-pnf 10076  df-mnf 10077  df-xr 10078  df-ltxr 10079  df-le 10080  df-sub 10268  df-neg 10269  df-div 10685  df-nn 11021  df-2 11079  df-3 11080  df-4 11081  df-5 11082  df-6 11083  df-7 11084  df-8 11085  df-9 11086  df-n0 11293  df-xnn0 11364  df-z 11378  df-dec 11494  df-uz 11688  df-rp 11833  df-fz 12327  df-fzo 12466  df-fl 12593  df-mod 12669  df-seq 12802  df-exp 12861  df-hash 13118  df-cj 13839  df-re 13840  df-im 13841  df-sqrt 13975  df-abs 13976  df-dvds 14984  df-gcd 15217  df-prm 15386  df-phi 15471  df-struct 15859  df-ndx 15860  df-slot 15861  df-base 15863  df-sets 15864  df-ress 15865  df-plusg 15954  df-mulr 15955  df-starv 15956  df-tset 15960  df-ple 15961  df-ds 15964  df-unif 15965  df-0g 16102  df-gsum 16103  df-mre 16246  df-mrc 16247  df-acs 16249  df-mgm 17242  df-sgrp 17284  df-mnd 17295  df-submnd 17336  df-grp 17425  df-minusg 17426  df-mulg 17541  df-subg 17591  df-cntz 17750  df-cmn 18195  df-mgp 18490  df-ur 18502  df-ring 18549  df-cring 18550  df-subrg 18778  df-cnfld 19747
This theorem is referenced by:  wilthlem3  24796
  Copyright terms: Public domain W3C validator