Package hardware-adder-def: Definition of hardware adder devices
Information
| name | hardware-adder-def |
| version | 1.10 |
| description | Definition of hardware adder devices |
| author | Joe Leslie-Hurd <joe@gilith.com> |
| license | MIT |
| provenance | HOL Light theory extracted on 2014-02-24 |
| requires | bool hardware-bus hardware-wire |
| show | Data.Bool Hardware |
Files
- Package tarball hardware-adder-def-1.10.tgz
- Theory source file hardware-adder-def.thy (included in the package tarball)
Defined Constants
- Hardware
- adder2
- adder3
- Bus
- Bus.adder2
- Bus.adder3
- Bus.adder4
- SumCarry
- SumCarry.shiftRight
Theorems
⊦ ∀x y s c. Bus.adder2 x y s c ⇔ Bus.xor2 x y s ∧ Bus.and2 x y c
⊦ ∀x y s c. adder2 x y s c ⇔ xor2 x y s ∧ and2 x y c
⊦ ∀x y z s c.
Bus.adder3 x y z s c ⇔ Bus.xor3 x y z s ∧ Bus.majority3 x y z c
⊦ ∀x y z s c. adder3 x y z s c ⇔ xor3 x y z s ∧ majority3 x y z c
⊦ ∀ld xs xc xb.
SumCarry.shiftRight ld xs xc xb ⇔
∃r sp sq sr cp cq cr xs0 xs1 sq0 sq1 sq2 sq3 cp0 cp1 cq0 cq1.
Bus.width xs = Number.Natural.+ r 1 ∧
Bus.width xc = Number.Natural.+ r 1 ∧ Bus.width sp = r ∧
Bus.width sq = Number.Natural.+ r 1 ∧ Bus.width sr = r ∧
Bus.width cp = Number.Natural.+ r 1 ∧
Bus.width cq = Number.Natural.+ r 1 ∧
Bus.width cr = Number.Natural.+ r 1 ∧ Bus.wire xs 0 xs0 ∧
Bus.sub xs 1 r xs1 ∧ Bus.wire sq 0 sq0 ∧ Bus.sub sq 0 r sq1 ∧
Bus.sub sq 1 r sq2 ∧ Bus.wire sq r sq3 ∧ Bus.sub cp 0 r cp0 ∧
Bus.wire cp r cp1 ∧ Bus.sub cq 0 r cq0 ∧ Bus.wire cq r cq1 ∧
Bus.adder2 sp cp0 sq1 cq0 ∧ connect cp1 sq3 ∧ connect ground cq1 ∧
case1 ld xs0 sq0 xb ∧ Bus.case1 ld xs1 sq2 sr ∧
Bus.case1 ld xc cq cr ∧ Bus.delay sr sp ∧ Bus.delay cr cp
⊦ ∀w x y z s c.
Bus.adder4 w x y z s c ⇔
∃n p q z0 z1 s0 s1 s2 c0 c1 p0 p1 q1 q2.
Bus.width w = Number.Natural.+ n 1 ∧
Bus.width x = Number.Natural.+ n 1 ∧
Bus.width y = Number.Natural.+ n 1 ∧
Bus.width z = Number.Natural.+ n 1 ∧
Bus.width s = Number.Natural.+ n 2 ∧
Bus.width c = Number.Natural.+ n 1 ∧
Bus.width p = Number.Natural.+ n 1 ∧
Bus.width q = Number.Natural.+ n 1 ∧ Bus.wire z 0 z0 ∧
Bus.sub z 1 n z1 ∧ Bus.wire s 0 s0 ∧ Bus.sub s 1 n s1 ∧
Bus.wire s (Number.Natural.+ n 1) s2 ∧ Bus.wire c 0 c0 ∧
Bus.sub c 1 n c1 ∧ Bus.wire p 0 p0 ∧ Bus.sub p 1 n p1 ∧
Bus.sub q 0 n q1 ∧ Bus.wire q n q2 ∧ Bus.adder3 w x y p q ∧
adder2 p0 z0 s0 c0 ∧ Bus.adder3 p1 q1 z1 s1 c1 ∧ connect q2 s2
External Type Operators
- →
- bool
- Hardware
- bus
- wire
- Number
- Natural
- Number.Natural.natural
- Natural
External Constants
- =
- Data
- Bool
- ∀
- ∧
- ∃
- ⊤
- Bool
- Hardware
- and2
- case1
- connect
- ground
- majority3
- xor2
- xor3
- Bus
- Bus.and2
- Bus.case1
- Bus.delay
- Bus.majority3
- Bus.sub
- Bus.width
- Bus.wire
- Bus.xor2
- Bus.xor3
- Number
- Natural
- Number.Natural.+
- Number.Natural.bit0
- Number.Natural.bit1
- Number.Natural.zero
- Natural
Assumptions
⊦ ⊤
⊦ (∀) = λp. p = λx. ⊤