| Step | Hyp | Ref | Expression | 
						
							| 1 |  | 2sq |  |-  ( ( P e. Prime /\ ( P mod 4 ) = 1 ) -> E. a e. ZZ E. b e. ZZ P = ( ( a ^ 2 ) + ( b ^ 2 ) ) ) | 
						
							| 2 |  | elnn0z |  |-  ( a e. NN0 <-> ( a e. ZZ /\ 0 <_ a ) ) | 
						
							| 3 | 2 | biimpri |  |-  ( ( a e. ZZ /\ 0 <_ a ) -> a e. NN0 ) | 
						
							| 4 |  | elznn0 |  |-  ( a e. ZZ <-> ( a e. RR /\ ( a e. NN0 \/ -u a e. NN0 ) ) ) | 
						
							| 5 |  | nn0ge0 |  |-  ( a e. NN0 -> 0 <_ a ) | 
						
							| 6 | 5 | pm2.24d |  |-  ( a e. NN0 -> ( -. 0 <_ a -> -u a e. NN0 ) ) | 
						
							| 7 | 6 | a1i |  |-  ( a e. RR -> ( a e. NN0 -> ( -. 0 <_ a -> -u a e. NN0 ) ) ) | 
						
							| 8 |  | ax-1 |  |-  ( -u a e. NN0 -> ( -. 0 <_ a -> -u a e. NN0 ) ) | 
						
							| 9 | 8 | a1i |  |-  ( a e. RR -> ( -u a e. NN0 -> ( -. 0 <_ a -> -u a e. NN0 ) ) ) | 
						
							| 10 | 7 9 | jaod |  |-  ( a e. RR -> ( ( a e. NN0 \/ -u a e. NN0 ) -> ( -. 0 <_ a -> -u a e. NN0 ) ) ) | 
						
							| 11 | 10 | imp |  |-  ( ( a e. RR /\ ( a e. NN0 \/ -u a e. NN0 ) ) -> ( -. 0 <_ a -> -u a e. NN0 ) ) | 
						
							| 12 | 4 11 | sylbi |  |-  ( a e. ZZ -> ( -. 0 <_ a -> -u a e. NN0 ) ) | 
						
							| 13 | 12 | imp |  |-  ( ( a e. ZZ /\ -. 0 <_ a ) -> -u a e. NN0 ) | 
						
							| 14 | 3 13 | ifclda |  |-  ( a e. ZZ -> if ( 0 <_ a , a , -u a ) e. NN0 ) | 
						
							| 15 | 14 | adantr |  |-  ( ( a e. ZZ /\ b e. ZZ ) -> if ( 0 <_ a , a , -u a ) e. NN0 ) | 
						
							| 16 | 15 | adantr |  |-  ( ( ( a e. ZZ /\ b e. ZZ ) /\ P = ( ( a ^ 2 ) + ( b ^ 2 ) ) ) -> if ( 0 <_ a , a , -u a ) e. NN0 ) | 
						
							| 17 |  | elnn0z |  |-  ( b e. NN0 <-> ( b e. ZZ /\ 0 <_ b ) ) | 
						
							| 18 | 17 | biimpri |  |-  ( ( b e. ZZ /\ 0 <_ b ) -> b e. NN0 ) | 
						
							| 19 |  | elznn0 |  |-  ( b e. ZZ <-> ( b e. RR /\ ( b e. NN0 \/ -u b e. NN0 ) ) ) | 
						
							| 20 |  | nn0ge0 |  |-  ( b e. NN0 -> 0 <_ b ) | 
						
							| 21 | 20 | pm2.24d |  |-  ( b e. NN0 -> ( -. 0 <_ b -> -u b e. NN0 ) ) | 
						
							| 22 | 21 | a1i |  |-  ( b e. RR -> ( b e. NN0 -> ( -. 0 <_ b -> -u b e. NN0 ) ) ) | 
						
							| 23 |  | ax-1 |  |-  ( -u b e. NN0 -> ( -. 0 <_ b -> -u b e. NN0 ) ) | 
						
							| 24 | 23 | a1i |  |-  ( b e. RR -> ( -u b e. NN0 -> ( -. 0 <_ b -> -u b e. NN0 ) ) ) | 
						
							| 25 | 22 24 | jaod |  |-  ( b e. RR -> ( ( b e. NN0 \/ -u b e. NN0 ) -> ( -. 0 <_ b -> -u b e. NN0 ) ) ) | 
						
							| 26 | 25 | imp |  |-  ( ( b e. RR /\ ( b e. NN0 \/ -u b e. NN0 ) ) -> ( -. 0 <_ b -> -u b e. NN0 ) ) | 
						
							| 27 | 19 26 | sylbi |  |-  ( b e. ZZ -> ( -. 0 <_ b -> -u b e. NN0 ) ) | 
						
							| 28 | 27 | imp |  |-  ( ( b e. ZZ /\ -. 0 <_ b ) -> -u b e. NN0 ) | 
						
							| 29 | 18 28 | ifclda |  |-  ( b e. ZZ -> if ( 0 <_ b , b , -u b ) e. NN0 ) | 
						
							| 30 | 29 | adantl |  |-  ( ( a e. ZZ /\ b e. ZZ ) -> if ( 0 <_ b , b , -u b ) e. NN0 ) | 
						
							| 31 | 30 | adantr |  |-  ( ( ( a e. ZZ /\ b e. ZZ ) /\ P = ( ( a ^ 2 ) + ( b ^ 2 ) ) ) -> if ( 0 <_ b , b , -u b ) e. NN0 ) | 
						
							| 32 |  | elznn0nn |  |-  ( a e. ZZ <-> ( a e. NN0 \/ ( a e. RR /\ -u a e. NN ) ) ) | 
						
							| 33 | 5 | iftrued |  |-  ( a e. NN0 -> if ( 0 <_ a , a , -u a ) = a ) | 
						
							| 34 | 33 | eqcomd |  |-  ( a e. NN0 -> a = if ( 0 <_ a , a , -u a ) ) | 
						
							| 35 | 34 | oveq1d |  |-  ( a e. NN0 -> ( a ^ 2 ) = ( if ( 0 <_ a , a , -u a ) ^ 2 ) ) | 
						
							| 36 |  | elnnz |  |-  ( -u a e. NN <-> ( -u a e. ZZ /\ 0 < -u a ) ) | 
						
							| 37 |  | lt0neg1 |  |-  ( a e. RR -> ( a < 0 <-> 0 < -u a ) ) | 
						
							| 38 |  | id |  |-  ( a e. RR -> a e. RR ) | 
						
							| 39 |  | 0red |  |-  ( a e. RR -> 0 e. RR ) | 
						
							| 40 | 38 39 | ltnled |  |-  ( a e. RR -> ( a < 0 <-> -. 0 <_ a ) ) | 
						
							| 41 | 40 | biimpd |  |-  ( a e. RR -> ( a < 0 -> -. 0 <_ a ) ) | 
						
							| 42 | 37 41 | sylbird |  |-  ( a e. RR -> ( 0 < -u a -> -. 0 <_ a ) ) | 
						
							| 43 | 42 | com12 |  |-  ( 0 < -u a -> ( a e. RR -> -. 0 <_ a ) ) | 
						
							| 44 | 36 43 | simplbiim |  |-  ( -u a e. NN -> ( a e. RR -> -. 0 <_ a ) ) | 
						
							| 45 | 44 | impcom |  |-  ( ( a e. RR /\ -u a e. NN ) -> -. 0 <_ a ) | 
						
							| 46 | 45 | iffalsed |  |-  ( ( a e. RR /\ -u a e. NN ) -> if ( 0 <_ a , a , -u a ) = -u a ) | 
						
							| 47 | 46 | oveq1d |  |-  ( ( a e. RR /\ -u a e. NN ) -> ( if ( 0 <_ a , a , -u a ) ^ 2 ) = ( -u a ^ 2 ) ) | 
						
							| 48 |  | recn |  |-  ( a e. RR -> a e. CC ) | 
						
							| 49 |  | sqneg |  |-  ( a e. CC -> ( -u a ^ 2 ) = ( a ^ 2 ) ) | 
						
							| 50 | 48 49 | syl |  |-  ( a e. RR -> ( -u a ^ 2 ) = ( a ^ 2 ) ) | 
						
							| 51 | 50 | adantr |  |-  ( ( a e. RR /\ -u a e. NN ) -> ( -u a ^ 2 ) = ( a ^ 2 ) ) | 
						
							| 52 | 47 51 | eqtr2d |  |-  ( ( a e. RR /\ -u a e. NN ) -> ( a ^ 2 ) = ( if ( 0 <_ a , a , -u a ) ^ 2 ) ) | 
						
							| 53 | 35 52 | jaoi |  |-  ( ( a e. NN0 \/ ( a e. RR /\ -u a e. NN ) ) -> ( a ^ 2 ) = ( if ( 0 <_ a , a , -u a ) ^ 2 ) ) | 
						
							| 54 | 32 53 | sylbi |  |-  ( a e. ZZ -> ( a ^ 2 ) = ( if ( 0 <_ a , a , -u a ) ^ 2 ) ) | 
						
							| 55 |  | elznn0nn |  |-  ( b e. ZZ <-> ( b e. NN0 \/ ( b e. RR /\ -u b e. NN ) ) ) | 
						
							| 56 | 20 | iftrued |  |-  ( b e. NN0 -> if ( 0 <_ b , b , -u b ) = b ) | 
						
							| 57 | 56 | eqcomd |  |-  ( b e. NN0 -> b = if ( 0 <_ b , b , -u b ) ) | 
						
							| 58 | 57 | oveq1d |  |-  ( b e. NN0 -> ( b ^ 2 ) = ( if ( 0 <_ b , b , -u b ) ^ 2 ) ) | 
						
							| 59 |  | elnnz |  |-  ( -u b e. NN <-> ( -u b e. ZZ /\ 0 < -u b ) ) | 
						
							| 60 |  | lt0neg1 |  |-  ( b e. RR -> ( b < 0 <-> 0 < -u b ) ) | 
						
							| 61 |  | id |  |-  ( b e. RR -> b e. RR ) | 
						
							| 62 |  | 0red |  |-  ( b e. RR -> 0 e. RR ) | 
						
							| 63 | 61 62 | ltnled |  |-  ( b e. RR -> ( b < 0 <-> -. 0 <_ b ) ) | 
						
							| 64 | 63 | biimpd |  |-  ( b e. RR -> ( b < 0 -> -. 0 <_ b ) ) | 
						
							| 65 | 60 64 | sylbird |  |-  ( b e. RR -> ( 0 < -u b -> -. 0 <_ b ) ) | 
						
							| 66 | 65 | com12 |  |-  ( 0 < -u b -> ( b e. RR -> -. 0 <_ b ) ) | 
						
							| 67 | 59 66 | simplbiim |  |-  ( -u b e. NN -> ( b e. RR -> -. 0 <_ b ) ) | 
						
							| 68 | 67 | impcom |  |-  ( ( b e. RR /\ -u b e. NN ) -> -. 0 <_ b ) | 
						
							| 69 | 68 | iffalsed |  |-  ( ( b e. RR /\ -u b e. NN ) -> if ( 0 <_ b , b , -u b ) = -u b ) | 
						
							| 70 | 69 | oveq1d |  |-  ( ( b e. RR /\ -u b e. NN ) -> ( if ( 0 <_ b , b , -u b ) ^ 2 ) = ( -u b ^ 2 ) ) | 
						
							| 71 |  | recn |  |-  ( b e. RR -> b e. CC ) | 
						
							| 72 |  | sqneg |  |-  ( b e. CC -> ( -u b ^ 2 ) = ( b ^ 2 ) ) | 
						
							| 73 | 71 72 | syl |  |-  ( b e. RR -> ( -u b ^ 2 ) = ( b ^ 2 ) ) | 
						
							| 74 | 73 | adantr |  |-  ( ( b e. RR /\ -u b e. NN ) -> ( -u b ^ 2 ) = ( b ^ 2 ) ) | 
						
							| 75 | 70 74 | eqtr2d |  |-  ( ( b e. RR /\ -u b e. NN ) -> ( b ^ 2 ) = ( if ( 0 <_ b , b , -u b ) ^ 2 ) ) | 
						
							| 76 | 58 75 | jaoi |  |-  ( ( b e. NN0 \/ ( b e. RR /\ -u b e. NN ) ) -> ( b ^ 2 ) = ( if ( 0 <_ b , b , -u b ) ^ 2 ) ) | 
						
							| 77 | 55 76 | sylbi |  |-  ( b e. ZZ -> ( b ^ 2 ) = ( if ( 0 <_ b , b , -u b ) ^ 2 ) ) | 
						
							| 78 | 54 77 | oveqan12d |  |-  ( ( a e. ZZ /\ b e. ZZ ) -> ( ( a ^ 2 ) + ( b ^ 2 ) ) = ( ( if ( 0 <_ a , a , -u a ) ^ 2 ) + ( if ( 0 <_ b , b , -u b ) ^ 2 ) ) ) | 
						
							| 79 | 78 | eqeq2d |  |-  ( ( a e. ZZ /\ b e. ZZ ) -> ( P = ( ( a ^ 2 ) + ( b ^ 2 ) ) <-> P = ( ( if ( 0 <_ a , a , -u a ) ^ 2 ) + ( if ( 0 <_ b , b , -u b ) ^ 2 ) ) ) ) | 
						
							| 80 | 79 | biimpd |  |-  ( ( a e. ZZ /\ b e. ZZ ) -> ( P = ( ( a ^ 2 ) + ( b ^ 2 ) ) -> P = ( ( if ( 0 <_ a , a , -u a ) ^ 2 ) + ( if ( 0 <_ b , b , -u b ) ^ 2 ) ) ) ) | 
						
							| 81 | 80 | imp |  |-  ( ( ( a e. ZZ /\ b e. ZZ ) /\ P = ( ( a ^ 2 ) + ( b ^ 2 ) ) ) -> P = ( ( if ( 0 <_ a , a , -u a ) ^ 2 ) + ( if ( 0 <_ b , b , -u b ) ^ 2 ) ) ) | 
						
							| 82 |  | oveq1 |  |-  ( x = if ( 0 <_ a , a , -u a ) -> ( x ^ 2 ) = ( if ( 0 <_ a , a , -u a ) ^ 2 ) ) | 
						
							| 83 | 82 | oveq1d |  |-  ( x = if ( 0 <_ a , a , -u a ) -> ( ( x ^ 2 ) + ( y ^ 2 ) ) = ( ( if ( 0 <_ a , a , -u a ) ^ 2 ) + ( y ^ 2 ) ) ) | 
						
							| 84 | 83 | eqeq2d |  |-  ( x = if ( 0 <_ a , a , -u a ) -> ( P = ( ( x ^ 2 ) + ( y ^ 2 ) ) <-> P = ( ( if ( 0 <_ a , a , -u a ) ^ 2 ) + ( y ^ 2 ) ) ) ) | 
						
							| 85 |  | oveq1 |  |-  ( y = if ( 0 <_ b , b , -u b ) -> ( y ^ 2 ) = ( if ( 0 <_ b , b , -u b ) ^ 2 ) ) | 
						
							| 86 | 85 | oveq2d |  |-  ( y = if ( 0 <_ b , b , -u b ) -> ( ( if ( 0 <_ a , a , -u a ) ^ 2 ) + ( y ^ 2 ) ) = ( ( if ( 0 <_ a , a , -u a ) ^ 2 ) + ( if ( 0 <_ b , b , -u b ) ^ 2 ) ) ) | 
						
							| 87 | 86 | eqeq2d |  |-  ( y = if ( 0 <_ b , b , -u b ) -> ( P = ( ( if ( 0 <_ a , a , -u a ) ^ 2 ) + ( y ^ 2 ) ) <-> P = ( ( if ( 0 <_ a , a , -u a ) ^ 2 ) + ( if ( 0 <_ b , b , -u b ) ^ 2 ) ) ) ) | 
						
							| 88 | 84 87 | rspc2ev |  |-  ( ( if ( 0 <_ a , a , -u a ) e. NN0 /\ if ( 0 <_ b , b , -u b ) e. NN0 /\ P = ( ( if ( 0 <_ a , a , -u a ) ^ 2 ) + ( if ( 0 <_ b , b , -u b ) ^ 2 ) ) ) -> E. x e. NN0 E. y e. NN0 P = ( ( x ^ 2 ) + ( y ^ 2 ) ) ) | 
						
							| 89 | 16 31 81 88 | syl3anc |  |-  ( ( ( a e. ZZ /\ b e. ZZ ) /\ P = ( ( a ^ 2 ) + ( b ^ 2 ) ) ) -> E. x e. NN0 E. y e. NN0 P = ( ( x ^ 2 ) + ( y ^ 2 ) ) ) | 
						
							| 90 | 89 | ex |  |-  ( ( a e. ZZ /\ b e. ZZ ) -> ( P = ( ( a ^ 2 ) + ( b ^ 2 ) ) -> E. x e. NN0 E. y e. NN0 P = ( ( x ^ 2 ) + ( y ^ 2 ) ) ) ) | 
						
							| 91 | 90 | rexlimivv |  |-  ( E. a e. ZZ E. b e. ZZ P = ( ( a ^ 2 ) + ( b ^ 2 ) ) -> E. x e. NN0 E. y e. NN0 P = ( ( x ^ 2 ) + ( y ^ 2 ) ) ) | 
						
							| 92 | 1 91 | syl |  |-  ( ( P e. Prime /\ ( P mod 4 ) = 1 ) -> E. x e. NN0 E. y e. NN0 P = ( ( x ^ 2 ) + ( y ^ 2 ) ) ) |