Module Type ext_invert_sig.
Include ext_subst_sig.
(* ---------- inversion lemmas ---------------- *)

Axiom invert_a_UCAbs: forall G A b0,
Typing G (a_UCAbs b0) A ->
exists a b T B1, PropWff G (Eq a b T)
/\ DefEq G (dom G) A (a_CPi (Eq a b T) B1) a_Star /\
(exists L, forall c, c `notin` L ->
Typing ([(c, Co (Eq a b T))] ++ G)
(open_tm_wrt_co b0 (g_Var_f c))
(open_tm_wrt_co B1 (g_Var_f c)) /\
Typing ([(c, Co (Eq a b T))] ++ G)
(open_tm_wrt_co B1 (g_Var_f c)) a_Star).