Documentation

Complexity.Computability.Circuit.Boolean.Iteration.CounterChart.Circuit

Native Boolean circuits for sparse orbit charts #

Constants are supplied by the caller and charged once there. Both chart directions use linear arithmetic per interval and a shared-flag selector. No exponent-dependent circuit is duplicated across the interval table.

Main definitions #

Main results #

References #

theorem Cslib.Circuits.Boolean.Iteration.CounterIntervalChart.synthesis_encode {n R a : ℕ} {f : BitVec n → BitVec n} (chart : CounterIntervalChart f R) (s : Set (BitString a → Bool)) (x : BitString a → BitVec n) (hx : wordWires x ⊆ s) (hc : ∀ (b : Bool), (fun (x : BitString a) => b) ∈ s) :
Synthesis interpretation s (wires fun (z : BitString a) => chart.encode (x z)) (R * (220 * (n + 3)))
theorem Cslib.Circuits.Boolean.Iteration.CounterIntervalChart.synthesis_decode {n R a : ℕ} {f : BitVec n → BitVec n} (chart : CounterIntervalChart f R) (s : Set (BitString a → Bool)) (rep : BitString a → BitVec n) (p : BitString a → BitVec (chartWidth n)) (hr : wordWires rep ⊆ s) (hp : wordWires p ⊆ s) (hc : ∀ (b : Bool), (fun (x : BitString a) => b) ∈ s) :
Synthesis interpretation s (wires fun (z : BitString a) => chart.decode (rep z) (p z)) (R * (150 * (n + 3)))