Documentation

MIPRE.TM.CookLevin.DecoupledProg

The decoupled describer as a program, and ℓ₀ #

ℓ₀ = ⌈log 2T⌉ is pinned by its specification, 2T ≤ 2^{ℓ₀} < 4T for T ≥ 1, so it cannot be replaced by the cheaper Nat.size T + 1, which is right except at powers of two, where it gives 4T and violates the strict bound. Written with Nat.size it is one more than ⌈log T⌉ unless T is a power of two, and that shows on the bits of T as every bit but the top one being zero — which is a fold, so ℓ₀ is a program (planning/decoupled-5sat.md, A1e).

ℓ₀, the index length of the answer blocks #

⌈log 2T⌉, read off the bits of T.

Equations
Instances For
    theorem MIPRE.TM.CookLevin.Desc.lOf_spec (T : ℕ) (hT : 1 ≤ T) :
    2 * T ≤ 2 ^ lOf T ∧ 2 ^ lOf T < 4 * T

    ℓ₀ is the ceiling of the logarithm of 2T.

    ℓ₀ as a program #

    theorem MIPRE.TM.CookLevin.Desc.foldl_or_eq_any (l : Cost.BitStr) (s : Bool) :
    List.foldl (fun (x a : Bool) => x || a) s l = (s || List.any l id)

    Whether a bit string has a set bit.

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

      Dropping the last entry of a list.

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

        ℓ₀, in unary.

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

          Padding a field, as a program #

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

            The k-th of the five signs.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem MIPRE.TM.CookLevin.Desc.sgR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu lu : Cost.PolyTimeFun ι Cost.Unary) (k : ℕ) (i : ι) :
              (sgR eu lu k).toFun i = SAT.Fml.inp (sgOff (List.length (lu.toFun i)) (mOf (List.length (eu.toFun i)) Gc) + k)

              The two answer indices, zero-padded, and the three auxiliary indices.

              Equations
              Instances For
                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[simp]
                    theorem MIPRE.TM.CookLevin.Desc.jR₁_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu lu : Cost.PolyTimeFun ι Cost.Unary) (i : ι) :
                    (jR₁ eu lu).toFun i = j₁F (List.length (lu.toFun i)) (mOf (List.length (eu.toFun i)) Gc)
                    @[simp]
                    theorem MIPRE.TM.CookLevin.Desc.jR₂_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu lu : Cost.PolyTimeFun ι Cost.Unary) (i : ι) :
                    (jR₂ eu lu).toFun i = j₂F (List.length (lu.toFun i)) (mOf (List.length (eu.toFun i)) Gc)
                    @[simp]
                    theorem MIPRE.TM.CookLevin.Desc.jR₃_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu lu : Cost.PolyTimeFun ι Cost.Unary) (i : ι) :
                    (jR₃ eu lu).toFun i = j₃F (List.length (lu.toFun i)) (mOf (List.length (eu.toFun i)) Gc)
                    @[simp]
                    theorem MIPRE.TM.CookLevin.Desc.jR₄_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu lu : Cost.PolyTimeFun ι Cost.Unary) (i : ι) :
                    (jR₄ eu lu).toFun i = j₄F (List.length (lu.toFun i)) (mOf (List.length (eu.toFun i)) Gc)
                    @[simp]
                    theorem MIPRE.TM.CookLevin.Desc.jR₅_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu lu : Cost.PolyTimeFun ι Cost.Unary) (i : ι) :
                    (jR₅ eu lu).toFun i = j₅F (List.length (lu.toFun i)) (mOf (List.length (eu.toFun i)) Gc)
                    @[simp]
                    theorem MIPRE.TM.CookLevin.Desc.twoTR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (TR : Cost.PolyTimeFun ι ℕ) (i : ι) :
                    (twoTR eu TR).toFun i = nbits (mOf (List.length (eu.toFun i)) Gc) (2 * TR.toFun i)

                    xor of two readers.

                    Equations
                    Instances For
                      @[simp]
                      theorem MIPRE.TM.CookLevin.Desc.xorR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (f g : Cost.PolyTimeFun ι SAT.Fml) (i : ι) :
                      (xorR f g).toFun i = (f.toFun i).xor (g.toFun i)

                      linkFml.

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

                        The candidate and the whole formula #

                        candOf5.

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

                          descFml5.

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

                            The describer in the structure's argument order #

                            @[simp]
                            @[simp]
                            theorem MIPRE.TM.CookLevin.Desc.length_dEu (p : SAT.DescInput) :
                            List.length (dEu.toFun p) = eOf p.1.2.2.1 p.1.2.2.2.2

                            The decoupled describer, as a program (item 4 of lem:decoupled-5sat).

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              theorem MIPRE.TM.CookLevin.Desc.describe5P_apply (p : SAT.DescInput) :
                              describe5P.toFun p = descCirc5 (lOf p.1.2.2.1) p.1.2.2.1 (eOf p.1.2.2.1 p.1.2.2.2.2) p.1.1 p.1.2.1 p.2.1 p.2.2

                              The gate bound #

                              theorem MIPRE.TM.CookLevin.Desc.esize_descInput_le (D : Cost.Prog) (n T Q σ : ℕ) (x y : Cost.BitStr) (hV : SAT.Valid D n T Q σ x y) :
                              Cost.esize ((D, n, T, Q, σ), x, y) ≤ 25 * LOf n T Q σ + 12

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

                              Equations
                              Instances For
                                theorem MIPRE.TM.CookLevin.Desc.describe5P_size_le (D : Cost.Prog) (n T Q σ : ℕ) (x y : Cost.BitStr) (hV : SAT.Valid D n T Q σ x y) :

                                The decoupled describer is small (item 3 of lem:decoupled-5sat).

                                The parameters as programs #

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

                                  Explicit succinct decoupled descriptions of deciders (blueprint lem:decoupled-5sat; the paper's prop:explicit-succinct-deciders): the structure is inhabited.

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