proposition: Lemma neutral_sn_app N : sn N -> forall M, neutral sn M -> sn M -> sn (app M N).
proof: Proof. elim=> {}N IH1N IH2N M + H. elim: H=> {}M IH1M IH2M HM. constructor=> N' /stepE [|[|]] [?] [??]; subst. - by move: HM => /neutralE. - apply: IH2M; [done|]. by apply: neutral_step; eassumption. - by apply: IH2N; [| |constructor]. Qed.
imports: Undecidability.IntersectionTypes.CD Undecidability.IntersectionTypes.Util.CD_facts Undecidability.IntersectionTypes.Util.CD_fundamental Undecidability.LambdaCalculus.Util.term_facts Relations List Wellfounded.Transitive_Closure ssreflect