Metamath Proof Explorer


Theorem modelac8prim

Description: If M is a transitive class, then the following are equivalent. (1) Every nonempty set x e. M of pairwise disjoint nonempty sets has a choice set in M . (2) The class M models the Axiom of Choice, in the form ac8prim .

Lemma II.2.11(7) of Kunen2 p. 114. Kunen has the additional hypotheses that the Extensionality, Separation, Pairing, and Union axioms are true in M . This, apparently, is because Kunen's statement of the Axiom of Choice uses defined notions, including (/) and i^i , and these axioms guarantee that these notions are well-defined. When we state the axiom using primitives only, the need for these hypotheses disappears. (Contributed by Eric Schmidt, 19-Oct-2025)

Ref Expression
Assertion modelac8prim ( Tr 𝑀 → ( ∀ 𝑥𝑀 ( ( ∀ 𝑧𝑥 𝑧 ≠ ∅ ∧ ∀ 𝑧𝑥𝑤𝑥 ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) → ∃ 𝑦𝑀𝑧𝑥 ∃! 𝑣 𝑣 ∈ ( 𝑧𝑦 ) ) ↔ ∀ 𝑥𝑀 ( ( ∀ 𝑧𝑀 ( 𝑧𝑥 → ∃ 𝑤𝑀 𝑤𝑧 ) ∧ ∀ 𝑧𝑀𝑤𝑀 ( ( 𝑧𝑥𝑤𝑥 ) → ( ¬ 𝑧 = 𝑤 → ∀ 𝑦𝑀 ( 𝑦𝑧 → ¬ 𝑦𝑤 ) ) ) ) → ∃ 𝑦𝑀𝑧𝑀 ( 𝑧𝑥 → ∃ 𝑤𝑀𝑣𝑀 ( ( 𝑣𝑧𝑣𝑦 ) ↔ 𝑣 = 𝑤 ) ) ) ) )

Proof

