proposition: Lemma opair_inj2 x x' y y' : M_opair x y ≡' M_opair x' y' -> y ≡' y'.
proof: Proof. Proof using M_ZF. intros He. assert (y ≡' x' \/ y ≡' y') as [Hy | Hy]; trivial. - assert (H : {x; y} ∈' M_opair x y) by apply M_pair2. rewrite He in H. apply M_pair in H as [H|H]. + symmetry in H. apply sing_pair in H. intuition (auto with crelations). + assert (H' : y ∈' {x; y}) by apply M_pair2. rewrite H in H'. now apply M_pair in H'. - assert (Hx : x ≡' x') by now apply opair_inj1 in He. rewrite Hx, Hy in He. rewrite Hy. assert (H : {x'; y'} ∈' M_opair x' y') by apply M_pair2. rewrite <- He in H. apply M_pair in H as [H|H]; symmetry in H; now apply sing_pair in H. Qed.
imports: Undecidability.FOL.ZF Undecidability.FOL.Syntax.Facts Undecidability.FOL.Semantics.Tarski.FullFacts Undecidability.FOL.Sets(ZF) Undecidability.FOL.Sets.ZF Undecidability.FOL.Reductions.PCPb_to_ZF Lia Undecidability.PCP(PCP Util.PCP_facts Reductions.PCPb_iff_dPCPb) Undecidability(Shared.ListAutomation) Morphisms