Documentation

MIPRE.TM.CookLevin.DescProg

The describer as a program #

descCircP is the describer circuit as a polynomial-time function of ((e in unary, T), (𝒟, n), (x, y)), and descCircP_apply says it is descCirc. This is item 4 of thm:succinct-sat; item 3, the gate bound, follows from it, because PolyTimeFun.esize_apply_le bounds the size of the output of a program by its time bound (planning/succinct-cook-levin.md, S3).

The candidate of the describer #

The sign at the offset 3 m + k.

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

    candOf: the three field records at the bases 0, m and 2 m, and the three signs.

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

      The fixed tapes #

      The symbol codes of the serialization of a value.

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

        tabsOf: the value formulas of the five fixed tapes.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          theorem MIPRE.TM.CookLevin.Desc.tabsR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (TR : Cost.PolyTimeFun ι ℕ) (b : Cost.PolyTimeFun ι Cost.Unary) (DR : Cost.PolyTimeFun ι Cost.Prog) (nR : Cost.PolyTimeFun ι ℕ) (xR yR : Cost.PolyTimeFun ι Cost.BitStr) (i : ι) :
          (tabsR eu TR b DR nR xR yR).toFun i = tabsOf (List.length (eu.toFun i)) (TR.toFun i) (DR.toFun i) (nR.toFun i) (xR.toFun i) (yR.toFun i) (litFields (List.length (eu.toFun i)) Gc (TR.toFun i) (List.length (b.toFun i)))

          The describer #

          @[reducible, inline]

          The input of the describer: e in unary and the time bound, the decider and the index, the two questions.

          Equations
          Instances For
            @[simp]
            @[simp]
            @[simp]
            @[simp]
            @[simp]
            @[simp]

            descFml, as a program.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem MIPRE.TM.CookLevin.Desc.descFmlP_apply (p : DInp) :
              descFmlP.toFun p = descFml (List.length p.1.1) p.1.2 p.2.1.1 p.2.1.2 p.2.2.1 p.2.2.2

              The describer circuit, as a program (item 4 of thm:succinct-sat): the flattening of descFml on 3 m + 3 inputs.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                theorem MIPRE.TM.CookLevin.Desc.descCircP_apply (p : DInp) :
                descCircP.toFun p = descCirc (List.length p.1.1) p.1.2 p.2.1.1 p.2.1.2 p.2.2.1 p.2.2.2

                The gate bound (item 3) #

                Item 3 needs no separate induction over the builders: a program's output is no larger than its running time (PolyTimeFun.esize_apply_le), and a circuit's gate count is at most the size of its encoding, so the gate bound of the describer is the time bound of the program that writes it, which is an explicit polynomial.

                The width e and the index width (item 5) #

                eOf, in unary: it is affine in Nat.size T and Nat.size σ.

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

                  The index width m, as a program: it is affine in e, so it is an append in unary.

                  Equations
                  Instances For

                    The describer in the theorem's own parameters #

                    @[reducible, inline]

                    The input of the theorem's algorithm: the time bound and the size bound, the decider and the index, the two questions. e is computed from T and σ.

                    Equations
                    Instances For

                      The describer, in the theorem's own parameters.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        theorem MIPRE.TM.CookLevin.Desc.describeP_apply (p : PInp) :
                        describeP.toFun p = descCirc (eOf p.1.1 p.1.2) p.1.1 p.2.1.1 p.2.1.2 p.2.2.1 p.2.2.2

                        The gate-count bound of the describer, in the theorem's own parameters.

                        Equations
                        Instances For