(* -----  exists forms of the binding constructors ----------- *)

Axiom An_CAbs_inversion : ∀ (G : context) (phi : constraint) (a A : tm),
AnnTyping G (a_CAbs phi a) A ->
exists B, A = (a_CPi phi B) /\
forall c, c  `notin` dom G (* \u fv_co_co_tm a \u fv_co_co_tm B *) ->
AnnPropWff G phi /\
AnnTyping ([(c, Co phi)] ++ G) (open_tm_wrt_co a (g_Var_f c))
(open_tm_wrt_co B (g_Var_f c)).