Definition close_tm_erase_all := fun x => close_tmco_erase_all (inl x).
Definition close_co_erase_all := fun x => close_tmco_erase_all (inr x).
Definition close_tm_erase_tm := fun x => proj1 (close_tm_erase_all x).
Definition close_co_erase_tm := fun x => proj1 (close_co_erase_all x).
*)
(* Pointless to close erased terms wrt co variables *)

(* Specifications: *)
Lemma close_co_erase_rec : ∀ x : covar,
(∀ (a : tm)         k, close_co_rec k x (erase a) = erase a) /\
(∀ (b : brs)        k, close_co_rec k x (erase b) = erase b) /\
(∀ _ : co, True) /\
(∀ (c : constraint) k, close_co_rec k x (erase c) = erase c).
Lemma close_co_erase_tm2 : forall x a, close_tm_wrt_co x (erase a) = erase a.
(* ----- fv  ---------- *)
Lemma fv_tm_erase_tm : ∀ x (a : tm),
x `notin` fv_tm a -> x `notin` fv_tm (erase a).
Lemma fv_co_erase_tm : ∀ x (a : tm),
x `notin` fv_co a -> x `notin` fv_co (erase a).