Definition B_le (x y: option B) : Prop := x = None \/ y = x.Definition F_le (x y: A -> option B) : Prop := forall a, B_le (x a) (y a).Definition F_iter (next: A -> option B) (a: A) : option B :=
  match step a with
  | inl b => Some b
  | inr a' => next a'
  end.

(* Specifications: *)
Lemma F_iter_monot: forall f g, F_le f g -> F_le (F_iter f) (F_iter g).
Lemma F_iter_monot: forall f g, F_le f g -> F_le (F_iter f) (F_iter g).