Documentation

MIPRE.TM.CookLevin.Assemble

Assembling the succinct Cook–Levin theorem #

MIPRE.SAT.succinctCookLevin inhabits SuccinctCookLevin, which is blueprint thm:succinct-sat. Everything mathematical is already proved; what is left is to discharge, from the validity hypotheses, the side conditions the describer's theorems carry at e = eOf T σ, and to name the two parameter functions.

Sizes of encodings #

The tableau is long enough #

theorem MIPRE.TM.CookLevin.Desc.two_pow_le_Sof (T σ k : ℕ) (h : k ≤ eOf T σ) :
2 ^ k ≤ Sof (eOf T σ)
theorem MIPRE.TM.CookLevin.Desc.T_add_three_lt (T σ : ℕ) :
T + 3 < 2 ^ W (eOf T σ)
theorem MIPRE.TM.CookLevin.Desc.fixedLen_of_valid (D : Cost.Prog) (n T Q σ : ℕ) (x y : Cost.BitStr) (hV : SAT.Valid D n T Q σ x y) :
FixedLen (eOf T σ) D n T x y

The five fixed input tapes are shorter than the tableau.

theorem MIPRE.TM.CookLevin.Desc.four_T_le_m (T σ : ℕ) :
4 * T ≤ 2 ^ mOf (eOf T σ) Gc

An answer index is below 2 ^ m.

The describer in the order the structure asks for #

((𝒟, n, T, Q, σ), x, y) reordered to ((T, σ), (𝒟, n), (x, y)).

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    @[simp]
    theorem MIPRE.TM.CookLevin.Desc.toPInp_apply (inp : SAT.DescInput) :
    toPInp.toFun inp = ((inp.1.2.2.1, inp.1.2.2.2.2), (inp.1.1, inp.1.2.1), inp.2.1, inp.2.2)
    theorem MIPRE.TM.CookLevin.Desc.describeCirc_apply (D : Cost.Prog) (n T Q σ : ℕ) (x y : Cost.BitStr) :
    describeCirc.toFun ((D, n, T, Q, σ), x, y) = descCirc (eOf T σ) T D n x y

    The size of the describer's input #

    The parameter the gate bound is a polynomial in.

    Equations
    Instances For
      theorem MIPRE.TM.CookLevin.Desc.esize_toPInp_le (D : Cost.Prog) (n T Q σ : ℕ) (x y : Cost.BitStr) (hV : SAT.Valid D n T Q σ x y) :
      Cost.esize (toPInp.toFun ((D, n, T, Q, σ), x, y)) ≤ 21 * LOf n T Q σ + 10

      The two parameter functions #

      noncomputable def MIPRE.TM.CookLevin.Desc.mParam (T σ : ℕ) :

      The variable-count exponent m(T, σ).

      Equations
      Instances For
        theorem MIPRE.TM.CookLevin.Desc.mParam_eq (T σ : ℕ) :
        mParam T σ = 431 + Qb + Gb Gc + 75 * T.size + 75 * σ.size
        theorem MIPRE.TM.CookLevin.Desc.mParam_le (T σ : ℕ) :
        mParam T σ ≤ (431 + Qb + Gb Gc + 75) * (T.size + σ.size + 1)

        The bit lengths of the parameters: the exponent of the gate bound is a multiple of this, which is why the bound is computable without any arithmetic on numbers.

        Equations
        Instances For

          Rounding a polynomial bound up to a power of two #

          Item 5 asks for the gate bound to be computable in time polynomial in the bit lengths of the parameters, while item 3 lets it grow polynomially in Q and σ themselves. So the bound is a number of about log Q + log σ bits that depends polynomially on Q, and computing it looks as though it needs binary multiplication, which the ambient model does not have. roundUp P is the way out: a power of two whose exponent is a multiple of rParam, so that the exponent is unary and the value is pow2P on it. It is squeezed between P and a polynomial, which is le_roundUp and roundUp_le.

          The degree of a polynomial bound.

          Equations
          Instances For

            The coefficient sum of a polynomial bound.

            Equations
            Instances For

              The additive constant of the rounded bound.

              Equations
              Instances For
                noncomputable def MIPRE.TM.CookLevin.Desc.roundUp (P : Polynomial ℕ) (n T Q σ : ℕ) :

                A polynomial bound, rounded up to a power of two whose exponent is a multiple of the bit lengths of the parameters.

                Equations
                Instances For
                  theorem MIPRE.TM.CookLevin.Desc.L_lt (n T Q σ : ℕ) :
                  LOf n T Q σ + 1 ≤ 5 * 2 ^ rParam n T Q σ
                  theorem MIPRE.TM.CookLevin.Desc.le_roundUp (P : Polynomial ℕ) (n T Q σ : ℕ) :
                  Polynomial.eval (LOf n T Q σ) P ≤ roundUp P n T Q σ

                  The rounded bound dominates the polynomial.

                  theorem MIPRE.TM.CookLevin.Desc.two_pow_rParam_le (n T Q σ : ℕ) :
                  2 ^ rParam n T Q σ ≤ (2 * LOf n T Q σ + 1) ^ 4
                  theorem MIPRE.TM.CookLevin.Desc.roundUp_le (P : Polynomial ℕ) (n T Q σ : ℕ) :
                  roundUp P n T Q σ ≤ Polynomial.eval (LOf n T Q σ) (roundPoly P)

                  The rounded bound is still polynomial.

                  The gate bound of the describer #

                  The time bound of the describer at a linear majorant of the size of its input.

                  Equations
                  Instances For
                    noncomputable def MIPRE.TM.CookLevin.Desc.sParam (n T Q σ : ℕ) :

                    The gate bound s(n, T, Q, σ), rounded up to a power of two.

                    Equations
                    Instances For
                      theorem MIPRE.TM.CookLevin.Desc.describeCirc_size_le (D : Cost.Prog) (n T Q σ : ℕ) (x y : Cost.BitStr) (hV : SAT.Valid D n T Q σ x y) :
                      (describeCirc.toFun ((D, n, T, Q, σ), x, y)).size ≤ sParam n T Q σ

                      The describer has at most s gates (item 3).

                      The parameters as programs (item 5) #

                      rParam, in unary.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        @[simp]
                        theorem MIPRE.TM.CookLevin.Desc.length_rProg (p : ℕ × ℕ × ℕ × ℕ) :
                        List.length (rProg.toFun p) = rParam p.1 p.2.1 p.2.2.1 p.2.2.2

                        A rounded bound, as a program: a power of two whose exponent is unary, so no arithmetic on numbers is needed.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          theorem MIPRE.TM.CookLevin.Desc.roundUpProg_apply (P : Polynomial ℕ) (p : ℕ × ℕ × ℕ × ℕ) :
                          (roundUpProg P).toFun p = roundUp P p.1 p.2.1 p.2.2.1 p.2.2.2
                          theorem MIPRE.TM.CookLevin.Desc.sProg_apply (p : ℕ × ℕ × ℕ × ℕ) :
                          sProg.toFun p = sParam p.1 p.2.1 p.2.2.1 p.2.2.2

                          The succinct Cook–Levin theorem (blueprint thm:succinct-sat; the paper's prop:standard-succinct-sat): the structure is inhabited.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For