Fixpoint iter (n: nat) : A -> option B :=
match n with
| O => (fun a => None)
| S m => F_iter (iter m)
end.

(* Specifications: *)
Lemma iter_monot:
forall p q, (p <= q)%nat -> F_le (iter p) (iter q).
Lemma iter_either:
forall a,
(exists n, exists b, iter n a = Some b) \/
(forall n, iter n a = None).
Lemma iter_monot:
forall p q, (p <= q)%nat -> F_le (iter p) (iter q).
Lemma iter_either:
forall a,
(exists n, exists b, iter n a = Some b) \/
(forall n, iter n a = None).