Section uiter.
Variable X Y : Type.
Context `{registered X}.
Context `{registered Y}.
Variable f : X -> X + Y.
Variable fT : timeComplexity (X -> X + Y).
Context `{computableTime' f fT}.
Definition uiter := Eval cbn -[enc] in rho (λ uiter x, !!(extT f) x (λ x' _ , uiter x') (λ y _ , y) !!I).

Lemma uiterTime_bound_recRel2 (P: nat -> _ -> Prop) (iterT : X -> nat):
(forall i x, P i x -> match f x with
| inl x' => P (S i) x' /\ iterT x' + 9 + fst (fT x tt) <= iterT x
| inr y => fst (fT x tt) + 9 <= iterT x
end) ->
forall n x,
P 0 x ->
uiterTime n x <= iterT x.