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

Theorem sadadd 16404
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 1595 and df-cad 1608.

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 16363 . . . . . 6 (bitsβ€˜π΄) βŠ† β„•0
2 bitsss 16363 . . . . . 6 (bitsβ€˜π΅) βŠ† β„•0
3 sadcl 16399 . . . . . 6 (((bitsβ€˜π΄) βŠ† β„•0 ∧ (bitsβ€˜π΅) βŠ† β„•0) β†’ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) βŠ† β„•0)
41, 2, 3mp2an 690 . . . . 5 ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) βŠ† β„•0
54sseli 3977 . . . 4 (π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) β†’ π‘˜ ∈ β„•0)
65a1i 11 . . 3 ((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) β†’ (π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) β†’ π‘˜ ∈ β„•0))
7 bitsss 16363 . . . . 5 (bitsβ€˜(𝐴 + 𝐡)) βŠ† β„•0
87sseli 3977 . . . 4 (π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡)) β†’ π‘˜ ∈ β„•0)
98a1i 11 . . 3 ((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) β†’ (π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡)) β†’ π‘˜ ∈ β„•0))
10 eqid 2732 . . . . . . . . 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 2732 . . . . . . . . 9 β—‘(bits β†Ύ β„•0) = β—‘(bits β†Ύ β„•0)
12 simpll 765 . . . . . . . . 9 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ 𝐴 ∈ β„€)
13 simplr 767 . . . . . . . . 9 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ 𝐡 ∈ β„€)
14 simpr 485 . . . . . . . . . 10 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ π‘˜ ∈ β„•0)
15 1nn0 12484 . . . . . . . . . . 11 1 ∈ β„•0
1615a1i 11 . . . . . . . . . 10 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ 1 ∈ β„•0)
1714, 16nn0addcld 12532 . . . . . . . . 9 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (π‘˜ + 1) ∈ β„•0)
1810, 11, 12, 13, 17sadaddlem 16403 . . . . . . . 8 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ∩ (0..^(π‘˜ + 1))) = (bitsβ€˜((𝐴 + 𝐡) mod (2↑(π‘˜ + 1)))))
1912, 13zaddcld 12666 . . . . . . . . 9 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (𝐴 + 𝐡) ∈ β„€)
20 bitsmod 16373 . . . . . . . . 9 (((𝐴 + 𝐡) ∈ β„€ ∧ (π‘˜ + 1) ∈ β„•0) β†’ (bitsβ€˜((𝐴 + 𝐡) mod (2↑(π‘˜ + 1)))) = ((bitsβ€˜(𝐴 + 𝐡)) ∩ (0..^(π‘˜ + 1))))
2119, 17, 20syl2anc 584 . . . . . . . 8 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (bitsβ€˜((𝐴 + 𝐡) mod (2↑(π‘˜ + 1)))) = ((bitsβ€˜(𝐴 + 𝐡)) ∩ (0..^(π‘˜ + 1))))
2218, 21eqtrd 2772 . . . . . . 7 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ∩ (0..^(π‘˜ + 1))) = ((bitsβ€˜(𝐴 + 𝐡)) ∩ (0..^(π‘˜ + 1))))
2322eleq2d 2819 . . . . . 6 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (π‘˜ ∈ (((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ∩ (0..^(π‘˜ + 1))) ↔ π‘˜ ∈ ((bitsβ€˜(𝐴 + 𝐡)) ∩ (0..^(π‘˜ + 1)))))
24 elin 3963 . . . . . 6 (π‘˜ ∈ (((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ∩ (0..^(π‘˜ + 1))) ↔ (π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ∧ π‘˜ ∈ (0..^(π‘˜ + 1))))
25 elin 3963 . . . . . 6 (π‘˜ ∈ ((bitsβ€˜(𝐴 + 𝐡)) ∩ (0..^(π‘˜ + 1))) ↔ (π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡)) ∧ π‘˜ ∈ (0..^(π‘˜ + 1))))
2623, 24, 253bitr3g 312 . . . . 5 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ ((π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ∧ π‘˜ ∈ (0..^(π‘˜ + 1))) ↔ (π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡)) ∧ π‘˜ ∈ (0..^(π‘˜ + 1)))))
27 nn0uz 12860 . . . . . . . . 9 β„•0 = (β„€β‰₯β€˜0)
2814, 27eleqtrdi 2843 . . . . . . . 8 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ π‘˜ ∈ (β„€β‰₯β€˜0))
29 eluzfz2 13505 . . . . . . . 8 (π‘˜ ∈ (β„€β‰₯β€˜0) β†’ π‘˜ ∈ (0...π‘˜))
3028, 29syl 17 . . . . . . 7 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ π‘˜ ∈ (0...π‘˜))
3114nn0zd 12580 . . . . . . . 8 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ π‘˜ ∈ β„€)
32 fzval3 13697 . . . . . . . 8 (π‘˜ ∈ β„€ β†’ (0...π‘˜) = (0..^(π‘˜ + 1)))
3331, 32syl 17 . . . . . . 7 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (0...π‘˜) = (0..^(π‘˜ + 1)))
3430, 33eleqtrd 2835 . . . . . 6 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ π‘˜ ∈ (0..^(π‘˜ + 1)))
3534biantrud 532 . . . . 5 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ↔ (π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ∧ π‘˜ ∈ (0..^(π‘˜ + 1)))))
3634biantrud 532 . . . . 5 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡)) ↔ (π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡)) ∧ π‘˜ ∈ (0..^(π‘˜ + 1)))))
3726, 35, 363bitr4d 310 . . . 4 (((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) ∧ π‘˜ ∈ β„•0) β†’ (π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ↔ π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡))))
3837ex 413 . . 3 ((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) β†’ (π‘˜ ∈ β„•0 β†’ (π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ↔ π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡)))))
396, 9, 38pm5.21ndd 380 . 2 ((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) β†’ (π‘˜ ∈ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) ↔ π‘˜ ∈ (bitsβ€˜(𝐴 + 𝐡))))
4039eqrdv 2730 1 ((𝐴 ∈ β„€ ∧ 𝐡 ∈ β„€) β†’ ((bitsβ€˜π΄) sadd (bitsβ€˜π΅)) = (bitsβ€˜(𝐴 + 𝐡)))
Colors of variables: wff setvar class
Syntax hints:   β†’ wi 4   ↔ wb 205   ∧ wa 396   = wceq 1541  caddwcad 1607   ∈ wcel 2106   ∩ cin 3946   βŠ† wss 3947  βˆ…c0 4321  ifcif 4527   ↦ cmpt 5230  β—‘ccnv 5674   β†Ύ cres 5677  β€˜cfv 6540  (class class class)co 7405   ∈ cmpo 7407  1oc1o 8455  2oc2o 8456  0cc0 11106  1c1 11107   + caddc 11109   βˆ’ cmin 11440  2c2 12263  β„•0cn0 12468  β„€cz 12554  β„€β‰₯cuz 12818  ...cfz 13480  ..^cfzo 13623   mod cmo 13830  seqcseq 13962  β†‘cexp 14023  bitscbits 16356   sadd csad 16357
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1797  ax-4 1811  ax-5 1913  ax-6 1971  ax-7 2011  ax-8 2108  ax-9 2116  ax-10 2137  ax-11 2154  ax-12 2171  ax-ext 2703  ax-rep 5284  ax-sep 5298  ax-nul 5305  ax-pow 5362  ax-pr 5426  ax-un 7721  ax-inf2 9632  ax-cnex 11162  ax-resscn 11163  ax-1cn 11164  ax-icn 11165  ax-addcl 11166  ax-addrcl 11167  ax-mulcl 11168  ax-mulrcl 11169  ax-mulcom 11170  ax-addass 11171  ax-mulass 11172  ax-distr 11173  ax-i2m1 11174  ax-1ne0 11175  ax-1rid 11176  ax-rnegex 11177  ax-rrecex 11178  ax-cnre 11179  ax-pre-lttri 11180  ax-pre-lttrn 11181  ax-pre-ltadd 11182  ax-pre-mulgt0 11183  ax-pre-sup 11184
This theorem depends on definitions:  df-bi 206  df-an 397  df-or 846  df-3or 1088  df-3an 1089  df-xor 1510  df-tru 1544  df-fal 1554  df-had 1595  df-cad 1608  df-ex 1782  df-nf 1786  df-sb 2068  df-mo 2534  df-eu 2563  df-clab 2710  df-cleq 2724  df-clel 2810  df-nfc 2885  df-ne 2941  df-nel 3047  df-ral 3062  df-rex 3071  df-rmo 3376  df-reu 3377  df-rab 3433  df-v 3476  df-sbc 3777  df-csb 3893  df-dif 3950  df-un 3952  df-in 3954  df-ss 3964  df-pss 3966  df-nul 4322  df-if 4528  df-pw 4603  df-sn 4628  df-pr 4630  df-op 4634  df-uni 4908  df-int 4950  df-iun 4998  df-disj 5113  df-br 5148  df-opab 5210  df-mpt 5231  df-tr 5265  df-id 5573  df-eprel 5579  df-po 5587  df-so 5588  df-fr 5630  df-se 5631  df-we 5632  df-xp 5681  df-rel 5682  df-cnv 5683  df-co 5684  df-dm 5685  df-rn 5686  df-res 5687  df-ima 5688  df-pred 6297  df-ord 6364  df-on 6365  df-lim 6366  df-suc 6367  df-iota 6492  df-fun 6542  df-fn 6543  df-f 6544  df-f1 6545  df-fo 6546  df-f1o 6547  df-fv 6548  df-isom 6549  df-riota 7361  df-ov 7408  df-oprab 7409  df-mpo 7410  df-om 7852  df-1st 7971  df-2nd 7972  df-frecs 8262  df-wrecs 8293  df-recs 8367  df-rdg 8406  df-1o 8462  df-2o 8463  df-oadd 8466  df-er 8699  df-map 8818  df-pm 8819  df-en 8936  df-dom 8937  df-sdom 8938  df-fin 8939  df-sup 9433  df-inf 9434  df-oi 9501  df-dju 9892  df-card 9930  df-pnf 11246  df-mnf 11247  df-xr 11248  df-ltxr 11249  df-le 11250  df-sub 11442  df-neg 11443  df-div 11868  df-nn 12209  df-2 12271  df-3 12272  df-n0 12469  df-xnn0 12541  df-z 12555  df-uz 12819  df-rp 12971  df-fz 13481  df-fzo 13624  df-fl 13753  df-mod 13831  df-seq 13963  df-exp 14024  df-hash 14287  df-cj 15042  df-re 15043  df-im 15044  df-sqrt 15178  df-abs 15179  df-clim 15428  df-sum 15629  df-dvds 16194  df-bits 16359  df-sad 16388
This theorem is referenced by:  bitsres  16410  smumullem  16429
  Copyright terms: Public domain W3C validator