Definition AnnTyping_erase :
(forall G a A, AnnTyping G a A ->
Typing (erase_context G) (erase a) (erase A)) := first erase_mutual.
Definition AnnPropWff_erase :
(forall G phi, AnnPropWff G phi ->
PropWff (erase_context G) (erase phi)) := second erase_mutual.
Definition AnnIso_erase :
(forall G D g p1 p2, AnnIso G D g p1 p2 ->
Iso (erase_context G) D
(erase_constraint p1) (erase_constraint p2)) := third erase_mutual.
Definition AnnDefEq_erase :
(forall G D g a b,
AnnDefEq G D g a b ->
forall A, AnnTyping G a A ->
DefEq (erase_context G) D (erase a) (erase b) (erase A)) := fourth erase_mutual.
Definition AnnCtx_erase :
(forall G, AnnCtx G -> Ctx (erase_context G) /\
forall c t, binds c t G -> binds c (erase_sort t) (erase_context G)) := fifth erase_mutual.

(* Specifications: *)
Lemma erasure_a_Star :
forall G a A, AnnTyping G a A -> erase A = a_Star ->
exists a', erase a = erase a' /\ AnnTyping G a' a_Star.
Lemma erasure_cvt :
forall G a A, AnnTyping G a A -> forall B, erase A = erase B -> AnnTyping G B a_Star ->
exists a', erase a = erase a' /\ AnnTyping G a' B.
Lemma AnnDefEq_invertb : forall G D g a b, AnnDefEq G D g a b ->
exists A b' g, AnnTyping G a A /\ AnnTyping G b' A /\ erase b' = erase b /\ AnnDefEq G D g b b'.