proposition: Lemma rm_const_prv' { p : peirce } B phi : B ⊢ phi -> forall A, B = A ++ ZFeq' -> ([rm_const_fm p0 | p0 ∈ A] ++ binZF) ⊢ rm_const_fm phi.
proof: Proof. intros H. pattern p, B, phi. revert p B phi H. apply prv_ind_full; cbn; intros; subst. - apply II. now apply (H0 (phi::A0)). - eapply IE; eauto. - apply AllI. erewrite map_app, ZF_subst', rm_const_shift_subst. apply H0. now rewrite map_app, ZF_subst. - pose proof (rm_const_tm_prv t). eapply Weak in H1. apply (ExE H1). 2: auto. edestruct (nameless_equiv_ex ([rm_const_fm p | p ∈ A0] ++ binZF)) as [x ->]. specialize (H0 A0 eq_refl). apply (AllE x) in H0. apply rm_const_fm_swap with (x:=x); auto. apply (Weak H0). auto. - pose proof (rm_const_tm_prv t). eapply Weak in H1. apply (ExE H1). 2: auto. edestruct (nameless_equiv_ex ([rm_const_fm p | p ∈ A0] ++ binZF)) as [x ->]. specialize (H0 A0 eq_refl). apply (ExI x). apply <- rm_const_fm_swap; auto. apply (Weak H0). auto. - apply (ExE (H0 A0 eq_refl)). erewrite map_app, ZF_subst', rm_const_shift_subst, rm_const_fm_shift. apply (H2 (phi::[p[↑] | p ∈ A0])). cbn. now rewrite map_app, ZF_subst. - apply Exp. eauto. - apply in_app_iff in H as [H|H]. + apply Ctx. apply in_app_iff. left. now apply in_map. + eapply Weak. now apply prv_to_min. auto. - apply CI; eauto. - eapply CE1; eauto. - eapply CE2; eauto. - eapply DI1; eauto. - eapply DI2; eauto. - eapply DE; try now apply H0. + now apply (H2 (phi::A0)). + now apply (H4 (psi::A0)). - apply Pc. Qed.
imports: Undecidability.FOL.Syntax.Facts Undecidability.FOL.Syntax.Asimpl Undecidability.FOL.Semantics.Tarski.FullFacts Undecidability.FOL.Deduction.FullNDFacts Undecidability.FOL.Sets(binZF ZF) Undecidability.FOL.Reductions.PCPb_to_ZF Undecidability(Shared.ListAutomation) Morphisms Undecidability.FOL(Reductions.PCPb_to_ZFeq)