Bounded-failure arithmetic fusion #
For multiplicative-complexity lower bounds, additions and constants are free. Consequently an arithmetic fusion model only needs three local facts:
- addition preserves every witness;
- each named constant preserves every witness;
- a multiplication fails on at most a bounded number of witnesses.
FailureRules packages exactly this interface and compiles it to the generic
finite-witness counting framework. Concrete applications can use degree
thresholds, derivative directions, rank increments, monomial cuts, or other
observations without rebuilding the cover-counting proof.
Local arithmetic rules sufficient for a bounded-failure fusion argument.
- capacity : ℕ
Maximum number of witnesses destroyed by one multiplication.
- add_preserved (arguments : Fin 2 → R) (witness : model.Witness) : { op := Arithmetic.Op.add, arguments := arguments }.PreservedBy model witness
Free additions must preserve every witness.
- constant_preserved (scalar : K) (arguments : Fin (Arithmetic.arity (Arithmetic.Op.constant scalar)) → R) (witness : model.Witness) : { op := Arithmetic.Op.constant scalar, arguments := arguments }.PreservedBy model witness
Free constants must preserve every witness.
- mul_failure_card_le (arguments : Fin 2 → R) : ({ op := Arithmetic.Op.mul, arguments := arguments }.failures model).card ≤ self.capacity
The local combinatorial estimate charged to one multiplication.
Instances For
Arithmetic local rules compile to a generic weighted failure bound.
Equations
- rules.failureBound = { capacity := rules.capacity, failure_card_le := ⋯ }
Instances For
A positive arithmetic failure capacity lower-bounds every fusion cover.
The bounded-failure arithmetic argument transferred to a circuit.