Section Properties.
Implicit Types x y : TVar.
Implicit Types xs ys : list TVar.
(* ---------------------------------------------------------------------- *)
(** **** Abstract properties of ok *)
(* ---------------------------------------------------------------------- *)
(** **** Properties of binds *)
(* ---------------------------------------------------------------------- *)
(** **** Properties of all_binds *)
(**************************************************************************)

Theorem all_binds_dec_exists : forall A xs (F : gen_env A),
List.NoDup xs ->
{ vs : list A | length xs = length vs ∧ (xs ∷ vs) ⊏ F }
+ { forall vs : list A, length xs = length vs -> ¬ (xs ∷ vs) ⊏ F }.