| Step | Hyp | Ref | Expression | 
						
							| 1 |  | 2sqmod.1 |  | 
						
							| 2 |  | 2sqmod.2 |  | 
						
							| 3 |  | 2sqmod.3 |  | 
						
							| 4 |  | 2sqmod.4 |  | 
						
							| 5 |  | 2sqmod.5 |  | 
						
							| 6 |  | 2sqmod.6 |  | 
						
							| 7 |  | 2sqmod.7 |  | 
						
							| 8 |  | 2sqmod.8 |  | 
						
							| 9 |  | 2sqmod.9 |  | 
						
							| 10 | 6 | adantr |  | 
						
							| 11 | 4 | nn0red |  | 
						
							| 12 | 11 | adantr |  | 
						
							| 13 | 3 | nn0red |  | 
						
							| 14 | 13 | adantr |  | 
						
							| 15 | 4 | nn0ge0d |  | 
						
							| 16 | 15 | adantr |  | 
						
							| 17 | 3 | nn0ge0d |  | 
						
							| 18 | 17 | adantr |  | 
						
							| 19 | 4 | nn0cnd |  | 
						
							| 20 | 19 | sqcld |  | 
						
							| 21 | 20 | adantr |  | 
						
							| 22 | 3 | nn0cnd |  | 
						
							| 23 | 22 | sqcld |  | 
						
							| 24 | 23 | adantr |  | 
						
							| 25 | 2 | nn0cnd |  | 
						
							| 26 | 25 | sqcld |  | 
						
							| 27 | 5 | nn0cnd |  | 
						
							| 28 | 27 | sqcld |  | 
						
							| 29 | 8 9 | eqtr4d |  | 
						
							| 30 | 26 23 20 28 29 | subaddeqd |  | 
						
							| 31 | 30 | adantr |  | 
						
							| 32 | 2 | nn0zd |  | 
						
							| 33 | 4 | nn0zd |  | 
						
							| 34 |  | dvdsmul1 |  | 
						
							| 35 | 32 33 34 | syl2anc |  | 
						
							| 36 | 35 | adantr |  | 
						
							| 37 | 25 19 | mulcld |  | 
						
							| 38 | 37 | adantr |  | 
						
							| 39 | 22 27 | mulcld |  | 
						
							| 40 | 39 | adantr |  | 
						
							| 41 | 2 | nn0red |  | 
						
							| 42 | 41 11 | remulcld |  | 
						
							| 43 | 5 | nn0red |  | 
						
							| 44 | 13 43 | remulcld |  | 
						
							| 45 | 42 44 | resubcld |  | 
						
							| 46 | 45 | recnd |  | 
						
							| 47 | 46 | adantr |  | 
						
							| 48 | 45 | sqge0d |  | 
						
							| 49 | 3 | nn0zd |  | 
						
							| 50 | 1 32 49 8 | 2sqn0 |  | 
						
							| 51 |  | elnnne0 |  | 
						
							| 52 | 2 50 51 | sylanbrc |  | 
						
							| 53 | 5 | nn0zd |  | 
						
							| 54 | 28 20 | addcomd |  | 
						
							| 55 | 54 9 | eqtrd |  | 
						
							| 56 | 1 53 33 55 | 2sqn0 |  | 
						
							| 57 |  | elnnne0 |  | 
						
							| 58 | 5 56 57 | sylanbrc |  | 
						
							| 59 | 52 58 | nnmulcld |  | 
						
							| 60 | 1 33 53 9 | 2sqn0 |  | 
						
							| 61 |  | elnnne0 |  | 
						
							| 62 | 4 60 61 | sylanbrc |  | 
						
							| 63 | 23 26 | addcomd |  | 
						
							| 64 | 63 8 | eqtrd |  | 
						
							| 65 | 1 49 32 64 | 2sqn0 |  | 
						
							| 66 |  | elnnne0 |  | 
						
							| 67 | 3 65 66 | sylanbrc |  | 
						
							| 68 | 62 67 | nnmulcld |  | 
						
							| 69 | 59 68 | nnaddcld |  | 
						
							| 70 | 69 | nnsqcld |  | 
						
							| 71 | 70 | nnred |  | 
						
							| 72 | 45 | resqcld |  | 
						
							| 73 | 71 72 | addge02d |  | 
						
							| 74 | 48 73 | mpbid |  | 
						
							| 75 | 8 9 | oveq12d |  | 
						
							| 76 |  | bhmafibid1 |  | 
						
							| 77 | 41 13 11 43 76 | syl22anc |  | 
						
							| 78 | 75 77 | eqtr3d |  | 
						
							| 79 |  | prmz |  | 
						
							| 80 | 1 79 | syl |  | 
						
							| 81 | 80 | zcnd |  | 
						
							| 82 | 81 | sqvald |  | 
						
							| 83 | 19 22 | mulcomd |  | 
						
							| 84 | 83 | oveq2d |  | 
						
							| 85 | 84 | oveq1d |  | 
						
							| 86 | 85 | oveq2d |  | 
						
							| 87 | 78 82 86 | 3eqtr4d |  | 
						
							| 88 | 74 87 | breqtrrd |  | 
						
							| 89 | 88 | adantr |  | 
						
							| 90 | 32 53 | zmulcld |  | 
						
							| 91 | 33 49 | zmulcld |  | 
						
							| 92 | 90 91 | zaddcld |  | 
						
							| 93 |  | dvdssqim |  | 
						
							| 94 | 80 92 93 | syl2anc |  | 
						
							| 95 |  | zsqcl |  | 
						
							| 96 | 80 95 | syl |  | 
						
							| 97 |  | dvdsle |  | 
						
							| 98 | 96 70 97 | syl2anc |  | 
						
							| 99 | 94 98 | syld |  | 
						
							| 100 | 99 | imp |  | 
						
							| 101 | 96 | zred |  | 
						
							| 102 | 71 101 | letri3d |  | 
						
							| 103 | 102 | adantr |  | 
						
							| 104 | 89 100 103 | mpbir2and |  | 
						
							| 105 | 87 | adantr |  | 
						
							| 106 | 104 105 | eqtr2d |  | 
						
							| 107 | 71 | recnd |  | 
						
							| 108 | 72 | recnd |  | 
						
							| 109 | 107 107 108 | subadd2d |  | 
						
							| 110 | 109 | adantr |  | 
						
							| 111 | 106 110 | mpbird |  | 
						
							| 112 | 107 | subidd |  | 
						
							| 113 | 112 | adantr |  | 
						
							| 114 | 111 113 | eqtr3d |  | 
						
							| 115 | 47 114 | sqeq0d |  | 
						
							| 116 | 38 40 115 | subeq0d |  | 
						
							| 117 | 36 116 | breqtrd |  | 
						
							| 118 | 1 32 49 8 | 2sqcoprm |  | 
						
							| 119 | 118 | adantr |  | 
						
							| 120 |  | coprmdvds |  | 
						
							| 121 | 32 49 53 120 | syl3anc |  | 
						
							| 122 | 121 | adantr |  | 
						
							| 123 | 117 119 122 | mp2and |  | 
						
							| 124 |  | dvdsle |  | 
						
							| 125 | 32 58 124 | syl2anc |  | 
						
							| 126 | 125 | adantr |  | 
						
							| 127 | 123 126 | mpd |  | 
						
							| 128 | 52 | nnrpd |  | 
						
							| 129 | 128 | rprege0d |  | 
						
							| 130 | 5 | nn0ge0d |  | 
						
							| 131 |  | le2sq |  | 
						
							| 132 | 129 43 130 131 | syl12anc |  | 
						
							| 133 | 132 | adantr |  | 
						
							| 134 | 127 133 | mpbid |  | 
						
							| 135 | 52 | nnsqcld |  | 
						
							| 136 | 135 | nnred |  | 
						
							| 137 |  | zsqcl |  | 
						
							| 138 | 53 137 | syl |  | 
						
							| 139 | 138 | zred |  | 
						
							| 140 | 136 139 | suble0d |  | 
						
							| 141 | 140 | adantr |  | 
						
							| 142 | 134 141 | mpbird |  | 
						
							| 143 | 31 142 | eqbrtrrd |  | 
						
							| 144 |  | dvdsmul1 |  | 
						
							| 145 | 49 53 144 | syl2anc |  | 
						
							| 146 | 145 | adantr |  | 
						
							| 147 | 146 116 | breqtrrd |  | 
						
							| 148 | 32 49 | gcdcomd |  | 
						
							| 149 | 148 118 | eqtr3d |  | 
						
							| 150 | 149 | adantr |  | 
						
							| 151 |  | coprmdvds |  | 
						
							| 152 | 49 32 33 151 | syl3anc |  | 
						
							| 153 | 152 | adantr |  | 
						
							| 154 | 147 150 153 | mp2and |  | 
						
							| 155 |  | dvdsle |  | 
						
							| 156 | 49 62 155 | syl2anc |  | 
						
							| 157 | 156 | adantr |  | 
						
							| 158 | 154 157 | mpd |  | 
						
							| 159 | 13 11 17 15 | le2sqd |  | 
						
							| 160 | 159 | adantr |  | 
						
							| 161 | 158 160 | mpbid |  | 
						
							| 162 | 11 | resqcld |  | 
						
							| 163 |  | zsqcl |  | 
						
							| 164 | 49 163 | syl |  | 
						
							| 165 | 164 | zred |  | 
						
							| 166 | 162 165 | subge0d |  | 
						
							| 167 | 166 | adantr |  | 
						
							| 168 | 161 167 | mpbird |  | 
						
							| 169 | 136 139 | resubcld |  | 
						
							| 170 | 30 169 | eqeltrrd |  | 
						
							| 171 |  | 0red |  | 
						
							| 172 | 170 171 | letri3d |  | 
						
							| 173 | 172 | adantr |  | 
						
							| 174 | 143 168 173 | mpbir2and |  | 
						
							| 175 | 21 24 174 | subeq0d |  | 
						
							| 176 | 12 14 16 18 175 | sq11d |  | 
						
							| 177 | 10 176 | breqtrrd |  | 
						
							| 178 | 7 | adantr |  | 
						
							| 179 | 41 | adantr |  | 
						
							| 180 | 43 | adantr |  | 
						
							| 181 | 2 | nn0ge0d |  | 
						
							| 182 | 181 | adantr |  | 
						
							| 183 | 130 | adantr |  | 
						
							| 184 | 26 | adantr |  | 
						
							| 185 | 28 | adantr |  | 
						
							| 186 | 168 31 | breqtrrd |  | 
						
							| 187 | 169 171 | letri3d |  | 
						
							| 188 | 187 | adantr |  | 
						
							| 189 | 142 186 188 | mpbir2and |  | 
						
							| 190 | 184 185 189 | subeq0d |  | 
						
							| 191 | 179 180 182 183 190 | sq11d |  | 
						
							| 192 | 178 191 | breqtrrd |  | 
						
							| 193 | 41 11 | letri3d |  | 
						
							| 194 | 193 | adantr |  | 
						
							| 195 | 177 192 194 | mpbir2and |  | 
						
							| 196 | 25 | adantr |  | 
						
							| 197 | 19 | adantr |  | 
						
							| 198 | 22 | adantr |  | 
						
							| 199 | 65 | adantr |  | 
						
							| 200 | 43 | adantr |  | 
						
							| 201 | 13 | adantr |  | 
						
							| 202 | 130 | adantr |  | 
						
							| 203 | 17 | adantr |  | 
						
							| 204 | 28 | adantr |  | 
						
							| 205 | 23 | adantr |  | 
						
							| 206 |  | prmnn |  | 
						
							| 207 | 1 206 | syl |  | 
						
							| 208 | 207 | nnne0d |  | 
						
							| 209 | 208 | neneqd |  | 
						
							| 210 | 209 | adantr |  | 
						
							| 211 | 81 28 23 | subdid |  | 
						
							| 212 | 81 28 | mulcld |  | 
						
							| 213 | 26 28 | mulcld |  | 
						
							| 214 | 81 23 | mulcld |  | 
						
							| 215 | 20 23 | mulcld |  | 
						
							| 216 | 23 28 | mulcomd |  | 
						
							| 217 | 8 | oveq1d |  | 
						
							| 218 | 26 23 | pncan2d |  | 
						
							| 219 | 217 218 | eqtr3d |  | 
						
							| 220 | 219 | oveq1d |  | 
						
							| 221 | 9 | oveq1d |  | 
						
							| 222 | 20 28 | pncan2d |  | 
						
							| 223 | 221 222 | eqtr3d |  | 
						
							| 224 | 223 | oveq1d |  | 
						
							| 225 | 216 220 224 | 3eqtr4d |  | 
						
							| 226 | 81 26 28 | subdird |  | 
						
							| 227 | 81 20 23 | subdird |  | 
						
							| 228 | 225 226 227 | 3eqtr3d |  | 
						
							| 229 | 212 213 214 215 228 | subeqxfrd |  | 
						
							| 230 | 211 229 | eqtrd |  | 
						
							| 231 | 25 27 | sqmuld |  | 
						
							| 232 | 19 22 | sqmuld |  | 
						
							| 233 | 231 232 | oveq12d |  | 
						
							| 234 | 25 27 | mulcld |  | 
						
							| 235 | 19 22 | mulcld |  | 
						
							| 236 |  | subsq |  | 
						
							| 237 | 234 235 236 | syl2anc |  | 
						
							| 238 | 230 233 237 | 3eqtr2d |  | 
						
							| 239 | 238 | adantr |  | 
						
							| 240 | 234 | adantr |  | 
						
							| 241 |  | simpll |  | 
						
							| 242 |  | simpr |  | 
						
							| 243 | 242 | neqned |  | 
						
							| 244 | 90 91 | zsubcld |  | 
						
							| 245 |  | dvdssqim |  | 
						
							| 246 | 80 244 245 | syl2anc |  | 
						
							| 247 | 246 | imp |  | 
						
							| 248 | 247 | adantr |  | 
						
							| 249 | 96 | adantr |  | 
						
							| 250 | 244 | adantr |  | 
						
							| 251 | 234 | adantr |  | 
						
							| 252 | 235 | adantr |  | 
						
							| 253 |  | simpr |  | 
						
							| 254 | 251 252 253 | subne0d |  | 
						
							| 255 | 250 254 | znsqcld |  | 
						
							| 256 |  | dvdsle |  | 
						
							| 257 | 249 255 256 | syl2anc |  | 
						
							| 258 | 257 | imp |  | 
						
							| 259 | 241 243 248 258 | syl21anc |  | 
						
							| 260 | 41 43 | remulcld |  | 
						
							| 261 | 11 13 | remulcld |  | 
						
							| 262 | 260 261 | resubcld |  | 
						
							| 263 | 262 | resqcld |  | 
						
							| 264 | 62 | nnrpd |  | 
						
							| 265 | 128 264 | rpmulcld |  | 
						
							| 266 | 67 | nnrpd |  | 
						
							| 267 | 58 | nnrpd |  | 
						
							| 268 | 266 267 | rpmulcld |  | 
						
							| 269 | 265 268 | rpaddcld |  | 
						
							| 270 |  | 2z |  | 
						
							| 271 | 270 | a1i |  | 
						
							| 272 | 269 271 | rpexpcld |  | 
						
							| 273 | 263 272 | ltaddrp2d |  | 
						
							| 274 |  | bhmafibid2 |  | 
						
							| 275 | 41 13 11 43 274 | syl22anc |  | 
						
							| 276 | 75 275 | eqtr3d |  | 
						
							| 277 | 83 | oveq2d |  | 
						
							| 278 | 277 | oveq1d |  | 
						
							| 279 | 278 | oveq2d |  | 
						
							| 280 | 276 279 | eqtr4d |  | 
						
							| 281 | 273 280 | breqtrrd |  | 
						
							| 282 | 281 82 | breqtrrd |  | 
						
							| 283 | 241 282 | syl |  | 
						
							| 284 | 263 101 | ltnled |  | 
						
							| 285 | 241 284 | syl |  | 
						
							| 286 | 283 285 | mpbid |  | 
						
							| 287 | 259 286 | condan |  | 
						
							| 288 | 240 287 | subeq0bd |  | 
						
							| 289 | 288 | oveq2d |  | 
						
							| 290 | 234 235 | addcld |  | 
						
							| 291 | 290 | mul01d |  | 
						
							| 292 | 291 | adantr |  | 
						
							| 293 | 239 289 292 | 3eqtrd |  | 
						
							| 294 | 28 23 | subcld |  | 
						
							| 295 | 81 294 | mul0ord |  | 
						
							| 296 | 295 | adantr |  | 
						
							| 297 | 293 296 | mpbid |  | 
						
							| 298 | 297 | ord |  | 
						
							| 299 | 210 298 | mpd |  | 
						
							| 300 | 204 205 299 | subeq0d |  | 
						
							| 301 | 200 201 202 203 300 | sq11d |  | 
						
							| 302 | 301 | oveq2d |  | 
						
							| 303 | 302 287 | eqtr3d |  | 
						
							| 304 | 196 197 198 199 303 | mulcan2ad |  | 
						
							| 305 | 138 164 | zsubcld |  | 
						
							| 306 |  | dvdsmul1 |  | 
						
							| 307 | 80 305 306 | syl2anc |  | 
						
							| 308 | 307 238 | breqtrd |  | 
						
							| 309 |  | euclemma |  | 
						
							| 310 | 1 92 244 309 | syl3anc |  | 
						
							| 311 | 308 310 | mpbid |  | 
						
							| 312 | 195 304 311 | mpjaodan |  | 
						
							| 313 | 312 | oveq1d |  | 
						
							| 314 | 313 | oveq2d |  | 
						
							| 315 | 314 219 223 | 3eqtr3d |  | 
						
							| 316 | 13 43 17 130 315 | sq11d |  | 
						
							| 317 | 312 316 | jca |  |