proposition: Lemma enc_derivations_fun B n : forall k x y, M_opair k x ∈ M_enc_derivations B n -> M_opair k y ∈ M_enc_derivations B n -> x = y.
proof: Proof. Proof using VIEQ M_ZF. induction n; cbn -[derivations]; intros k x y. - intros H1 % sing_el H2 % sing_el. rewrite <- H2 in H1. now apply opair_inj in H1. - intros [H1|H1 % sing_el] % binunion_el [H2|H2 % sing_el] % binunion_el. + now apply (IHn k x y). + exfalso. apply enc_derivations_bound in H1. destruct (opair_inj H2) as [-> _]. now eapply (@numeral_wf _ _ M_ZF VIEQ (S n)). + exfalso. apply enc_derivations_bound in H2. destruct (opair_inj H1) as [-> _]. now eapply (@numeral_wf _ _ M_ZF VIEQ (S n)). + rewrite <- H2 in H1. now apply opair_inj in H1. Qed.
imports: Undecidability.FOL.ZF Undecidability.FOL.Syntax.Facts Undecidability.FOL.Semantics.Tarski.FullFacts Undecidability.FOL.Sets.ZF Lia Undecidability.PCP(PCP Util.PCP_facts Reductions.PCPb_iff_dPCPb) Undecidability(Shared.ListAutomation)