Definition iterate (a: A) : option B :=
proj1_sig (constructive_definite_description (converges_to a) (converges_to_exists_uniquely a)).

(* Specifications: *)
Lemma converges_to_iterate:
forall a b, converges_to a b -> iterate a = b.
Lemma iterate_converges_to:
forall a, converges_to a (iterate a).
Lemma converges_to_iterate:
forall a b, converges_to a b -> iterate a = b.
Lemma iterate_converges_to:
forall a, converges_to a (iterate a).