Documentation

MIPRE.Foundations.Cost.Threshold

The threshold function of the compression argument #

threshold K : PolyTimeFun Prog ℕ computes e ↦ 2 ^ (K + 1 + esize e): the size of the program in unary (sizeProg), plus the constant K + 1 (addConstProg), then the bit string of the power of two (expBitsProg). In the recursive compression argument (planning/compression-track.md, K3 step 4) the constant K is chosen, once and for all, from the overhead polynomials of the toolkit so that n ≥ 2 ^ (K + 1 + |e|) makes every polynomial in |e| + log n at most n.

theorem MIPRE.Cost.Prog.addConstProg_runs (K k : ) :
t ≤ (K + 1) * (4 * K + 2 * k + 15) + 2 * K + 2 * k + 5, (addConstProg K).Runs (Data.ofNat k) (Data.ofNat (K + k)) t

The threshold program: d ↦ encode (2 ^ (K + 1 + d.size)).

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem MIPRE.Cost.Prog.thresholdProg_runs (K : ) (d : Data) :
    t40 * (d.size + (K + 4)) ^ 2, (thresholdProg K).Runs d (encode (2 ^ (K + 1 + d.size))) t

    e ↦ 2 ^ (K + 1 + esize e), in polynomial time.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[simp]
      theorem MIPRE.Cost.PolyTimeFun.threshold_apply (K : ) (e : Prog) :
      (threshold K).toFun e = 2 ^ (K + 1 + esize e)