Documentation

Complexity.Computability.Kolmogorov.MKtP

The Minimum Kt Problem (MKtP) and GapMKtP #

This module develops the decision and promise problems associated with Levin's time-bounded Kolmogorov complexity Cslib.Kolmogorov.levinKt ($\mathrm{Kt}$):

Main definitions #

Main results #

References #

Exponential-step witness characterization and optimal witnesses for levinKt #

Exponential-step characterization of levinKt. $\mathrm{Kt}(x) \le k$ iff some binary program $p$ of length at most $k$ outputs $x$ within $2^{k - |p|}$ steps under universalTM.

ℕ-valued exponential-step characterization of levinKtNat.

Every string x admits an optimal Kt-witness (p, s) with 0 < s, x ∈ (universalTM.run p).runFor s, and p.length + Nat.clog 2 s = levinKtNat x.

Every string x admits an optimal Kt-witness (p, s) in ℕ∞ with 0 < s, x ∈ (universalTM.run p).runFor s, and (p.length + Nat.clog 2 s : ℕ) = levinKt x.

theorem Cslib.Kolmogorov.plain_lt_of_levinKtNat_witness_two_pow_lt {x p : List Bool} {s m : ℕ} (hm : m ≤ x.length) (hp : x ∈ (DescriptionMethod.universalTM.run p).runFor s) (hopt : p.length + Nat.clog 2 s ≤ levinKtNat x) (hs : 2 ^ (copyOverhead + Nat.clog 2 (x.length + 1) + m) < s) :
plain x < ↑(x.length - m)