Step Hyp Ref Expression
1 ralabso ( ( Tr 𝑀𝑥𝑀 ) → ( ∀ 𝑧𝑥 𝑧 ≠ ∅ ↔ ∀ 𝑧𝑀 ( 𝑧𝑥𝑧 ≠ ∅ ) ) )
2 n0abso ( ( Tr 𝑀𝑧𝑀 ) → ( 𝑧 ≠ ∅ ↔ ∃ 𝑤𝑀 𝑤𝑧 ) )
3 2 adantlr ( ( ( Tr 𝑀𝑥𝑀 ) ∧ 𝑧𝑀 ) → ( 𝑧 ≠ ∅ ↔ ∃ 𝑤𝑀 𝑤𝑧 ) )
4 3 imbi2d ( ( ( Tr 𝑀𝑥𝑀 ) ∧ 𝑧𝑀 ) → ( ( 𝑧𝑥𝑧 ≠ ∅ ) ↔ ( 𝑧𝑥 → ∃ 𝑤𝑀 𝑤𝑧 ) ) )
5 4 ralbidva ( ( Tr 𝑀𝑥𝑀 ) → ( ∀ 𝑧𝑀 ( 𝑧𝑥𝑧 ≠ ∅ ) ↔ ∀ 𝑧𝑀 ( 𝑧𝑥 → ∃ 𝑤𝑀 𝑤𝑧 ) ) )
6 1 5 bitrd ( ( Tr 𝑀𝑥𝑀 ) → ( ∀ 𝑧𝑥 𝑧 ≠ ∅ ↔ ∀ 𝑧𝑀 ( 𝑧𝑥 → ∃ 𝑤𝑀 𝑤𝑧 ) ) )
7 simpl ( ( Tr 𝑀𝑥𝑀 ) → Tr 𝑀 )
8 ralabso ( ( Tr 𝑀𝑥𝑀 ) → ( ∀ 𝑤𝑥 ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ↔ ∀ 𝑤𝑀 ( 𝑤𝑥 → ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) ) )
9 7 8 ralabsobidv ( ( ( Tr 𝑀𝑥𝑀 ) ∧ 𝑥𝑀 ) → ( ∀ 𝑧𝑥𝑤𝑥 ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ↔ ∀ 𝑧𝑀 ( 𝑧𝑥 → ∀ 𝑤𝑀 ( 𝑤𝑥 → ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) ) ) )
10 9 anabss3 ( ( Tr 𝑀𝑥𝑀 ) → ( ∀ 𝑧𝑥𝑤𝑥 ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ↔ ∀ 𝑧𝑀 ( 𝑧𝑥 → ∀ 𝑤𝑀 ( 𝑤𝑥 → ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) ) ) )
11 r19.21v ( ∀ 𝑤𝑀 ( 𝑧𝑥 → ( 𝑤𝑥 → ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) ) ↔ ( 𝑧𝑥 → ∀ 𝑤𝑀 ( 𝑤𝑥 → ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) ) )
12 impexp ( ( ( 𝑧𝑥𝑤𝑥 ) → ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) ↔ ( 𝑧𝑥 → ( 𝑤𝑥 → ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) ) )
13 df-ne ( 𝑧𝑤 ↔ ¬ 𝑧 = 𝑤 )
14 13 imbi1i ( ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ↔ ( ¬ 𝑧 = 𝑤 → ( 𝑧𝑤 ) = ∅ ) )
15 disjabso ( ( Tr 𝑀𝑧𝑀 ) → ( ( 𝑧𝑤 ) = ∅ ↔ ∀ 𝑦𝑀 ( 𝑦𝑧 → ¬ 𝑦𝑤 ) ) )
16 15 imbi2d ( ( Tr 𝑀𝑧𝑀 ) → ( ( ¬ 𝑧 = 𝑤 → ( 𝑧𝑤 ) = ∅ ) ↔ ( ¬ 𝑧 = 𝑤 → ∀ 𝑦𝑀 ( 𝑦𝑧 → ¬ 𝑦𝑤 ) ) ) )
17 14 16 bitrid ( ( Tr 𝑀𝑧𝑀 ) → ( ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ↔ ( ¬ 𝑧 = 𝑤 → ∀ 𝑦𝑀 ( 𝑦𝑧 → ¬ 𝑦𝑤 ) ) ) )
18 17 imbi2d ( ( Tr 𝑀𝑧𝑀 ) → ( ( ( 𝑧𝑥𝑤𝑥 ) → ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) ↔ ( ( 𝑧𝑥𝑤𝑥 ) → ( ¬ 𝑧 = 𝑤 → ∀ 𝑦𝑀 ( 𝑦𝑧 → ¬ 𝑦𝑤 ) ) ) ) )
19 12 18 bitr3id ( ( Tr 𝑀𝑧𝑀 ) → ( ( 𝑧𝑥 → ( 𝑤𝑥 → ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) ) ↔ ( ( 𝑧𝑥𝑤𝑥 ) → ( ¬ 𝑧 = 𝑤 → ∀ 𝑦𝑀 ( 𝑦𝑧 → ¬ 𝑦𝑤 ) ) ) ) )
20 19 ralbidv ( ( Tr 𝑀𝑧𝑀 ) → ( ∀ 𝑤𝑀 ( 𝑧𝑥 → ( 𝑤𝑥 → ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) ) ↔ ∀ 𝑤𝑀 ( ( 𝑧𝑥𝑤𝑥 ) → ( ¬ 𝑧 = 𝑤 → ∀ 𝑦𝑀 ( 𝑦𝑧 → ¬ 𝑦𝑤 ) ) ) ) )
21 11 20 bitr3id ( ( Tr 𝑀𝑧𝑀 ) → ( ( 𝑧𝑥 → ∀ 𝑤𝑀 ( 𝑤𝑥 → ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) ) ↔ ∀ 𝑤𝑀 ( ( 𝑧𝑥𝑤𝑥 ) → ( ¬ 𝑧 = 𝑤 → ∀ 𝑦𝑀 ( 𝑦𝑧 → ¬ 𝑦𝑤 ) ) ) ) )
22 21 ralbidva ( Tr 𝑀 → ( ∀ 𝑧𝑀 ( 𝑧𝑥 → ∀ 𝑤𝑀 ( 𝑤𝑥 → ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) ) ↔ ∀ 𝑧𝑀𝑤𝑀 ( ( 𝑧𝑥𝑤𝑥 ) → ( ¬ 𝑧 = 𝑤 → ∀ 𝑦𝑀 ( 𝑦𝑧 → ¬ 𝑦𝑤 ) ) ) ) )
23 22 adantr ( ( Tr 𝑀𝑥𝑀 ) → ( ∀ 𝑧𝑀 ( 𝑧𝑥 → ∀ 𝑤𝑀 ( 𝑤𝑥 → ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) ) ↔ ∀ 𝑧𝑀𝑤𝑀 ( ( 𝑧𝑥𝑤𝑥 ) → ( ¬ 𝑧 = 𝑤 → ∀ 𝑦𝑀 ( 𝑦𝑧 → ¬ 𝑦𝑤 ) ) ) ) )
24 10 23 bitrd ( ( Tr 𝑀𝑥𝑀 ) → ( ∀ 𝑧𝑥𝑤𝑥 ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ↔ ∀ 𝑧𝑀𝑤𝑀 ( ( 𝑧𝑥𝑤𝑥 ) → ( ¬ 𝑧 = 𝑤 → ∀ 𝑦𝑀 ( 𝑦𝑧 → ¬ 𝑦𝑤 ) ) ) ) )
25 6 24 anbi12d ( ( Tr 𝑀𝑥𝑀 ) → ( ( ∀ 𝑧𝑥 𝑧 ≠ ∅ ∧ ∀ 𝑧𝑥𝑤𝑥 ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) ↔ ( ∀ 𝑧𝑀 ( 𝑧𝑥 → ∃ 𝑤𝑀 𝑤𝑧 ) ∧ ∀ 𝑧𝑀𝑤𝑀 ( ( 𝑧𝑥𝑤𝑥 ) → ( ¬ 𝑧 = 𝑤 → ∀ 𝑦𝑀 ( 𝑦𝑧 → ¬ 𝑦𝑤 ) ) ) ) ) )
26 simpl ( ( Tr 𝑀𝑦𝑀 ) → Tr 𝑀 )
27 elin ( 𝑣 ∈ ( 𝑧𝑦 ) ↔ ( 𝑣𝑧𝑣𝑦 ) )
28 27 eubii ( ∃! 𝑣 𝑣 ∈ ( 𝑧𝑦 ) ↔ ∃! 𝑣 ( 𝑣𝑧𝑣𝑦 ) )
29 trel ( Tr 𝑀 → ( ( 𝑣𝑦𝑦𝑀 ) → 𝑣𝑀 ) )
30 29 imp ( ( Tr 𝑀 ∧ ( 𝑣𝑦𝑦𝑀 ) ) → 𝑣𝑀 )
31 30 anass1rs ( ( ( Tr 𝑀𝑦𝑀 ) ∧ 𝑣𝑦 ) → 𝑣𝑀 )
32 31 adantrl ( ( ( Tr 𝑀𝑦𝑀 ) ∧ ( 𝑣𝑧𝑣𝑦 ) ) → 𝑣𝑀 )
33 32 reueubd ( ( Tr 𝑀𝑦𝑀 ) → ( ∃! 𝑣𝑀 ( 𝑣𝑧𝑣𝑦 ) ↔ ∃! 𝑣 ( 𝑣𝑧𝑣𝑦 ) ) )
34 28 33 bitr4id ( ( Tr 𝑀𝑦𝑀 ) → ( ∃! 𝑣 𝑣 ∈ ( 𝑧𝑦 ) ↔ ∃! 𝑣𝑀 ( 𝑣𝑧𝑣𝑦 ) ) )
35 reu6 ( ∃! 𝑣𝑀 ( 𝑣𝑧𝑣𝑦 ) ↔ ∃ 𝑤𝑀𝑣𝑀 ( ( 𝑣𝑧𝑣𝑦 ) ↔ 𝑣 = 𝑤 ) )
36 34 35 bitrdi ( ( Tr 𝑀𝑦𝑀 ) → ( ∃! 𝑣 𝑣 ∈ ( 𝑧𝑦 ) ↔ ∃ 𝑤𝑀𝑣𝑀 ( ( 𝑣𝑧𝑣𝑦 ) ↔ 𝑣 = 𝑤 ) ) )
37 26 36 ralabsobidv ( ( ( Tr 𝑀𝑦𝑀 ) ∧ 𝑥𝑀 ) → ( ∀ 𝑧𝑥 ∃! 𝑣 𝑣 ∈ ( 𝑧𝑦 ) ↔ ∀ 𝑧𝑀 ( 𝑧𝑥 → ∃ 𝑤𝑀𝑣𝑀 ( ( 𝑣𝑧𝑣𝑦 ) ↔ 𝑣 = 𝑤 ) ) ) )
38 37 an32s ( ( ( Tr 𝑀𝑥𝑀 ) ∧ 𝑦𝑀 ) → ( ∀ 𝑧𝑥 ∃! 𝑣 𝑣 ∈ ( 𝑧𝑦 ) ↔ ∀ 𝑧𝑀 ( 𝑧𝑥 → ∃ 𝑤𝑀𝑣𝑀 ( ( 𝑣𝑧𝑣𝑦 ) ↔ 𝑣 = 𝑤 ) ) ) )
39 38 rexbidva ( ( Tr 𝑀𝑥𝑀 ) → ( ∃ 𝑦𝑀𝑧𝑥 ∃! 𝑣 𝑣 ∈ ( 𝑧𝑦 ) ↔ ∃ 𝑦𝑀𝑧𝑀 ( 𝑧𝑥 → ∃ 𝑤𝑀𝑣𝑀 ( ( 𝑣𝑧𝑣𝑦 ) ↔ 𝑣 = 𝑤 ) ) ) )
40 25 39 imbi12d ( ( Tr 𝑀𝑥𝑀 ) → ( ( ( ∀ 𝑧𝑥 𝑧 ≠ ∅ ∧ ∀ 𝑧𝑥𝑤𝑥 ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) → ∃ 𝑦𝑀𝑧𝑥 ∃! 𝑣 𝑣 ∈ ( 𝑧𝑦 ) ) ↔ ( ( ∀ 𝑧𝑀 ( 𝑧𝑥 → ∃ 𝑤𝑀 𝑤𝑧 ) ∧ ∀ 𝑧𝑀𝑤𝑀 ( ( 𝑧𝑥𝑤𝑥 ) → ( ¬ 𝑧 = 𝑤 → ∀ 𝑦𝑀 ( 𝑦𝑧 → ¬ 𝑦𝑤 ) ) ) ) → ∃ 𝑦𝑀𝑧𝑀 ( 𝑧𝑥 → ∃ 𝑤𝑀𝑣𝑀 ( ( 𝑣𝑧𝑣𝑦 ) ↔ 𝑣 = 𝑤 ) ) ) ) )
41 40 ralbidva ( Tr 𝑀 → ( ∀ 𝑥𝑀 ( ( ∀ 𝑧𝑥 𝑧 ≠ ∅ ∧ ∀ 𝑧𝑥𝑤𝑥 ( 𝑧𝑤 → ( 𝑧𝑤 ) = ∅ ) ) → ∃ 𝑦𝑀𝑧𝑥 ∃! 𝑣 𝑣 ∈ ( 𝑧𝑦 ) ) ↔ ∀ 𝑥𝑀 ( ( ∀ 𝑧𝑀 ( 𝑧𝑥 → ∃ 𝑤𝑀 𝑤𝑧 ) ∧ ∀ 𝑧𝑀𝑤𝑀 ( ( 𝑧𝑥𝑤𝑥 ) → ( ¬ 𝑧 = 𝑤 → ∀ 𝑦𝑀 ( 𝑦𝑧 → ¬ 𝑦𝑤 ) ) ) ) → ∃ 𝑦𝑀𝑧𝑀 ( 𝑧𝑥 → ∃ 𝑤𝑀𝑣𝑀 ( ( 𝑣𝑧𝑣𝑦 ) ↔ 𝑣 = 𝑤 ) ) ) ) )