Package hardware-counter-def: Definition of hardware counter devices
Information
| name | hardware-counter-def |
| version | 1.9 |
| description | Definition of hardware counter devices |
| author | Joe Leslie-Hurd <joe@gilith.com> |
| license | MIT |
| provenance | HOL Light theory extracted on 2014-10-30 |
| checksum | 1759fc1fbc6d05b8ba6ecd4b6cd8aa4689d773da |
| requires | bool hardware-adder hardware-bus hardware-wire natural |
| show | Data.Bool Hardware Number.Natural |
Files
- Package tarball hardware-counter-def-1.9.tgz
- Theory source file hardware-counter-def.thy (included in the package tarball)
Defined Constants
- Hardware
- counter
- counterPulse
- eventCounter
- pipe
- Bus
- Bus.pipe
Theorems
⊦ ∀ld nb dn. counterPulse ld nb dn ⇔ ∃ds. counter ld nb ds ∧ pulse ds dn
⊦ ∀w d wd.
pipe w d wd ⇔
∃x x0.
Bus.width x = d + 1 ∧ Bus.wire x d x0 ∧ Bus.pipe w x ∧ connect x0 wd
⊦ ∀w x.
Bus.pipe w x ⇔
∃r xp x0 x1 x2.
Bus.width x = r + 1 ∧ Bus.width xp = r ∧ Bus.wire x 0 x0 ∧
Bus.sub x 0 r x1 ∧ Bus.sub x 1 r x2 ∧ connect w x0 ∧
Bus.connect xp x2 ∧ Bus.delay x1 xp
⊦ ∀ld nb dn.
counter ld nb dn ⇔
∃r sp cp sq cq sr cr dp dq dr nb0 nb1 cp0 cp1 cp2 cq0 cq1 cr0 cr1.
Bus.width nb = r + 1 ∧ Bus.width sp = r ∧ Bus.width cp = r + 1 ∧
Bus.width sq = r ∧ Bus.width cq = r + 1 ∧ Bus.width sr = r ∧
Bus.width cr = r + 1 ∧ Bus.wire nb 0 nb0 ∧ Bus.sub nb 1 r nb1 ∧
Bus.wire cp 0 cp0 ∧ Bus.sub cp 0 r cp1 ∧ Bus.wire cp r cp2 ∧
Bus.wire cq 0 cq0 ∧ Bus.sub cq 1 r cq1 ∧ Bus.wire cr 0 cr0 ∧
Bus.sub cr 1 r cr1 ∧ not cp0 cq0 ∧ Bus.adder2 sp cp1 sq cq1 ∧
or2 dp cp2 dq ∧ Bus.case1 ld nb1 sq sr ∧ case1 ld nb0 cq0 cr0 ∧
Bus.case1 ld (Bus.ground r) cq1 cr1 ∧ case1 ld ground dq dr ∧
connect dr dn ∧ Bus.delay sr sp ∧ Bus.delay cr cp ∧ delay dr dp
⊦ ∀ld nb inc dn.
eventCounter ld nb inc dn ⇔
∃r sp cp sq cq sr cr dp dq dr sp0 sp1 cp0 cp1 cp2 sq0 sq1 cq0 cq1.
Bus.width nb = r + 1 ∧ Bus.width sp = r + 1 ∧ Bus.width cp = r + 1 ∧
Bus.width sq = r + 1 ∧ Bus.width cq = r + 1 ∧ Bus.width sr = r + 1 ∧
Bus.width cr = r + 1 ∧ Bus.wire sp 0 sp0 ∧ Bus.sub sp 1 r sp1 ∧
Bus.wire sq 0 sq0 ∧ Bus.sub sq 1 r sq1 ∧ Bus.wire cp 0 cp0 ∧
Bus.sub cp 0 r cp1 ∧ Bus.wire cp r cp2 ∧ Bus.wire cq 0 cq0 ∧
Bus.sub cq 1 r cq1 ∧ xor2 inc sp0 sq0 ∧ and2 inc sp0 cq0 ∧
Bus.adder2 sp1 cp1 sq1 cq1 ∧ or2 dp cp2 dq ∧ Bus.case1 ld nb sq sr ∧
Bus.case1 ld (Bus.ground (r + 1)) cq cr ∧ case1 ld ground dq dr ∧
connect dr dn ∧ Bus.delay sr sp ∧ Bus.delay cr cp ∧ delay dr dp
External Type Operators
- →
- bool
- Hardware
- bus
- wire
- Number
- Natural
- natural
- Natural
External Constants
- =
- Data
- Bool
- ∀
- ∧
- ∃
- ⊤
- Bool
- Hardware
- and2
- case1
- connect
- delay
- ground
- not
- or2
- pulse
- xor2
- Bus
- Bus.adder2
- Bus.case1
- Bus.connect
- Bus.delay
- Bus.ground
- Bus.sub
- Bus.width
- Bus.wire
- Number
- Natural
- +
- bit1
- zero
- Natural
Assumptions
⊦ ⊤
⊦ (∀) = λp. p = λx. ⊤