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

Theorem 4sqlem11 13018
Description: Lemma for 4sq 13027. 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 11051 . . . . . 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 10814 . . . . . . . . . . . . 13  |-  ( m  e.  ( 0 ... N )  ->  m  e.  ZZ )
4 zsqcl 11190 . . . . . . . . . . . . 13  |-  ( m  e.  ZZ  ->  (
m ^ 2 )  e.  ZZ )
53, 4syl 15 . . . . . . . . . . . 12  |-  ( m  e.  ( 0 ... N )  ->  (
m ^ 2 )  e.  ZZ )
6 4sq.4 . . . . . . . . . . . . 13  |-  ( ph  ->  P  e.  Prime )
7 prmnn 12777 . . . . . . . . . . . . 13  |-  ( P  e.  Prime  ->  P  e.  NN )
86, 7syl 15 . . . . . . . . . . . 12  |-  ( ph  ->  P  e.  NN )
9 zmodfz 11007 . . . . . . . . . . . 12  |-  ( ( ( m ^ 2 )  e.  ZZ  /\  P  e.  NN )  ->  ( ( m ^
2 )  mod  P
)  e.  ( 0 ... ( P  - 
1 ) ) )
105, 8, 9syl2anr 464 . . . . . . . . . . 11  |-  ( (
ph  /\  m  e.  ( 0 ... N
) )  ->  (
( m ^ 2 )  mod  P )  e.  ( 0 ... ( P  -  1 ) ) )
11 eleq1a 2365 . . . . . . . . . . 11  |-  ( ( ( m ^ 2 )  mod  P )  e.  ( 0 ... ( P  -  1 ) )  ->  (
u  =  ( ( m ^ 2 )  mod  P )  ->  u  e.  ( 0 ... ( P  - 
1 ) ) ) )
1210, 11syl 15 . . . . . . . . . 10  |-  ( (
ph  /\  m  e.  ( 0 ... N
) )  ->  (
u  =  ( ( m ^ 2 )  mod  P )  ->  u  e.  ( 0 ... ( P  - 
1 ) ) ) )
1312rexlimdva 2680 . . . . . . . . 9  |-  ( ph  ->  ( E. m  e.  ( 0 ... N
) u  =  ( ( m ^ 2 )  mod  P )  ->  u  e.  ( 0 ... ( P  -  1 ) ) ) )
1413abssdv 3260 . . . . . . . 8  |-  ( ph  ->  { u  |  E. m  e.  ( 0 ... N ) u  =  ( ( m ^ 2 )  mod 
P ) }  C_  ( 0 ... ( P  -  1 ) ) )
152, 14syl5eqss 3235 . . . . . . 7  |-  ( ph  ->  A  C_  ( 0 ... ( P  - 
1 ) ) )
16 prmz 12778 . . . . . . . . . . . . . . . 16  |-  ( P  e.  Prime  ->  P  e.  ZZ )
176, 16syl 15 . . . . . . . . . . . . . . 15  |-  ( ph  ->  P  e.  ZZ )
18 peano2zm 10078 . . . . . . . . . . . . . . 15  |-  ( P  e.  ZZ  ->  ( P  -  1 )  e.  ZZ )
1917, 18syl 15 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( P  -  1 )  e.  ZZ )
2019zcnd 10134 . . . . . . . . . . . . 13  |-  ( ph  ->  ( P  -  1 )  e.  CC )
2120addid2d 9029 . . . . . . . . . . . 12  |-  ( ph  ->  ( 0  +  ( P  -  1 ) )  =  ( P  -  1 ) )
2221oveq1d 5889 . . . . . . . . . . 11  |-  ( ph  ->  ( ( 0  +  ( P  -  1 ) )  -  v
)  =  ( ( P  -  1 )  -  v ) )
2322adantr 451 . . . . . . . . . 10  |-  ( (
ph  /\  v  e.  A )  ->  (
( 0  +  ( P  -  1 ) )  -  v )  =  ( ( P  -  1 )  -  v ) )
2415sselda 3193 . . . . . . . . . . 11  |-  ( (
ph  /\  v  e.  A )  ->  v  e.  ( 0 ... ( P  -  1 ) ) )
25 fzrev3i 10866 . . . . . . . . . . 11  |-  ( v  e.  ( 0 ... ( P  -  1 ) )  ->  (
( 0  +  ( P  -  1 ) )  -  v )  e.  ( 0 ... ( P  -  1 ) ) )
2624, 25syl 15 . . . . . . . . . 10  |-  ( (
ph  /\  v  e.  A )  ->  (
( 0  +  ( P  -  1 ) )  -  v )  e.  ( 0 ... ( P  -  1 ) ) )
2723, 26eqeltrrd 2371 . . . . . . . . 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 5700 . . . . . . . 8  |-  ( ph  ->  F : A --> ( 0 ... ( P  - 
1 ) ) )
30 frn 5411 . . . . . . . 8  |-  ( F : A --> ( 0 ... ( P  - 
1 ) )  ->  ran  F  C_  ( 0 ... ( P  - 
1 ) ) )
3129, 30syl 15 . . . . . . 7  |-  ( ph  ->  ran  F  C_  (
0 ... ( P  - 
1 ) ) )
3215, 31unssd 3364 . . . . . 6  |-  ( ph  ->  ( A  u.  ran  F )  C_  ( 0 ... ( P  - 
1 ) ) )
33 ssdomg 6923 . . . . . 6  |-  ( ( 0 ... ( P  -  1 ) )  e.  Fin  ->  (
( A  u.  ran  F )  C_  ( 0 ... ( P  - 
1 ) )  -> 
( A  u.  ran  F )  ~<_  ( 0 ... ( P  -  1 ) ) ) )
341, 32, 33sylc 56 . . . . 5  |-  ( ph  ->  ( A  u.  ran  F )  ~<_  ( 0 ... ( P  -  1 ) ) )
35 ssfi 7099 . . . . . . 7  |-  ( ( ( 0 ... ( P  -  1 ) )  e.  Fin  /\  ( A  u.  ran  F )  C_  ( 0 ... ( P  - 
1 ) ) )  ->  ( A  u.  ran  F )  e.  Fin )
361, 32, 35syl2anc 642 . . . . . 6  |-  ( ph  ->  ( A  u.  ran  F )  e.  Fin )
37 hashdom 11377 . . . . . 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 642 . . . . 5  |-  ( ph  ->  ( ( # `  ( A  u.  ran  F ) )  <_  ( # `  (
0 ... ( P  - 
1 ) ) )  <-> 
( A  u.  ran  F )  ~<_  ( 0 ... ( P  -  1 ) ) ) )
3934, 38mpbird 223 . . . 4  |-  ( ph  ->  ( # `  ( A  u.  ran  F ) )  <_  ( # `  (
0 ... ( P  - 
1 ) ) ) )
40 fz01en 10834 . . . . . . 7  |-  ( P  e.  ZZ  ->  (
0 ... ( P  - 
1 ) )  ~~  ( 1 ... P
) )
4117, 40syl 15 . . . . . 6  |-  ( ph  ->  ( 0 ... ( P  -  1 ) )  ~~  ( 1 ... P ) )
42 fzfid 11051 . . . . . . 7  |-  ( ph  ->  ( 1 ... P
)  e.  Fin )
43 hashen 11362 . . . . . . 7  |-  ( ( ( 0 ... ( P  -  1 ) )  e.  Fin  /\  ( 1 ... P
)  e.  Fin )  ->  ( ( # `  (
0 ... ( P  - 
1 ) ) )  =  ( # `  (
1 ... P ) )  <-> 
( 0 ... ( P  -  1 ) )  ~~  ( 1 ... P ) ) )
441, 42, 43syl2anc 642 . . . . . 6  |-  ( ph  ->  ( ( # `  (
0 ... ( P  - 
1 ) ) )  =  ( # `  (
1 ... P ) )  <-> 
( 0 ... ( P  -  1 ) )  ~~  ( 1 ... P ) ) )
4541, 44mpbird 223 . . . . 5  |-  ( ph  ->  ( # `  (
0 ... ( P  - 
1 ) ) )  =  ( # `  (
1 ... P ) ) )
468nnnn0d 10034 . . . . . 6  |-  ( ph  ->  P  e.  NN0 )
47 hashfz1 11361 . . . . . 6  |-  ( P  e.  NN0  ->  ( # `  ( 1 ... P
) )  =  P )
4846, 47syl 15 . . . . 5  |-  ( ph  ->  ( # `  (
1 ... P ) )  =  P )
4945, 48eqtrd 2328 . . . 4  |-  ( ph  ->  ( # `  (
0 ... ( P  - 
1 ) ) )  =  P )
5039, 49breqtrd 4063 . . 3  |-  ( ph  ->  ( # `  ( A  u.  ran  F ) )  <_  P )
51 hashcl 11366 . . . . . 6  |-  ( ( A  u.  ran  F
)  e.  Fin  ->  (
# `  ( A  u.  ran  F ) )  e.  NN0 )
5236, 51syl 15 . . . . 5  |-  ( ph  ->  ( # `  ( A  u.  ran  F ) )  e.  NN0 )
5352nn0red 10035 . . . 4  |-  ( ph  ->  ( # `  ( A  u.  ran  F ) )  e.  RR )
5417zred 10133 . . . 4  |-  ( ph  ->  P  e.  RR )
5553, 54lenltd 8981 . . 3  |-  ( ph  ->  ( ( # `  ( A  u.  ran  F ) )  <_  P  <->  -.  P  <  ( # `  ( A  u.  ran  F ) ) ) )
5650, 55mpbid 201 . 2  |-  ( ph  ->  -.  P  <  ( # `
 ( A  u.  ran  F ) ) )
5754adantr 451 . . . . . 6  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  P  e.  RR )
5857ltp1d 9703 . . . . 5  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  P  < 
( P  +  1 ) )
59 4sq.2 . . . . . . . . . 10  |-  ( ph  ->  N  e.  NN )
6059nncnd 9778 . . . . . . . . 9  |-  ( ph  ->  N  e.  CC )
61 ax-1cn 8811 . . . . . . . . . 10  |-  1  e.  CC
6261a1i 10 . . . . . . . . 9  |-  ( ph  ->  1  e.  CC )
6360, 60, 62, 62add4d 9051 . . . . . . . 8  |-  ( ph  ->  ( ( N  +  N )  +  ( 1  +  1 ) )  =  ( ( N  +  1 )  +  ( N  + 
1 ) ) )
64 4sq.3 . . . . . . . . . 10  |-  ( ph  ->  P  =  ( ( 2  x.  N )  +  1 ) )
6564oveq1d 5889 . . . . . . . . 9  |-  ( ph  ->  ( P  +  1 )  =  ( ( ( 2  x.  N
)  +  1 )  +  1 ) )
66 2cn 9832 . . . . . . . . . . 11  |-  2  e.  CC
67 mulcl 8837 . . . . . . . . . . 11  |-  ( ( 2  e.  CC  /\  N  e.  CC )  ->  ( 2  x.  N
)  e.  CC )
6866, 60, 67sylancr 644 . . . . . . . . . 10  |-  ( ph  ->  ( 2  x.  N
)  e.  CC )
6968, 62, 62addassd 8873 . . . . . . . . 9  |-  ( ph  ->  ( ( ( 2  x.  N )  +  1 )  +  1 )  =  ( ( 2  x.  N )  +  ( 1  +  1 ) ) )
70602timesd 9970 . . . . . . . . . 10  |-  ( ph  ->  ( 2  x.  N
)  =  ( N  +  N ) )
7170oveq1d 5889 . . . . . . . . 9  |-  ( ph  ->  ( ( 2  x.  N )  +  ( 1  +  1 ) )  =  ( ( N  +  N )  +  ( 1  +  1 ) ) )
7265, 69, 713eqtrd 2332 . . . . . . . 8  |-  ( ph  ->  ( P  +  1 )  =  ( ( N  +  N )  +  ( 1  +  1 ) ) )
7310ex 423 . . . . . . . . . . . . . . . . 17  |-  ( ph  ->  ( m  e.  ( 0 ... N )  ->  ( ( m ^ 2 )  mod 
P )  e.  ( 0 ... ( P  -  1 ) ) ) )
748adantr 451 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  P  e.  NN )
753ad2antrl 708 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  m  e.  ZZ )
7675, 4syl 15 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m ^ 2 )  e.  ZZ )
77 elfzelz 10814 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( u  e.  ( 0 ... N )  ->  u  e.  ZZ )
7877ad2antll 709 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  u  e.  ZZ )
79 zsqcl 11190 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( u  e.  ZZ  ->  (
u ^ 2 )  e.  ZZ )
8078, 79syl 15 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( u ^ 2 )  e.  ZZ )
81 moddvds 12554 . . . . . . . . . . . . . . . . . . . . . 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 1182 . . . . . . . . . . . . . . . . . . . . 21  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( ( m ^ 2 )  mod 
P )  =  ( ( u ^ 2 )  mod  P )  <-> 
P  ||  ( (
m ^ 2 )  -  ( u ^
2 ) ) ) )
8375zcnd 10134 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  m  e.  CC )
8478zcnd 10134 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  u  e.  CC )
85 subsq 11226 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( m  e.  CC  /\  u  e.  CC )  ->  ( ( m ^
2 )  -  (
u ^ 2 ) )  =  ( ( m  +  u )  x.  ( m  -  u ) ) )
8683, 84, 85syl2anc 642 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( m ^
2 )  -  (
u ^ 2 ) )  =  ( ( m  +  u )  x.  ( m  -  u ) ) )
8786breq2d 4051 . . . . . . . . . . . . . . . . . . . . 21  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( P  ||  (
( m ^ 2 )  -  ( u ^ 2 ) )  <-> 
P  ||  ( (
m  +  u )  x.  ( m  -  u ) ) ) )
886adantr 451 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  P  e.  Prime )
8975, 78zaddcld 10137 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  e.  ZZ )
9075, 78zsubcld 10138 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  -  u
)  e.  ZZ )
91 euclemma 12803 . . . . . . . . . . . . . . . . . . . . . 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 1182 . . . . . . . . . . . . . . . . . . . . 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 270 . . . . . . . . . . . . . . . . . . . 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 10133 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  e.  RR )
95 2re 9831 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  2  e.  RR
9659nnred 9777 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ph  ->  N  e.  RR )
97 remulcl 8838 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( 2  e.  RR  /\  N  e.  RR )  ->  ( 2  x.  N
)  e.  RR )
9895, 96, 97sylancr 644 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( ph  ->  ( 2  x.  N
)  e.  RR )
9998adantr 451 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( 2  x.  N
)  e.  RR )
10088, 16syl 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  P  e.  ZZ )
101100zred 10133 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  P  e.  RR )
10275zred 10133 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  m  e.  RR )
10378zred 10133 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  u  e.  RR )
10496adantr 451 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  N  e.  RR )
105 elfzle2 10816 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( m  e.  ( 0 ... N )  ->  m  <_  N )
106105ad2antrl 708 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  m  <_  N )
107 elfzle2 10816 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( u  e.  ( 0 ... N )  ->  u  <_  N )
108107ad2antll 709 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  u  <_  N )
109102, 103, 104, 104, 106, 108le2addd 9406 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  <_  ( N  +  N ) )
11060adantr 451 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  N  e.  CC )
1111102timesd 9970 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( 2  x.  N
)  =  ( N  +  N ) )
112109, 111breqtrrd 4065 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  <_  ( 2  x.  N ) )
11398ltp1d 9703 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ph  ->  ( 2  x.  N
)  <  ( (
2  x.  N )  +  1 ) )
114113, 64breqtrrd 4065 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( ph  ->  ( 2  x.  N
)  <  P )
115114adantr 451 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( 2  x.  N
)  <  P )
11694, 99, 101, 112, 115lelttrd 8990 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  <  P )
11794, 101ltnled 8982 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( m  +  u )  <  P  <->  -.  P  <_  ( m  +  u ) ) )
118116, 117mpbid 201 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  -.  P  <_  ( m  +  u ) )
119118adantr 451 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  -.  P  <_  ( m  +  u ) )
12017ad2antrr 706 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  P  e.  ZZ )
12189adantr 451 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  (
m  +  u )  e.  ZZ )
122 1re 8853 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  1  e.  RR
123122a1i 10 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  1  e.  RR )
124 nn0abscl 11813 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( ( m  -  u )  e.  ZZ  ->  ( abs `  ( m  -  u ) )  e. 
NN0 )
12590, 124syl 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  u ) )  e.  NN0 )
126125nn0red 10035 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  u ) )  e.  RR )
127126adantr 451 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( abs `  ( m  -  u ) )  e.  RR )
128121zred 10133 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  (
m  +  u )  e.  RR )
129125adantr 451 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( abs `  ( m  -  u ) )  e. 
NN0 )
130129nn0zd 10131 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( abs `  ( m  -  u ) )  e.  ZZ )
13190zcnd 10134 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  -  u
)  e.  CC )
132131adantr 451 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  (
m  -  u )  e.  CC )
133 subeq0 9089 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34  |-  ( ( m  e.  CC  /\  u  e.  CC )  ->  ( ( m  -  u )  =  0  <-> 
m  =  u ) )
13483, 84, 133syl2anc 642 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( m  -  u )  =  0  <-> 
m  =  u ) )
135134necon3bid 2494 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( m  -  u )  =/=  0  <->  m  =/=  u ) )
136135biimpar 471 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  (
m  -  u )  =/=  0 )
137132, 136absrpcld 11946 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( abs `  ( m  -  u ) )  e.  RR+ )
138137rpgt0d 10409 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  0  <  ( abs `  (
m  -  u ) ) )
139 elnnz 10050 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( abs `  ( m  -  u ) )  e.  NN  <->  ( ( abs `  ( m  -  u ) )  e.  ZZ  /\  0  < 
( abs `  (
m  -  u ) ) ) )
140130, 138, 139sylanbrc 645 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( abs `  ( m  -  u ) )  e.  NN )
141140nnge1d 9804 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  1  <_  ( abs `  (
m  -  u ) ) )
142 0cn 8847 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  0  e.  CC
143142a1i 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
0  e.  CC )
14483, 84, 143abs3difd 11958 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  u ) )  <_  ( ( abs `  ( m  - 
0 ) )  +  ( abs `  (
0  -  u ) ) ) )
14583subid1d 9162 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  -  0 )  =  m )
146145fveq2d 5545 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  0 ) )  =  ( abs `  m ) )
147 elfzle1 10815 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( m  e.  ( 0 ... N )  ->  0  <_  m )
148147ad2antrl 708 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
0  <_  m )
149102, 148absidd 11921 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  m
)  =  m )
150146, 149eqtrd 2328 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  0 ) )  =  m )
151 abssub 11826 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( ( 0  e.  CC  /\  u  e.  CC )  ->  ( abs `  (
0  -  u ) )  =  ( abs `  ( u  -  0 ) ) )
152142, 84, 151sylancr 644 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
0  -  u ) )  =  ( abs `  ( u  -  0 ) ) )
15384subid1d 9162 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( u  -  0 )  =  u )
154153fveq2d 5545 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
u  -  0 ) )  =  ( abs `  u ) )
155 elfzle1 10815 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( u  e.  ( 0 ... N )  ->  0  <_  u )
156155ad2antll 709 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
0  <_  u )
157103, 156absidd 11921 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  u
)  =  u )
158152, 154, 1573eqtrd 2332 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
0  -  u ) )  =  u )
159150, 158oveq12d 5892 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( abs `  (
m  -  0 ) )  +  ( abs `  ( 0  -  u
) ) )  =  ( m  +  u
) )
160144, 159breqtrd 4063 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  u ) )  <_  ( m  +  u ) )
161160adantr 451 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( abs `  ( m  -  u ) )  <_ 
( m  +  u
) )
162123, 127, 128, 141, 161letrd 8989 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  1  <_  ( m  +  u
) )
163 elnnz1 10065 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( ( m  +  u )  e.  NN  <->  ( (
m  +  u )  e.  ZZ  /\  1  <_  ( m  +  u
) ) )
164121, 162, 163sylanbrc 645 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  (
m  +  u )  e.  NN )
165 dvdsle 12590 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( ( P  e.  ZZ  /\  ( m  +  u
)  e.  NN )  ->  ( P  ||  ( m  +  u
)  ->  P  <_  ( m  +  u ) ) )
166120, 164, 165syl2anc 642 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( P  ||  ( m  +  u )  ->  P  <_  ( m  +  u
) ) )
167119, 166mtod 168 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  -.  P  ||  ( m  +  u ) )
168167ex 423 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  =/=  u  ->  -.  P  ||  (
m  +  u ) ) )
169168necon4ad 2520 . . . . . . . . . . . . . . . . . . . . 21  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( P  ||  (
m  +  u )  ->  m  =  u ) )
170 dvdsabsb 12564 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( P  e.  ZZ  /\  ( m  -  u
)  e.  ZZ )  ->  ( P  ||  ( m  -  u
)  <->  P  ||  ( abs `  ( m  -  u
) ) ) )
171100, 90, 170syl2anc 642 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( P  ||  (
m  -  u )  <-> 
P  ||  ( abs `  ( m  -  u
) ) ) )
172 letr 8930 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 ) ) )
173101, 126, 94, 172syl3anc 1182 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( P  <_ 
( abs `  (
m  -  u ) )  /\  ( abs `  ( m  -  u
) )  <_  (
m  +  u ) )  ->  P  <_  ( m  +  u ) ) )
174160, 173mpan2d 655 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( P  <_  ( abs `  ( m  -  u ) )  ->  P  <_  ( m  +  u ) ) )
175118, 174mtod 168 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  -.  P  <_  ( abs `  ( m  -  u
) ) )
176175adantr 451 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  -.  P  <_  ( abs `  (
m  -  u ) ) )
177100adantr 451 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  P  e.  ZZ )
178 dvdsle 12590 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( ( P  e.  ZZ  /\  ( abs `  ( m  -  u ) )  e.  NN )  -> 
( P  ||  ( abs `  ( m  -  u ) )  ->  P  <_  ( abs `  (
m  -  u ) ) ) )
179177, 140, 178syl2anc 642 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( P  ||  ( abs `  (
m  -  u ) )  ->  P  <_  ( abs `  ( m  -  u ) ) ) )
180176, 179mtod 168 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  -.  P  ||  ( abs `  (
m  -  u ) ) )
181180ex 423 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  =/=  u  ->  -.  P  ||  ( abs `  ( m  -  u ) ) ) )
182181necon4ad 2520 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( P  ||  ( abs `  ( m  -  u ) )  ->  m  =  u )
)
183171, 182sylbid 206 . . . . . . . . . . . . . . . . . . . . 21  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( P  ||  (
m  -  u )  ->  m  =  u ) )
184169, 183jaod 369 . . . . . . . . . . . . . . . . . . . 20  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( P  ||  ( m  +  u
)  \/  P  ||  ( m  -  u
) )  ->  m  =  u ) )
18593, 184sylbid 206 . . . . . . . . . . . . . . . . . . 19  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( ( m ^ 2 )  mod 
P )  =  ( ( u ^ 2 )  mod  P )  ->  m  =  u ) )
186 oveq1 5881 . . . . . . . . . . . . . . . . . . . 20  |-  ( m  =  u  ->  (
m ^ 2 )  =  ( u ^
2 ) )
187186oveq1d 5889 . . . . . . . . . . . . . . . . . . 19  |-  ( m  =  u  ->  (
( m ^ 2 )  mod  P )  =  ( ( u ^ 2 )  mod 
P ) )
188185, 187impbid1 194 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( ( m ^ 2 )  mod 
P )  =  ( ( u ^ 2 )  mod  P )  <-> 
m  =  u ) )
189188ex 423 . . . . . . . . . . . . . . . . 17  |-  ( ph  ->  ( ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) )  ->  (
( ( m ^
2 )  mod  P
)  =  ( ( u ^ 2 )  mod  P )  <->  m  =  u ) ) )
19073, 189dom2lem 6917 . . . . . . . . . . . . . . . 16  |-  ( ph  ->  ( m  e.  ( 0 ... N ) 
|->  ( ( m ^
2 )  mod  P
) ) : ( 0 ... N )
-1-1-> ( 0 ... ( P  -  1 ) ) )
191 f1f1orn 5499 . . . . . . . . . . . . . . . 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
) ) )
192190, 191syl 15 . . . . . . . . . . . . . . 15  |-  ( ph  ->  ( m  e.  ( 0 ... N ) 
|->  ( ( m ^
2 )  mod  P
) ) : ( 0 ... N ) -1-1-onto-> ran  ( m  e.  ( 0 ... N ) 
|->  ( ( m ^
2 )  mod  P
) ) )
193 eqid 2296 . . . . . . . . . . . . . . . . . 18  |-  ( m  e.  ( 0 ... N )  |->  ( ( m ^ 2 )  mod  P ) )  =  ( m  e.  ( 0 ... N
)  |->  ( ( m ^ 2 )  mod 
P ) )
194193rnmpt 4941 . . . . . . . . . . . . . . . . 17  |-  ran  (
m  e.  ( 0 ... N )  |->  ( ( m ^ 2 )  mod  P ) )  =  { u  |  E. m  e.  ( 0 ... N ) u  =  ( ( m ^ 2 )  mod  P ) }
1952, 194eqtr4i 2319 . . . . . . . . . . . . . . . 16  |-  A  =  ran  ( m  e.  ( 0 ... N
)  |->  ( ( m ^ 2 )  mod 
P ) )
196 f1oeq3 5481 . . . . . . . . . . . . . . . 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
) ) ) )
197195, 196ax-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
) ) )
198192, 197sylibr 203 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( m  e.  ( 0 ... N ) 
|->  ( ( m ^
2 )  mod  P
) ) : ( 0 ... N ) -1-1-onto-> A )
199 ovex 5899 . . . . . . . . . . . . . . 15  |-  ( 0 ... N )  e. 
_V
200199f1oen 6898 . . . . . . . . . . . . . 14  |-  ( ( m  e.  ( 0 ... N )  |->  ( ( m ^ 2 )  mod  P ) ) : ( 0 ... N ) -1-1-onto-> A  -> 
( 0 ... N
)  ~~  A )
201198, 200syl 15 . . . . . . . . . . . . 13  |-  ( ph  ->  ( 0 ... N
)  ~~  A )
202 ensym 6926 . . . . . . . . . . . . 13  |-  ( ( 0 ... N ) 
~~  A  ->  A  ~~  ( 0 ... N
) )
203201, 202syl 15 . . . . . . . . . . . 12  |-  ( ph  ->  A  ~~  ( 0 ... N ) )
204 pncan 9073 . . . . . . . . . . . . . . 15  |-  ( ( N  e.  CC  /\  1  e.  CC )  ->  ( ( N  + 
1 )  -  1 )  =  N )
20560, 61, 204sylancl 643 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( ( N  + 
1 )  -  1 )  =  N )
206205oveq2d 5890 . . . . . . . . . . . . 13  |-  ( ph  ->  ( 0 ... (
( N  +  1 )  -  1 ) )  =  ( 0 ... N ) )
20759nnnn0d 10034 . . . . . . . . . . . . . . . 16  |-  ( ph  ->  N  e.  NN0 )
208 peano2nn0 10020 . . . . . . . . . . . . . . . 16  |-  ( N  e.  NN0  ->  ( N  +  1 )  e. 
NN0 )
209207, 208syl 15 . . . . . . . . . . . . . . 15  |-  ( ph  ->  ( N  +  1 )  e.  NN0 )
210209nn0zd 10131 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( N  +  1 )  e.  ZZ )
211 fz01en 10834 . . . . . . . . . . . . . 14  |-  ( ( N  +  1 )  e.  ZZ  ->  (
0 ... ( ( N  +  1 )  - 
1 ) )  ~~  ( 1 ... ( N  +  1 ) ) )
212210, 211syl 15 . . . . . . . . . . . . 13  |-  ( ph  ->  ( 0 ... (
( N  +  1 )  -  1 ) )  ~~  ( 1 ... ( N  + 
1 ) ) )
213206, 212eqbrtrrd 4061 . . . . . . . . . . . 12  |-  ( ph  ->  ( 0 ... N
)  ~~  ( 1 ... ( N  + 
1 ) ) )
214 entr 6929 . . . . . . . . . . . 12  |-  ( ( A  ~~  ( 0 ... N )  /\  ( 0 ... N
)  ~~  ( 1 ... ( N  + 
1 ) ) )  ->  A  ~~  (
1 ... ( N  + 
1 ) ) )
215203, 213, 214syl2anc 642 . . . . . . . . . . 11  |-  ( ph  ->  A  ~~  ( 1 ... ( N  + 
1 ) ) )
216 ssfi 7099 . . . . . . . . . . . . 13  |-  ( ( ( 0 ... ( P  -  1 ) )  e.  Fin  /\  A  C_  ( 0 ... ( P  -  1 ) ) )  ->  A  e.  Fin )
2171, 15, 216syl2anc 642 . . . . . . . . . . . 12  |-  ( ph  ->  A  e.  Fin )
218 fzfid 11051 . . . . . . . . . . . 12  |-  ( ph  ->  ( 1 ... ( N  +  1 ) )  e.  Fin )
219 hashen 11362 . . . . . . . . . . . 12  |-  ( ( A  e.  Fin  /\  ( 1 ... ( N  +  1 ) )  e.  Fin )  ->  ( ( # `  A
)  =  ( # `  ( 1 ... ( N  +  1 ) ) )  <->  A  ~~  ( 1 ... ( N  +  1 ) ) ) )
220217, 218, 219syl2anc 642 . . . . . . . . . . 11  |-  ( ph  ->  ( ( # `  A
)  =  ( # `  ( 1 ... ( N  +  1 ) ) )  <->  A  ~~  ( 1 ... ( N  +  1 ) ) ) )
221215, 220mpbird 223 . . . . . . . . . 10  |-  ( ph  ->  ( # `  A
)  =  ( # `  ( 1 ... ( N  +  1 ) ) ) )
222 hashfz1 11361 . . . . . . . . . . 11  |-  ( ( N  +  1 )  e.  NN0  ->  ( # `  ( 1 ... ( N  +  1 ) ) )  =  ( N  +  1 ) )
223209, 222syl 15 . . . . . . . . . 10  |-  ( ph  ->  ( # `  (
1 ... ( N  + 
1 ) ) )  =  ( N  + 
1 ) )
224221, 223eqtrd 2328 . . . . . . . . 9  |-  ( ph  ->  ( # `  A
)  =  ( N  +  1 ) )
22527ex 423 . . . . . . . . . . . . . . 15  |-  ( ph  ->  ( v  e.  A  ->  ( ( P  - 
1 )  -  v
)  e.  ( 0 ... ( P  - 
1 ) ) ) )
22620adantr 451 . . . . . . . . . . . . . . . . 17  |-  ( (
ph  /\  ( v  e.  A  /\  k  e.  A ) )  -> 
( P  -  1 )  e.  CC )
227 fzssuz 10848 . . . . . . . . . . . . . . . . . . . . 21  |-  ( 0 ... ( P  - 
1 ) )  C_  ( ZZ>= `  0 )
228 uzssz 10263 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ZZ>= ` 
0 )  C_  ZZ
229 zsscn 10048 . . . . . . . . . . . . . . . . . . . . . 22  |-  ZZ  C_  CC
230228, 229sstri 3201 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ZZ>= ` 
0 )  C_  CC
231227, 230sstri 3201 . . . . . . . . . . . . . . . . . . . 20  |-  ( 0 ... ( P  - 
1 ) )  C_  CC
23215, 231syl6ss 3204 . . . . . . . . . . . . . . . . . . 19  |-  ( ph  ->  A  C_  CC )
233232sselda 3193 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  v  e.  A )  ->  v  e.  CC )
234233adantrr 697 . . . . . . . . . . . . . . . . 17  |-  ( (
ph  /\  ( v  e.  A  /\  k  e.  A ) )  -> 
v  e.  CC )
235232sselda 3193 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  k  e.  A )  ->  k  e.  CC )
236235adantrl 696 . . . . . . . . . . . . . . . . 17  |-  ( (
ph  /\  ( v  e.  A  /\  k  e.  A ) )  -> 
k  e.  CC )
237 subcan 9118 . . . . . . . . . . . . . . . . 17  |-  ( ( ( P  -  1 )  e.  CC  /\  v  e.  CC  /\  k  e.  CC )  ->  (
( ( P  - 
1 )  -  v
)  =  ( ( P  -  1 )  -  k )  <->  v  =  k ) )
238226, 234, 236, 237syl3anc 1182 . . . . . . . . . . . . . . . 16  |-  ( (
ph  /\  ( v  e.  A  /\  k  e.  A ) )  -> 
( ( ( P  -  1 )  -  v )  =  ( ( P  -  1 )  -  k )  <-> 
v  =  k ) )
239238ex 423 . . . . . . . . . . . . . . 15  |-  ( ph  ->  ( ( v  e.  A  /\  k  e.  A )  ->  (
( ( P  - 
1 )  -  v
)  =  ( ( P  -  1 )  -  k )  <->  v  =  k ) ) )
240225, 239dom2lem 6917 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( v  e.  A  |->  ( ( P  - 
1 )  -  v
) ) : A -1-1-> ( 0 ... ( P  -  1 ) ) )
241 f1eq1 5448 . . . . . . . . . . . . . . 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 ) ) ) )
24228, 241ax-mp 8 . . . . . . . . . . . . . 14  |-  ( F : A -1-1-> ( 0 ... ( P  - 
1 ) )  <->  ( v  e.  A  |->  ( ( P  -  1 )  -  v ) ) : A -1-1-> ( 0 ... ( P  - 
1 ) ) )
243240, 242sylibr 203 . . . . . . . . . . . . 13  |-  ( ph  ->  F : A -1-1-> ( 0 ... ( P  -  1 ) ) )
244 f1f1orn 5499 . . . . . . . . . . . . 13  |-  ( F : A -1-1-> ( 0 ... ( P  - 
1 ) )  ->  F : A -1-1-onto-> ran  F )
245243, 244syl 15 . . . . . . . . . . . 12  |-  ( ph  ->  F : A -1-1-onto-> ran  F
)
246 f1oeng 6896 . . . . . . . . . . . 12  |-  ( ( A  e.  Fin  /\  F : A -1-1-onto-> ran  F )  ->  A  ~~  ran  F )
247217, 245, 246syl2anc 642 . . . . . . . . . . 11  |-  ( ph  ->  A  ~~  ran  F
)
248 ssfi 7099 . . . . . . . . . . . . 13  |-  ( ( ( 0 ... ( P  -  1 ) )  e.  Fin  /\  ran  F  C_  ( 0 ... ( P  - 
1 ) ) )  ->  ran  F  e.  Fin )
2491, 31, 248syl2anc 642 . . . . . . . . . . . 12  |-  ( ph  ->  ran  F  e.  Fin )
250 hashen 11362 . . . . . . . . . . . 12  |-  ( ( A  e.  Fin  /\  ran  F  e.  Fin )  ->  ( ( # `  A
)  =  ( # `  ran  F )  <->  A  ~~  ran  F ) )
251217, 249, 250syl2anc 642 . . . . . . . . . . 11  |-  ( ph  ->  ( ( # `  A
)  =  ( # `  ran  F )  <->  A  ~~  ran  F ) )
252247, 251mpbird 223 . . . . . . . . . 10  |-  ( ph  ->  ( # `  A
)  =  ( # `  ran  F ) )
253252, 224eqtr3d 2330 . . . . . . . . 9  |-  ( ph  ->  ( # `  ran  F )  =  ( N  +  1 ) )
254224, 253oveq12d 5892 . . . . . . . 8  |-  ( ph  ->  ( ( # `  A
)  +  ( # `  ran  F ) )  =  ( ( N  +  1 )  +  ( N  +  1 ) ) )
25563, 72, 2543eqtr4d 2338 . . . . . . 7  |-  ( ph  ->  ( P  +  1 )  =  ( (
# `  A )  +  ( # `  ran  F ) ) )
256255adantr 451 . . . . . 6  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  ( P  +  1 )  =  ( ( # `  A
)  +  ( # `  ran  F ) ) )
257217adantr 451 . . . . . . 7  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  A  e. 
Fin )
258249adantr 451 . . . . . . 7  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  ran  F  e.  Fin )
259 simpr 447 . . . . . . 7  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  ( A  i^i  ran  F )  =  (/) )
260 hashun 11380 . . . . . . 7  |-  ( ( A  e.  Fin  /\  ran  F  e.  Fin  /\  ( A  i^i  ran  F
)  =  (/) )  -> 
( # `  ( A  u.  ran  F ) )  =  ( (
# `  A )  +  ( # `  ran  F ) ) )
261257, 258, 259, 260syl3anc 1182 . . . . . 6  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  ( # `  ( A  u.  ran  F ) )  =  ( ( # `  A
)  +  ( # `  ran  F ) ) )
262256, 261eqtr4d 2331 . . . . 5  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  ( P  +  1 )  =  ( # `  ( A  u.  ran  F ) ) )
26358, 262breqtrd 4063 . . . 4  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  P  < 
( # `  ( A  u.  ran  F ) ) )
264263ex 423 . . 3  |-  ( ph  ->  ( ( A  i^i  ran 
F )  =  (/)  ->  P  <  ( # `  ( A  u.  ran  F ) ) ) )
265264necon3bd 2496 . 2  |-  ( ph  ->  ( -.  P  < 
( # `  ( A  u.  ran  F ) )  ->  ( A  i^i  ran  F )  =/=  (/) ) )
26656, 265mpd 14 1  |-  ( ph  ->  ( A  i^i  ran  F )  =/=  (/) )
Colors of variables: wff set class
Syntax hints:   -. wn 3    -> wi 4    <-> wb 176    \/ wo 357    /\ wa 358    = wceq 1632    e. wcel 1696   {cab 2282    =/= wne 2459   E.wrex 2557    u. cun 3163    i^i cin 3164    C_ wss 3165   (/)c0 3468   class class class wbr 4039    e. cmpt 4093   ran crn 4706   -->wf 5267   -1-1->wf1 5268   -1-1-onto->wf1o 5270   ` cfv 5271  (class class class)co 5874    ~~ cen 6876    ~<_ cdom 6877   Fincfn 6879   CCcc 8751   RRcr 8752   0cc0 8753   1c1 8754    + caddc 8756    x. cmul 8758    < clt 8883    <_ cle 8884    - cmin 9053   NNcn 9762   2c2 9811   NN0cn0 9981   ZZcz 10040   ZZ>=cuz 10246   ...cfz 10798    mod cmo 10989   ^cexp 11120   #chash 11353   abscabs 11735    || cdivides 12547   Primecprime 12774
This theorem is referenced by:  4sqlem12  13019
This theorem was proved from axioms:  ax-1 5  ax-2 6  ax-3 7  ax-mp 8  ax-gen 1536  ax-5 1547  ax-17 1606  ax-9 1644  ax-8 1661  ax-13 1698  ax-14 1700  ax-6 1715  ax-7 1720  ax-11 1727  ax-12 1878  ax-ext 2277  ax-rep 4147  ax-sep 4157  ax-nul 4165  ax-pow 4204  ax-pr 4230  ax-un 4528  ax-cnex 8809  ax-resscn 8810  ax-1cn 8811  ax-icn 8812  ax-addcl 8813  ax-addrcl 8814  ax-mulcl 8815  ax-mulrcl 8816  ax-mulcom 8817  ax-addass 8818  ax-mulass 8819  ax-distr 8820  ax-i2m1 8821  ax-1ne0 8822  ax-1rid 8823  ax-rnegex 8824  ax-rrecex 8825  ax-cnre 8826  ax-pre-lttri 8827  ax-pre-lttrn 8828  ax-pre-ltadd 8829  ax-pre-mulgt0 8830  ax-pre-sup 8831
This theorem depends on definitions:  df-bi 177  df-or 359  df-an 360  df-3or 935  df-3an 936  df-tru 1310  df-ex 1532  df-nf 1535  df-sb 1639  df-eu 2160  df-mo 2161  df-clab 2283  df-cleq 2289  df-clel 2292  df-nfc 2421  df-ne 2461  df-nel 2462  df-ral 2561  df-rex 2562  df-reu 2563  df-rmo 2564  df-rab 2565  df-v 2803  df-sbc 3005  df-csb 3095  df-dif 3168  df-un 3170  df-in 3172  df-ss 3179  df-pss 3181  df-nul 3469  df-if 3579  df-pw 3640  df-sn 3659  df-pr 3660  df-tp 3661  df-op 3662  df-uni 3844  df-int 3879  df-iun 3923  df-br 4040  df-opab 4094  df-mpt 4095  df-tr 4130  df-eprel 4321  df-id 4325  df-po 4330  df-so 4331  df-fr 4368  df-we 4370  df-ord 4411  df-on 4412  df-lim 4413  df-suc 4414  df-om 4673  df-xp 4711  df-rel 4712  df-cnv 4713  df-co 4714  df-dm 4715  df-rn 4716  df-res 4717  df-ima 4718  df-iota 5235  df-fun 5273  df-fn 5274  df-f 5275  df-f1 5276  df-fo 5277  df-f1o 5278  df-fv 5279  df-ov 5877  df-oprab 5878  df-mpt2 5879  df-1st 6138  df-2nd 6139  df-riota 6320  df-recs 6404  df-rdg 6439  df-1o 6495  df-2o 6496  df-oadd 6499  df-er 6676  df-en 6880  df-dom 6881  df-sdom 6882  df-fin 6883  df-sup 7210  df-card 7588  df-cda 7810  df-pnf 8885  df-mnf 8886  df-xr 8887  df-ltxr 8888  df-le 8889  df-sub 9055  df-neg 9056  df-div 9440  df-nn 9763  df-2 9820  df-3 9821  df-n0 9982  df-z 10041  df-uz 10247  df-rp 10371  df-fz 10799  df-fl 10941  df-mod 10990  df-seq 11063  df-exp 11121  df-hash 11354  df-cj 11600  df-re 11601  df-im 11602  df-sqr 11736  df-abs 11737  df-dvds 12548  df-gcd 12702  df-prm 12775
  Copyright terms: Public domain W3C validator