Documentation

Complexity.Computability.Kolmogorov.Conditional

Conditional Time-Bounded Kolmogorov Complexity (K(x | y), K^t(x | y), and Kt(x | y)) #

This module defines the conditional universal multi-tape Turing machine description method Cslib.Kolmogorov.DescriptionMethod.condUniversalTM (a conditional description method List Bool → DescriptionMethod (List Bool) in the sense of Complexity.Computability.Kolmogorov.ChainRule) and the associated conditional plain, time-bounded, and Levin Kolmogorov complexities:

Modeling conventions #

Main definitions #

Main results #

References #

The conditional universal multi-tape description method (condUniversalTM) #

Re-frames a conditional program p with the auxiliary condition string y into a program for universalTM whose machine description is unframe p and whose input is encPair encBits encBits (dropFrame p, y).

Instances For

    Clocked evaluation of a binary program p given condition string y for t steps of the described multi-tape machine.

    Instances For

      The conditional universal multi-tape Turing machine description method for binary strings, conditioned on y : List Bool (a conditional description method in the sense of Complexity.Computability.Kolmogorov.ChainRule, and the conditional analogue of universalTM in Complexity.Computability.Kolmogorov.TimeBounded / Hirahara, Definition 7).

      Instances For
        @[simp]

        ((condUniversalTM y).run p).runFor t is condUniversalTMRunFor p y t.

        theorem Cslib.Kolmogorov.DescriptionMethod.condUniversalTMRunFor_mono (p y : List Bool) {t₁ t₂ : ℕ} (ht : t₁ ≤ t₂) {x : List Bool} (h : x ∈ condUniversalTMRunFor p y t₁) :

        Step monotonicity of condUniversalTMRunFor.

        @[simp]

        At 0 steps, (condUniversalTM y).etimeBoundedComplexity 0 x = ⊤.

        Clock-preserving conditional simulation of every binary MultiTapeTM #

        Clock-preserving conditional simulation of MultiTapeTM: for every finite-state binary MultiTapeTM, there is a constant c such that whenever tm on input encPair encBits encBits (w, y) halts within t steps and outputs x, condUniversalTM y outputs x within t steps from a program of length at most w.length + c.

        Conditional Kolmogorov complexity measures (condPlain, condTimeBoundedAt, #

        condTimeBounded, condLevinKt)

        noncomputable def Cslib.Kolmogorov.condPlain (x y : List Bool) :

        Conditional plain Kolmogorov complexity $K(x \mid y)$ under condUniversalTM y, in ℕ∞ Li and Vitányi, Chapter 2.

        Instances For
          noncomputable def Cslib.Kolmogorov.condPlainNat (x y : List Bool) :

          Conditional plain Kolmogorov complexity $K(x \mid y)$ as a natural number.

          Instances For
            noncomputable def Cslib.Kolmogorov.condTimeBoundedAt (t : ℕ) (x y : List Bool) :

            Step-indexed conditional time-bounded Kolmogorov complexity $K^t(x \mid y)$ at step budget t : ℕ (the conditional analogue of Hirahara, Definition 7), in ℕ∞.

            Instances For
              noncomputable def Cslib.Kolmogorov.condTimeBounded (t : ℕ → ℕ) (x y : List Bool) :

              Function-indexed conditional time-bounded Kolmogorov complexity $K^t(x \mid y)$ at step budget t x.length, in ℕ∞.

              Instances For
                noncomputable def Cslib.Kolmogorov.condTimeBoundedNat (t : ℕ → ℕ) (x y : List Bool) :

                Conditional time-bounded Kolmogorov complexity $K^t(x \mid y)$ as a natural number.

                Instances For
                  noncomputable def Cslib.Kolmogorov.condLevinKt (x y : List Bool) :

                  Conditional Levin time-bounded Kolmogorov complexity $\mathrm{Kt}(x \mid y) = \inf_{s \in \mathbb{N}} \bigl(K^s(x \mid y) + \lceil \log_2 s \rceil\bigr)$ (the conditional analogue of levinKt in Allender et al., Definition 1), in ℕ∞.

                  Instances For
                    noncomputable def Cslib.Kolmogorov.condLevinKtNat (x y : List Bool) :

                    Conditional Levin complexity $\mathrm{Kt}(x \mid y)$ as a natural number.

                    Instances For

                      Basic properties and equivalence bridges #

                      condTimeBoundedAt t x y ≤ k iff some program of length at most k outputs x given y within t steps.

                      condTimeBoundedAt t x y < k iff some program of length strictly less than k outputs x given y within t steps.

                      condTimeBounded t x y ≤ k iff some program of length at most k outputs x given y within t |x| steps.

                      Whenever condTimeBounded t x y ≠ ⊤, condTimeBoundedNat t x y casts back to condTimeBounded t x y.

                      Antitonicity of condTimeBoundedAt in the step bound t.

                      theorem Cslib.Kolmogorov.condTimeBoundedAt_anti {t₁ t₂ : ℕ} {x y : List Bool} (h : t₁ ≤ t₂) :

                      If t₁ ≤ t₂, then condTimeBoundedAt t₂ x y ≤ condTimeBoundedAt t₁ x y.

                      Antitonicity of condTimeBounded in the time function t.

                      Dropping the step bound cannot increase conditional complexity (K(x | y) ≤ K^t(x | y)).

                      Dropping the time function cannot increase conditional complexity (K(x | y) ≤ K^t(x | y)).

                      condPlain x y is the infimum of condTimeBoundedAt t x y over t : ℕ.

                      Conditional plain complexity bounds conditional Levin complexity from below (K(x | y) ≤ Kt(x | y)).

                      Threshold characterization of condLevinKt: $\mathrm{Kt}(x \mid y) \le k$ iff some program $p$ outputs $x$ given $y$ within $s$ steps with $|p| + \lceil \log_2 s \rceil \le k$.

                      Exponential-step characterization of condLevinKt: $\mathrm{Kt}(x \mid y) \le k$ iff some program $p$ of length at most $k$ outputs $x$ given $y$ within $2^{k - |p|}$ steps.

                      Polynomial-time conditional upper bounds ($K^t(F(w, y) \mid y) \le |w| + O(1)$) #

                      Polynomial-time conditional evaluation bound: for any polynomial-time function F : List Bool × List Bool → List Bool, there exist a monotone polynomial pF (with n + 1 ≤ pF.eval n) and a constant c such that for all w y : List Bool and step budgets t ≥ pF.eval (encPair encBits encBits (w, y)).length, $$K^t(F(w, y) \mid y) \le |w| + c.$$

                      Conditional complexity of a polynomial-time function of the condition ($K^t(f(y) \mid y) \le O(1)$): for any f : List Bool → List Bool computable in polynomial time, there exist a monotone polynomial q (with n + 1 ≤ q.eval n) and a constant c such that for all y : List Bool and t ≥ q.eval (y.length + 1), condTimeBoundedAt t (f y) y ≤ c and condPlain (f y) y ≤ c.

                      theorem Cslib.Kolmogorov.exists_condTimeBoundedAt_self_le :
                      ∃ (q : Polynomial ℕ) (c : ℕ), (∀ (n : ℕ), n + 1 ≤ Polynomial.eval n q) ∧ (Monotone fun (x : ℕ) => Polynomial.eval x q) ∧ (∀ {t : ℕ} (y : List Bool), Polynomial.eval (y.length + 1) q ≤ t → condTimeBoundedAt t y y ≤ ↑c) ∧ ∀ (y : List Bool), condPlain y y ≤ ↑c

                      Self-conditioning ($K^t(y \mid y) \le O(1)$): there exist a monotone polynomial q and a constant c such that condTimeBoundedAt t y y ≤ c whenever q.eval (y.length + 1) ≤ t, and condPlain y y ≤ c for all y.

                      theorem Cslib.Kolmogorov.exists_condTimeBoundedAt_le_length_add :
                      ∃ (q : Polynomial ℕ) (c : ℕ), (∀ (n : ℕ), n + 1 ≤ Polynomial.eval n q) ∧ (Monotone fun (x : ℕ) => Polynomial.eval x q) ∧ (∀ {t : ℕ} (x y : List Bool), Polynomial.eval (2 * x.length + 1 + y.length) q ≤ t → condTimeBoundedAt t x y ≤ ↑(x.length + c)) ∧ ∀ (x y : List Bool), condPlain x y ≤ ↑(x.length + c)

                      Trivial conditional upper bound ($K^t(x \mid y) \le |x| + O(1)$): there exist a monotone polynomial q (with n + 1 ≤ q.eval n) and a constant c such that for all x y : List Bool and t ≥ q.eval (2 * x.length + 1 + y.length), condTimeBoundedAt t x y ≤ (x.length + c : ℕ) and condPlain x y ≤ (x.length + c : ℕ).

                      Conditional plain complexity condPlain x y is always finite.

                      @[simp]

                      Casting condPlainNat x y to ℕ∞ yields condPlain x y.

                      Conditional Levin complexity condLevinKt x y is always finite.

                      @[simp]

                      Casting condLevinKtNat x y to ℕ∞ yields condLevinKt x y.

                      ℕ-valued threshold characterization of condLevinKtNat.

                      Counting and incompressibility for conditional complexity #

                      For every condition string y, step bound t, length n, and threshold r, fewer than 2 ^ r strings x of length n have condTimeBoundedAt t x y < r.

                      Existence of conditionally incompressible strings: for every condition string y and length n, some string x of length n satisfies n ≤ condPlain x y (and hence n ≤ condTimeBoundedAt t x y for all t).

                      For every condition string y, time function t, and n c : ℕ, all but fewer than 2 ^ (n - c) of the 2 ^ n strings x of length n satisfy (n - c : ℕ) ≤ condTimeBounded t x y.