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_computesRel (R : X -> X -> Prop) x0 k0 (t__step t__end : nat):
(forall k' x, k' < k0 -> pow R k' x0 x ->
fst (fT x tt) <= t__step +  match f x with
| inr _ => t__end | _ => 0
end
/\  match f x with
| inl x' =>  R x x'
| _ => True
end) ->
uiterTime k0 x0 <= k0 * (t__step + 9) + t__end.