Reverse-substitution progress measures for constant-free arithmetic circuits #
This module preserves the original constant-free API as a compatibility layer
over Progress.General. The generic module contains the circuit-DAG
telescoping argument; here the named-constant alphabet is specialized to
PEmpty.
Keeping the specialization separate lets existing lower bounds continue to
construct the four-field constant-free Measure, while new developments may
use General.Measure and supply a local law for named constants.
The unique interpretation of an empty constant alphabet.
Instances For
Arithmetic interpretation on polynomials with no named constants.
Equations
Instances For
Formal polynomial computed by one constant-free arithmetic line.
Equations
Instances For
Eliminate the newest gate-variable by reverse substitution.
Equations
Instances For
Expand all formal gate-variables into input variables.
Equations
Instances For
Expanding a wire-variable recovers the polynomial on that wire.
The formal output variable of a single-output circuit.
Equations
Instances For
Polynomial obtained after eliminating every gate-variable.
Equations
Instances For
Reverse substitution agrees with ordinary circuit evaluation.
The constant-free progress-measure interface retained for compatibility.
- value (variableCount : ℕ) : MvPolynomial (Fin variableCount) ℕ → ℕ
Quantity assigned to polynomials over each finite variable set.
- variable_zero (variableCount : ℕ) (coordinate : Fin variableCount) : self.value variableCount (MvPolynomial.X coordinate) = 0
- add_substitution_le (variableCount : ℕ) (polynomial : MvPolynomial (Fin (variableCount + 1)) ℕ) (left right : Fin variableCount) : self.value variableCount ((MvPolynomial.bind₁ fun (i : Fin (variableCount + 1)) => Fin.lastCases (MvPolynomial.X left + MvPolynomial.X right) MvPolynomial.X i) polynomial) ≤ self.value (variableCount + 1) polynomial + operationCost Arithmetic.Op.add
- mul_substitution_le (variableCount : ℕ) (polynomial : MvPolynomial (Fin (variableCount + 1)) ℕ) (left right : Fin variableCount) : self.value variableCount ((MvPolynomial.bind₁ fun (i : Fin (variableCount + 1)) => Fin.lastCases (MvPolynomial.X left * MvPolynomial.X right) MvPolynomial.X i) polynomial) ≤ self.value (variableCount + 1) polynomial + operationCost Arithmetic.Op.mul
Instances For
Extend a constant-free measure across the empty constant alphabet.
Equations
Instances For
One reverse gate substitution obeys the local progress estimate.
Local estimates telescope across the circuit DAG.
The expanded output's measure is bounded by circuit cost.
Every constant-free arithmetic circuit computing target pays its
progress measure.