proposition: Lemma contains_poly_varE {t x} : contains t (poly_var x) -> exists n y, t = many_poly_abs n (poly_var y).
proof: Proof. have [n [t' [->]]] := many_poly_absI t. case: t'. - move=> *. by do 2 eexists. - move=> > _ /contains_many_poly_absE [ts] [_]. by case: (n - length ts). - by move=> /=. 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