Documentation

MIPRE.Foundations.SAT.CircuitFieldCorrect

Correctness of the executable circuit polynomial evaluator #

Routing history at a prefix of the actual circuit.

Equations
Instances For
    theorem MIPRE.SAT.Circuit.readInput_fieldHistory (C : Circuit) (p : Cost.BitStr) (x w : List Cost.BitStr) (k i : ℕ) :
    readInput (p, x, w, C.fieldHistory w k) i = Sum.elim (fun (j : ℕ) => x.getD j []) (fun (j : ℕ) => w.getD j []) (C.inputRef k i)
    theorem MIPRE.SAT.Circuit.width_getD (p : Cost.BitStr) (l : List Cost.BitStr) (h : ∀ b ∈ l, List.length b = List.length p) (i : ℕ) (hi : i < l.length) :
    theorem MIPRE.SAT.Circuit.gate_ref_width (C : Circuit) (hC : C.WellFormed) (p : Cost.BitStr) (w : List Cost.BitStr) (hwlen : C.size ≤ w.length) (hw : ∀ b ∈ w, List.length b = List.length p) (k : ℕ) (hk : k < C.size) (j : ℕ) :
    theorem MIPRE.SAT.Circuit.gate_input_width (C : Circuit) (hC : C.WellFormed) (p : Cost.BitStr) (x w : List Cost.BitStr) (hxlen : C.inputs ≤ x.length) (hwlen : C.size ≤ w.length) (hx : ∀ b ∈ x, List.length b = List.length p) (hw : ∀ b ∈ w, List.length b = List.length p) (k : ℕ) (hk : k < C.size) (i : ℕ) :
    theorem MIPRE.SAT.Circuit.evalBits_factorBits {F : Type u_1} [Field F] [CharP F 2] (C : Circuit) (hC : C.WellFormed) (z : F) (p : Cost.BitStr) (hp : p ≠ []) (hroot : z ^ List.length p = LowDegree.BinaryPolynomial.evalBits z p) (x w : List Cost.BitStr) (hxlen : C.inputs ≤ x.length) (hwlen : C.size ≤ w.length) (hx : ∀ b ∈ x, List.length b = List.length p) (hw : ∀ b ∈ w, List.length b = List.length p) (k : ℕ) (hk : k < C.size) :

    Each computed factor evaluates to the corresponding polynomial factor.

    theorem MIPRE.SAT.Circuit.evalBits_fieldPrefix {F : Type u_1} [Field F] [CharP F 2] (C : Circuit) (hC : C.WellFormed) (z : F) (p : Cost.BitStr) (hp : p ≠ []) (hroot : z ^ List.length p = LowDegree.BinaryPolynomial.evalBits z p) (x w : List Cost.BitStr) (hxlen : C.inputs ≤ x.length) (hwlen : C.size ≤ w.length) (hx : ∀ b ∈ x, List.length b = List.length p) (hw : ∀ b ∈ w, List.length b = List.length p) (k : ℕ) (hk : k ≤ C.size) :

    The accumulator is precisely the product of the factors already scanned.

    theorem MIPRE.SAT.Circuit.evalBits_circuitBits {F : Type u_1} [Field F] [CharP F 2] (C : Circuit) (hC : C.WellFormed) (z : F) (p : Cost.BitStr) (hp : p ≠ []) (hroot : z ^ List.length p = LowDegree.BinaryPolynomial.evalBits z p) (x w : List Cost.BitStr) (hxlen : C.inputs ≤ x.length) (hwlen : C.size ≤ w.length) (hx : ∀ b ∈ x, List.length b = List.length p) (hw : ∀ b ∈ w, List.length b = List.length p) :

    The executable coefficient-vector evaluator computes the complete routed circuit polynomial at every correctly sized field point.

    The evaluator always returns the supplied modulus width.

    theorem MIPRE.SAT.Circuit.evalBits_circuitBits_finite {F : Type u_1} [Field F] [CharP F 2] (C : Circuit) (hC : C.WellFormed) (z : F) (p : Cost.BitStr) (hp : p ≠ []) (hroot : z ^ List.length p = LowDegree.BinaryPolynomial.evalBits z p) (x w : List Cost.BitStr) (hxlen : x.length = C.inputs) (hwlen : w.length = C.size) (hx : ∀ b ∈ x, List.length b = List.length p) (hw : ∀ b ∈ w, List.length b = List.length p) :

    The same evaluator computes the polynomial on the exact finite coordinate set used by the PCP, with the inputs followed by the gate variables.