(* --------------------------------------------------------------------- *)
(* swapping lemmas ---> changing the name that is used to opened terms *)

Lemma AnnTyping_tm_swap : forall c c0 B G a A,
c `notin` fv_tm_tm_tm A ->
c `notin` fv_tm_tm_tm a ->
c0 `notin` dom G \u {{ c }} ->
AnnTyping ([(c, Tm B)] ++ G) (open_tm_wrt_tm a (a_Var_f c))
(open_tm_wrt_tm A (a_Var_f c)) ->
AnnTyping ([(c0, Tm B)] ++ G) (open_tm_wrt_tm a (a_Var_f c0))
(open_tm_wrt_tm A (a_Var_f c0)).