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

Theorem 4sqlem11 13323
Description: Lemma for 4sq 13332. Use the pigeonhole principle to show that the sets  { m ^
2  |  m  e.  ( 0 ... N
) } and  { -u 1  -  n ^ 2  |  n  e.  ( 0 ... N ) } have a common element,  mod  P. (Contributed by Mario Carneiro, 15-Jul-2014.)
Hypotheses
Ref Expression
4sq.1  |-  S  =  { n  |  E. x  e.  ZZ  E. y  e.  ZZ  E. z  e.  ZZ  E. w  e.  ZZ  n  =  ( ( ( x ^
2 )  +  ( y ^ 2 ) )  +  ( ( z ^ 2 )  +  ( w ^
2 ) ) ) }
4sq.2  |-  ( ph  ->  N  e.  NN )
4sq.3  |-  ( ph  ->  P  =  ( ( 2  x.  N )  +  1 ) )
4sq.4  |-  ( ph  ->  P  e.  Prime )
4sqlem11.5  |-  A  =  { u  |  E. m  e.  ( 0 ... N ) u  =  ( ( m ^ 2 )  mod 
P ) }
4sqlem11.6  |-  F  =  ( v  e.  A  |->  ( ( P  - 
1 )  -  v
) )
Assertion
Ref Expression
4sqlem11  |-  ( ph  ->  ( A  i^i  ran  F )  =/=  (/) )
Distinct variable groups:    w, n, x, y, z    v, n, A    n, F    u, n, m, v, N    P, m, n, u, v    ph, m, n, u, v    S, m, n, u, v
Allowed substitution hints:    ph( x, y, z, w)    A( x, y, z, w, u, m)    P( x, y, z, w)    S( x, y, z, w)    F( x, y, z, w, v, u, m)    N( x, y, z, w)

