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).