MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  sadadd Structured version   Visualization version   GIF version

Theorem sadadd 16352
Description: For sequences that correspond to valid integers, the adder sequence function produces the sequence for the sum. This is effectively a proof of the correctness of the ripple carry adder, implemented with logic gates corresponding to df-had 1596 and df-cad 1609.

It is interesting to consider in what sense the sadd function can be said to be "adding" things outside the range of the bits function, that is, when adding sequences that are not eventually constant and so do not denote any integer. The correct interpretation is that the sequences are representations of 2-adic integers, which have a natural ring structure. (Contributed by Mario Carneiro, 9-Sep-2016.)

Assertion
Ref Expression
sadadd ((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) β†’ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) = (bitsβ€˜(𝐴 + 𝐡)))

Proof of Theorem sadadd
Dummy variables π‘˜ 𝑐 π‘š 𝑛 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 bitsss 16311 . . . . . 6 (bitsβ€˜π΄) βŠ† β„•0
2 bitsss 16311 . . . . . 6 (bitsβ€˜π΅) βŠ† β„•0
3 sadcl 16347 . . . . . 6 (((bitsβ€˜π΄) βŠ† β„•0 ∧ (bitsβ€˜π΅) βŠ† β„•0) β†’ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) βŠ† β„•0)
41, 2, 3mp2an 691 . . . . 5 ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) βŠ† β„•0
54sseli 3941 . . . 4 (π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) β†’ π‘˜ ∈ β„•0)
65a1i 11 . . 3 ((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) β†’ (π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) β†’ π‘˜ ∈ β„•0))
7 bitsss 16311 . . . . 5 (bitsβ€˜(𝐴 + 𝐡)) βŠ† β„•0
87sseli 3941 . . . 4 (π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡)) β†’ π‘˜ ∈ β„•0)
98a1i 11 . . 3 ((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) β†’ (π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡)) β†’ π‘˜ ∈ β„•0))
10 eqid 2733 . . . . . . . . 9 seq0((𝑐 ∈ 2o, π‘š ∈ β„•0 ↦ if(cadd(π‘š ∈ (bitsβ€˜π΄), π‘š ∈ (bitsβ€˜π΅), βˆ… ∈ 𝑐), 1o, βˆ…)), (𝑛 ∈ β„•0 ↦ if(𝑛 = 0, βˆ…, (𝑛 βˆ’ 1)))) = seq0((𝑐 ∈ 2o, π‘š ∈ β„•0 ↦ if(cadd(π‘š ∈ (bitsβ€˜π΄), π‘š ∈ (bitsβ€˜π΅), βˆ… ∈ 𝑐), 1o, βˆ…)), (𝑛 ∈ β„•0 ↦ if(𝑛 = 0, βˆ…, (𝑛 βˆ’ 1))))
11 eqid 2733 . . . . . . . . 9 β—‘(bits β†Ύ β„•0) = β—‘(bits β†Ύ β„•0)
12 simpll 766 . . . . . . . . 9 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ 𝐴 ∈ β„€)
13 simplr 768 . . . . . . . . 9 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ 𝐡 ∈ β„€)
14 simpr 486 . . . . . . . . . 10 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ π‘˜ ∈ β„•0)
15 1nn0 12434 . . . . . . . . . . 11 1 ∈ β„•0
1615a1i 11 . . . . . . . . . 10 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ 1 ∈ β„•0)
1714, 16nn0addcld 12482 . . . . . . . . 9 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (π‘˜ + 1) ∈ β„•0)
1810, 11, 12, 13, 17sadaddlem 16351 . . . . . . . 8 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ∩ (0..^(π‘˜ + 1))) = (bitsβ€˜((𝐴 + 𝐡) mod (2↑(π‘˜ + 1)))))
1912, 13zaddcld 12616 . . . . . . . . 9 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (𝐴 + 𝐡) ∈ β„€)
20 bitsmod 16321 . . . . . . . . 9 (((𝐴 + 𝐡) ∈ β„€ ∧ (π‘˜ + 1) ∈ β„•0) β†’ (bitsβ€˜((𝐴 + 𝐡) mod (2↑(π‘˜ + 1)))) = ((bitsβ€˜(𝐴 + 𝐡)) ∩ (0..^(π‘˜ + 1))))
2119, 17, 20syl2anc 585 . . . . . . . 8 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (bitsβ€˜((𝐴 + 𝐡) mod (2↑(π‘˜ + 1)))) = ((bitsβ€˜(𝐴 + 𝐡)) ∩ (0..^(π‘˜ + 1))))
2218, 21eqtrd 2773 . . . . . . 7 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ∩ (0..^(π‘˜ + 1))) = ((bitsβ€˜(𝐴 + 𝐡)) ∩ (0..^(π‘˜ + 1))))
2322eleq2d 2820 . . . . . 6 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (π‘˜ ∈ (((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ∩ (0..^(π‘˜ + 1))) ↔ π‘˜ ∈ ((bitsβ€˜(𝐴 + 𝐡)) ∩ (0..^(π‘˜ + 1)))))
24 elin 3927 . . . . . 6 (π‘˜ ∈ (((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ∩ (0..^(π‘˜ + 1))) ↔ (π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ∧ π‘˜ ∈ (0..^(π‘˜ + 1))))
25 elin 3927 . . . . . 6 (π‘˜ ∈ ((bitsβ€˜(𝐴 + 𝐡)) ∩ (0..^(π‘˜ + 1))) ↔ (π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡)) ∧ π‘˜ ∈ (0..^(π‘˜ + 1))))
2623, 24, 253bitr3g 313 . . . . 5 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ ((π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ∧ π‘˜ ∈ (0..^(π‘˜ + 1))) ↔ (π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡)) ∧ π‘˜ ∈ (0..^(π‘˜ + 1)))))
27 nn0uz 12810 . . . . . . . . 9 β„•0 = (β„€β‰₯β€˜0)
2814, 27eleqtrdi 2844 . . . . . . . 8 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ π‘˜ ∈ (β„€β‰₯β€˜0))
29 eluzfz2 13455 . . . . . . . 8 (π‘˜ ∈ (β„€β‰₯β€˜0) β†’ π‘˜ ∈ (0...π‘˜))
3028, 29syl 17 . . . . . . 7 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ π‘˜ ∈ (0...π‘˜))
3114nn0zd 12530 . . . . . . . 8 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ π‘˜ ∈ β„€)
32 fzval3 13647 . . . . . . . 8 (π‘˜ ∈ β„€ β†’ (0...π‘˜) = (0..^(π‘˜ + 1)))
3331, 32syl 17 . . . . . . 7 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (0...π‘˜) = (0..^(π‘˜ + 1)))
3430, 33eleqtrd 2836 . . . . . 6 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ π‘˜ ∈ (0..^(π‘˜ + 1)))
3534biantrud 533 . . . . 5 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ↔ (π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ∧ π‘˜ ∈ (0..^(π‘˜ + 1)))))
3634biantrud 533 . . . . 5 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡)) ↔ (π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡)) ∧ π‘˜ ∈ (0..^(π‘˜ + 1)))))
3726, 35, 363bitr4d 311 . . . 4 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ↔ π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡))))
3837ex 414 . . 3 ((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) β†’ (π‘˜ ∈ β„•0 β†’ (π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ↔ π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡)))))
396, 9, 38pm5.21ndd 381 . 2 ((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) β†’ (π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ↔ π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡))))
4039eqrdv 2731 1 ((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) β†’ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) = (bitsβ€˜(𝐴 + 𝐡)))
Colors of variables: wff setvar class
Syntax hints:   β†’ wi 4   ↔ wb 205   ∧ wa 397   = wceq 1542  caddwcad 1608   ∈ wcel 2107   ∩ cin 3910   βŠ† wss 3911  βˆ…c0 4283  ifcif 4487   ↦ cmpt 5189  β—‘ccnv 5633   β†Ύ cres 5636  β€˜cfv 6497  (class class class)co 7358   ∈ cmpo 7360  1oc1o 8406  2oc2o 8407  0cc0 11056  1c1 11057   + caddc 11059   βˆ’ cmin 11390  2c2 12213  β„•0cn0 12418  β„€cz 12504  β„€β‰₯cuz 12768  ...cfz 13430  ..^cfzo 13573   mod cmo 13780  seqcseq 13912  β†‘cexp 13973  bitscbits 16304   sadd csad 16305
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1798  ax-4 1812  ax-5 1914  ax-6 1972  ax-7 2012  ax-8 2109  ax-9 2117  ax-10 2138  ax-11 2155  ax-12 2172  ax-ext 2704  ax-rep 5243  ax-sep 5257  ax-nul 5264  ax-pow 5321  ax-pr 5385  ax-un 7673  ax-inf2 9582  ax-cnex 11112  ax-resscn 11113  ax-1cn 11114  ax-icn 11115  ax-addcl 11116  ax-addrcl 11117  ax-mulcl 11118  ax-mulrcl 11119  ax-mulcom 11120  ax-addass 11121  ax-mulass 11122  ax-distr 11123  ax-i2m1 11124  ax-1ne0 11125  ax-1rid 11126  ax-rnegex 11127  ax-rrecex 11128  ax-cnre 11129  ax-pre-lttri 11130  ax-pre-lttrn 11131  ax-pre-ltadd 11132  ax-pre-mulgt0 11133  ax-pre-sup 11134
This theorem depends on definitions:  df-bi 206  df-an 398  df-or 847  df-3or 1089  df-3an 1090  df-xor 1511  df-tru 1545  df-fal 1555  df-had 1596  df-cad 1609  df-ex 1783  df-nf 1787  df-sb 2069  df-mo 2535  df-eu 2564  df-clab 2711  df-cleq 2725  df-clel 2811  df-nfc 2886  df-ne 2941  df-nel 3047  df-ral 3062  df-rex 3071  df-rmo 3352  df-reu 3353  df-rab 3407  df-v 3446  df-sbc 3741  df-csb 3857  df-dif 3914  df-un 3916  df-in 3918  df-ss 3928  df-pss 3930  df-nul 4284  df-if 4488  df-pw 4563  df-sn 4588  df-pr 4590  df-op 4594  df-uni 4867  df-int 4909  df-iun 4957  df-disj 5072  df-br 5107  df-opab 5169  df-mpt 5190  df-tr 5224  df-id 5532  df-eprel 5538  df-po 5546  df-so 5547  df-fr 5589  df-se 5590  df-we 5591  df-xp 5640  df-rel 5641  df-cnv 5642  df-co 5643  df-dm 5644  df-rn 5645  df-res 5646  df-ima 5647  df-pred 6254  df-ord 6321  df-on 6322  df-lim 6323  df-suc 6324  df-iota 6449  df-fun 6499  df-fn 6500  df-f 6501  df-f1 6502  df-fo 6503  df-f1o 6504  df-fv 6505  df-isom 6506  df-riota 7314  df-ov 7361  df-oprab 7362  df-mpo 7363  df-om 7804  df-1st 7922  df-2nd 7923  df-frecs 8213  df-wrecs 8244  df-recs 8318  df-rdg 8357  df-1o 8413  df-2o 8414  df-oadd 8417  df-er 8651  df-map 8770  df-pm 8771  df-en 8887  df-dom 8888  df-sdom 8889  df-fin 8890  df-sup 9383  df-inf 9384  df-oi 9451  df-dju 9842  df-card 9880  df-pnf 11196  df-mnf 11197  df-xr 11198  df-ltxr 11199  df-le 11200  df-sub 11392  df-neg 11393  df-div 11818  df-nn 12159  df-2 12221  df-3 12222  df-n0 12419  df-xnn0 12491  df-z 12505  df-uz 12769  df-rp 12921  df-fz 13431  df-fzo 13574  df-fl 13703  df-mod 13781  df-seq 13913  df-exp 13974  df-hash 14237  df-cj 14990  df-re 14991  df-im 14992  df-sqrt 15126  df-abs 15127  df-clim 15376  df-sum 15577  df-dvds 16142  df-bits 16307  df-sad 16336
This theorem is referenced by:  bitsres  16358  smumullem  16377
  Copyright terms: Public domain W3C validator