(** * Other list functions *)

Fixpoint listoption_inv {A} (l : list (option A)) : list A :=
  match l with
  | Some x :: l => x :: listoption_inv l
  | None :: l => listoption_inv l
  | nil => nil
  end.

(* Specifications: *)
Lemma map_listoption_inv {A B} (f : A -> B) (l : list (option A)) : map f (listoption_inv l) = listoption_inv (map (option_map f) l).