Executable multilinear indicator weights #
A full Pauli outcome is evaluated by weighting each field entry by its Boolean
cube indicator. This module supplies the uniform weight program, including its
exact connection to LowDegree.indVec. No field values or cube points are
tabulated by the program: it scans the supplied coordinate/bit pairs.
theorem
MIPRE.Introspection.FieldIndicatorProgram.shoupArithmeticFold_mul_correct
(k : ℕ)
(hk : 1 ≤ k)
(values : List (SAT.shoupBinField k hk).carrier)
(a : (SAT.shoupBinField k hk).carrier)
:
LowDegree.BinaryPolynomial.arithmeticFold true (LowDegree.BinaryPolynomial.shoupLowerCoeffs.toFun (Cost.unary k))
((SAT.shoupBinField k hk).toBits a) (List.map (SAT.shoupBinField k hk).toBits values) = (SAT.shoupBinField k hk).toBits (a * values.prod)
Modular multiplication of canonical field rows computes their product.
x for a true cube coordinate, and 1-x for a false coordinate.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.Introspection.FieldIndicatorProgram.factorProg_correct
(k : ℕ)
(hk : 1 ≤ k)
(x : (SAT.shoupBinField k hk).carrier)
(b : Bool)
:
The field modulus is computed once for the entire coordinate product.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.Introspection.FieldIndicatorProgram.indicatorProg_correct
(k : ℕ)
(hk : 1 ≤ k)
(coords : List ((SAT.shoupBinField k hk).carrier × Bool))
:
theorem
MIPRE.Introspection.FieldIndicatorProgram.indicatorProg_indVec
(k : ℕ)
(hk : 1 ≤ k)
{m : ℕ}
(x : Fin m → (SAT.shoupBinField k hk).carrier)
(y : Fin m → Bool)
:
indicatorProg.toFun (Cost.unary k, List.ofFn fun (i : Fin m) => ((SAT.shoupBinField k hk).toBits (x i), y i)) = (SAT.shoupBinField k hk).toBits (LowDegree.indVec x y)
Exact indicator semantics at an arbitrary field point, not only on the cube.