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

Theorem 4sqlem11 13278
Description: Lemma for 4sq 13287. 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 11267 . . . . . 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 11015 . . . . . . . . . . . . 13  |-  ( m  e.  ( 0 ... N )  ->  m  e.  ZZ )
4 zsqcl 11407 . . . . . . . . . . . . 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 13037 . . . . . . . . . . . . 13  |-  ( P  e.  Prime  ->  P  e.  NN )
86, 7syl 16 . . . . . . . . . . . 12  |-  ( ph  ->  P  e.  NN )
9 zmodfz 11223 . . . . . . . . . . . 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 2473 . . . . . . . . . . 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 2790 . . . . . . . . 9  |-  ( ph  ->  ( E. m  e.  ( 0 ... N
) u  =  ( ( m ^ 2 )  mod  P )  ->  u  e.  ( 0 ... ( P  -  1 ) ) ) )
1413abssdv 3377 . . . . . . . 8  |-  ( ph  ->  { u  |  E. m  e.  ( 0 ... N ) u  =  ( ( m ^ 2 )  mod 
P ) }  C_  ( 0 ... ( P  -  1 ) ) )
152, 14syl5eqss 3352 . . . . . . 7  |-  ( ph  ->  A  C_  ( 0 ... ( P  - 
1 ) ) )
16 prmz 13038 . . . . . . . . . . . . . . . 16  |-  ( P  e.  Prime  ->  P  e.  ZZ )
176, 16syl 16 . . . . . . . . . . . . . . 15  |-  ( ph  ->  P  e.  ZZ )
18 peano2zm 10276 . . . . . . . . . . . . . . 15  |-  ( P  e.  ZZ  ->  ( P  -  1 )  e.  ZZ )
1917, 18syl 16 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( P  -  1 )  e.  ZZ )
2019zcnd 10332 . . . . . . . . . . . . 13  |-  ( ph  ->  ( P  -  1 )  e.  CC )
2120addid2d 9223 . . . . . . . . . . . 12  |-  ( ph  ->  ( 0  +  ( P  -  1 ) )  =  ( P  -  1 ) )
2221oveq1d 6055 . . . . . . . . . . 11  |-  ( ph  ->  ( ( 0  +  ( P  -  1 ) )  -  v
)  =  ( ( P  -  1 )  -  v ) )
2322adantr 452 . . . . . . . . . 10  |-  ( (
ph  /\  v  e.  A )  ->  (
( 0  +  ( P  -  1 ) )  -  v )  =  ( ( P  -  1 )  -  v ) )
2415sselda 3308 . . . . . . . . . . 11  |-  ( (
ph  /\  v  e.  A )  ->  v  e.  ( 0 ... ( P  -  1 ) ) )
25 fzrev3i 11068 . . . . . . . . . . 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 2479 . . . . . . . . 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 5852 . . . . . . . 8  |-  ( ph  ->  F : A --> ( 0 ... ( P  - 
1 ) ) )
30 frn 5556 . . . . . . . 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 3483 . . . . . 6  |-  ( ph  ->  ( A  u.  ran  F )  C_  ( 0 ... ( P  - 
1 ) ) )
33 ssdomg 7112 . . . . . 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 7288 . . . . . . 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 11608 . . . . . 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 11035 . . . . . . 7  |-  ( P  e.  ZZ  ->  (
0 ... ( P  - 
1 ) )  ~~  ( 1 ... P
) )
4117, 40syl 16 . . . . . 6  |-  ( ph  ->  ( 0 ... ( P  -  1 ) )  ~~  ( 1 ... P ) )
42 fzfid 11267 . . . . . . 7  |-  ( ph  ->  ( 1 ... P
)  e.  Fin )
43 hashen 11586 . . . . . . 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 10230 . . . . . 6  |-  ( ph  ->  P  e.  NN0 )
47 hashfz1 11585 . . . . . 6  |-  ( P  e.  NN0  ->  ( # `  ( 1 ... P
) )  =  P )
4846, 47syl 16 . . . . 5  |-  ( ph  ->  ( # `  (
1 ... P ) )  =  P )
4945, 48eqtrd 2436 . . . 4  |-  ( ph  ->  ( # `  (
0 ... ( P  - 
1 ) ) )  =  P )
5039, 49breqtrd 4196 . . 3  |-  ( ph  ->  ( # `  ( A  u.  ran  F ) )  <_  P )
51 hashcl 11594 . . . . . 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 10231 . . . 4  |-  ( ph  ->  ( # `  ( A  u.  ran  F ) )  e.  RR )
5417zred 10331 . . . 4  |-  ( ph  ->  P  e.  RR )
5553, 54lenltd 9175 . . 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 9897 . . . . 5  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  P  < 
( P  +  1 ) )
59 4sq.2 . . . . . . . . . 10  |-  ( ph  ->  N  e.  NN )
6059nncnd 9972 . . . . . . . . 9  |-  ( ph  ->  N  e.  CC )
61 ax-1cn 9004 . . . . . . . . . 10  |-  1  e.  CC
6261a1i 11 . . . . . . . . 9  |-  ( ph  ->  1  e.  CC )
6360, 60, 62, 62add4d 9245 . . . . . . . 8  |-  ( ph  ->  ( ( N  +  N )  +  ( 1  +  1 ) )  =  ( ( N  +  1 )  +  ( N  + 
1 ) ) )
64 4sq.3 . . . . . . . . . 10  |-  ( ph  ->  P  =  ( ( 2  x.  N )  +  1 ) )
6564oveq1d 6055 . . . . . . . . 9  |-  ( ph  ->  ( P  +  1 )  =  ( ( ( 2  x.  N
)  +  1 )  +  1 ) )
66 2cn 10026 . . . . . . . . . . 11  |-  2  e.  CC
67 mulcl 9030 . . . . . . . . . . 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 9066 . . . . . . . . 9  |-  ( ph  ->  ( ( ( 2  x.  N )  +  1 )  +  1 )  =  ( ( 2  x.  N )  +  ( 1  +  1 ) ) )
70602timesd 10166 . . . . . . . . . 10  |-  ( ph  ->  ( 2  x.  N
)  =  ( N  +  N ) )
7170oveq1d 6055 . . . . . . . . 9  |-  ( ph  ->  ( ( 2  x.  N )  +  ( 1  +  1 ) )  =  ( ( N  +  N )  +  ( 1  +  1 ) ) )
7265, 69, 713eqtrd 2440 . . . . . . . 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 11015 . . . . . . . . . . . . . . . . . . . . . . . 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 11407 . . . . . . . . . . . . . . . . . . . . . . 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 12814 . . . . . . . . . . . . . . . . . . . . . 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 10332 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  m  e.  CC )
8478zcnd 10332 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  u  e.  CC )
85 subsq 11443 . . . . . . . . . . . . . . . . . . . . . . 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 4184 . . . . . . . . . . . . . . . . . . . . 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 10335 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  e.  ZZ )
9075, 78zsubcld 10336 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  -  u
)  e.  ZZ )
91 euclemma 13063 . . . . . . . . . . . . . . . . . . . . . 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 10331 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  e.  RR )
95 2re 10025 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  2  e.  RR
9659nnred 9971 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ph  ->  N  e.  RR )
97 remulcl 9031 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 10331 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  P  e.  RR )
10275zred 10331 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  m  e.  RR )
10378zred 10331 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 11017 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( m  e.  ( 0 ... N )  ->  m  <_  N )
106105ad2antrl 709 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  m  <_  N )
107 elfzle2 11017 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 9600 . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 10166 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( 2  x.  N
)  =  ( N  +  N ) )
112109, 111breqtrrd 4198 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  <_  ( 2  x.  N ) )
11398ltp1d 9897 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ph  ->  ( 2  x.  N
)  <  ( (
2  x.  N )  +  1 ) )
114113, 64breqtrrd 4198 . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 9184 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  <  P )
11794, 101ltnled 9176 . . . . . . . . . . . . . . . . . . . . . . . . . 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 9046 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  1  e.  RR
123122a1i 11 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  1  e.  RR )
124 nn0abscl 12072 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 10231 . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 10331 . . . . . . . . . . . . . . . . . . . . . . . . . . 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 10329 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( abs `  ( m  -  u ) )  e.  ZZ )
13190zcnd 10332 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 9377 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( m  -  u )  =  0  <-> 
m  =  u ) )
134133necon3bid 2602 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 12205 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( abs `  ( m  -  u ) )  e.  RR+ )
137136rpgt0d 10607 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  0  <  ( abs `  (
m  -  u ) ) )
138 elnnz 10248 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 9998 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  1  <_  ( abs `  (
m  -  u ) ) )
141 0cn 9040 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  0  e.  CC
142141a1i 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
0  e.  CC )
14383, 84, 142abs3difd 12217 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  u ) )  <_  ( ( abs `  ( m  - 
0 ) )  +  ( abs `  (
0  -  u ) ) ) )
14483subid1d 9356 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  -  0 )  =  m )
145144fveq2d 5691 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  0 ) )  =  ( abs `  m ) )
146 elfzle1 11016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( m  e.  ( 0 ... N )  ->  0  <_  m )
147146ad2antrl 709 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
0  <_  m )
148102, 147absidd 12180 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  m
)  =  m )
149145, 148eqtrd 2436 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  0 ) )  =  m )
150 abssub 12085 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 9356 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( u  -  0 )  =  u )
153152fveq2d 5691 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
u  -  0 ) )  =  ( abs `  u ) )
154 elfzle1 11016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( u  e.  ( 0 ... N )  ->  0  <_  u )
155154ad2antll 710 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
0  <_  u )
156103, 155absidd 12180 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  u
)  =  u )
157151, 153, 1563eqtrd 2440 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
0  -  u ) )  =  u )
158149, 157oveq12d 6058 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( abs `  (
m  -  0 ) )  +  ( abs `  ( 0  -  u
) ) )  =  ( m  +  u
) )
159143, 158breqtrd 4196 . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 9183 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  1  <_  ( m  +  u
) )
162 elnnz1 10263 . . . . . . . . . . . . . . . . . . . . . . . . . 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 12850 . . . . . . . . . . . . . . . . . . . . . . . . 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 2628 . . . . . . . . . . . . . . . . . . . . 21  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( P  ||  (
m  +  u )  ->  m  =  u ) )
169 dvdsabsb 12824 . . . . . . . . . . . . . . . . . . . . . . 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 9123 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 12850 . . . . . . . . . . . . . . . . . . . . . . . . . 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 2628 . . . . . . . . . . . . . . . . . . . . . 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 6047 . . . . . . . . . . . . . . . . . . . 20  |-  ( m  =  u  ->  (
m ^ 2 )  =  ( u ^
2 ) )
186185oveq1d 6055 . . . . . . . . . . . . . . . . . . 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 7106 . . . . . . . . . . . . . . . 16  |-  ( ph  ->  ( m  e.  ( 0 ... N ) 
|->  ( ( m ^
2 )  mod  P
) ) : ( 0 ... N )
-1-1-> ( 0 ... ( P  -  1 ) ) )
190 f1f1orn 5644 . . . . . . . . . . . . . . . 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 2404 . . . . . . . . . . . . . . . . . 18  |-  ( m  e.  ( 0 ... N )  |->  ( ( m ^ 2 )  mod  P ) )  =  ( m  e.  ( 0 ... N
)  |->  ( ( m ^ 2 )  mod 
P ) )
193192rnmpt 5075 . . . . . . . . . . . . . . . . 17  |-  ran  (
m  e.  ( 0 ... N )  |->  ( ( m ^ 2 )  mod  P ) )  =  { u  |  E. m  e.  ( 0 ... N ) u  =  ( ( m ^ 2 )  mod  P ) }
1942, 193eqtr4i 2427 . . . . . . . . . . . . . . . 16  |-  A  =  ran  ( m  e.  ( 0 ... N
)  |->  ( ( m ^ 2 )  mod 
P ) )
195 f1oeq3 5626 . . . . . . . . . . . . . . . 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 6065 . . . . . . . . . . . . . . 15  |-  ( 0 ... N )  e. 
_V
199198f1oen 7087 . . . . . . . . . . . . . 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 7117 . . . . . . . . . . . 12  |-  ( ph  ->  A  ~~  ( 0 ... N ) )
202 pncan 9267 . . . . . . . . . . . . . . 15  |-  ( ( N  e.  CC  /\  1  e.  CC )  ->  ( ( N  + 
1 )  -  1 )  =  N )
20360, 61, 202sylancl 644 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( ( N  + 
1 )  -  1 )  =  N )
204203oveq2d 6056 . . . . . . . . . . . . 13  |-  ( ph  ->  ( 0 ... (
( N  +  1 )  -  1 ) )  =  ( 0 ... N ) )
20559nnnn0d 10230 . . . . . . . . . . . . . . . 16  |-  ( ph  ->  N  e.  NN0 )
206 peano2nn0 10216 . . . . . . . . . . . . . . . 16  |-  ( N  e.  NN0  ->  ( N  +  1 )  e. 
NN0 )
207205, 206syl 16 . . . . . . . . . . . . . . 15  |-  ( ph  ->  ( N  +  1 )  e.  NN0 )
208207nn0zd 10329 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( N  +  1 )  e.  ZZ )
209 fz01en 11035 . . . . . . . . . . . . . 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 4194 . . . . . . . . . . . 12  |-  ( ph  ->  ( 0 ... N
)  ~~  ( 1 ... ( N  + 
1 ) ) )
212 entr 7118 . . . . . . . . . . . 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 7288 . . . . . . . . . . . . 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 11267 . . . . . . . . . . . 12  |-  ( ph  ->  ( 1 ... ( N  +  1 ) )  e.  Fin )
217 hashen 11586 . . . . . . . . . . . 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 11585 . . . . . . . . . . 11  |-  ( ( N  +  1 )  e.  NN0  ->  ( # `  ( 1 ... ( N  +  1 ) ) )  =  ( N  +  1 ) )
221207, 220syl 16 . . . . . . . . . 10  |-  ( ph  ->  ( # `  (
1 ... ( N  + 
1 ) ) )  =  ( N  + 
1 ) )
222219, 221eqtrd 2436 . . . . . . . . 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 11049 . . . . . . . . . . . . . . . . . . . . 21  |-  ( 0 ... ( P  - 
1 ) )  C_  ( ZZ>= `  0 )
226 uzssz 10461 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ZZ>= ` 
0 )  C_  ZZ
227 zsscn 10246 . . . . . . . . . . . . . . . . . . . . . 22  |-  ZZ  C_  CC
228226, 227sstri 3317 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ZZ>= ` 
0 )  C_  CC
229225, 228sstri 3317 . . . . . . . . . . . . . . . . . . . 20  |-  ( 0 ... ( P  - 
1 ) )  C_  CC
23015, 229syl6ss 3320 . . . . . . . . . . . . . . . . . . 19  |-  ( ph  ->  A  C_  CC )
231230sselda 3308 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  v  e.  A )  ->  v  e.  CC )
232231adantrr 698 . . . . . . . . . . . . . . . . 17  |-  ( (
ph  /\  ( v  e.  A  /\  k  e.  A ) )  -> 
v  e.  CC )
233230sselda 3308 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  k  e.  A )  ->  k  e.  CC )
234233adantrl 697 . . . . . . . . . . . . . . . . 17  |-  ( (
ph  /\  ( v  e.  A  /\  k  e.  A ) )  -> 
k  e.  CC )
235224, 232, 234subcanad 9410 . . . . . . . . . . . . . . . 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 7106 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( v  e.  A  |->  ( ( P  - 
1 )  -  v
) ) : A -1-1-> ( 0 ... ( P  -  1 ) ) )
238 f1eq1 5593 . . . . . . . . . . . . . . 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 5644 . . . . . . . . . . . . 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 7085 . . . . . . . . . . . 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 7288 . . . . . . . . . . . . 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 11586 . . . . . . . . . . . 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 2438 . . . . . . . . 9  |-  ( ph  ->  ( # `  ran  F )  =  ( N  +  1 ) )
251222, 250oveq12d 6058 . . . . . . . 8  |-  ( ph  ->  ( ( # `  A
)  +  ( # `  ran  F ) )  =  ( ( N  +  1 )  +  ( N  +  1 ) ) )
25263, 72, 2513eqtr4d 2446 . . . . . . 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 11611 . . . . . . 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 2439 . . . . 5  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  ( P  +  1 )  =  ( # `  ( A  u.  ran  F ) ) )
26058, 259breqtrd 4196 . . . 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 2604 . 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 1649    e. wcel 1721   {cab 2390    =/= wne 2567   E.wrex 2667    u. cun 3278    i^i cin 3279    C_ wss 3280   (/)c0 3588   class class class wbr 4172    e. cmpt 4226   ran crn 4838   -->wf 5409   -1-1->wf1 5410   -1-1-onto->wf1o 5412   ` cfv 5413  (class class class)co 6040    ~~ cen 7065    ~<_ cdom 7066   Fincfn 7068   CCcc 8944   RRcr 8945   0cc0 8946   1c1 8947    + caddc 8949    x. cmul 8951    < clt 9076    <_ cle 9077    - cmin 9247   NNcn 9956   2c2 10005   NN0cn0 10177   ZZcz 10238   ZZ>=cuz 10444   ...cfz 10999    mod cmo 11205   ^cexp 11337   #chash 11573   abscabs 11994    || cdivides 12807   Primecprime 13034
This theorem is referenced by:  4sqlem12  13279
This theorem was proved from axioms:  ax-1 5  ax-2 6  ax-3 7  ax-mp 8  ax-gen 1552  ax-5 1563  ax-17 1623  ax-9 1662  ax-8 1683  ax-13 1723  ax-14 1725  ax-6 1740  ax-7 1745  ax-11 1757  ax-12 1946  ax-ext 2385  ax-rep 4280  ax-sep 4290  ax-nul 4298  ax-pow 4337  ax-pr 4363  ax-un 4660  ax-cnex 9002  ax-resscn 9003  ax-1cn 9004  ax-icn 9005  ax-addcl 9006  ax-addrcl 9007  ax-mulcl 9008  ax-mulrcl 9009  ax-mulcom 9010  ax-addass 9011  ax-mulass 9012  ax-distr 9013  ax-i2m1 9014  ax-1ne0 9015  ax-1rid 9016  ax-rnegex 9017  ax-rrecex 9018  ax-cnre 9019  ax-pre-lttri 9020  ax-pre-lttrn 9021  ax-pre-ltadd 9022  ax-pre-mulgt0 9023  ax-pre-sup 9024
This theorem depends on definitions:  df-bi 178  df-or 360  df-an 361  df-3or 937  df-3an 938  df-tru 1325  df-ex 1548  df-nf 1551  df-sb 1656  df-eu 2258  df-mo 2259  df-clab 2391  df-cleq 2397  df-clel 2400  df-nfc 2529  df-ne 2569  df-nel 2570  df-ral 2671  df-rex 2672  df-reu 2673  df-rmo 2674  df-rab 2675  df-v 2918  df-sbc 3122  df-csb 3212  df-dif 3283  df-un 3285  df-in 3287  df-ss 3294  df-pss 3296  df-nul 3589  df-if 3700  df-pw 3761  df-sn 3780  df-pr 3781  df-tp 3782  df-op 3783  df-uni 3976  df-int 4011  df-iun 4055  df-br 4173  df-opab 4227  df-mpt 4228  df-tr 4263  df-eprel 4454  df-id 4458  df-po 4463  df-so 4464  df-fr 4501  df-we 4503  df-ord 4544  df-on 4545  df-lim 4546  df-suc 4547  df-om 4805  df-xp 4843  df-rel 4844  df-cnv 4845  df-co 4846  df-dm 4847  df-rn 4848  df-res 4849  df-ima 4850  df-iota 5377  df-fun 5415  df-fn 5416  df-f 5417  df-f1 5418  df-fo 5419  df-f1o 5420  df-fv 5421  df-ov 6043  df-oprab 6044  df-mpt2 6045  df-1st 6308  df-2nd 6309  df-riota 6508  df-recs 6592  df-rdg 6627  df-1o 6683  df-2o 6684  df-oadd 6687  df-er 6864  df-en 7069  df-dom 7070  df-sdom 7071  df-fin 7072  df-sup 7404  df-card 7782  df-cda 8004  df-pnf 9078  df-mnf 9079  df-xr 9080  df-ltxr 9081  df-le 9082  df-sub 9249  df-neg 9250  df-div 9634  df-nn 9957  df-2 10014  df-3 10015  df-n0 10178  df-z 10239  df-uz 10445  df-rp 10569  df-fz 11000  df-fl 11157  df-mod 11206  df-seq 11279  df-exp 11338  df-hash 11574  df-cj 11859  df-re 11860  df-im 11861  df-sqr 11995  df-abs 11996  df-dvds 12808  df-gcd 12962  df-prm 13035
  Copyright terms: Public domain W3C validator