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

Theorem 4sqlem11 13093
Description: Lemma for 4sq 13102. 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 11124 . . . . . 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 10887 . . . . . . . . . . . . 13  |-  ( m  e.  ( 0 ... N )  ->  m  e.  ZZ )
4 zsqcl 11264 . . . . . . . . . . . . 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 12852 . . . . . . . . . . . . 13  |-  ( P  e.  Prime  ->  P  e.  NN )
86, 7syl 15 . . . . . . . . . . . 12  |-  ( ph  ->  P  e.  NN )
9 zmodfz 11080 . . . . . . . . . . . 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 2427 . . . . . . . . . . 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 2743 . . . . . . . . 9  |-  ( ph  ->  ( E. m  e.  ( 0 ... N
) u  =  ( ( m ^ 2 )  mod  P )  ->  u  e.  ( 0 ... ( P  -  1 ) ) ) )
1413abssdv 3323 . . . . . . . 8  |-  ( ph  ->  { u  |  E. m  e.  ( 0 ... N ) u  =  ( ( m ^ 2 )  mod 
P ) }  C_  ( 0 ... ( P  -  1 ) ) )
152, 14syl5eqss 3298 . . . . . . 7  |-  ( ph  ->  A  C_  ( 0 ... ( P  - 
1 ) ) )
16 prmz 12853 . . . . . . . . . . . . . . . 16  |-  ( P  e.  Prime  ->  P  e.  ZZ )
176, 16syl 15 . . . . . . . . . . . . . . 15  |-  ( ph  ->  P  e.  ZZ )
18 peano2zm 10151 . . . . . . . . . . . . . . 15  |-  ( P  e.  ZZ  ->  ( P  -  1 )  e.  ZZ )
1917, 18syl 15 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( P  -  1 )  e.  ZZ )
2019zcnd 10207 . . . . . . . . . . . . 13  |-  ( ph  ->  ( P  -  1 )  e.  CC )
2120addid2d 9100 . . . . . . . . . . . 12  |-  ( ph  ->  ( 0  +  ( P  -  1 ) )  =  ( P  -  1 ) )
2221oveq1d 5957 . . . . . . . . . . 11  |-  ( ph  ->  ( ( 0  +  ( P  -  1 ) )  -  v
)  =  ( ( P  -  1 )  -  v ) )
2322adantr 451 . . . . . . . . . 10  |-  ( (
ph  /\  v  e.  A )  ->  (
( 0  +  ( P  -  1 ) )  -  v )  =  ( ( P  -  1 )  -  v ) )
2415sselda 3256 . . . . . . . . . . 11  |-  ( (
ph  /\  v  e.  A )  ->  v  e.  ( 0 ... ( P  -  1 ) ) )
25 fzrev3i 10939 . . . . . . . . . . 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 2433 . . . . . . . . 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 5764 . . . . . . . 8  |-  ( ph  ->  F : A --> ( 0 ... ( P  - 
1 ) ) )
30 frn 5475 . . . . . . . 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 3427 . . . . . 6  |-  ( ph  ->  ( A  u.  ran  F )  C_  ( 0 ... ( P  - 
1 ) ) )
33 ssdomg 6992 . . . . . 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 7168 . . . . . . 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 11451 . . . . . 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 10907 . . . . . . 7  |-  ( P  e.  ZZ  ->  (
0 ... ( P  - 
1 ) )  ~~  ( 1 ... P
) )
4117, 40syl 15 . . . . . 6  |-  ( ph  ->  ( 0 ... ( P  -  1 ) )  ~~  ( 1 ... P ) )
42 fzfid 11124 . . . . . . 7  |-  ( ph  ->  ( 1 ... P
)  e.  Fin )
43 hashen 11436 . . . . . . 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 10107 . . . . . 6  |-  ( ph  ->  P  e.  NN0 )
47 hashfz1 11435 . . . . . 6  |-  ( P  e.  NN0  ->  ( # `  ( 1 ... P
) )  =  P )
4846, 47syl 15 . . . . 5  |-  ( ph  ->  ( # `  (
1 ... P ) )  =  P )
4945, 48eqtrd 2390 . . . 4  |-  ( ph  ->  ( # `  (
0 ... ( P  - 
1 ) ) )  =  P )
5039, 49breqtrd 4126 . . 3  |-  ( ph  ->  ( # `  ( A  u.  ran  F ) )  <_  P )
51 hashcl 11440 . . . . . 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 10108 . . . 4  |-  ( ph  ->  ( # `  ( A  u.  ran  F ) )  e.  RR )
5417zred 10206 . . . 4  |-  ( ph  ->  P  e.  RR )
5553, 54lenltd 9052 . . 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 9774 . . . . 5  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  P  < 
( P  +  1 ) )
59 4sq.2 . . . . . . . . . 10  |-  ( ph  ->  N  e.  NN )
6059nncnd 9849 . . . . . . . . 9  |-  ( ph  ->  N  e.  CC )
61 ax-1cn 8882 . . . . . . . . . 10  |-  1  e.  CC
6261a1i 10 . . . . . . . . 9  |-  ( ph  ->  1  e.  CC )
6360, 60, 62, 62add4d 9122 . . . . . . . 8  |-  ( ph  ->  ( ( N  +  N )  +  ( 1  +  1 ) )  =  ( ( N  +  1 )  +  ( N  + 
1 ) ) )
64 4sq.3 . . . . . . . . . 10  |-  ( ph  ->  P  =  ( ( 2  x.  N )  +  1 ) )
6564oveq1d 5957 . . . . . . . . 9  |-  ( ph  ->  ( P  +  1 )  =  ( ( ( 2  x.  N
)  +  1 )  +  1 ) )
66 2cn 9903 . . . . . . . . . . 11  |-  2  e.  CC
67 mulcl 8908 . . . . . . . . . . 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 8944 . . . . . . . . 9  |-  ( ph  ->  ( ( ( 2  x.  N )  +  1 )  +  1 )  =  ( ( 2  x.  N )  +  ( 1  +  1 ) ) )
70602timesd 10043 . . . . . . . . . 10  |-  ( ph  ->  ( 2  x.  N
)  =  ( N  +  N ) )
7170oveq1d 5957 . . . . . . . . 9  |-  ( ph  ->  ( ( 2  x.  N )  +  ( 1  +  1 ) )  =  ( ( N  +  N )  +  ( 1  +  1 ) ) )
7265, 69, 713eqtrd 2394 . . . . . . . 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 10887 . . . . . . . . . . . . . . . . . . . . . . . 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 11264 . . . . . . . . . . . . . . . . . . . . . . 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 12629 . . . . . . . . . . . . . . . . . . . . . 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 10207 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  m  e.  CC )
8478zcnd 10207 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  u  e.  CC )
85 subsq 11300 . . . . . . . . . . . . . . . . . . . . . . 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 4114 . . . . . . . . . . . . . . . . . . . . 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 10210 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  e.  ZZ )
9075, 78zsubcld 10211 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  -  u
)  e.  ZZ )
91 euclemma 12878 . . . . . . . . . . . . . . . . . . . . . 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 10206 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  e.  RR )
95 2re 9902 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  2  e.  RR
9659nnred 9848 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ph  ->  N  e.  RR )
97 remulcl 8909 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 10206 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  P  e.  RR )
10275zred 10206 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  m  e.  RR )
10378zred 10206 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 10889 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( m  e.  ( 0 ... N )  ->  m  <_  N )
106105ad2antrl 708 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  ->  m  <_  N )
107 elfzle2 10889 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 9477 . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 10043 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( 2  x.  N
)  =  ( N  +  N ) )
112109, 111breqtrrd 4128 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  <_  ( 2  x.  N ) )
11398ltp1d 9774 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ph  ->  ( 2  x.  N
)  <  ( (
2  x.  N )  +  1 ) )
114113, 64breqtrrd 4128 . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 9061 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  +  u
)  <  P )
11794, 101ltnled 9053 . . . . . . . . . . . . . . . . . . . . . . . . . 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 8924 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  1  e.  RR
123122a1i 10 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  1  e.  RR )
124 nn0abscl 11887 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 10108 . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 10206 . . . . . . . . . . . . . . . . . . . . . . . . . . 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 10204 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( abs `  ( m  -  u ) )  e.  ZZ )
13190zcnd 10207 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 9160 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 2556 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 12020 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  ( abs `  ( m  -  u ) )  e.  RR+ )
138137rpgt0d 10482 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  0  <  ( abs `  (
m  -  u ) ) )
139 elnnz 10123 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 9875 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  1  <_  ( abs `  (
m  -  u ) ) )
142 0cn 8918 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  0  e.  CC
143142a1i 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
0  e.  CC )
14483, 84, 143abs3difd 12032 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  u ) )  <_  ( ( abs `  ( m  - 
0 ) )  +  ( abs `  (
0  -  u ) ) ) )
14583subid1d 9233 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( m  -  0 )  =  m )
146145fveq2d 5609 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  0 ) )  =  ( abs `  m ) )
147 elfzle1 10888 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( m  e.  ( 0 ... N )  ->  0  <_  m )
148147ad2antrl 708 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
0  <_  m )
149102, 148absidd 11995 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  m
)  =  m )
150146, 149eqtrd 2390 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
m  -  0 ) )  =  m )
151 abssub 11900 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 9233 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( u  -  0 )  =  u )
154153fveq2d 5609 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
u  -  0 ) )  =  ( abs `  u ) )
155 elfzle1 10888 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( u  e.  ( 0 ... N )  ->  0  <_  u )
156155ad2antll 709 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
0  <_  u )
157103, 156absidd 11995 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  u
)  =  u )
158152, 154, 1573eqtrd 2394 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( abs `  (
0  -  u ) )  =  u )
159150, 158oveq12d 5960 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( ( abs `  (
m  -  0 ) )  +  ( abs `  ( 0  -  u
) ) )  =  ( m  +  u
) )
160144, 159breqtrd 4126 . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 9060 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( ( ( ph  /\  (
m  e.  ( 0 ... N )  /\  u  e.  ( 0 ... N ) ) )  /\  m  =/=  u )  ->  1  <_  ( m  +  u
) )
163 elnnz1 10138 . . . . . . . . . . . . . . . . . . . . . . . . . 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 12665 . . . . . . . . . . . . . . . . . . . . . . . . 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 2582 . . . . . . . . . . . . . . . . . . . . 21  |-  ( (
ph  /\  ( m  e.  ( 0 ... N
)  /\  u  e.  ( 0 ... N
) ) )  -> 
( P  ||  (
m  +  u )  ->  m  =  u ) )
170 dvdsabsb 12639 . . . . . . . . . . . . . . . . . . . . . . 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 9001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 12665 . . . . . . . . . . . . . . . . . . . . . . . . . 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 2582 . . . . . . . . . . . . . . . . . . . . . 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 5949 . . . . . . . . . . . . . . . . . . . 20  |-  ( m  =  u  ->  (
m ^ 2 )  =  ( u ^
2 ) )
187186oveq1d 5957 . . . . . . . . . . . . . . . . . . 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 6986 . . . . . . . . . . . . . . . 16  |-  ( ph  ->  ( m  e.  ( 0 ... N ) 
|->  ( ( m ^
2 )  mod  P
) ) : ( 0 ... N )
-1-1-> ( 0 ... ( P  -  1 ) ) )
191 f1f1orn 5563 . . . . . . . . . . . . . . . 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 2358 . . . . . . . . . . . . . . . . . 18  |-  ( m  e.  ( 0 ... N )  |->  ( ( m ^ 2 )  mod  P ) )  =  ( m  e.  ( 0 ... N
)  |->  ( ( m ^ 2 )  mod 
P ) )
194193rnmpt 5004 . . . . . . . . . . . . . . . . 17  |-  ran  (
m  e.  ( 0 ... N )  |->  ( ( m ^ 2 )  mod  P ) )  =  { u  |  E. m  e.  ( 0 ... N ) u  =  ( ( m ^ 2 )  mod  P ) }
1952, 194eqtr4i 2381 . . . . . . . . . . . . . . . 16  |-  A  =  ran  ( m  e.  ( 0 ... N
)  |->  ( ( m ^ 2 )  mod 
P ) )
196 f1oeq3 5545 . . . . . . . . . . . . . . . 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 5967 . . . . . . . . . . . . . . 15  |-  ( 0 ... N )  e. 
_V
200199f1oen 6967 . . . . . . . . . . . . . 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 6995 . . . . . . . . . . . . 13  |-  ( ( 0 ... N ) 
~~  A  ->  A  ~~  ( 0 ... N
) )
203201, 202syl 15 . . . . . . . . . . . 12  |-  ( ph  ->  A  ~~  ( 0 ... N ) )
204 pncan 9144 . . . . . . . . . . . . . . 15  |-  ( ( N  e.  CC  /\  1  e.  CC )  ->  ( ( N  + 
1 )  -  1 )  =  N )
20560, 61, 204sylancl 643 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( ( N  + 
1 )  -  1 )  =  N )
206205oveq2d 5958 . . . . . . . . . . . . 13  |-  ( ph  ->  ( 0 ... (
( N  +  1 )  -  1 ) )  =  ( 0 ... N ) )
20759nnnn0d 10107 . . . . . . . . . . . . . . . 16  |-  ( ph  ->  N  e.  NN0 )
208 peano2nn0 10093 . . . . . . . . . . . . . . . 16  |-  ( N  e.  NN0  ->  ( N  +  1 )  e. 
NN0 )
209207, 208syl 15 . . . . . . . . . . . . . . 15  |-  ( ph  ->  ( N  +  1 )  e.  NN0 )
210209nn0zd 10204 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( N  +  1 )  e.  ZZ )
211 fz01en 10907 . . . . . . . . . . . . . 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 4124 . . . . . . . . . . . 12  |-  ( ph  ->  ( 0 ... N
)  ~~  ( 1 ... ( N  + 
1 ) ) )
214 entr 6998 . . . . . . . . . . . 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 7168 . . . . . . . . . . . . 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 11124 . . . . . . . . . . . 12  |-  ( ph  ->  ( 1 ... ( N  +  1 ) )  e.  Fin )
219 hashen 11436 . . . . . . . . . . . 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 11435 . . . . . . . . . . 11  |-  ( ( N  +  1 )  e.  NN0  ->  ( # `  ( 1 ... ( N  +  1 ) ) )  =  ( N  +  1 ) )
223209, 222syl 15 . . . . . . . . . 10  |-  ( ph  ->  ( # `  (
1 ... ( N  + 
1 ) ) )  =  ( N  + 
1 ) )
224221, 223eqtrd 2390 . . . . . . . . 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 10921 . . . . . . . . . . . . . . . . . . . . 21  |-  ( 0 ... ( P  - 
1 ) )  C_  ( ZZ>= `  0 )
228 uzssz 10336 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ZZ>= ` 
0 )  C_  ZZ
229 zsscn 10121 . . . . . . . . . . . . . . . . . . . . . 22  |-  ZZ  C_  CC
230228, 229sstri 3264 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ZZ>= ` 
0 )  C_  CC
231227, 230sstri 3264 . . . . . . . . . . . . . . . . . . . 20  |-  ( 0 ... ( P  - 
1 ) )  C_  CC
23215, 231syl6ss 3267 . . . . . . . . . . . . . . . . . . 19  |-  ( ph  ->  A  C_  CC )
233232sselda 3256 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  v  e.  A )  ->  v  e.  CC )
234233adantrr 697 . . . . . . . . . . . . . . . . 17  |-  ( (
ph  /\  ( v  e.  A  /\  k  e.  A ) )  -> 
v  e.  CC )
235232sselda 3256 . . . . . . . . . . . . . . . . . 18  |-  ( (
ph  /\  k  e.  A )  ->  k  e.  CC )
236235adantrl 696 . . . . . . . . . . . . . . . . 17  |-  ( (
ph  /\  ( v  e.  A  /\  k  e.  A ) )  -> 
k  e.  CC )
237 subcan 9189 . . . . . . . . . . . . . . . . 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 6986 . . . . . . . . . . . . . 14  |-  ( ph  ->  ( v  e.  A  |->  ( ( P  - 
1 )  -  v
) ) : A -1-1-> ( 0 ... ( P  -  1 ) ) )
241 f1eq1 5512 . . . . . . . . . . . . . . 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 5563 . . . . . . . . . . . . 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 6965 . . . . . . . . . . . 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 7168 . . . . . . . . . . . . 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 11436 . . . . . . . . . . . 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 2392 . . . . . . . . 9  |-  ( ph  ->  ( # `  ran  F )  =  ( N  +  1 ) )
254224, 253oveq12d 5960 . . . . . . . 8  |-  ( ph  ->  ( ( # `  A
)  +  ( # `  ran  F ) )  =  ( ( N  +  1 )  +  ( N  +  1 ) ) )
25563, 72, 2543eqtr4d 2400 . . . . . . 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 11454 . . . . . . 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 2393 . . . . 5  |-  ( (
ph  /\  ( A  i^i  ran  F )  =  (/) )  ->  ( P  +  1 )  =  ( # `  ( A  u.  ran  F ) ) )
26358, 262breqtrd 4126 . . . 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 2558 . 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 1642    e. wcel 1710   {cab 2344    =/= wne 2521   E.wrex 2620    u. cun 3226    i^i cin 3227    C_ wss 3228   (/)c0 3531   class class class wbr 4102    e. cmpt 4156   ran crn 4769   -->wf 5330   -1-1->wf1 5331   -1-1-onto->wf1o 5333   ` cfv 5334  (class class class)co 5942    ~~ cen 6945    ~<_ cdom 6946   Fincfn 6948   CCcc 8822   RRcr 8823   0cc0 8824   1c1 8825    + caddc 8827    x. cmul 8829    < clt 8954    <_ cle 8955    - cmin 9124   NNcn 9833   2c2 9882   NN0cn0 10054   ZZcz 10113   ZZ>=cuz 10319   ...cfz 10871    mod cmo 11062   ^cexp 11194   #chash 11427   abscabs 11809    || cdivides 12622   Primecprime 12849
This theorem is referenced by:  4sqlem12  13094
This theorem was proved from axioms:  ax-1 5  ax-2 6  ax-3 7  ax-mp 8  ax-gen 1546  ax-5 1557  ax-17 1616  ax-9 1654  ax-8 1675  ax-13 1712  ax-14 1714  ax-6 1729  ax-7 1734  ax-11 1746  ax-12 1930  ax-ext 2339  ax-rep 4210  ax-sep 4220  ax-nul 4228  ax-pow 4267  ax-pr 4293  ax-un 4591  ax-cnex 8880  ax-resscn 8881  ax-1cn 8882  ax-icn 8883  ax-addcl 8884  ax-addrcl 8885  ax-mulcl 8886  ax-mulrcl 8887  ax-mulcom 8888  ax-addass 8889  ax-mulass 8890  ax-distr 8891  ax-i2m1 8892  ax-1ne0 8893  ax-1rid 8894  ax-rnegex 8895  ax-rrecex 8896  ax-cnre 8897  ax-pre-lttri 8898  ax-pre-lttrn 8899  ax-pre-ltadd 8900  ax-pre-mulgt0 8901  ax-pre-sup 8902
This theorem depends on definitions:  df-bi 177  df-or 359  df-an 360  df-3or 935  df-3an 936  df-tru 1319  df-ex 1542  df-nf 1545  df-sb 1649  df-eu 2213  df-mo 2214  df-clab 2345  df-cleq 2351  df-clel 2354  df-nfc 2483  df-ne 2523  df-nel 2524  df-ral 2624  df-rex 2625  df-reu 2626  df-rmo 2627  df-rab 2628  df-v 2866  df-sbc 3068  df-csb 3158  df-dif 3231  df-un 3233  df-in 3235  df-ss 3242  df-pss 3244  df-nul 3532  df-if 3642  df-pw 3703  df-sn 3722  df-pr 3723  df-tp 3724  df-op 3725  df-uni 3907  df-int 3942  df-iun 3986  df-br 4103  df-opab 4157  df-mpt 4158  df-tr 4193  df-eprel 4384  df-id 4388  df-po 4393  df-so 4394  df-fr 4431  df-we 4433  df-ord 4474  df-on 4475  df-lim 4476  df-suc 4477  df-om 4736  df-xp 4774  df-rel 4775  df-cnv 4776  df-co 4777  df-dm 4778  df-rn 4779  df-res 4780  df-ima 4781  df-iota 5298  df-fun 5336  df-fn 5337  df-f 5338  df-f1 5339  df-fo 5340  df-f1o 5341  df-fv 5342  df-ov 5945  df-oprab 5946  df-mpt2 5947  df-1st 6206  df-2nd 6207  df-riota 6388  df-recs 6472  df-rdg 6507  df-1o 6563  df-2o 6564  df-oadd 6567  df-er 6744  df-en 6949  df-dom 6950  df-sdom 6951  df-fin 6952  df-sup 7281  df-card 7659  df-cda 7881  df-pnf 8956  df-mnf 8957  df-xr 8958  df-ltxr 8959  df-le 8960  df-sub 9126  df-neg 9127  df-div 9511  df-nn 9834  df-2 9891  df-3 9892  df-n0 10055  df-z 10114  df-uz 10320  df-rp 10444  df-fz 10872  df-fl 11014  df-mod 11063  df-seq 11136  df-exp 11195  df-hash 11428  df-cj 11674  df-re 11675  df-im 11676  df-sqr 11810  df-abs 11811  df-dvds 12623  df-gcd 12777  df-prm 12850
  Copyright terms: Public domain W3C validator