Metamath Proof Explorer


Theorem 4sqlem12

Description: Lemma for 4sq . For any odd prime P , there is a k < P such that k P - 1 is a sum of two squares. (Contributed by Mario Carneiro, 15-Jul-2014)

Ref Expression
Hypotheses 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 4sqlem12
|- ( ph -> E. k e. ( 1 ... ( P - 1 ) ) E. u e. Z[i] ( ( ( abs ` u ) ^ 2 ) + 1 ) = ( k x. P ) )

Proof

Step Hyp Ref Expression
1 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 ) ) ) }
2 4sq.2
 |-  ( ph -> N e. NN )
3 4sq.3
 |-  ( ph -> P = ( ( 2 x. N ) + 1 ) )
4 4sq.4
 |-  ( ph -> P e. Prime )
5 4sqlem11.5
 |-  A = { u | E. m e. ( 0 ... N ) u = ( ( m ^ 2 ) mod P ) }
6 4sqlem11.6
 |-  F = ( v e. A |-> ( ( P - 1 ) - v ) )
7 1 2 3 4 5 6 4sqlem11
 |-  ( ph -> ( A i^i ran F ) =/= (/) )
8 n0
 |-  ( ( A i^i ran F ) =/= (/) <-> E. j j e. ( A i^i ran F ) )
9 7 8 sylib
 |-  ( ph -> E. j j e. ( A i^i ran F ) )
10 vex
 |-  j e. _V
11 eqeq1
 |-  ( u = j -> ( u = ( ( m ^ 2 ) mod P ) <-> j = ( ( m ^ 2 ) mod P ) ) )
12 11 rexbidv
 |-  ( u = j -> ( E. m e. ( 0 ... N ) u = ( ( m ^ 2 ) mod P ) <-> E. m e. ( 0 ... N ) j = ( ( m ^ 2 ) mod P ) ) )
13 10 12 5 elab2
 |-  ( j e. A <-> E. m e. ( 0 ... N ) j = ( ( m ^ 2 ) mod P ) )
14 abid
 |-  ( j e. { j | E. v e. A j = ( ( P - 1 ) - v ) } <-> E. v e. A j = ( ( P - 1 ) - v ) )
15 5 rexeqi
 |-  ( E. v e. A j = ( ( P - 1 ) - v ) <-> E. v e. { u | E. m e. ( 0 ... N ) u = ( ( m ^ 2 ) mod P ) } j = ( ( P - 1 ) - v ) )
16 oveq1
 |-  ( m = n -> ( m ^ 2 ) = ( n ^ 2 ) )
17 16 oveq1d
 |-  ( m = n -> ( ( m ^ 2 ) mod P ) = ( ( n ^ 2 ) mod P ) )
18 17 eqeq2d
 |-  ( m = n -> ( u = ( ( m ^ 2 ) mod P ) <-> u = ( ( n ^ 2 ) mod P ) ) )
19 18 cbvrexvw
 |-  ( E. m e. ( 0 ... N ) u = ( ( m ^ 2 ) mod P ) <-> E. n e. ( 0 ... N ) u = ( ( n ^ 2 ) mod P ) )
20 eqeq1
 |-  ( u = v -> ( u = ( ( n ^ 2 ) mod P ) <-> v = ( ( n ^ 2 ) mod P ) ) )
21 20 rexbidv
 |-  ( u = v -> ( E. n e. ( 0 ... N ) u = ( ( n ^ 2 ) mod P ) <-> E. n e. ( 0 ... N ) v = ( ( n ^ 2 ) mod P ) ) )
22 19 21 syl5bb
 |-  ( u = v -> ( E. m e. ( 0 ... N ) u = ( ( m ^ 2 ) mod P ) <-> E. n e. ( 0 ... N ) v = ( ( n ^ 2 ) mod P ) ) )
23 22 rexab
 |-  ( E. v e. { u | E. m e. ( 0 ... N ) u = ( ( m ^ 2 ) mod P ) } j = ( ( P - 1 ) - v ) <-> E. v ( E. n e. ( 0 ... N ) v = ( ( n ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - v ) ) )
24 14 15 23 3bitri
 |-  ( j e. { j | E. v e. A j = ( ( P - 1 ) - v ) } <-> E. v ( E. n e. ( 0 ... N ) v = ( ( n ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - v ) ) )
25 6 rnmpt
 |-  ran F = { j | E. v e. A j = ( ( P - 1 ) - v ) }
26 25 eleq2i
 |-  ( j e. ran F <-> j e. { j | E. v e. A j = ( ( P - 1 ) - v ) } )
27 rexcom4
 |-  ( E. n e. ( 0 ... N ) E. v ( v = ( ( n ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - v ) ) <-> E. v E. n e. ( 0 ... N ) ( v = ( ( n ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - v ) ) )
28 r19.41v
 |-  ( E. n e. ( 0 ... N ) ( v = ( ( n ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - v ) ) <-> ( E. n e. ( 0 ... N ) v = ( ( n ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - v ) ) )
29 28 exbii
 |-  ( E. v E. n e. ( 0 ... N ) ( v = ( ( n ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - v ) ) <-> E. v ( E. n e. ( 0 ... N ) v = ( ( n ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - v ) ) )
30 27 29 bitri
 |-  ( E. n e. ( 0 ... N ) E. v ( v = ( ( n ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - v ) ) <-> E. v ( E. n e. ( 0 ... N ) v = ( ( n ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - v ) ) )
31 24 26 30 3bitr4i
 |-  ( j e. ran F <-> E. n e. ( 0 ... N ) E. v ( v = ( ( n ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - v ) ) )
32 ovex
 |-  ( ( n ^ 2 ) mod P ) e. _V
33 oveq2
 |-  ( v = ( ( n ^ 2 ) mod P ) -> ( ( P - 1 ) - v ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) )
34 33 eqeq2d
 |-  ( v = ( ( n ^ 2 ) mod P ) -> ( j = ( ( P - 1 ) - v ) <-> j = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) )
35 32 34 ceqsexv
 |-  ( E. v ( v = ( ( n ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - v ) ) <-> j = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) )
36 35 rexbii
 |-  ( E. n e. ( 0 ... N ) E. v ( v = ( ( n ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - v ) ) <-> E. n e. ( 0 ... N ) j = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) )
37 31 36 bitri
 |-  ( j e. ran F <-> E. n e. ( 0 ... N ) j = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) )
38 13 37 anbi12i
 |-  ( ( j e. A /\ j e. ran F ) <-> ( E. m e. ( 0 ... N ) j = ( ( m ^ 2 ) mod P ) /\ E. n e. ( 0 ... N ) j = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) )
39 elin
 |-  ( j e. ( A i^i ran F ) <-> ( j e. A /\ j e. ran F ) )
40 reeanv
 |-  ( E. m e. ( 0 ... N ) E. n e. ( 0 ... N ) ( j = ( ( m ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) <-> ( E. m e. ( 0 ... N ) j = ( ( m ^ 2 ) mod P ) /\ E. n e. ( 0 ... N ) j = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) )
41 38 39 40 3bitr4i
 |-  ( j e. ( A i^i ran F ) <-> E. m e. ( 0 ... N ) E. n e. ( 0 ... N ) ( j = ( ( m ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) )
42 eqtr2
 |-  ( ( j = ( ( m ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) )
43 4 3ad2ant1
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> P e. Prime )
44 prmnn
 |-  ( P e. Prime -> P e. NN )
45 43 44 syl
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> P e. NN )
46 nnm1nn0
 |-  ( P e. NN -> ( P - 1 ) e. NN0 )
47 45 46 syl
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( P - 1 ) e. NN0 )
48 47 nn0red
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( P - 1 ) e. RR )
49 45 nnrpd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> P e. RR+ )
50 47 nn0ge0d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> 0 <_ ( P - 1 ) )
51 45 nnred
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> P e. RR )
52 51 ltm1d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( P - 1 ) < P )
53 modid
 |-  ( ( ( ( P - 1 ) e. RR /\ P e. RR+ ) /\ ( 0 <_ ( P - 1 ) /\ ( P - 1 ) < P ) ) -> ( ( P - 1 ) mod P ) = ( P - 1 ) )
54 48 49 50 52 53 syl22anc
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( P - 1 ) mod P ) = ( P - 1 ) )
55 54 oveq1d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( P - 1 ) mod P ) - ( ( n ^ 2 ) mod P ) ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) )
56 simp2r
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> n e. ( 0 ... N ) )
57 elfzelz
 |-  ( n e. ( 0 ... N ) -> n e. ZZ )
58 56 57 syl
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> n e. ZZ )
59 zsqcl2
 |-  ( n e. ZZ -> ( n ^ 2 ) e. NN0 )
60 58 59 syl
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( n ^ 2 ) e. NN0 )
61 60 nn0red
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( n ^ 2 ) e. RR )
62 modlt
 |-  ( ( ( n ^ 2 ) e. RR /\ P e. RR+ ) -> ( ( n ^ 2 ) mod P ) < P )
63 61 49 62 syl2anc
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( n ^ 2 ) mod P ) < P )
64 zsqcl
 |-  ( n e. ZZ -> ( n ^ 2 ) e. ZZ )
65 58 64 syl
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( n ^ 2 ) e. ZZ )
66 65 45 zmodcld
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( n ^ 2 ) mod P ) e. NN0 )
67 66 nn0zd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( n ^ 2 ) mod P ) e. ZZ )
68 prmz
 |-  ( P e. Prime -> P e. ZZ )
69 43 68 syl
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> P e. ZZ )
70 zltlem1
 |-  ( ( ( ( n ^ 2 ) mod P ) e. ZZ /\ P e. ZZ ) -> ( ( ( n ^ 2 ) mod P ) < P <-> ( ( n ^ 2 ) mod P ) <_ ( P - 1 ) ) )
71 67 69 70 syl2anc
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( n ^ 2 ) mod P ) < P <-> ( ( n ^ 2 ) mod P ) <_ ( P - 1 ) ) )
72 63 71 mpbid
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( n ^ 2 ) mod P ) <_ ( P - 1 ) )
73 72 54 breqtrrd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( n ^ 2 ) mod P ) <_ ( ( P - 1 ) mod P ) )
74 modsubdir
 |-  ( ( ( P - 1 ) e. RR /\ ( n ^ 2 ) e. RR /\ P e. RR+ ) -> ( ( ( n ^ 2 ) mod P ) <_ ( ( P - 1 ) mod P ) <-> ( ( ( P - 1 ) - ( n ^ 2 ) ) mod P ) = ( ( ( P - 1 ) mod P ) - ( ( n ^ 2 ) mod P ) ) ) )
75 48 61 49 74 syl3anc
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( n ^ 2 ) mod P ) <_ ( ( P - 1 ) mod P ) <-> ( ( ( P - 1 ) - ( n ^ 2 ) ) mod P ) = ( ( ( P - 1 ) mod P ) - ( ( n ^ 2 ) mod P ) ) ) )
76 73 75 mpbid
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( P - 1 ) - ( n ^ 2 ) ) mod P ) = ( ( ( P - 1 ) mod P ) - ( ( n ^ 2 ) mod P ) ) )
77 simp3
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) )
78 55 76 77 3eqtr4rd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( m ^ 2 ) mod P ) = ( ( ( P - 1 ) - ( n ^ 2 ) ) mod P ) )
79 simp2l
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> m e. ( 0 ... N ) )
80 elfzelz
 |-  ( m e. ( 0 ... N ) -> m e. ZZ )
81 79 80 syl
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> m e. ZZ )
82 zsqcl
 |-  ( m e. ZZ -> ( m ^ 2 ) e. ZZ )
83 81 82 syl
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( m ^ 2 ) e. ZZ )
84 47 nn0zd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( P - 1 ) e. ZZ )
85 84 65 zsubcld
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( P - 1 ) - ( n ^ 2 ) ) e. ZZ )
86 moddvds
 |-  ( ( P e. NN /\ ( m ^ 2 ) e. ZZ /\ ( ( P - 1 ) - ( n ^ 2 ) ) e. ZZ ) -> ( ( ( m ^ 2 ) mod P ) = ( ( ( P - 1 ) - ( n ^ 2 ) ) mod P ) <-> P || ( ( m ^ 2 ) - ( ( P - 1 ) - ( n ^ 2 ) ) ) ) )
87 45 83 85 86 syl3anc
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( m ^ 2 ) mod P ) = ( ( ( P - 1 ) - ( n ^ 2 ) ) mod P ) <-> P || ( ( m ^ 2 ) - ( ( P - 1 ) - ( n ^ 2 ) ) ) ) )
88 78 87 mpbid
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> P || ( ( m ^ 2 ) - ( ( P - 1 ) - ( n ^ 2 ) ) ) )
89 zsqcl2
 |-  ( m e. ZZ -> ( m ^ 2 ) e. NN0 )
90 81 89 syl
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( m ^ 2 ) e. NN0 )
91 90 nn0cnd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( m ^ 2 ) e. CC )
92 47 nn0cnd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( P - 1 ) e. CC )
93 60 nn0cnd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( n ^ 2 ) e. CC )
94 91 92 93 subsub3d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( m ^ 2 ) - ( ( P - 1 ) - ( n ^ 2 ) ) ) = ( ( ( m ^ 2 ) + ( n ^ 2 ) ) - ( P - 1 ) ) )
95 90 60 nn0addcld
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( m ^ 2 ) + ( n ^ 2 ) ) e. NN0 )
96 95 nn0cnd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( m ^ 2 ) + ( n ^ 2 ) ) e. CC )
97 45 nncnd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> P e. CC )
98 1cnd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> 1 e. CC )
99 96 97 98 subsub3d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( m ^ 2 ) + ( n ^ 2 ) ) - ( P - 1 ) ) = ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) - P ) )
100 94 99 eqtrd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( m ^ 2 ) - ( ( P - 1 ) - ( n ^ 2 ) ) ) = ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) - P ) )
101 88 100 breqtrd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> P || ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) - P ) )
102 nn0p1nn
 |-  ( ( ( m ^ 2 ) + ( n ^ 2 ) ) e. NN0 -> ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) e. NN )
103 95 102 syl
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) e. NN )
104 103 nnzd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) e. ZZ )
105 dvdssubr
 |-  ( ( P e. ZZ /\ ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) e. ZZ ) -> ( P || ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) <-> P || ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) - P ) ) )
106 69 104 105 syl2anc
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( P || ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) <-> P || ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) - P ) ) )
107 101 106 mpbird
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> P || ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) )
108 45 nnne0d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> P =/= 0 )
109 dvdsval2
 |-  ( ( P e. ZZ /\ P =/= 0 /\ ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) e. ZZ ) -> ( P || ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) <-> ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) e. ZZ ) )
110 69 108 104 109 syl3anc
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( P || ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) <-> ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) e. ZZ ) )
111 107 110 mpbid
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) e. ZZ )
112 nnrp
 |-  ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) e. NN -> ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) e. RR+ )
113 nnrp
 |-  ( P e. NN -> P e. RR+ )
114 rpdivcl
 |-  ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) e. RR+ /\ P e. RR+ ) -> ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) e. RR+ )
115 112 113 114 syl2an
 |-  ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) e. NN /\ P e. NN ) -> ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) e. RR+ )
116 103 45 115 syl2anc
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) e. RR+ )
117 116 rpgt0d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> 0 < ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) )
118 elnnz
 |-  ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) e. NN <-> ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) e. ZZ /\ 0 < ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) ) )
119 111 117 118 sylanbrc
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) e. NN )
120 119 nnge1d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> 1 <_ ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) )
121 95 nn0red
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( m ^ 2 ) + ( n ^ 2 ) ) e. RR )
122 2nn
 |-  2 e. NN
123 2 3ad2ant1
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> N e. NN )
124 nnmulcl
 |-  ( ( 2 e. NN /\ N e. NN ) -> ( 2 x. N ) e. NN )
125 122 123 124 sylancr
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( 2 x. N ) e. NN )
126 125 nnred
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( 2 x. N ) e. RR )
127 126 resqcld
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( 2 x. N ) ^ 2 ) e. RR )
128 nnmulcl
 |-  ( ( 2 e. NN /\ ( 2 x. N ) e. NN ) -> ( 2 x. ( 2 x. N ) ) e. NN )
129 122 125 128 sylancr
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( 2 x. ( 2 x. N ) ) e. NN )
130 129 nnred
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( 2 x. ( 2 x. N ) ) e. RR )
131 127 130 readdcld
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( 2 x. N ) ^ 2 ) + ( 2 x. ( 2 x. N ) ) ) e. RR )
132 1red
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> 1 e. RR )
133 123 nnsqcld
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( N ^ 2 ) e. NN )
134 nnmulcl
 |-  ( ( 2 e. NN /\ ( N ^ 2 ) e. NN ) -> ( 2 x. ( N ^ 2 ) ) e. NN )
135 122 133 134 sylancr
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( 2 x. ( N ^ 2 ) ) e. NN )
136 135 nnred
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( 2 x. ( N ^ 2 ) ) e. RR )
137 90 nn0red
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( m ^ 2 ) e. RR )
138 133 nnred
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( N ^ 2 ) e. RR )
139 81 zred
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> m e. RR )
140 elfzle1
 |-  ( m e. ( 0 ... N ) -> 0 <_ m )
141 79 140 syl
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> 0 <_ m )
142 123 nnred
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> N e. RR )
143 elfzle2
 |-  ( m e. ( 0 ... N ) -> m <_ N )
144 79 143 syl
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> m <_ N )
145 le2sq2
 |-  ( ( ( m e. RR /\ 0 <_ m ) /\ ( N e. RR /\ m <_ N ) ) -> ( m ^ 2 ) <_ ( N ^ 2 ) )
146 139 141 142 144 145 syl22anc
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( m ^ 2 ) <_ ( N ^ 2 ) )
147 58 zred
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> n e. RR )
148 elfzle1
 |-  ( n e. ( 0 ... N ) -> 0 <_ n )
149 56 148 syl
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> 0 <_ n )
150 elfzle2
 |-  ( n e. ( 0 ... N ) -> n <_ N )
151 56 150 syl
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> n <_ N )
152 le2sq2
 |-  ( ( ( n e. RR /\ 0 <_ n ) /\ ( N e. RR /\ n <_ N ) ) -> ( n ^ 2 ) <_ ( N ^ 2 ) )
153 147 149 142 151 152 syl22anc
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( n ^ 2 ) <_ ( N ^ 2 ) )
154 137 61 138 138 146 153 le2addd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( m ^ 2 ) + ( n ^ 2 ) ) <_ ( ( N ^ 2 ) + ( N ^ 2 ) ) )
155 133 nncnd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( N ^ 2 ) e. CC )
156 155 2timesd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( 2 x. ( N ^ 2 ) ) = ( ( N ^ 2 ) + ( N ^ 2 ) ) )
157 154 156 breqtrrd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( m ^ 2 ) + ( n ^ 2 ) ) <_ ( 2 x. ( N ^ 2 ) ) )
158 2lt4
 |-  2 < 4
159 2re
 |-  2 e. RR
160 159 a1i
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> 2 e. RR )
161 4re
 |-  4 e. RR
162 161 a1i
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> 4 e. RR )
163 133 nngt0d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> 0 < ( N ^ 2 ) )
164 ltmul1
 |-  ( ( 2 e. RR /\ 4 e. RR /\ ( ( N ^ 2 ) e. RR /\ 0 < ( N ^ 2 ) ) ) -> ( 2 < 4 <-> ( 2 x. ( N ^ 2 ) ) < ( 4 x. ( N ^ 2 ) ) ) )
165 160 162 138 163 164 syl112anc
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( 2 < 4 <-> ( 2 x. ( N ^ 2 ) ) < ( 4 x. ( N ^ 2 ) ) ) )
166 158 165 mpbii
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( 2 x. ( N ^ 2 ) ) < ( 4 x. ( N ^ 2 ) ) )
167 2cn
 |-  2 e. CC
168 123 nncnd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> N e. CC )
169 sqmul
 |-  ( ( 2 e. CC /\ N e. CC ) -> ( ( 2 x. N ) ^ 2 ) = ( ( 2 ^ 2 ) x. ( N ^ 2 ) ) )
170 167 168 169 sylancr
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( 2 x. N ) ^ 2 ) = ( ( 2 ^ 2 ) x. ( N ^ 2 ) ) )
171 sq2
 |-  ( 2 ^ 2 ) = 4
172 171 oveq1i
 |-  ( ( 2 ^ 2 ) x. ( N ^ 2 ) ) = ( 4 x. ( N ^ 2 ) )
173 170 172 eqtrdi
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( 2 x. N ) ^ 2 ) = ( 4 x. ( N ^ 2 ) ) )
174 166 173 breqtrrd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( 2 x. ( N ^ 2 ) ) < ( ( 2 x. N ) ^ 2 ) )
175 121 136 127 157 174 lelttrd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( m ^ 2 ) + ( n ^ 2 ) ) < ( ( 2 x. N ) ^ 2 ) )
176 129 nnrpd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( 2 x. ( 2 x. N ) ) e. RR+ )
177 127 176 ltaddrpd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( 2 x. N ) ^ 2 ) < ( ( ( 2 x. N ) ^ 2 ) + ( 2 x. ( 2 x. N ) ) ) )
178 121 127 131 175 177 lttrd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( m ^ 2 ) + ( n ^ 2 ) ) < ( ( ( 2 x. N ) ^ 2 ) + ( 2 x. ( 2 x. N ) ) ) )
179 121 131 132 178 ltadd1dd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) < ( ( ( ( 2 x. N ) ^ 2 ) + ( 2 x. ( 2 x. N ) ) ) + 1 ) )
180 3 3ad2ant1
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> P = ( ( 2 x. N ) + 1 ) )
181 180 oveq1d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( P ^ 2 ) = ( ( ( 2 x. N ) + 1 ) ^ 2 ) )
182 97 sqvald
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( P ^ 2 ) = ( P x. P ) )
183 125 nncnd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( 2 x. N ) e. CC )
184 binom21
 |-  ( ( 2 x. N ) e. CC -> ( ( ( 2 x. N ) + 1 ) ^ 2 ) = ( ( ( ( 2 x. N ) ^ 2 ) + ( 2 x. ( 2 x. N ) ) ) + 1 ) )
185 183 184 syl
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( 2 x. N ) + 1 ) ^ 2 ) = ( ( ( ( 2 x. N ) ^ 2 ) + ( 2 x. ( 2 x. N ) ) ) + 1 ) )
186 181 182 185 3eqtr3d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( P x. P ) = ( ( ( ( 2 x. N ) ^ 2 ) + ( 2 x. ( 2 x. N ) ) ) + 1 ) )
187 179 186 breqtrrd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) < ( P x. P ) )
188 103 nnred
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) e. RR )
189 45 nngt0d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> 0 < P )
190 ltdivmul
 |-  ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) e. RR /\ P e. RR /\ ( P e. RR /\ 0 < P ) ) -> ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) < P <-> ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) < ( P x. P ) ) )
191 188 51 51 189 190 syl112anc
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) < P <-> ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) < ( P x. P ) ) )
192 187 191 mpbird
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) < P )
193 1z
 |-  1 e. ZZ
194 elfzm11
 |-  ( ( 1 e. ZZ /\ P e. ZZ ) -> ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) e. ( 1 ... ( P - 1 ) ) <-> ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) e. ZZ /\ 1 <_ ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) /\ ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) < P ) ) )
195 193 69 194 sylancr
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) e. ( 1 ... ( P - 1 ) ) <-> ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) e. ZZ /\ 1 <_ ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) /\ ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) < P ) ) )
196 111 120 192 195 mpbir3and
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) e. ( 1 ... ( P - 1 ) ) )
197 gzreim
 |-  ( ( m e. ZZ /\ n e. ZZ ) -> ( m + ( _i x. n ) ) e. Z[i] )
198 81 58 197 syl2anc
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( m + ( _i x. n ) ) e. Z[i] )
199 gzcn
 |-  ( ( m + ( _i x. n ) ) e. Z[i] -> ( m + ( _i x. n ) ) e. CC )
200 198 199 syl
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( m + ( _i x. n ) ) e. CC )
201 200 absvalsq2d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( abs ` ( m + ( _i x. n ) ) ) ^ 2 ) = ( ( ( Re ` ( m + ( _i x. n ) ) ) ^ 2 ) + ( ( Im ` ( m + ( _i x. n ) ) ) ^ 2 ) ) )
202 139 147 crred
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( Re ` ( m + ( _i x. n ) ) ) = m )
203 202 oveq1d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( Re ` ( m + ( _i x. n ) ) ) ^ 2 ) = ( m ^ 2 ) )
204 139 147 crimd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( Im ` ( m + ( _i x. n ) ) ) = n )
205 204 oveq1d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( Im ` ( m + ( _i x. n ) ) ) ^ 2 ) = ( n ^ 2 ) )
206 203 205 oveq12d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( Re ` ( m + ( _i x. n ) ) ) ^ 2 ) + ( ( Im ` ( m + ( _i x. n ) ) ) ^ 2 ) ) = ( ( m ^ 2 ) + ( n ^ 2 ) ) )
207 201 206 eqtrd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( abs ` ( m + ( _i x. n ) ) ) ^ 2 ) = ( ( m ^ 2 ) + ( n ^ 2 ) ) )
208 207 oveq1d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( abs ` ( m + ( _i x. n ) ) ) ^ 2 ) + 1 ) = ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) )
209 103 nncnd
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) e. CC )
210 209 97 108 divcan1d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) x. P ) = ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) )
211 208 210 eqtr4d
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> ( ( ( abs ` ( m + ( _i x. n ) ) ) ^ 2 ) + 1 ) = ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) x. P ) )
212 oveq1
 |-  ( k = ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) -> ( k x. P ) = ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) x. P ) )
213 212 eqeq2d
 |-  ( k = ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) -> ( ( ( ( abs ` u ) ^ 2 ) + 1 ) = ( k x. P ) <-> ( ( ( abs ` u ) ^ 2 ) + 1 ) = ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) x. P ) ) )
214 fveq2
 |-  ( u = ( m + ( _i x. n ) ) -> ( abs ` u ) = ( abs ` ( m + ( _i x. n ) ) ) )
215 214 oveq1d
 |-  ( u = ( m + ( _i x. n ) ) -> ( ( abs ` u ) ^ 2 ) = ( ( abs ` ( m + ( _i x. n ) ) ) ^ 2 ) )
216 215 oveq1d
 |-  ( u = ( m + ( _i x. n ) ) -> ( ( ( abs ` u ) ^ 2 ) + 1 ) = ( ( ( abs ` ( m + ( _i x. n ) ) ) ^ 2 ) + 1 ) )
217 216 eqeq1d
 |-  ( u = ( m + ( _i x. n ) ) -> ( ( ( ( abs ` u ) ^ 2 ) + 1 ) = ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) x. P ) <-> ( ( ( abs ` ( m + ( _i x. n ) ) ) ^ 2 ) + 1 ) = ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) x. P ) ) )
218 213 217 rspc2ev
 |-  ( ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) e. ( 1 ... ( P - 1 ) ) /\ ( m + ( _i x. n ) ) e. Z[i] /\ ( ( ( abs ` ( m + ( _i x. n ) ) ) ^ 2 ) + 1 ) = ( ( ( ( ( m ^ 2 ) + ( n ^ 2 ) ) + 1 ) / P ) x. P ) ) -> E. k e. ( 1 ... ( P - 1 ) ) E. u e. Z[i] ( ( ( abs ` u ) ^ 2 ) + 1 ) = ( k x. P ) )
219 196 198 211 218 syl3anc
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) /\ ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> E. k e. ( 1 ... ( P - 1 ) ) E. u e. Z[i] ( ( ( abs ` u ) ^ 2 ) + 1 ) = ( k x. P ) )
220 219 3expia
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) ) -> ( ( ( m ^ 2 ) mod P ) = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) -> E. k e. ( 1 ... ( P - 1 ) ) E. u e. Z[i] ( ( ( abs ` u ) ^ 2 ) + 1 ) = ( k x. P ) ) )
221 42 220 syl5
 |-  ( ( ph /\ ( m e. ( 0 ... N ) /\ n e. ( 0 ... N ) ) ) -> ( ( j = ( ( m ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> E. k e. ( 1 ... ( P - 1 ) ) E. u e. Z[i] ( ( ( abs ` u ) ^ 2 ) + 1 ) = ( k x. P ) ) )
222 221 rexlimdvva
 |-  ( ph -> ( E. m e. ( 0 ... N ) E. n e. ( 0 ... N ) ( j = ( ( m ^ 2 ) mod P ) /\ j = ( ( P - 1 ) - ( ( n ^ 2 ) mod P ) ) ) -> E. k e. ( 1 ... ( P - 1 ) ) E. u e. Z[i] ( ( ( abs ` u ) ^ 2 ) + 1 ) = ( k x. P ) ) )
223 41 222 syl5bi
 |-  ( ph -> ( j e. ( A i^i ran F ) -> E. k e. ( 1 ... ( P - 1 ) ) E. u e. Z[i] ( ( ( abs ` u ) ^ 2 ) + 1 ) = ( k x. P ) ) )
224 223 exlimdv
 |-  ( ph -> ( E. j j e. ( A i^i ran F ) -> E. k e. ( 1 ... ( P - 1 ) ) E. u e. Z[i] ( ( ( abs ` u ) ^ 2 ) + 1 ) = ( k x. P ) ) )
225 9 224 mpd
 |-  ( ph -> E. k e. ( 1 ... ( P - 1 ) ) E. u e. Z[i] ( ( ( abs ` u ) ^ 2 ) + 1 ) = ( k x. P ) )