Documentation

MIPRE.Foundations.SAT.Arithmetization

Arithmetization of Boolean formulas #

The mathematical part of the paper's lem:formula-arithmetization: replace conjunction by multiplication, disjunction by 1 - (1 - f) * (1 - g), and negation by 1 - f. Each variable's degree is bounded by its occurrence count. The evaluator and its cost in an effective finite-field representation are separate.

def MIPRE.SAT.Fml.arith {F : Type u_1} {σ : Type u_2} [CommRing F] (ρ : ℕ → σ) :
Fml → MvPolynomial σ F

Arithmetize after assigning a polynomial variable to every input index.

Equations
Instances For
    def MIPRE.SAT.Fml.occurrences {σ : Type u_2} [DecidableEq σ] (ρ : ℕ → σ) (j : σ) :
    Fml → ℕ

    The occurrence count, including collisions in the variable assignment ρ.

    Equations
    Instances For
      theorem MIPRE.SAT.Fml.eval_arith {F : Type u_1} {σ : Type u_2} [CommRing F] (ρ : ℕ → σ) (f : Fml) (x : σ → Bool) :
      (MvPolynomial.eval fun (j : σ) => LowDegree.ofBool (x j)) (arith ρ f) = LowDegree.ofBool (eval (fun (i : ℕ) => x (ρ i)) f)

      On Boolean inputs, arithmetization agrees with the original formula.

      theorem MIPRE.SAT.Fml.degreeOf_arith_le {F : Type u_1} {σ : Type u_2} [CommRing F] [DecidableEq σ] [Nontrivial F] (ρ : ℕ → σ) (f : Fml) (j : σ) :

      The degree in each variable is at most its number of syntactic occurrences.