proposition: Lemma pure_typing_ren_pure_term_allfv_pure_term {Gamma Delta M t} (ξ : nat -> nat) : (allfv_pure_term (fun x => nth_error Gamma x = nth_error Delta (ξ x)) M) -> pure_typing Gamma M t -> pure_typing Delta (ren_pure_term ξ M) t.
proof: Proof. move=> + /pure_typing_to_typing [P] [?]. subst M. move=> /allfv_pure_term_erase /typing_ren_allfv_term H /H /typing_to_pure_typing. by rewrite erase_ren_term. 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