proposition: Lemma typing_contains {s t Gamma P} : contains s t -> typing Gamma P s -> exists Q, erase P = erase Q /\ typing Gamma Q t.
proof: Proof. move=> /clos_rt_rt1n_iff => H. elim: H P. - move=> ? ? ?. by eexists. - move=> ? ? ? [] s' ? _ IH P. by move=> /typing_ty_app => /(_ s') /IH. Qed.
imports: List Lia Relation_Definitions Relation_Operators Operators_Properties Undecidability.SystemF.SysF Undecidability.SystemF.Autosubst.syntax Undecidability.SystemF.Autosubst.unscoped Undecidability.SystemF.Util(Facts poly_type_facts pure_term_facts term_facts typing_facts iipc2_facts) ssreflect ssrbool ssrfun