Definition Typing_weakening  := first  typing_weakening_mutual.
Definition PropWff_weakening := second typing_weakening_mutual.
Definition Iso_weakening     := third  typing_weakening_mutual.
Definition DefEq_weakening   := fourth typing_weakening_mutual.
End ext_weak_sig.
(**************** Ext Substitution ****************)
Module Type ext_subst_sig.
Include ext_weak_sig.

Axiom E_Abs_exists :  forall x (G : context) (rho : relflag) (a A B : tm),
x `notin` fv_tm_tm_tm a \u fv_tm_tm_tm B
-> Typing ([(x, Tm A)] ++ G) (open_tm_wrt_tm a (a_Var_f x)) (open_tm_wrt_tm B (a_Var_f x))
-> Typing G A a_Star
-> RhoCheck rho x (open_tm_wrt_tm a (a_Var_f x))
-> Typing G (a_UAbs rho a) (a_Pi rho A B).