Documentation

Complexitylib.Metacomplexity.MINKT

The Minimum Time-Bounded Kolmogorov Complexity problem #

This module exposes a canonical, total machine-relative MINKT[r] language. Its inputs are encoded as (x, 1^t), and its strict threshold convention is

C_U^t(x) < r(|x|).

Universality is deliberately separate: all definitions and finite facts hold for an arbitrary deterministic machine, while later invariance and hardness results can ask for the precise efficient-universality property they use.

Main definitions #

@[simp]

The unary clock contains exactly time bits.

@[simp]

Canonical MINKT encodings decode to their original instances.

theorem Complexity.MINKT.Instance.decode?_eq_some_iff (bits : List Bool) (inst : Instance) :
decode? bits = some inst bits = inst.encode

Exact decoding accepts precisely canonical output/unary-clock encodings.

Decoding rejects exactly the noncanonical strings.

Canonical MINKT encoding is injective.

@[simp]

Exact encoded length: a doubled self-delimiting output followed by the unary clock.

theorem Complexity.MINKT.Instance.isBelow_iff_hasProgramShorterThan {tapes : } (inst : Instance) (machine : TM tapes) (threshold : ) :
inst.IsBelow machine threshold inst.HasProgramShorterThan machine threshold

Strict time-bounded complexity is equivalent to a producing program whose length is strictly below the length-dependent threshold.

theorem Complexity.MINKT.Instance.IsBelow.withTime_mono {tapes : } (inst : Instance) (machine : TM tapes) (threshold : ) {first second : } (hclock : first second) (hsmall : (inst.withTime first).IsBelow machine threshold) :
(inst.withTime second).IsBelow machine threshold

Increasing an instance's clock preserves a MINKT yes-instance.

theorem Complexity.MINKT.Instance.IsBelow.threshold_mono {tapes : } (inst : Instance) (machine : TM tapes) {first second : } (hthreshold : ∀ (length : ), first length second length) (hsmall : inst.IsBelow machine first) :
inst.IsBelow machine second

Pointwise increasing the threshold preserves a MINKT yes-instance.

@[simp]
theorem Complexity.MINKT.mem_encode_iff {tapes : } (machine : TM tapes) (threshold : ) (inst : Instance) :
inst.encode MINKT machine threshold inst.IsBelow machine threshold

A canonical code belongs to MINKT[threshold] exactly when its instance satisfies the strict time-bounded complexity inequality.

theorem Complexity.MINKT.mem_encode_iff_exists_program {tapes : } (machine : TM tapes) (threshold : ) (inst : Instance) :
inst.encode MINKT machine threshold ∃ (program : List Bool), program.length < threshold inst.output.length machine.ProducesInTime program inst.output inst.time

Canonical membership has an exact direct short-program characterization.

theorem Complexity.MINKT.not_mem_of_decode?_eq_none {tapes : } {machine : TM tapes} {threshold : } {bits : List Bool} (hdecode : Instance.decode? bits = none) :
bitsMINKT machine threshold

Every malformed instance code is rejected by the total MINKT language.

theorem Complexity.MINKT.mem_iff_exists_instance {tapes : } (machine : TM tapes) (threshold : ) (bits : List Bool) :
bits MINKT machine threshold ∃ (inst : Instance), Instance.decode? bits = some inst inst.IsBelow machine threshold

Decoded membership has an explicit unique-instance witness.

theorem Complexity.MINKT.mem_iff_exists_programWitness {tapes : } (machine : TM tapes) (threshold : ) (bits : List Bool) :
bits MINKT machine threshold ∃ (program : List Bool), ProgramWitnessRelation machine threshold bits program

MINKT membership is exactly existence of a raw short-program witness.

theorem Complexity.MINKT.programWitnessRelation_length_le_polynomial {tapes : } (machine : TM tapes) (threshold : ) (polynomial : Polynomial ) (hthreshold : ∀ (length : ), threshold length Polynomial.eval length polynomial) {bits program : List Bool} (hrelation : ProgramWitnessRelation machine threshold bits program) :
program.length Polynomial.eval bits.length polynomial

A polynomial bound on the threshold gives the same polynomial bound on every accepted raw program witness, measured against the encoded input.

theorem Complexity.MINKT.programWitnessRelation_polyBalanced {tapes : } (machine : TM tapes) (threshold : ) (hthreshold : PolyBound threshold) :

If the MINKT threshold is polynomially bounded, its raw program relation is polynomially balanced.

theorem Complexity.MINKT.programWitnessRelation_mem_FNP_of_pairLang_mem_P {tapes : } (machine : TM tapes) (threshold : ) (hthreshold : PolyBound threshold) (hverifier : pairLang (ProgramWitnessRelation machine threshold) P) :
ProgramWitnessRelation machine threshold FNP

With polynomial threshold growth, a polynomial-time paired verifier makes the raw MINKT program relation an FNP relation.

theorem Complexity.MINKT.mem_NP_of_pairLang_mem_P {tapes : } (machine : TM tapes) (threshold : ) (hthreshold : PolyBound threshold) (hwitness : NP.WitnessNTMConstruction) (hverifier : pairLang (ProgramWitnessRelation machine threshold) P) :
MINKT machine threshold NP

Conditional NP packaging for MINKT: polynomial threshold growth and a polynomial-time paired verifier suffice, modulo the generic guess-and-verify NTM construction.

theorem Complexity.MINKT.mono {tapes : } (machine : TM tapes) {first second : } (hthreshold : ∀ (length : ), first length second length) :
MINKT machine firstMINKT machine second

Pointwise threshold growth gives language inclusion.