Proof of Theorem 4sqlem11
Dummy variable  k is distinct from all other variables.
StepHypRef Expression
1 fzfid 11312 . . . . . 6  |-  ( ph  ->  ( 0 ... ( P  -  1 ) )  e.  Fin )
2 4sqlem11.5 . . . . . . . 8  |-  A  =  { u  |  E. m  e.  ( 0 ... N ) u  =  ( ( m ^ 2 )  mod 
P ) }
3 elfzelz 11059 . . . . . . . . . . . . 13  |-  ( m  e.  ( 0 ... N )  ->  m  e.  ZZ )
4 zsqcl 11452 . . . . . . . . . . . . 13  |-  ( m  e.  ZZ  ->  (
m ^ 2 )  e.  ZZ )
53, 4syl 16 . . . . . . . . . . . 12  |-  ( m  e.  ( 0 ... N )  ->  (
m ^ 2 )  e.  ZZ )
6 4sq.4 . . . . . . . . . . . . 13  |-  ( ph  ->  P  e.  Prime )
7 prmnn 13082 . . . . . . . . . . . . 13  |-  ( P  e.  Prime  ->  P  e.  NN )
86, 7syl 16 . . . . . . . . . . . 12  |-  ( ph  ->  P  e.  NN )
9 zmodfz 11268 . . . . . . . . . . . 12  |-  ( ( ( m ^ 2 )  e.  ZZ  /\  P  e.  NN )  ->  ( ( m ^
2 )  mod  P
)  e.  ( 0 ... ( P  - 
1 ) ) )
105, 8, 9syl2anr 465 . . . . . . . . . . 11  |-  ( (
ph  /\  m  e.  ( 0 ... N
) )  ->  (
( m ^ 2 )  mod  P )  e.  ( 0 ... ( P  -  1 ) ) )
11 eleq1a 2505 . . . . . . . . . . 11  |-  ( ( ( m ^ 2 )  mod  P )  e.  ( 0 ... ( P  -  1 ) )  ->  (
u  =  ( ( m ^ 2 )  mod  P )  ->  u  e.  ( 0 ... ( P  - 
1 ) ) ) )
1210, 11syl 16 . . . . . . . . . 10  |-  ( (
ph  /\  m  e.  ( 0 ... N
) )  ->  (
u  =  ( ( m ^ 2 )  mod  P )  ->  u  e.  ( 0 ... ( P  - 
1 ) ) ) )
1312rexlimdva 2830 . . . . . . . . 9  |-  ( ph  ->  ( E. m  e.  ( 0 ... N
) u  =  ( ( m ^ 2 )  mod  P )  ->  u  e.  ( 0 ... ( P  -  1 ) ) ) )
1413abssdv 3417 . . . . . . . 8  |-  ( ph  ->  { u  |  E. m  e.  ( 0 ... N ) u  =  ( ( m ^ 2 )  mod 
P ) }  C_  ( 0 ... ( P  -  1 ) ) )
152, 14syl5eqss 3392 . . . . . . 7  |-  ( ph  ->  A  C_  ( 0 ... ( P  - 
1 ) ) )
16 prmz 13083 . . . . . . . . . . . . . . . 16  |-  ( P  e.  Prime  ->  P  e.  ZZ )
176, 16syl 16 . . . . . . . . . . . . . . 15  |-  ( ph  ->  P  e.  ZZ )
18 peano2zm 10320 . . . . . . . . . . . . . . 15  |-  ( P  e.  ZZ  ->  ( P  -  1 )  e.  ZZ )
1917, 18syl 16 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( P  -  1 )  e.  ZZ )
2019zcnd 10376 . . . . . . . . . . . . 13  |-  ( ph  ->  ( P  -  1 )  e.  CC )
2120addid2d 9267 . . . . . . . . . . . 12  |-  ( ph  ->  ( 0  +  ( P  -  1 ) )  =  ( P  -  1 ) )
2221oveq1d 6096 . . . . . . . . . . 11  |-  ( ph  ->  ( ( 0  +  ( P  -  1 ) )  -  v
)  =  ( ( P  -  1 )  -  v ) )
2322adantr 452 . . . . . . . . . 10  |-  ( (
ph  /\  v  e.  A )  ->  (
( 0  +  ( P  -  1 ) )  -  v )  =  ( ( P  -  1 )  -  v ) )
2415sselda 3348 . . . . . . . . . . 11  |-  ( (
ph  /\  v  e.  A )  ->  v  e.  ( 0 ... ( P  -  1 ) ) )
25 fzrev3i 11112 . . . . . . . . . . 11  |-  ( v  e.  ( 0 ... ( P  -  1 ) )  ->  (
( 0  +  ( P  -  1 ) )  -  v )  e.  ( 0 ... ( P  -  1 ) ) )
2624, 25syl 16 . . . . . . . . . 10  |-  ( (
ph  /\  v  e.  A )  ->  (
( 0  +  ( P  -  1 ) )  -  v )  e.  ( 0 ... ( P  -  1 ) ) )
2723, 26eqeltrrd 2511 . . . . . . . . 9  |-  ( (
ph  /\  v  e.  A )  ->  (
( P  -  1 )  -  v )  e.  ( 0 ... ( P  -  1 ) ) )
28 4sqlem11.6 . . . . . . . . 9  |-  F  =  ( v  e.  A  |->  ( ( P  - 
1 )  -  v
) )
2927, 28fmptd 5893 . . . . . . . 8  |-  ( ph  ->  F : A --> ( 0 ... ( P  - 
1 ) ) )
30 frn 5597 . . . . . . . 8  |-  ( F : A --> ( 0 ... ( P  - 
1 ) )  ->  ran  F  C_  ( 0 ... ( P  - 
1 ) ) )
3129, 30syl 16 . . . . . . 7  |-  ( ph  ->  ran  F  C_  (
0 ... ( P  - 
1 ) ) )
3215, 31unssd 3523 . . . . . 6  |-  ( ph  ->  ( A  u.  ran  F )  C_  ( 0 ... ( P  - 
1 ) ) )
33 ssdomg 7153 . . . . . 6  |-  ( ( 0 ... ( P  -  1 ) )  e.  Fin  ->  (
( A  u.  ran  F )  C_  ( 0 ... ( P  - 
1 ) )  -> 
( A  u.  ran  F )  ~<_  ( 0 ... ( P  -  1 ) ) ) )
341, 32, 33sylc 58 . . . . 5  |-  ( ph  ->  ( A  u.  ran  F )  ~<_  ( 0 ... ( P  -  1 ) ) )
35 ssfi 7329 . . . . . . 7  |-  ( ( ( 0 ... ( P  -  1 ) )  e.  Fin  /\  ( A  u.  ran  F )  C_  ( 0 ... ( P  - 
1 ) ) )  ->  ( A  u.  ran  F )  e.  Fin )
361, 32, 35syl2anc 643 . . . . . 6  |-  ( ph  ->  ( A  u.  ran  F )  e.  Fin )
37 hashdom 11653 . . . . . 6  |-  ( ( ( A  u.  ran  F )  e.  Fin  /\  ( 0 ... ( P  -  1 ) )  e.  Fin )  ->  ( ( # `  ( A  u.  ran  F ) )  <_  ( # `  (
0 ... ( P  - 
1 ) ) )  <-> 
( A  u.  ran  F )  ~<_  ( 0 ... ( P  -  1 ) ) ) )
3836, 1, 37syl2anc 643 . . . . 5  |-  ( ph  ->  ( ( # `  ( A  u.  ran  F ) )  <_  ( # `  (
0 ... ( P  - 
1 ) ) )  <-> 
( A  u.  ran  F )  ~<_  ( 0 ... ( P  -  1 ) ) ) )
3934, 38mpbird 224 . . . 4  |-  ( ph  ->  ( # `  ( A  u.  ran  F ) )  <_  ( # `  (
0 ... ( P  - 
1 ) ) ) )
40 fz01en 11079 . . . . . . 7  |-  ( P  e.  ZZ  ->  (
0 ... ( P  - 
1 ) )  ~~  ( 1 ... P
) )
4117, 40syl 16 . . . . . 6  |-  ( ph  ->  ( 0 ... ( P  -  1 ) )  ~~  ( 1 ... P ) )
42 fzfid 11312 . . . . . . 7  |-  ( ph  ->  ( 1 ... P
)  e.  Fin )
43 hashen 11631 . . . . . . 7  |-  ( ( ( 0 ... ( P  -  1 ) )  e.  Fin  /\  ( 1 ... P
)  e.  Fin )  ->  ( ( # `  (
0 ... ( P  - 
1 ) ) )  =  ( # `  (
1 ... P ) )  <-> 
( 0 ... ( P  -  1 ) )  ~~  ( 1 ... P ) ) )
441, 42, 43syl2anc 643 . . . . . 6  |-  ( ph  ->  ( ( # `  (
0 ... ( P  - 
1 ) ) )  =  ( # `  (
1 ... P ) )  <-> 
( 0 ... ( P  -  1 ) )  ~~  ( 1 ... P ) ) )
4541, 44mpbird 224 . . . . 5  |-  ( ph  ->  ( # `  (
0 ... ( P  - 
1 ) ) )  =  ( # `  (
1 ... P ) ) )
468nnnn0d 10274 . . . . . 6  |-  ( ph  ->  P  e.  NN0 )
47 hashfz1 11630 . . . . . 6  |-  ( P  e.  NN0  ->  ( # `  ( 1 ... P
) )  =  P )
4846, 47syl 16 . . . . 5  |-  ( ph  ->  ( # `  (
1 ... P ) )  =  P )
4945, 48eqtrd 2468 . . . 4  |-  ( ph  ->  ( # `  (
0 ... ( P  - 
1 ) ) )  =  P )
5039, 49breqtrd 4236 . . 3  |-  ( ph  ->  ( # `  ( A  u.  ran  F ) )  <_  P )
51 hashcl 11639 . . . . . 6  |-  ( ( A  u.  ran  F
)  e.  Fin  ->  (
# `  ( A  u.  ran  F ) )  e.  NN0 )
5236, 51syl 16 . . . . 5  |-  ( ph  ->  ( # `  ( A  u.  ran  F ) )  e.  NN0 )
5352nn0red 10275 . . . 4  |-  ( ph  ->  ( # `  ( A  u.  ran  F ) )  e.  RR )
5417zred 10375 . . . 4  |-  ( ph  ->  P  e.  RR )
5553, 54lenltd 9219 . . 3  |-  ( ph  ->  ( ( # `  ( A  u.  ran  F ) )  <_  P  <->  -.  P  <  ( # `  ( A  u.  ran  F ) ) ) )
5650, 55mpbid 202 . 2  |-  ( ph  ->  -.  P  <  ( # `
 ( A  u.  ran  F ) ) )
5754adantr 452 . . . . . 6  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  P  e.  RR )
5857ltp1d 9941 . . . . 5  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  P  < 
( P  +  1 ) )
59 4sq.2 . . . . . . . . . 10  |-  ( ph  ->  N  e.  NN )
6059nncnd 10016 . . . . . . . . 9  |-  ( ph  ->  N  e.  CC )
61 ax-1cn 9048 . . . . . . . . . 10  |-  1  e.  CC
6261a1i 11 . . . . . . . . 9  |-  ( ph  ->  1  e.  CC )
6360, 60, 62, 62add4d 9289 . . . . . . . 8  |-  ( ph  ->  ( ( N  +  N )  +  ( 1  +  1 ) )  =  ( ( N  +  1 )  +  ( N  + 
1 ) ) )
64 4sq.3 . . . . . . . . . 10  |-  ( ph  ->  P  =  ( ( 2  x.  N )  +  1 ) )
6564oveq1d 6096 . . . . . . . . 9  |-  ( ph  ->  ( P  +  1 )  =  ( ( ( 2  x.  N
)  +  1 )  +  1 ) )
66 2cn 10070 . . . . . . . . . . 11  |-  2  e.  CC
67 mulcl 9074 . . . . . . . . . . 11  |-  ( ( 2  e.  CC  /\  N  e.  CC )  ->  ( 2  x.  N
)  e.  CC )
6866, 60, 67sylancr 645 . . . . . . . . . 10  |-  ( ph  ->  ( 2  x.  N
)  e.  CC )
6968, 62, 62addassd 9110 . . . . . . . . 9  |-  ( ph  ->  ( ( ( 2  x.  N )  +  1 )  +  1 )  =  ( ( 2  x.  N )  +  ( 1  +  1 ) ) )
70602timesd 10210 . . . . . . . . . 10  |-  ( ph  ->  ( 2  x.  N
)  =  ( N  +  N ) )
7170oveq1d 6096 . . . . . . . . 9  |-  ( ph  ->  ( ( 2  x.  N )  +  ( 1  +  1 ) )  =  ( ( N  +  N )  +  ( 1  +  1 ) ) )
7265, 69, 713eqtrd 2472 . . . . . . . 8  |-  ( ph  ->  ( P  +  1 )  =  ( ( N  +  N )  +  ( 1  +  1 ) ) )
7310ex 424 . . . . . . . . . . . . . . . . 17  |-  ( ph  ->  ( m  e.  ( 0 ... N )  ->  ( ( m ^ 2 )  mod 
P )  e.  ( 0 ... ( P  -  1 ) ) ) )
748adantr 452 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  P  e.  NN )
753ad2antrl 709 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  m  e.  ZZ )
7675, 4syl 16 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m ^ 2 )  e.  ZZ )
77 elfzelz 11059 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( u  e.  ( 0 ... N )  ->  u  e.  ZZ )
7877ad2antll 710 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  u  e.  ZZ )
79 zsqcl 11452 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( u  e.  ZZ  ->  (
u ^ 2 )  e.  ZZ )
8078, 79syl 16 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( u ^ 2 )  e.  ZZ )
81 moddvds 12859 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( P  e.  NN  /\  ( m ^ 2 )  e.  ZZ  /\  ( u ^ 2 )  e.  ZZ )  ->  ( ( ( m ^ 2 )  mod  P )  =  ( ( u ^
2 )  mod  P
)  <->  P  ||  ( ( m ^ 2 )  -  ( u ^
2 ) ) ) )
8274, 76, 80, 81syl3anc 1184 . . . . . . . . . . . . . . . . . . . . 21  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( ( m ^ 2 )  mod 
P )  =  ( ( u ^ 2 )  mod  P )  <-> 
P  ||  ( (
m ^ 2 )  -  ( u ^
2 ) ) ) )
8375zcnd 10376 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  m  e.  CC )
8478zcnd 10376 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  u  e.  CC )
85 subsq 11488 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( m  e.  CC  /\  u  e.  CC )  ->  ( ( m ^
2 )  -  (
u ^ 2 ) )  =  ( ( m  +  u )  x.  ( m  -  u ) ) )
8683, 84, 85syl2anc 643 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( m ^
2 )  -  (
u ^ 2 ) )  =  ( ( m  +  u )  x.  ( m  -  u ) ) )
8786breq2d 4224 . . . . . . . . . . . . . . . . . . . . 21  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( P  ||  (
( m ^ 2 )  -  ( u ^ 2 ) )  <-> 
P  ||  ( (
m  +  u )  x.  ( m  -  u ) ) ) )
886adantr 452 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  P  e.  Prime )
8975, 78zaddcld 10379 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  e.  ZZ )
9075, 78zsubcld 10380 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  -  u
)  e.  ZZ )
91 euclemma 13108 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( P  e.  Prime  /\  (
m  +  u )  e.  ZZ  /\  (
m  -  u )  e.  ZZ )  -> 
( P  ||  (
( m  +  u
)  x.  ( m  -  u ) )  <-> 
( P  ||  (
m  +  u )  \/  P  ||  (
m  -  u ) ) ) )
9288, 89, 90, 91syl3anc 1184 . . . . . . . . . . . . . . . . . . . . 21  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( P  ||  (
( m  +  u
)  x.  ( m  -  u ) )  <-> 
( P  ||  (
m  +  u )  \/  P  ||  (
m  -  u ) ) ) )
9382, 87, 923bitrd 271 . . . . . . . . . . . . . . . . . . . 20  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( ( m ^ 2 )  mod 
P )  =  ( ( u ^ 2 )  mod  P )  <-> 
( P  ||  (
m  +  u )  \/  P  ||  (
m  -  u ) ) ) )
9489zred 10375 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  e.  RR )
95 2re 10069 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  2  e.  RR
9659nnred 10015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ph  ->  N  e.  RR )
97 remulcl 9075 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( 2  e.  RR  /\  N  e.  RR )  ->  ( 2  x.  N
)  e.  RR )
9895, 96, 97sylancr 645 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( ph  ->  ( 2  x.  N
)  e.  RR )
9998adantr 452 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( 2  x.  N
)  e.  RR )
10088, 16syl 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  P  e.  ZZ )
101100zred 10375 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  P  e.  RR )
10275zred 10375 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  m  e.  RR )
10378zred 10375 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  u  e.  RR )
10496adantr 452 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  N  e.  RR )
105 elfzle2 11061 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( m  e.  ( 0 ... N )  ->  m  <_  N )
106105ad2antrl 709 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  m  <_  N )
107 elfzle2 11061 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( u  e.  ( 0 ... N )  ->  u  <_  N )
108107ad2antll 710 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  u  <_  N )
109102, 103, 104, 104, 106, 108le2addd 9644 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  <_  ( N  +  N ) )
11060adantr 452 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  N  e.  CC )
1111102timesd 10210 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( 2  x.  N
)  =  ( N  +  N ) )
112109, 111breqtrrd 4238 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  <_  ( 2  x.  N ) )
11398ltp1d 9941 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ph  ->  ( 2  x.  N
)  <  ( (
2  x.  N )  +  1 ) )
114113, 64breqtrrd 4238 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( ph  ->  ( 2  x.  N
)  <  P )
115114adantr 452 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( 2  x.  N
)  <  P )
11694, 99, 101, 112, 115lelttrd 9228 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  <  P )
11794, 101ltnled 9220 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( m  +  u )  <  P  <->  -.  P  <_  ( m  +  u ) ) )
118116, 117mpbid 202 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  -.  P  <_  ( m  +  u ) )
119118adantr 452 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  -.  P  <_  ( m  +  u ) )
12017ad2antrr 707 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  P  e.  ZZ )
12189adantr 452 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  (
m  +  u )  e.  ZZ )
122 1re 9090 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  1  e.  RR
123122a1i 11 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  1  e.  RR )
124 nn0abscl 12117 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( ( m  -  u )  e.  ZZ  ->  ( abs `  ( m  -  u ) )  e. 
NN0 )
12590, 124syl 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  u ) )  e.  NN0 )
126125nn0red 10275 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  u ) )  e.  RR )
127126adantr 452 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( abs `  ( m  -  u ) )  e.  RR )
128121zred 10375 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  (
m  +  u )  e.  RR )
129125adantr 452 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( abs `  ( m  -  u ) )  e. 
NN0 )
130129nn0zd 10373 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( abs `  ( m  -  u ) )  e.  ZZ )
13190zcnd 10376 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  -  u
)  e.  CC )
132131adantr 452 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  (
m  -  u )  e.  CC )
13383, 84subeq0ad 9421 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( m  -  u )  =  0  <-> 
m  =  u ) )
134133necon3bid 2636 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( m  -  u )  =/=  0  <->  m  =/=  u ) )
135134biimpar 472 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  (
m  -  u )  =/=  0 )
136132, 135absrpcld 12250 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( abs `  ( m  -  u ) )  e.  RR+ )
137136rpgt0d 10651 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  0  <  ( abs `  (
m  -  u ) ) )
138 elnnz 10292 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( abs `  ( m  -  u ) )  e.  NN  <->  ( ( abs `  ( m  -  u ) )  e.  ZZ  /\  0  < 
( abs `  (
m  -  u ) ) ) )
139130, 137, 138sylanbrc 646 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( abs `  ( m  -  u ) )  e.  NN )
140139nnge1d 10042 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  1  <_  ( abs `  (
m  -  u ) ) )
141 0cn 9084 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  0  e.  CC
142141a1i 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
0  e.  CC )
14383, 84, 142abs3difd 12262 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  u ) )  <_  ( ( abs `  ( m  - 
0 ) )  +  ( abs `  (
0  -  u ) ) ) )
14483subid1d 9400 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  -  0 )  =  m )
145144fveq2d 5732 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  0 ) )  =  ( abs `  m ) )
146 elfzle1 11060 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( m  e.  ( 0 ... N )  ->  0  <_  m )
147146ad2antrl 709 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
0  <_  m )
148102, 147absidd 12225 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  m
)  =  m )
149145, 148eqtrd 2468 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  0 ) )  =  m )
150 abssub 12130 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( ( 0  e.  CC  /\  u  e.  CC )  ->  ( abs `  (
0  -  u ) )  =  ( abs `  ( u  -  0 ) ) )
151141, 84, 150sylancr 645 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
0  -  u ) )  =  ( abs `  ( u  -  0 ) ) )
15284subid1d 9400 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( u  -  0 )  =  u )
153152fveq2d 5732 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
u  -  0 ) )  =  ( abs `  u ) )
154 elfzle1 11060 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( u  e.  ( 0 ... N )  ->  0  <_  u )
155154ad2antll 710 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
0  <_  u )
156103, 155absidd 12225 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  u
)  =  u )
157151, 153, 1563eqtrd 2472 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
0  -  u ) )  =  u )
158149, 157oveq12d 6099 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( abs `  (
m  -  0 ) )  +  ( abs `  ( 0  -  u
) ) )  =  ( m  +  u
) )
159143, 158breqtrd 4236 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  u ) )  <_  ( m  +  u ) )
160159adantr 452 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( abs `  ( m  -  u ) )  <_ 
( m  +  u
) )
161123, 127, 128, 140, 160letrd 9227 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  1  <_  ( m  +  u
) )
162 elnnz1 10307 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( ( m  +  u )  e.  NN  <->  ( (
m  +  u )  e.  ZZ  /\  1  <_  ( m  +  u
) ) )
163121, 161, 162sylanbrc 646 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  (
m  +  u )  e.  NN )
164 dvdsle 12895 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( ( P  e.  ZZ  /\  ( m  +  u
)  e.  NN )  ->  ( P  ||  ( m  +  u
)  ->  P  <_  ( m  +  u ) ) )
165120, 163, 164syl2anc 643 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( P  ||  ( m  +  u )  ->  P  <_  ( m  +  u
) ) )
166119, 165mtod 170 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  -.  P  ||  ( m  +  u ) )
167166ex 424 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  =/=  u  ->  -.  P  ||  (
m  +  u ) ) )
168167necon4ad 2665 . . . . . . . . . . . . . . . . . . . . 21  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( P  ||  (
m  +  u )  ->  m  =  u ) )
169 dvdsabsb 12869 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( P  e.  ZZ  /\  ( m  -  u
)  e.  ZZ )  ->  ( P  ||  ( m  -  u
)  <->  P  ||  ( abs `  ( m  -  u
) ) ) )
170100, 90, 169syl2anc 643 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( P  ||  (
m  -  u )  <-> 
P  ||  ( abs `  ( m  -  u
) ) ) )
171 letr 9167 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( P  e.  RR  /\  ( abs `  ( m  -  u ) )  e.  RR  /\  (
m  +  u )  e.  RR )  -> 
( ( P  <_ 
( abs `  (
m  -  u ) )  /\  ( abs `  ( m  -  u
) )  <_  (
m  +  u ) )  ->  P  <_  ( m  +  u ) ) )
172101, 126, 94, 171syl3anc 1184 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( P  <_ 
( abs `  (
m  -  u ) )  /\  ( abs `  ( m  -  u
) )  <_  (
m  +  u ) )  ->  P  <_  ( m  +  u ) ) )
173159, 172mpan2d 656 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( P  <_  ( abs `  ( m  -  u ) )  ->  P  <_  ( m  +  u ) ) )
174118, 173mtod 170 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  -.  P  <_  ( abs `  ( m  -  u
) ) )
175174adantr 452 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  -.  P  <_  ( abs `  (
m  -  u ) ) )
176100adantr 452 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  P  e.  ZZ )
177 dvdsle 12895 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( ( P  e.  ZZ  /\  ( abs `  ( m  -  u ) )  e.  NN )  -> 
( P  ||  ( abs `  ( m  -  u ) )  ->  P  <_  ( abs `  (
m  -  u ) ) ) )
178176, 139, 177syl2anc 643 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( P  ||  ( abs `  (
m  -  u ) )  ->  P  <_  ( abs `  ( m  -  u ) ) ) )
179175, 178mtod 170 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  -.  P  ||  ( abs `  (
m  -  u ) ) )
180179ex 424 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  =/=  u  ->  -.  P  ||  ( abs `  ( m  -  u ) ) ) )
181180necon4ad 2665 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( P  ||  ( abs `  ( m  -  u ) )  ->  m  =  u )
)
182170, 181sylbid 207 . . . . . . . . . . . . . . . . . . . . 21  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( P  ||  (
m  -  u )  ->  m  =  u ) )
183168, 182jaod 370 . . . . . . . . . . . . . . . . . . . 20  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( P  ||  ( m  +  u
)  \/  P  ||  ( m  -  u
) )  ->  m  =  u ) )
18493, 183sylbid 207 . . . . . . . . . . . . . . . . . . 19  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( ( m ^ 2 )  mod 
P )  =  ( ( u ^ 2 )  mod  P )  ->  m  =  u ) )
185 oveq1 6088 . . . . . . . . . . . . . . . . . . . 20  |-  ( m  =  u  ->  (
m ^ 2 )  =  ( u ^
2 ) )
186185oveq1d 6096 . . . . . . . . . . . . . . . . . . 19  |-  ( m  =  u  ->  (
( m ^ 2 )  mod  P )  =  ( ( u ^ 2 )  mod 
P ) )
187184, 186impbid1 195 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( ( m ^ 2 )  mod 
P )  =  ( ( u ^ 2 )  mod  P )  <-> 
m  =  u ) )
188187ex 424 . . . . . . . . . . . . . . . . 17  |-  ( ph  ->  ( ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) )  ->  (
( ( m ^
2 )  mod  P
)  =  ( ( u ^ 2 )  mod  P )  <->  m  =  u ) ) )
18973, 188dom2lem 7147 . . . . . . . . . . . . . . . 16  |-  ( ph  ->  ( m  e.  ( 0 ... N ) 
|->  ( ( m ^
2 )  mod  P
) ) : ( 0 ... N )
-1-1-> ( 0 ... ( P  -  1 ) ) )
190 f1f1orn 5685 . . . . . . . . . . . . . . . 16  |-  ( ( m  e.  ( 0 ... N )  |->  ( ( m ^ 2 )  mod  P ) ) : ( 0 ... N ) -1-1-> ( 0 ... ( P  -  1 ) )  ->  ( m  e.  ( 0 ... N
)  |->  ( ( m ^ 2 )  mod 
P ) ) : ( 0 ... N
)
-1-1-onto-> ran  ( m  e.  ( 0 ... N ) 
|->  ( ( m ^
2 )  mod  P
) ) )
191189, 190syl 16 . . . . . . . . . . . . . . 15  |-  ( ph  ->  ( m  e.  ( 0 ... N ) 
|->  ( ( m ^
2 )  mod  P
) ) : ( 0 ... N ) -1-1-onto-> ran  ( m  e.  ( 0 ... N ) 
|->  ( ( m ^
2 )  mod  P
) ) )
192 eqid 2436 . . . . . . . . . . . . . . . . . 18  |-  ( m  e.  ( 0 ... N )  |->  ( ( m ^ 2 )  mod  P ) )  =  ( m  e.  ( 0 ... N
)  |->  ( ( m ^ 2 )  mod 
P ) )
193192rnmpt 5116 . . . . . . . . . . . . . . . . 17  |-  ran  (
m  e.  ( 0 ... N )  |->  ( ( m ^ 2 )  mod  P ) )  =  { u  |  E. m  e.  ( 0 ... N ) u  =  ( ( m ^ 2 )  mod  P ) }
1942, 193eqtr4i 2459 . . . . . . . . . . . . . . . 16  |-  A  =  ran  ( m  e.  ( 0 ... N
)  |->  ( ( m ^ 2 )  mod 
P ) )
195 f1oeq3 5667 . . . . . . . . . . . . . . . 16  |-  ( A  =  ran  ( m  e.  ( 0 ... N )  |->  ( ( m ^ 2 )  mod  P ) )  ->  ( ( m  e.  ( 0 ... N )  |->  ( ( m ^ 2 )  mod  P ) ) : ( 0 ... N ) -1-1-onto-> A  <->  ( m  e.  ( 0 ... N
)  |->  ( ( m ^ 2 )  mod 
P ) ) : ( 0 ... N
)
-1-1-onto-> ran  ( m  e.  ( 0 ... N ) 
|->  ( ( m ^
2 )  mod  P
) ) ) )
196194, 195ax-mp 8 . . . . . . . . . . . . . . 15  |-  ( ( m  e.  ( 0 ... N )  |->  ( ( m ^ 2 )  mod  P ) ) : ( 0 ... N ) -1-1-onto-> A  <->  ( m  e.  ( 0 ... N
)  |->  ( ( m ^ 2 )  mod 
P ) ) : ( 0 ... N
)
-1-1-onto-> ran  ( m  e.  ( 0 ... N ) 
|->  ( ( m ^
2 )  mod  P
) ) )
197191, 196sylibr 204 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( m  e.  ( 0 ... N ) 
|->  ( ( m ^
2 )  mod  P
) ) : ( 0 ... N ) -1-1-onto-> A )
198 ovex 6106 . . . . . . . . . . . . . . 15  |-  ( 0 ... N )  e. 
_V
199198f1oen 7128 . . . . . . . . . . . . . 14  |-  ( ( m  e.  ( 0 ... N )  |->  ( ( m ^ 2 )  mod  P ) ) : ( 0 ... N ) -1-1-onto-> A  -> 
( 0 ... N
)  ~~  A )
200197, 199syl 16 . . . . . . . . . . . . 13  |-  ( ph  ->  ( 0 ... N
)  ~~  A )
201200ensymd 7158 . . . . . . . . . . . 12  |-  ( ph  ->  A  ~~  ( 0 ... N ) )
202 pncan 9311 . . . . . . . . . . . . . . 15  |-  ( ( N  e.  CC  /\  1  e.  CC )  ->  ( ( N  + 
1 )  -  1 )  =  N )
20360, 61, 202sylancl 644 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( ( N  + 
1 )  -  1 )  =  N )
204203oveq2d 6097 . . . . . . . . . . . . 13  |-  ( ph  ->  ( 0 ... (
( N  +  1 )  -  1 ) )  =  ( 0 ... N ) )
20559nnnn0d 10274 . . . . . . . . . . . . . . . 16  |-  ( ph  ->  N  e.  NN0 )
206 peano2nn0 10260 . . . . . . . . . . . . . . . 16  |-  ( N  e.  NN0  ->  ( N  +  1 )  e. 
NN0 )
207205, 206syl 16 . . . . . . . . . . . . . . 15  |-  ( ph  ->  ( N  +  1 )  e.  NN0 )
208207nn0zd 10373 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( N  +  1 )  e.  ZZ )
209 fz01en 11079 . . . . . . . . . . . . . 14  |-  ( ( N  +  1 )  e.  ZZ  ->  (
0 ... ( ( N  +  1 )  - 
1 ) )  ~~  ( 1 ... ( N  +  1 ) ) )
210208, 209syl 16 . . . . . . . . . . . . 13  |-  ( ph  ->  ( 0 ... (
( N  +  1 )  -  1 ) )  ~~  ( 1 ... ( N  + 
1 ) ) )
211204, 210eqbrtrrd 4234 . . . . . . . . . . . 12  |-  ( ph  ->  ( 0 ... N
)  ~~  ( 1 ... ( N  + 
1 ) ) )
212 entr 7159 . . . . . . . . . . . 12  |-  ( ( A  ~~  ( 0 ... N )  /\  ( 0 ... N
)  ~~  ( 1 ... ( N  + 
1 ) ) )  ->  A  ~~  (
1 ... ( N  + 
1 ) ) )
213201, 211, 212syl2anc 643 . . . . . . . . . . 11  |-  ( ph  ->  A  ~~  ( 1 ... ( N  + 
1 ) ) )
214 ssfi 7329 . . . . . . . . . . . . 13  |-  ( ( ( 0 ... ( P  -  1 ) )  e.  Fin  /\  A  C_  ( 0 ... ( P  -  1 ) ) )  ->  A  e.  Fin )
2151, 15, 214syl2anc 643 . . . . . . . . . . . 12  |-  ( ph  ->  A  e.  Fin )
216 fzfid 11312 . . . . . . . . . . . 12  |-  ( ph  ->  ( 1 ... ( N  +  1 ) )  e.  Fin )
217 hashen 11631 . . . . . . . . . . . 12  |-  ( ( A  e.  Fin  /\  ( 1 ... ( N  +  1 ) )  e.  Fin )  ->  ( ( # `  A
)  =  ( # `  ( 1 ... ( N  +  1 ) ) )  <->  A  ~~  ( 1 ... ( N  +  1 ) ) ) )
218215, 216, 217syl2anc 643 . . . . . . . . . . 11  |-  ( ph  ->  ( ( # `  A
)  =  ( # `  ( 1 ... ( N  +  1 ) ) )  <->  A  ~~  ( 1 ... ( N  +  1 ) ) ) )
219213, 218mpbird 224 . . . . . . . . . 10  |-  ( ph  ->  ( # `  A
)  =  ( # `  ( 1 ... ( N  +  1 ) ) ) )
220 hashfz1 11630 . . . . . . . . . . 11  |-  ( ( N  +  1 )  e.  NN0  ->  ( # `  ( 1 ... ( N  +  1 ) ) )  =  ( N  +  1 ) )
221207, 220syl 16 . . . . . . . . . 10  |-  ( ph  ->  ( # `  (
1 ... ( N  + 
1 ) ) )  =  ( N  + 
1 ) )
222219, 221eqtrd 2468 . . . . . . . . 9  |-  ( ph  ->  ( # `  A
)  =  ( N  +  1 ) )
22327ex 424 . . . . . . . . . . . . . . 15  |-  ( ph  ->  ( v  e.  A  ->  ( ( P  - 
1 )  -  v
)  e.  ( 0 ... ( P  - 
1 ) ) ) )
22420adantr 452 . . . . . . . . . . . . . . . . 17  |-  ( (
ph  /\  ( v  e.  A  /\  k  e.  A ) )  -> 
( P  -  1 )  e.  CC )
225 fzssuz 11093 . . . . . . . . . . . . . . . . . . . . 21  |-  ( 0 ... ( P  - 
1 ) )  C_  ( ZZ>= `  0 )
226 uzssz 10505 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ZZ>= ` 
0 )  C_  ZZ
227 zsscn 10290 . . . . . . . . . . . . . . . . . . . . . 22  |-  ZZ  C_  CC
228226, 227sstri 3357 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ZZ>= ` 
0 )  C_  CC
229225, 228sstri 3357 . . . . . . . . . . . . . . . . . . . 20  |-  ( 0 ... ( P  - 
1 ) )  C_  CC
23015, 229syl6ss 3360 . . . . . . . . . . . . . . . . . . 19  |-  ( ph  ->  A  C_  CC )
231230sselda 3348 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  v  e.  A )  ->  v  e.  CC )
232231adantrr 698 . . . . . . . . . . . . . . . . 17  |-  ( (
ph  /\  ( v  e.  A  /\  k  e.  A ) )  -> 
v  e.  CC )
233230sselda 3348 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  k  e.  A )  ->  k  e.  CC )
234233adantrl 697 . . . . . . . . . . . . . . . . 17  |-  ( (
ph  /\  ( v  e.  A  /\  k  e.  A ) )  -> 
k  e.  CC )
235224, 232, 234subcanad 9454 . . . . . . . . . . . . . . . 16  |-  ( (
ph  /\  ( v  e.  A  /\  k  e.  A ) )  -> 
( ( ( P  -  1 )  -  v )  =  ( ( P  -  1 )  -  k )  <-> 
v  =  k ) )
236235ex 424 . . . . . . . . . . . . . . 15  |-  ( ph  ->  ( ( v  e.  A  /\  k  e.  A )  ->  (
( ( P  - 
1 )  -  v
)  =  ( ( P  -  1 )  -  k )  <->  v  =  k ) ) )
237223, 236dom2lem 7147 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( v  e.  A  |->  ( ( P  - 
1 )  -  v
) ) : A -1-1-> ( 0 ... ( P  -  1 ) ) )
238 f1eq1 5634 . . . . . . . . . . . . . . 15  |-  ( F  =  ( v  e.  A  |->  ( ( P  -  1 )  -  v ) )  -> 
( F : A -1-1-> ( 0 ... ( P  -  1 ) )  <-> 
( v  e.  A  |->  ( ( P  - 
1 )  -  v
) ) : A -1-1-> ( 0 ... ( P  -  1 ) ) ) )
23928, 238ax-mp 8 . . . . . . . . . . . . . 14  |-  ( F : A -1-1-> ( 0 ... ( P  - 
1 ) )  <->  ( v  e.  A  |->  ( ( P  -  1 )  -  v ) ) : A -1-1-> ( 0 ... ( P  - 
1 ) ) )
240237, 239sylibr 204 . . . . . . . . . . . . 13  |-  ( ph  ->  F : A -1-1-> ( 0 ... ( P  -  1 ) ) )
241 f1f1orn 5685 . . . . . . . . . . . . 13  |-  ( F : A -1-1-> ( 0 ... ( P  - 
1 ) )  ->  F : A -1-1-onto-> ran  F )
242240, 241syl 16 . . . . . . . . . . . 12  |-  ( ph  ->  F : A -1-1-onto-> ran  F
)
243 f1oeng 7126 . . . . . . . . . . . 12  |-  ( ( A  e.  Fin  /\  F : A -1-1-onto-> ran  F )  ->  A  ~~  ran  F )
244215, 242, 243syl2anc 643 . . . . . . . . . . 11  |-  ( ph  ->  A  ~~  ran  F
)
245 ssfi 7329 . . . . . . . . . . . . 13  |-  ( ( ( 0 ... ( P  -  1 ) )  e.  Fin  /\  ran  F  C_  ( 0 ... ( P  - 
1 ) ) )  ->  ran  F  e.  Fin )
2461, 31, 245syl2anc 643 . . . . . . . . . . . 12  |-  ( ph  ->  ran  F  e.  Fin )
247 hashen 11631 . . . . . . . . . . . 12  |-  ( ( A  e.  Fin  /\  ran  F  e.  Fin )  ->  ( ( # `  A
)  =  ( # `  ran  F )  <->  A  ~~  ran  F ) )
248215, 246, 247syl2anc 643 . . . . . . . . . . 11  |-  ( ph  ->  ( ( # `  A
)  =  ( # `  ran  F )  <->  A  ~~  ran  F ) )
249244, 248mpbird 224 . . . . . . . . . 10  |-  ( ph  ->  ( # `  A
)  =  ( # `  ran  F ) )
250249, 222eqtr3d 2470 . . . . . . . . 9  |-  ( ph  ->  ( # `  ran  F )  =  ( N  +  1 ) )
251222, 250oveq12d 6099 . . . . . . . 8  |-  ( ph  ->  ( ( # `  A
)  +  ( # `  ran  F ) )  =  ( ( N  +  1 )  +  ( N  +  1 ) ) )
25263, 72, 2513eqtr4d 2478 . . . . . . 7  |-  ( ph  ->  ( P  +  1 )  =  ( (
# `  A )  +  ( # `  ran  F ) ) )
253252adantr 452 . . . . . 6  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  ( P  +  1 )  =  ( ( # `  A
)  +  ( # `  ran  F ) ) )
254215adantr 452 . . . . . . 7  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  A  e. 
Fin )
255246adantr 452 . . . . . . 7  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  ran  F  e.  Fin )
256 simpr 448 . . . . . . 7  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  ( A  i^i  ran  F )  =  (/) )
257 hashun 11656 . . . . . . 7  |-  ( ( A  e.  Fin  /\  ran  F  e.  Fin  /\  ( A  i^i  ran  F
)  =  (/) )  -> 
( # `  ( A  u.  ran  F ) )  =  ( (
# `  A )  +  ( # `  ran  F ) ) )
258254, 255, 256, 257syl3anc 1184 . . . . . 6  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  ( # `  ( A  u.  ran  F ) )  =  ( ( # `  A
)  +  ( # `  ran  F ) ) )
259253, 258eqtr4d 2471 . . . . 5  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  ( P  +  1 )  =  ( # `  ( A  u.  ran  F ) ) )
26058, 259breqtrd 4236 . . . 4  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  P  < 
( # `  ( A  u.  ran  F ) ) )
261260ex 424 . . 3  |-  ( ph  ->  ( ( A  i^i  ran 
F )  =  (/)  ->  P  <  ( # `  ( A  u.  ran  F ) ) ) )
262261necon3bd 2638 . 2  |-  ( ph  ->  ( -.  P  < 
( # `  ( A  u.  ran  F ) )  ->  ( A  i^i  ran  F )  =/=  (/) ) )
26356, 262mpd 15 1  |-  ( ph  ->  ( A  i^i  ran  F )  =/=  (/) )
Colors of variables: wff set class
Syntax hints:   -. wn 3    -> wi 4    <-> wb 177    \/ wo 358    /\ wa 359    = wceq 1652    e. wcel 1725   {cab 2422    =/= wne 2599   E.wrex 2706    u. cun 3318    i^i cin 3319    C_ wss 3320   (/)c0 3628   class class class wbr 4212    e. cmpt 4266   ran crn 4879   -->wf 5450   -1-1->wf1 5451   -1-1-onto->wf1o 5453   ` cfv 5454  (class class class)co 6081    ~~ cen 7106    ~<_ cdom 7107   Fincfn 7109   CCcc 8988   RRcr 8989   0cc0 8990   1c1 8991    + caddc 8993    x. cmul 8995    < clt 9120    <_ cle 9121    - cmin 9291   NNcn 10000   2c2 10049   NN0cn0 10221   ZZcz 10282   ZZ>=cuz 10488   ...cfz 11043    mod cmo 11250   ^cexp 11382   #chash 11618   abscabs 12039    || cdivides 12852   Primecprime 13079
This theorem is referenced by:  4sqlem12  13324
This theorem was proved from axioms:  ax-1 5  ax-2 6  ax-3 7  ax-mp 8  ax-gen 1555  ax-5 1566  ax-17 1626  ax-9 1666  ax-8 1687  ax-13 1727  ax-14 1729  ax-6 1744  ax-7 1749  ax-11 1761  ax-12 1950  ax-ext 2417  ax-rep 4320  ax-sep 4330  ax-nul 4338  ax-pow 4377  ax-pr 4403  ax-un 4701  ax-cnex 9046  ax-resscn 9047  ax-1cn 9048  ax-icn 9049  ax-addcl 9050  ax-addrcl 9051  ax-mulcl 9052  ax-mulrcl 9053  ax-mulcom 9054  ax-addass 9055  ax-mulass 9056  ax-distr 9057  ax-i2m1 9058  ax-1ne0 9059  ax-1rid 9060  ax-rnegex 9061  ax-rrecex 9062  ax-cnre 9063  ax-pre-lttri 9064  ax-pre-lttrn 9065  ax-pre-ltadd 9066  ax-pre-mulgt0 9067  ax-pre-sup 9068
This theorem depends on definitions:  df-bi 178  df-or 360  df-an 361  df-3or 937  df-3an 938  df-tru 1328  df-ex 1551  df-nf 1554  df-sb 1659  df-eu 2285  df-mo 2286  df-clab 2423  df-cleq 2429  df-clel 2432  df-nfc 2561  df-ne 2601  df-nel 2602  df-ral 2710  df-rex 2711  df-reu 2712  df-rmo 2713  df-rab 2714  df-v 2958  df-sbc 3162  df-csb 3252  df-dif 3323  df-un 3325  df-in 3327  df-ss 3334  df-pss 3336  df-nul 3629  df-if 3740  df-pw 3801  df-sn 3820  df-pr 3821  df-tp 3822  df-op 3823  df-uni 4016  df-int 4051  df-iun 4095  df-br 4213  df-opab 4267  df-mpt 4268  df-tr 4303  df-eprel 4494  df-id 4498  df-po 4503  df-so 4504  df-fr 4541  df-we 4543  df-ord 4584  df-on 4585  df-lim 4586  df-suc 4587  df-om 4846  df-xp 4884  df-rel 4885  df-cnv 4886  df-co 4887  df-dm 4888  df-rn 4889  df-res 4890  df-ima 4891  df-iota 5418  df-fun 5456  df-fn 5457  df-f 5458  df-f1 5459  df-fo 5460  df-f1o 5461  df-fv 5462  df-ov 6084  df-oprab 6085  df-mpt2 6086  df-1st 6349  df-2nd 6350  df-riota 6549  df-recs 6633  df-rdg 6668  df-1o 6724  df-2o 6725  df-oadd 6728  df-er 6905  df-en 7110  df-dom 7111  df-sdom 7112  df-fin 7113  df-sup 7446  df-card 7826  df-cda 8048  df-pnf 9122  df-mnf 9123  df-xr 9124  df-ltxr 9125  df-le 9126  df-sub 9293  df-neg 9294  df-div 9678  df-nn 10001  df-2 10058  df-3 10059  df-n0 10222  df-z 10283  df-uz 10489  df-rp 10613  df-fz 11044  df-fl 11202  df-mod 11251  df-seq 11324  df-exp 11383  df-hash 11619  df-cj 11904  df-re 11905  df-im 11906  df-sqr 12040  df-abs 12041  df-dvds 12853  df-gcd 13007  df-prm 13080
  Copyright terms: Public domain W3C validator