Recording a polynomially bounded sequence of iterates #
Print the initial point and each subsequent iterate, up to the unary budget.
Equations
- MIPRE.Cost.recordIterates f u a = List.ofFn fun (i : Fin (List.length u)) => f^[↑i] a
Instances For
@[simp]
theorem
MIPRE.Cost.recordIterates_cons
{α : Type u_1}
[SizedEncoding α]
(f : α → α)
(u : Unary)
(a : α)
:
theorem
MIPRE.Cost.fold_recordStep
{α : Type u_1}
[SizedEncoding α]
(f : α → α)
(u : Unary)
(a : α)
(acc : List α)
:
theorem
MIPRE.Cost.esize_recordIterates
{α : Type u_1}
[SizedEncoding α]
(f : α → α)
(B : Polynomial ℕ)
(hB : ∀ (n : ℕ) (a : α), esize (f^[n] a) ≤ Polynomial.eval (esize a) B)
(u : Unary)
(a : α)
:
noncomputable def
MIPRE.Cost.recordStepProg
{α : Type u_1}
[SizedEncoding α]
(f : PolyTimeFun α α)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
noncomputable def
MIPRE.Cost.recordIteratesProg
{α : Type u_1}
[SizedEncoding α]
(f : PolyTimeFun α α)
(B : Polynomial ℕ)
(hB : ∀ (n : ℕ) (a : α), esize (f.toFun^[n] a) ≤ Polynomial.eval (esize a) B)
:
PolyTimeFun (Unary × α) (List α)
Any uniformly polynomially size-bounded orbit can be printed in polynomial time. The iteration count is unary, and the bound must hold on every raw input.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
MIPRE.Cost.recordIteratesProg_apply
{α : Type u_1}
[SizedEncoding α]
(f : PolyTimeFun α α)
(B : Polynomial ℕ)
(hB : ∀ (n : ℕ) (a : α), esize (f.toFun^[n] a) ≤ Polynomial.eval (esize a) B)
(u : Unary)
(a : α)
: