Documentation

Complexity.Computability.Kolmogorov.MINKT

The Time-Bounded Kolmogorov Complexity Problem (MINKT) #

This module defines the time-bounded Kolmogorov complexity decision problem Cslib.Kolmogorov.MINKT and its fixed-parameter counterpart Cslib.Kolmogorov.MINKTAt, proves that MINKT lies in NP (and that MINKTAt t s lies in NP whenever t and s are computable in polynomial time in unary), and defines Hirahara's promise problem Cslib.Kolmogorov.GapMINKT.

Threshold conventions #

Both standard formulations of the time-bounded Kolmogorov complexity decision problem are provided and bridged:

Main definitions #

Main results #

References #

An instance of MINKT: a target binary string string, a step bound time, and a program size threshold size (Ko; Hirahara, Definition 9).

  • string : List Bool

    The target binary string x.

  • time : ℕ

    The step bound t for the described multi-tape machine.

  • size : ℕ

    The maximum allowed program length s.

Instances For
    Instances For

      The Minimum Time-Bounded Kolmogorov Complexity Problem (MINKT) (Ko; Hirahara, Definition 9): the set of instances (x, t, s) such that some binary program of length at most s outputs x within t steps under universalTM.

      Instances For

        Standard encoding of MINKT.Instance: the string x, followed by 1^time and 1^size in unary (Ko; Hirahara, Definition 9).

        Instances For

          The unary size parameter i.size is at most the encoded instance length (enc i).length.

          The unary time parameter i.time is at most the encoded instance length (enc i).length.

          The target string length i.string.length is at most the encoded instance length (enc i).length.

          An instance i belongs to MINKT iff timeBoundedAt i.time i.string ≤ i.size.

          @[simp]
          theorem Cslib.Kolmogorov.MINKT.mk_mem_iff {x : List Bool} {t s : ℕ} :
          { string := x, time := t, size := s } ∈ MINKT ↔ timeBoundedAt t x ≤ ↑s

          ⟨x, t, s⟩ ∈ MINKT iff timeBoundedAt t x ≤ s.

          An instance i belongs to MINKT iff some program of length at most i.size outputs i.string within i.time steps.

          An instance i belongs to MINKT iff universalTMRunFor p i.time = some i.string for some program p of length at most i.size.

          theorem Cslib.Kolmogorov.MINKT.mem_of_size_le {x : List Bool} {t s₁ s₂ : ℕ} (h : { string := x, time := t, size := s₁ } ∈ MINKT) (hs : s₁ ≤ s₂) :
          { string := x, time := t, size := s₂ } ∈ MINKT

          Monotonicity of MINKT in the size threshold s.

          theorem Cslib.Kolmogorov.MINKT.mem_of_time_le {x : List Bool} {t₁ t₂ s : ℕ} (h : { string := x, time := t₁, size := s } ∈ MINKT) (ht : t₁ ≤ t₂) :
          { string := x, time := t₂, size := s } ∈ MINKT

          Monotonicity of MINKT in the time budget t.

          Polynomial-time projections, constructors, and NP membership for MINKT #

          The witness check for MINKT: given an instance i and a candidate program p, checks that p.length ≤ i.size and that universalTMRunFor p i.time outputs some i.string.

          Instances For

            check (i, p) = true iff p.length ≤ i.size and p outputs i.string within i.time steps.

            MINKT is in NP (Ko; Hirahara): a witness for (x, 1^t, 1^s) is a binary program p of length at most s ≤ |(x, 1^t, 1^s)|, verified in polynomial time by running the universal simulator for t steps (check).

            Fixed-threshold formulation (MINKTAt) #

            Fixed-threshold MINKT (MINKTAt t s, Liu and Pass, Section 2.2): the language of binary strings x with timeBounded t x ≤ s x.length.

            Instances For
              theorem Cslib.Kolmogorov.mem_MINKTAt_iff {t s : ℕ → ℕ} {x : List Bool} :
              x ∈ MINKTAt t s ↔ timeBounded t x ≤ ↑(s x.length)

              A string x belongs to MINKTAt t s iff timeBounded t x ≤ s x.length.

              @[simp]
              theorem Cslib.Kolmogorov.mem_MINKTAt_iff_mem_MINKT {t s : ℕ → ℕ} {x : List Bool} :
              x ∈ MINKTAt t s ↔ { string := x, time := t x.length, size := s x.length } ∈ MINKT

              A string x belongs to the fixed-threshold language MINKTAt t s if and only if the instance ⟨x, t x.length, s x.length⟩ belongs to MINKT.

              A string x belongs to MINKTAt t s iff some program of length at most s x.length outputs x within t x.length steps.

              Whenever timeBounded t x ≠ ⊤ (in particular, whenever t x.length ≥ x.length + 1), membership in MINKTAt t s is equivalent to the ℕ-valued inequality timeBoundedNat t x ≤ s x.length.

              Embeds a string x into MINKT.Instance using the threshold functions t and s at |x|.

              Instances For
                @[simp]

                toInstance t s x ∈ MINKT iff x ∈ MINKTAt t s.

                For any polynomial time bound t = p.eval and unary polynomial-time size threshold s (as in MINKt[s] of Liu and Pass, Section 2.2), MINKTAt p.eval s ∈ NP encBits.

                When both the time bound p.eval and size threshold q.eval are polynomials, MINKTAt p.eval q.eval ∈ NP encBits.

                Hirahara's promise problem GapMINKT #

                The yes-instances of GapMINKT: instances (x, t, s) with $K^t(x) \le s$ (Hirahara, Definition 11).

                Instances For

                  The raw no-instances of GapMINKT[σ, τ]: instances (x, t, s) with $K^{\tau(|x|, t)}(x) > \sigma(|x|, s)$ (Hirahara, Definition 11).

                  Instances For

                    i ∈ GapMINKT.noSet σ τ iff σ |i.string| i.size < timeBoundedAt (τ |i.string| i.time) i.string.

                    theorem Cslib.Kolmogorov.GapMINKT.disjoint_yesSet_noSet {σ τ : ℕ → ℕ → ℕ} (hσ : ∀ (n s : ℕ), s ≤ σ n s) (hτ : ∀ (n t : ℕ), t ≤ τ n t) :

                    When $\sigma(n, s) \ge s$ and $\tau(n, t) \ge t$ (as required in Hirahara, Definition 11), GapMINKT.yesSet and GapMINKT.noSet σ τ are disjoint.

                    theorem Cslib.Kolmogorov.GapMINKT.noSet_id_eq_compl :
                    (noSet (fun (x s : ℕ) => s) fun (x t : ℕ) => t) = MINKTᶜ

                    With trivial gap functions σ n s = s and τ n t = t, GapMINKT.noSet is the complement of MINKT.

                    def Cslib.Kolmogorov.GapMINKT (σ τ : ℕ → ℕ → ℕ) (hσ : ∀ (n s : ℕ), s ≤ σ n s) (hτ : ∀ (n t : ℕ), t ≤ τ n t) :

                    Hirahara's GapMINKT promise problem (Hirahara, Definition 11): the promise problem whose yes-instances are MINKT, and whose no-instances are GapMINKT.noSet σ τ, when s ≤ σ n s and t ≤ τ n t. Following Hirahara, the gap hypotheses hσ and hτ are bundled to ensure disjointness of yes- and no-instances by construction.

                    Instances For
                      @[simp]
                      theorem Cslib.Kolmogorov.GapMINKT.yes_eq {σ τ : ℕ → ℕ → ℕ} (hσ : ∀ (n s : ℕ), s ≤ σ n s) (hτ : ∀ (n t : ℕ), t ≤ τ n t) :
                      (GapMINKT σ τ hσ hτ).yes = MINKT

                      The yes-set of GapMINKT σ τ hσ hτ is MINKT.

                      @[simp]
                      theorem Cslib.Kolmogorov.GapMINKT.no_eq {σ τ : ℕ → ℕ → ℕ} (hσ : ∀ (n s : ℕ), s ≤ σ n s) (hτ : ∀ (n t : ℕ), t ≤ τ n t) :
                      (GapMINKT σ τ hσ hτ).no = noSet σ τ

                      The no-instances of GapMINKT σ τ hσ hτ are GapMINKT.noSet σ τ.

                      @[simp]
                      theorem Cslib.Kolmogorov.GapMINKT.id_eq :
                      GapMINKT (fun (x s : ℕ) => s) (fun (x t : ℕ) => t) ⋯ ⋯ = Complexity.PromiseProblem.ofSet MINKT

                      With no gap (σ n s = s and τ n t = t), GapMINKT is the decision problem MINKT viewed as a promise problem (PromiseProblem.ofSet MINKT).