ILE Home Intuitionistic Logic Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  ILE Home  >  Th. List  >  mul4sq Unicode version

Theorem mul4sq 12717
Description: Euler's four-square identity: The product of two sums of four squares is also a sum of four squares. This is usually quoted as an explicit formula involving eight real variables; we save some time by working with complex numbers (gaussian integers) instead, so that we only have to work with four variables, and also hiding the actual formula for the product in the proof of mul4sqlem 12716. (For the curious, the explicit formula that is used is  (  |  a  |  ^ 2  +  |  b  |  ^
2 ) (  |  c  |  ^ 2  +  |  d  |  ^ 2 )  =  |  a *  x.  c  +  b  x.  d *  |  ^ 2  +  | 
a *  x.  d  -  b  x.  c
*  |  ^ 2.) (Contributed by Mario Carneiro, 14-Jul-2014.)
Hypothesis
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 ) ) ) }
Assertion
Ref Expression
mul4sq  |-  ( ( A  e.  S  /\  B  e.  S )  ->  ( A  x.  B
)  e.  S )
Distinct variable groups:    w, n, x, y, z    B, n    A, n    S, n
Allowed substitution hints:    A( x, y, z, w)    B( x, y, z, w)    S( x, y, z, w)

Proof of Theorem mul4sq
Dummy variables  a  b  c  d are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 4sq.1 . . 3  |-  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 ) ) ) }
214sqlem4 12715 . 2  |-  ( A  e.  S  <->  E. a  e.  ZZ[_i]  E. b  e.  ZZ[_i]  A  =  ( ( ( abs `  a ) ^ 2 )  +  ( ( abs `  b
) ^ 2 ) ) )
314sqlem4 12715 . 2  |-  ( B  e.  S  <->  E. c  e.  ZZ[_i]  E. d  e.  ZZ[_i]  B  =  ( ( ( abs `  c ) ^ 2 )  +  ( ( abs `  d
) ^ 2 ) ) )
4 reeanv 2676 . . 3  |-  ( E. a  e.  ZZ[_i]  E. c  e.  ZZ[_i] 
( E. b  e.  ZZ[_i]  A  =  ( (
( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  /\  E. d  e.  ZZ[_i]  B  =  ( ( ( abs `  c
) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) ) )  <->  ( E. a  e.  ZZ[_i]  E. b  e.  ZZ[_i]  A  =  ( (
( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  /\  E. c  e.  ZZ[_i]  E. d  e.  ZZ[_i]  B  =  ( (
( abs `  c
) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) ) ) )
5 reeanv 2676 . . . . 5  |-  ( E. b  e.  ZZ[_i]  E. d  e.  ZZ[_i] 
( A  =  ( ( ( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  /\  B  =  ( ( ( abs `  c ) ^ 2 )  +  ( ( abs `  d
) ^ 2 ) ) )  <->  ( E. b  e.  ZZ[_i]  A  =  ( ( ( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  /\  E. d  e.  ZZ[_i]  B  =  ( ( ( abs `  c
) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) ) ) )
6 simpll 527 . . . . . . . . . . . . 13  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  a  e.  ZZ[_i]
)
7 gzabssqcl 12704 . . . . . . . . . . . . 13  |-  ( a  e.  ZZ[_i]  ->  ( ( abs `  a ) ^
2 )  e.  NN0 )
86, 7syl 14 . . . . . . . . . . . 12  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( abs `  a
) ^ 2 )  e.  NN0 )
9 simprl 529 . . . . . . . . . . . . 13  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  b  e.  ZZ[_i]
)
10 gzabssqcl 12704 . . . . . . . . . . . . 13  |-  ( b  e.  ZZ[_i]  ->  ( ( abs `  b ) ^
2 )  e.  NN0 )
119, 10syl 14 . . . . . . . . . . . 12  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( abs `  b
) ^ 2 )  e.  NN0 )
128, 11nn0addcld 9352 . . . . . . . . . . 11  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( ( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  e.  NN0 )
1312nn0cnd 9350 . . . . . . . . . 10  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( ( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  e.  CC )
1413div1d 8853 . . . . . . . . 9  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( ( ( abs `  a ) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  /  1 )  =  ( ( ( abs `  a ) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) ) )
15 simplr 528 . . . . . . . . . . . . 13  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  c  e.  ZZ[_i]
)
16 gzabssqcl 12704 . . . . . . . . . . . . 13  |-  ( c  e.  ZZ[_i]  ->  ( ( abs `  c ) ^
2 )  e.  NN0 )
1715, 16syl 14 . . . . . . . . . . . 12  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( abs `  c
) ^ 2 )  e.  NN0 )
18 simprr 531 . . . . . . . . . . . . 13  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  d  e.  ZZ[_i]
)
19 gzabssqcl 12704 . . . . . . . . . . . . 13  |-  ( d  e.  ZZ[_i]  ->  ( ( abs `  d ) ^
2 )  e.  NN0 )
2018, 19syl 14 . . . . . . . . . . . 12  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( abs `  d
) ^ 2 )  e.  NN0 )
2117, 20nn0addcld 9352 . . . . . . . . . . 11  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( ( abs `  c
) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) )  e.  NN0 )
2221nn0cnd 9350 . . . . . . . . . 10  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( ( abs `  c
) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) )  e.  CC )
2322div1d 8853 . . . . . . . . 9  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( ( ( abs `  c ) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) )  /  1 )  =  ( ( ( abs `  c ) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) ) )
2414, 23oveq12d 5962 . . . . . . . 8  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( ( ( ( abs `  a ) ^ 2 )  +  ( ( abs `  b
) ^ 2 ) )  /  1 )  x.  ( ( ( ( abs `  c
) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) )  /  1
) )  =  ( ( ( ( abs `  a ) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  x.  ( ( ( abs `  c ) ^ 2 )  +  ( ( abs `  d
) ^ 2 ) ) ) )
25 eqid 2205 . . . . . . . . 9  |-  ( ( ( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  =  ( ( ( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )
26 eqid 2205 . . . . . . . . 9  |-  ( ( ( abs `  c
) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) )  =  ( ( ( abs `  c
) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) )
27 1nn 9047 . . . . . . . . . 10  |-  1  e.  NN
2827a1i 9 . . . . . . . . 9  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  1  e.  NN )
29 gzsubcl 12703 . . . . . . . . . . . . 13  |-  ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i]
)  ->  ( a  -  c )  e.  ZZ[_i]
)
3029adantr 276 . . . . . . . . . . . 12  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
a  -  c )  e.  ZZ[_i] )
31 gzcn 12695 . . . . . . . . . . . 12  |-  ( ( a  -  c )  e.  ZZ[_i]  ->  ( a  -  c )  e.  CC )
3230, 31syl 14 . . . . . . . . . . 11  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
a  -  c )  e.  CC )
3332div1d 8853 . . . . . . . . . 10  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( a  -  c
)  /  1 )  =  ( a  -  c ) )
3433, 30eqeltrd 2282 . . . . . . . . 9  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( a  -  c
)  /  1 )  e.  ZZ[_i] )
35 gzsubcl 12703 . . . . . . . . . . . . 13  |-  ( ( b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
)  ->  ( b  -  d )  e.  ZZ[_i]
)
3635adantl 277 . . . . . . . . . . . 12  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
b  -  d )  e.  ZZ[_i] )
37 gzcn 12695 . . . . . . . . . . . 12  |-  ( ( b  -  d )  e.  ZZ[_i]  ->  ( b  -  d )  e.  CC )
3836, 37syl 14 . . . . . . . . . . 11  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
b  -  d )  e.  CC )
3938div1d 8853 . . . . . . . . . 10  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( b  -  d
)  /  1 )  =  ( b  -  d ) )
4039, 36eqeltrd 2282 . . . . . . . . 9  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( b  -  d
)  /  1 )  e.  ZZ[_i] )
4114, 12eqeltrd 2282 . . . . . . . . 9  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( ( ( abs `  a ) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  /  1 )  e. 
NN0 )
421, 6, 9, 15, 18, 25, 26, 28, 34, 40, 41mul4sqlem 12716 . . . . . . . 8  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( ( ( ( abs `  a ) ^ 2 )  +  ( ( abs `  b
) ^ 2 ) )  /  1 )  x.  ( ( ( ( abs `  c
) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) )  /  1
) )  e.  S
)
4324, 42eqeltrrd 2283 . . . . . . 7  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( ( ( abs `  a ) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  x.  ( ( ( abs `  c ) ^ 2 )  +  ( ( abs `  d
) ^ 2 ) ) )  e.  S
)
44 oveq12 5953 . . . . . . . 8  |-  ( ( A  =  ( ( ( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  /\  B  =  ( ( ( abs `  c ) ^ 2 )  +  ( ( abs `  d
) ^ 2 ) ) )  ->  ( A  x.  B )  =  ( ( ( ( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  x.  (
( ( abs `  c
) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) ) ) )
4544eleq1d 2274 . . . . . . 7  |-  ( ( A  =  ( ( ( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  /\  B  =  ( ( ( abs `  c ) ^ 2 )  +  ( ( abs `  d
) ^ 2 ) ) )  ->  (
( A  x.  B
)  e.  S  <->  ( (
( ( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  x.  (
( ( abs `  c
) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) ) )  e.  S ) )
4643, 45syl5ibrcom 157 . . . . . 6  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( A  =  ( ( ( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  /\  B  =  ( ( ( abs `  c ) ^ 2 )  +  ( ( abs `  d
) ^ 2 ) ) )  ->  ( A  x.  B )  e.  S ) )
4746rexlimdvva 2631 . . . . 5  |-  ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i]
)  ->  ( E. b  e.  ZZ[_i]  E. d  e.  ZZ[_i] 
( A  =  ( ( ( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  /\  B  =  ( ( ( abs `  c ) ^ 2 )  +  ( ( abs `  d
) ^ 2 ) ) )  ->  ( A  x.  B )  e.  S ) )
485, 47biimtrrid 153 . . . 4  |-  ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i]
)  ->  ( ( E. b  e.  ZZ[_i]  A  =  ( ( ( abs `  a ) ^ 2 )  +  ( ( abs `  b
) ^ 2 ) )  /\  E. d  e.  ZZ[_i]  B  =  ( (
( abs `  c
) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) ) )  -> 
( A  x.  B
)  e.  S ) )
4948rexlimivv 2629 . . 3  |-  ( E. a  e.  ZZ[_i]  E. c  e.  ZZ[_i] 
( E. b  e.  ZZ[_i]  A  =  ( (
( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  /\  E. d  e.  ZZ[_i]  B  =  ( ( ( abs `  c
) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) ) )  -> 
( A  x.  B
)  e.  S )
504, 49sylbir 135 . 2  |-  ( ( E. a  e.  ZZ[_i]  E. b  e.  ZZ[_i]  A  =  ( ( ( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  /\  E. c  e.  ZZ[_i]  E. d  e.  ZZ[_i]  B  =  ( (
( abs `  c
) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) ) )  -> 
( A  x.  B
)  e.  S )
512, 3, 50syl2anb 291 1  |-  ( ( A  e.  S  /\  B  e.  S )  ->  ( A  x.  B
)  e.  S )
Colors of variables: wff set class
Syntax hints:    -> wi 4    /\ wa 104    = wceq 1373    e. wcel 2176   {cab 2191   E.wrex 2485   ` cfv 5271  (class class class)co 5944   CCcc 7923   1c1 7926    + caddc 7928    x. cmul 7930    - cmin 8243    / cdiv 8745   NNcn 9036   2c2 9087   NN0cn0 9295   ZZcz 9372   ^cexp 10683   abscabs 11308   ZZ[_i]cgz 12692
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-ia1 106  ax-ia2 107  ax-ia3 108  ax-in1 615  ax-in2 616  ax-io 711  ax-5 1470  ax-7 1471  ax-gen 1472  ax-ie1 1516  ax-ie2 1517  ax-8 1527  ax-10 1528  ax-11 1529  ax-i12 1530  ax-bndl 1532  ax-4 1533  ax-17 1549  ax-i9 1553  ax-ial 1557  ax-i5r 1558  ax-13 2178  ax-14 2179  ax-ext 2187  ax-coll 4159  ax-sep 4162  ax-nul 4170  ax-pow 4218  ax-pr 4253  ax-un 4480  ax-setind 4585  ax-iinf 4636  ax-cnex 8016  ax-resscn 8017  ax-1cn 8018  ax-1re 8019  ax-icn 8020  ax-addcl 8021  ax-addrcl 8022  ax-mulcl 8023  ax-mulrcl 8024  ax-addcom 8025  ax-mulcom 8026  ax-addass 8027  ax-mulass 8028  ax-distr 8029  ax-i2m1 8030  ax-0lt1 8031  ax-1rid 8032  ax-0id 8033  ax-rnegex 8034  ax-precex 8035  ax-cnre 8036  ax-pre-ltirr 8037  ax-pre-ltwlin 8038  ax-pre-lttrn 8039  ax-pre-apti 8040  ax-pre-ltadd 8041  ax-pre-mulgt0 8042  ax-pre-mulext 8043  ax-arch 8044  ax-caucvg 8045
This theorem depends on definitions:  df-bi 117  df-dc 837  df-3or 982  df-3an 983  df-tru 1376  df-fal 1379  df-nf 1484  df-sb 1786  df-eu 2057  df-mo 2058  df-clab 2192  df-cleq 2198  df-clel 2201  df-nfc 2337  df-ne 2377  df-nel 2472  df-ral 2489  df-rex 2490  df-reu 2491  df-rmo 2492  df-rab 2493  df-v 2774  df-sbc 2999  df-csb 3094  df-dif 3168  df-un 3170  df-in 3172  df-ss 3179  df-nul 3461  df-if 3572  df-pw 3618  df-sn 3639  df-pr 3640  df-op 3642  df-uni 3851  df-int 3886  df-iun 3929  df-br 4045  df-opab 4106  df-mpt 4107  df-tr 4143  df-id 4340  df-po 4343  df-iso 4344  df-iord 4413  df-on 4415  df-ilim 4416  df-suc 4418  df-iom 4639  df-xp 4681  df-rel 4682  df-cnv 4683  df-co 4684  df-dm 4685  df-rn 4686  df-res 4687  df-ima 4688  df-iota 5232  df-fun 5273  df-fn 5274  df-f 5275  df-f1 5276  df-fo 5277  df-f1o 5278  df-fv 5279  df-riota 5899  df-ov 5947  df-oprab 5948  df-mpo 5949  df-1st 6226  df-2nd 6227  df-recs 6391  df-frec 6477  df-pnf 8109  df-mnf 8110  df-xr 8111  df-ltxr 8112  df-le 8113  df-sub 8245  df-neg 8246  df-reap 8648  df-ap 8655  df-div 8746  df-inn 9037  df-2 9095  df-3 9096  df-4 9097  df-n0 9296  df-z 9373  df-uz 9649  df-rp 9776  df-seqfrec 10593  df-exp 10684  df-cj 11153  df-re 11154  df-im 11155  df-rsqrt 11309  df-abs 11310  df-gz 12693
This theorem is referenced by:  4sqlem19  12732
  Copyright terms: Public domain W3C validator