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

Theorem mul4sq 12335
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 12334. (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 12333 . 2  |-  ( A  e.  S  <->  E. a  e.  ZZ[_i]  E. b  e.  ZZ[_i]  A  =  ( ( ( abs `  a ) ^ 2 )  +  ( ( abs `  b
) ^ 2 ) ) )
314sqlem4 12333 . 2  |-  ( B  e.  S  <->  E. c  e.  ZZ[_i]  E. d  e.  ZZ[_i]  B  =  ( ( ( abs `  c ) ^ 2 )  +  ( ( abs `  d
) ^ 2 ) ) )
4 reeanv 2639 . . 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 2639 . . . . 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 524 . . . . . . . . . . . . 13  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  a  e.  ZZ[_i]
)
7 gzabssqcl 12322 . . . . . . . . . . . . 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 526 . . . . . . . . . . . . 13  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  b  e.  ZZ[_i]
)
10 gzabssqcl 12322 . . . . . . . . . . . . 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 9181 . . . . . . . . . . 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 9179 . . . . . . . . . 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 8686 . . . . . . . . 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 525 . . . . . . . . . . . . 13  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  c  e.  ZZ[_i]
)
16 gzabssqcl 12322 . . . . . . . . . . . . 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 527 . . . . . . . . . . . . 13  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  d  e.  ZZ[_i]
)
19 gzabssqcl 12322 . . . . . . . . . . . . 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 9181 . . . . . . . . . . 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 9179 . . . . . . . . . 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 8686 . . . . . . . . 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 5869 . . . . . . . 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 2170 . . . . . . . . 9  |-  ( ( ( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )  =  ( ( ( abs `  a
) ^ 2 )  +  ( ( abs `  b ) ^ 2 ) )
26 eqid 2170 . . . . . . . . 9  |-  ( ( ( abs `  c
) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) )  =  ( ( ( abs `  c
) ^ 2 )  +  ( ( abs `  d ) ^ 2 ) )
27 1nn 8878 . . . . . . . . . 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 12321 . . . . . . . . . . . . 13  |-  ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i]
)  ->  ( a  -  c )  e.  ZZ[_i]
)
3029adantr 274 . . . . . . . . . . . 12  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
a  -  c )  e.  ZZ[_i] )
31 gzcn 12313 . . . . . . . . . . . 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 8686 . . . . . . . . . 10  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( a  -  c
)  /  1 )  =  ( a  -  c ) )
3433, 30eqeltrd 2247 . . . . . . . . 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 12321 . . . . . . . . . . . . 13  |-  ( ( b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
)  ->  ( b  -  d )  e.  ZZ[_i]
)
3635adantl 275 . . . . . . . . . . . 12  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
b  -  d )  e.  ZZ[_i] )
37 gzcn 12313 . . . . . . . . . . . 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 8686 . . . . . . . . . 10  |-  ( ( ( a  e.  ZZ[_i]  /\  c  e.  ZZ[_i] )  /\  (
b  e.  ZZ[_i]  /\  d  e.  ZZ[_i]
) )  ->  (
( b  -  d
)  /  1 )  =  ( b  -  d ) )
4039, 36eqeltrd 2247 . . . . . . . . 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 2247 . . . . . . . . 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 12334 . . . . . . . 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 2248 . . . . . . 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 5860 . . . . . . . 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 2239 . . . . . . 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 156 . . . . . 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 2595 . . . . 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, 47syl5bir 152 . . . 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 2593 . . 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 134 . 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 289 1  |-  ( ( A  e.  S  /\  B  e.  S )  ->  ( A  x.  B
)  e.  S )
Colors of variables: wff set class
Syntax hints:    -> wi 4    /\ wa 103    = wceq 1348    e. wcel 2141   {cab 2156   E.wrex 2449   ` cfv 5196  (class class class)co 5851   CCcc 7761   1c1 7764    + caddc 7766    x. cmul 7768    - cmin 8079    / cdiv 8578   NNcn 8867   2c2 8918   NN0cn0 9124   ZZcz 9201   ^cexp 10464   abscabs 10950   ZZ[_i]cgz 12310
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-ia1 105  ax-ia2 106  ax-ia3 107  ax-in1 609  ax-in2 610  ax-io 704  ax-5 1440  ax-7 1441  ax-gen 1442  ax-ie1 1486  ax-ie2 1487  ax-8 1497  ax-10 1498  ax-11 1499  ax-i12 1500  ax-bndl 1502  ax-4 1503  ax-17 1519  ax-i9 1523  ax-ial 1527  ax-i5r 1528  ax-13 2143  ax-14 2144  ax-ext 2152  ax-coll 4102  ax-sep 4105  ax-nul 4113  ax-pow 4158  ax-pr 4192  ax-un 4416  ax-setind 4519  ax-iinf 4570  ax-cnex 7854  ax-resscn 7855  ax-1cn 7856  ax-1re 7857  ax-icn 7858  ax-addcl 7859  ax-addrcl 7860  ax-mulcl 7861  ax-mulrcl 7862  ax-addcom 7863  ax-mulcom 7864  ax-addass 7865  ax-mulass 7866  ax-distr 7867  ax-i2m1 7868  ax-0lt1 7869  ax-1rid 7870  ax-0id 7871  ax-rnegex 7872  ax-precex 7873  ax-cnre 7874  ax-pre-ltirr 7875  ax-pre-ltwlin 7876  ax-pre-lttrn 7877  ax-pre-apti 7878  ax-pre-ltadd 7879  ax-pre-mulgt0 7880  ax-pre-mulext 7881  ax-arch 7882  ax-caucvg 7883
This theorem depends on definitions:  df-bi 116  df-dc 830  df-3or 974  df-3an 975  df-tru 1351  df-fal 1354  df-nf 1454  df-sb 1756  df-eu 2022  df-mo 2023  df-clab 2157  df-cleq 2163  df-clel 2166  df-nfc 2301  df-ne 2341  df-nel 2436  df-ral 2453  df-rex 2454  df-reu 2455  df-rmo 2456  df-rab 2457  df-v 2732  df-sbc 2956  df-csb 3050  df-dif 3123  df-un 3125  df-in 3127  df-ss 3134  df-nul 3415  df-if 3526  df-pw 3566  df-sn 3587  df-pr 3588  df-op 3590  df-uni 3795  df-int 3830  df-iun 3873  df-br 3988  df-opab 4049  df-mpt 4050  df-tr 4086  df-id 4276  df-po 4279  df-iso 4280  df-iord 4349  df-on 4351  df-ilim 4352  df-suc 4354  df-iom 4573  df-xp 4615  df-rel 4616  df-cnv 4617  df-co 4618  df-dm 4619  df-rn 4620  df-res 4621  df-ima 4622  df-iota 5158  df-fun 5198  df-fn 5199  df-f 5200  df-f1 5201  df-fo 5202  df-f1o 5203  df-fv 5204  df-riota 5807  df-ov 5854  df-oprab 5855  df-mpo 5856  df-1st 6117  df-2nd 6118  df-recs 6282  df-frec 6368  df-pnf 7945  df-mnf 7946  df-xr 7947  df-ltxr 7948  df-le 7949  df-sub 8081  df-neg 8082  df-reap 8483  df-ap 8490  df-div 8579  df-inn 8868  df-2 8926  df-3 8927  df-4 8928  df-n0 9125  df-z 9202  df-uz 9477  df-rp 9600  df-seqfrec 10391  df-exp 10465  df-cj 10795  df-re 10796  df-im 10797  df-rsqrt 10951  df-abs 10952  df-gz 12311
This theorem is referenced by: (None)
  Copyright terms: Public domain W3C validator