Liu and Pass, Section 3.1, Fact 3.1, p. 10: If $(p, s)$ outputs $x$ within $s$ steps with $|p| + \lceil \log_2 s \rceil \le \mathrm{Kt}(x)$, and $s > 2^{\mathrm{copyOverhead} + \lceil \log_2(|x| + 1) \rceil + m}$ (with $m \le |x|$), then the plain Kolmogorov complexity of $x$ satisfies $K(x) < |x| - m$. The extra $\lceil \log_2(|x| + 1) \rceil$ term in the exponent (relative to Liu–Pass's $2^c / \varepsilon$ from Fact 2.1, $\mathrm{Kt}(x) \le |x| + c$) comes from levinKt_le_length_add ($\mathrm{Kt}(x) \le |x| + \mathrm{copyOverhead} + \lceil \log_2(|x| + 1) \rceil$).

Liu and Pass, Section 3.1, Fact 3.1, p. 10: For $m \le n$, fewer than $2^{n - m}$ strings $x \in \{0, 1\}^n$ have the property that every optimal $\mathrm{Kt}$-witness $(p, s)$ for $x$ runs for more than $2^{\mathrm{copyOverhead} + \lceil \log_2(n + 1) \rceil + m}$ steps (with the extra $\lceil \log_2(n + 1) \rceil$ term coming from levinKt_le_length_add).

Liu and Pass, Section 3.1, Fact 3.1, p. 10: For $m \le n$, all but fewer than $2^{n - m}$ of the $2^n$ strings of length $n$ admit an optimal $\mathrm{Kt}$-witness $(p, s)$ running in at most $2^{\mathrm{copyOverhead} + \lceil \log_2(n + 1) \rceil + m}$ steps (with the extra $\lceil \log_2(n + 1) \rceil$ term coming from levinKt_le_length_add).

The Minimum Kt Problem (MKtP) and MKtP ∈ E ⊆ EXP #

The Minimum Kt Problem (MKtP) (Liu and Pass, Section 2.2; Oliveira and Santhanam, Appendix A, Definition 44, p. 34): the set of pairs (x, k) : List Bool × ℕ such that levinKt x ≤ k. In Complexitylib's complexity-class statements below (MKtP.mem_E, MKtP.mem_EXP), MKtP is encoded by encPair encBits encUnary (with the threshold k in unary rather than the $\lceil \log_2 n \rceil$-bit binary representation of Liu and Pass, Section 2.2) so that $k + 1 \le |(x, 1^k)|$ holds for all $k \in \mathbb{N}$ without a side condition bounding $k$.

Instances For

    A pair xk belongs to MKtP iff levinKt xk.1 ≤ xk.2.

    @[simp]

    (x, k) ∈ MKtP iff levinKt x ≤ k.

    (x, k) ∈ MKtP iff levinKtNat x ≤ k.

    (x, k) ∈ MKtP iff some program p of length at most k outputs x within 2 ^ (k - |p|) steps under universalTM.

    theorem Cslib.Kolmogorov.MKtP.mem_of_le {x : List Bool} {k₁ k₂ : ℕ} (h : (x, k₁) ∈ MKtP) (hk : k₁ ≤ k₂) :
    (x, k₂) ∈ MKtP

    Monotonicity of MKtP in the threshold k.

    Bounded brute-force search for a Kt-witness of (x, k) up to word-index and step cap N: checks whether some word p = Ladner.word j with j < N has p.length ≤ k and outputs x within min (2 ^ (k - p.length)) N steps.

    Instances For

      Whenever $2^{k + 1} \le N$, boundedSearch x k N = true iff (x, k) ∈ MKtP.

      MKtP is in linear exponential time E with respect to encPair encBits encUnary.

      Fixed-threshold formulation (MKtPAt) #

      Fixed-threshold MKtP (MKtPAt s, Oliveira and Santhanam, Appendix A, Definition 44, p. 34; Liu and Pass, Section 2.2): the language of binary strings x with levinKt x ≤ s x.length.

      Instances For
        theorem Cslib.Kolmogorov.mem_MKtPAt_iff {s : ℕ → ℕ} {x : List Bool} :
        x ∈ MKtPAt s ↔ levinKt x ≤ ↑(s x.length)

        x ∈ MKtPAt s iff levinKt x ≤ s x.length.

        @[simp]

        x ∈ MKtPAt s iff (x, s x.length) ∈ MKtP.

        x ∈ MKtPAt s iff levinKtNat x ≤ s x.length.

        For any polynomial threshold q : Polynomial ℕ, MKtPAt q.eval ∈ EXP encBits.

        The promise problem GapMKtP #

        The yes-instances of GapMKtP[s₁, s₂]: strings x with levinKt x ≤ s₁ x.length (Oliveira and Santhanam, Appendix A, Definition 44, p. 34).

        Instances For

          The no-instances of GapMKtP[s₁, s₂]: strings x with s₂ x.length < levinKt x (Oliveira and Santhanam, Appendix A, Definition 44, p. 34).

          Instances For
            theorem Cslib.Kolmogorov.GapMKtP.mem_yesSet_iff {s₁ : ℕ → ℕ} {x : List Bool} :
            x ∈ yesSet s₁ ↔ x ∈ MKtPAt s₁

            x ∈ GapMKtP.yesSet s₁ iff x ∈ MKtPAt s₁.

            theorem Cslib.Kolmogorov.GapMKtP.mem_noSet_iff {s₂ : ℕ → ℕ} {x : List Bool} :
            x ∈ noSet s₂ ↔ ↑(s₂ x.length) < levinKt x

            x ∈ GapMKtP.noSet s₂ iff (s₂ x.length : ℕ∞) < levinKt x.

            x ∈ GapMKtP.noSet s₂ iff s₂ x.length < levinKtNat x.

            theorem Cslib.Kolmogorov.GapMKtP.disjoint_yesSet_noSet {s₁ s₂ : ℕ → ℕ} (hs : ∀ (n : ℕ), s₁ n ≤ s₂ n) :
            Disjoint (yesSet s₁) (noSet s₂)

            When s₁ n ≤ s₂ n for all n, GapMKtP.yesSet s₁ and GapMKtP.noSet s₂ are disjoint.

            When s₁ = s₂, GapMKtP.noSet s is the complement of MKtPAt s.

            def Cslib.Kolmogorov.GapMKtP (s₁ s₂ : ℕ → ℕ) (hs : ∀ (n : ℕ), s₁ n ≤ s₂ n) :

            The GapMKtP promise problem (Oliveira and Santhanam, Appendix A, Definition 44, p. 34): separates MKtPAt s₁ (levinKt x ≤ s₁ |x|) from GapMKtP.noSet s₂ (levinKt x > s₂ |x|) whenever s₁ n ≤ s₂ n.

            Instances For
              @[simp]
              theorem Cslib.Kolmogorov.GapMKtP.yes_eq {s₁ s₂ : ℕ → ℕ} (hs : ∀ (n : ℕ), s₁ n ≤ s₂ n) :
              (GapMKtP s₁ s₂ hs).yes = MKtPAt s₁

              The yes-instances of GapMKtP s₁ s₂ hs are MKtPAt s₁.

              @[simp]
              theorem Cslib.Kolmogorov.GapMKtP.no_eq {s₁ s₂ : ℕ → ℕ} (hs : ∀ (n : ℕ), s₁ n ≤ s₂ n) :
              (GapMKtP s₁ s₂ hs).no = noSet s₂

              The no-instances of GapMKtP s₁ s₂ hs are GapMKtP.noSet s₂.

              @[simp]

              With zero gap (s₁ = s₂ = s), GapMKtP is the decision problem MKtPAt s viewed as a promise problem (PromiseProblem.ofSet (MKtPAt s)).