.
.
.
.
.
.
.
.
.
Admissible subtyping rules.
Amadio and Cardelli's subtyping rule is admissible.
).
Proof.
introv h wf0 wf1.
constructor;
eauto.
eapply JCoTyEq;
eauto using tyeq_fold.
unfold unfold.
We will now replace the type variable 0 with the type TyMu T
and the type variable 1 with the type TyMu U.
We begin with the first of these substitutions.
generalize (
jco_type_substitution h 0 (
wf_lift wf0 0));
simpl;
clear h;
intro h.
unfold subst_var,
lift_var in h;
simpl in h.
rewrite subst_lift_ty in h.
rewrite subst_lift_env in h.
change (
TyMu (
lift_ty 1
T))
with (
lift_ty 0 (
TyMu T))
in h.
rewrite <-
lift_subst_2_ty in h;
eauto.
We continue with the second of these substitutions.
generalize (
jco_type_substitution h 0
wf1);
simpl;
clear h;
intro h.
unfold subst_var,
lift_var in h;
simpl in h.
repeat rewrite subst_lift_ty in h.
rewrite subst_lift_env in h.
We are done!
assumption.
Qed.