proposition: Lemma allfv_term_impl {p1 p2: nat -> Prop} {P}: (forall x, p1 x -> p2 x) -> allfv_term p1 P -> allfv_term p2 P.
proof: Proof. elim: P p1 p2. - move=> >. by apply. - by move=> ? IH1 ? IH2 > /= /[dup] [/IH1 {}IH1 /IH2 {}IH2] [/IH1 ? /IH2 ?]. - move=> > IH > H /=. apply: IH. by case. - move=> > IH > H /=. by apply: IH. - move=> > IH > H /=. by apply: IH. Qed.
imports: List Lia Undecidability.SystemF.SysF Undecidability.SystemF.Autosubst.syntax Undecidability.SystemF.Autosubst.unscoped Undecidability.SystemF.Util(Facts poly_type_facts pure_term_facts) ssreflect ssrbool ssrfun