proposition: Lemma containsE {t t'} : contains t t' -> match t with | poly_var _ => t = t' | poly_arr _ _ => t = t' | poly_abs t => (poly_abs t) = t' \/ exists s, contains (subst_poly_type (scons s poly_var) t) t' end.
proof: Proof. move=> /clos_rt_rt1n_iff. case. - case: t; [done | done | by left]. - move=> > [] > /clos_rt_rt1n_iff ?. right. eexists. by eassumption. 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