(* ------- contexts ---------------------- *)

(* Specifications: *)
Lemma erase_dom : forall G, dom G = dom (erase_context G).
(* value_type *)
Lemma path_erase : forall T p, Path T p -> Path T (erase p).
Lemma CoercedValueValue_erase:
(forall v,  CoercedValue v -> Value (erase v)) /\
(forall v, Value v -> Value (erase v)).
Lemma Value_erase :  (forall v, Value v -> Value (erase v)).
(* ---------------------------------- *)
Lemma ann_rho_swap : forall rho x x0 a,
x `notin` fv_tm_tm_tm (erase_tm a) ->
x0 `notin` fv_tm_tm_tm (erase_tm a) ->
RhoCheck rho x (erase_tm (open_tm_wrt_tm a (a_Var_f x))) ->
RhoCheck rho x0 (erase_tm (open_tm_wrt_tm a (a_Var_f x0))).