Metamath Proof Explorer


Theorem brwdom2

Description: Alternate characterization of the weak dominance predicate which does not require special treatment of the empty set. (Contributed by Stefan O'Rear, 11-Feb-2015)

Ref Expression
Assertion brwdom2 ( 𝑌𝑉 → ( 𝑋* 𝑌 ↔ ∃ 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto𝑋 ) )

Proof

Step Hyp Ref Expression
1 elex ( 𝑌𝑉𝑌 ∈ V )
2 0wdom ( 𝑌 ∈ V → ∅ ≼* 𝑌 )
3 breq1 ( 𝑋 = ∅ → ( 𝑋* 𝑌 ↔ ∅ ≼* 𝑌 ) )
4 2 3 syl5ibrcom ( 𝑌 ∈ V → ( 𝑋 = ∅ → 𝑋* 𝑌 ) )
5 4 imp ( ( 𝑌 ∈ V ∧ 𝑋 = ∅ ) → 𝑋* 𝑌 )
6 0elpw ∅ ∈ 𝒫 𝑌
7 f1o0 ∅ : ∅ –1-1-onto→ ∅
8 f1ofo ( ∅ : ∅ –1-1-onto→ ∅ → ∅ : ∅ –onto→ ∅ )
9 0ex ∅ ∈ V
10 foeq1 ( 𝑧 = ∅ → ( 𝑧 : ∅ –onto→ ∅ ↔ ∅ : ∅ –onto→ ∅ ) )
11 9 10 spcev ( ∅ : ∅ –onto→ ∅ → ∃ 𝑧 𝑧 : ∅ –onto→ ∅ )
12 7 8 11 mp2b 𝑧 𝑧 : ∅ –onto→ ∅
13 foeq2 ( 𝑦 = ∅ → ( 𝑧 : 𝑦onto→ ∅ ↔ 𝑧 : ∅ –onto→ ∅ ) )
14 13 exbidv ( 𝑦 = ∅ → ( ∃ 𝑧 𝑧 : 𝑦onto→ ∅ ↔ ∃ 𝑧 𝑧 : ∅ –onto→ ∅ ) )
15 14 rspcev ( ( ∅ ∈ 𝒫 𝑌 ∧ ∃ 𝑧 𝑧 : ∅ –onto→ ∅ ) → ∃ 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto→ ∅ )
16 6 12 15 mp2an 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto→ ∅
17 foeq3 ( 𝑋 = ∅ → ( 𝑧 : 𝑦onto𝑋𝑧 : 𝑦onto→ ∅ ) )
18 17 exbidv ( 𝑋 = ∅ → ( ∃ 𝑧 𝑧 : 𝑦onto𝑋 ↔ ∃ 𝑧 𝑧 : 𝑦onto→ ∅ ) )
19 18 rexbidv ( 𝑋 = ∅ → ( ∃ 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto𝑋 ↔ ∃ 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto→ ∅ ) )
20 16 19 mpbiri ( 𝑋 = ∅ → ∃ 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto𝑋 )
21 20 adantl ( ( 𝑌 ∈ V ∧ 𝑋 = ∅ ) → ∃ 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto𝑋 )
22 5 21 2thd ( ( 𝑌 ∈ V ∧ 𝑋 = ∅ ) → ( 𝑋* 𝑌 ↔ ∃ 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto𝑋 ) )
23 brwdomn0 ( 𝑋 ≠ ∅ → ( 𝑋* 𝑌 ↔ ∃ 𝑥 𝑥 : 𝑌onto𝑋 ) )
24 23 adantl ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) → ( 𝑋* 𝑌 ↔ ∃ 𝑥 𝑥 : 𝑌onto𝑋 ) )
25 foeq1 ( 𝑥 = 𝑧 → ( 𝑥 : 𝑌onto𝑋𝑧 : 𝑌onto𝑋 ) )
26 25 cbvexvw ( ∃ 𝑥 𝑥 : 𝑌onto𝑋 ↔ ∃ 𝑧 𝑧 : 𝑌onto𝑋 )
27 pwidg ( 𝑌 ∈ V → 𝑌 ∈ 𝒫 𝑌 )
28 27 ad2antrr ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ∃ 𝑧 𝑧 : 𝑌onto𝑋 ) → 𝑌 ∈ 𝒫 𝑌 )
29 foeq2 ( 𝑦 = 𝑌 → ( 𝑧 : 𝑦onto𝑋𝑧 : 𝑌onto𝑋 ) )
30 29 exbidv ( 𝑦 = 𝑌 → ( ∃ 𝑧 𝑧 : 𝑦onto𝑋 ↔ ∃ 𝑧 𝑧 : 𝑌onto𝑋 ) )
31 30 rspcev ( ( 𝑌 ∈ 𝒫 𝑌 ∧ ∃ 𝑧 𝑧 : 𝑌onto𝑋 ) → ∃ 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto𝑋 )
32 28 31 sylancom ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ∃ 𝑧 𝑧 : 𝑌onto𝑋 ) → ∃ 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto𝑋 )
33 32 ex ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) → ( ∃ 𝑧 𝑧 : 𝑌onto𝑋 → ∃ 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto𝑋 ) )
34 26 33 syl5bi ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) → ( ∃ 𝑥 𝑥 : 𝑌onto𝑋 → ∃ 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto𝑋 ) )
35 n0 ( 𝑋 ≠ ∅ ↔ ∃ 𝑤 𝑤𝑋 )
36 35 biimpi ( 𝑋 ≠ ∅ → ∃ 𝑤 𝑤𝑋 )
37 36 ad2antlr ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) → ∃ 𝑤 𝑤𝑋 )
38 vex 𝑧 ∈ V
39 difexg ( 𝑌 ∈ V → ( 𝑌𝑦 ) ∈ V )
40 snex { 𝑤 } ∈ V
41 xpexg ( ( ( 𝑌𝑦 ) ∈ V ∧ { 𝑤 } ∈ V ) → ( ( 𝑌𝑦 ) × { 𝑤 } ) ∈ V )
42 39 40 41 sylancl ( 𝑌 ∈ V → ( ( 𝑌𝑦 ) × { 𝑤 } ) ∈ V )
43 unexg ( ( 𝑧 ∈ V ∧ ( ( 𝑌𝑦 ) × { 𝑤 } ) ∈ V ) → ( 𝑧 ∪ ( ( 𝑌𝑦 ) × { 𝑤 } ) ) ∈ V )
44 38 42 43 sylancr ( 𝑌 ∈ V → ( 𝑧 ∪ ( ( 𝑌𝑦 ) × { 𝑤 } ) ) ∈ V )
45 44 adantr ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) → ( 𝑧 ∪ ( ( 𝑌𝑦 ) × { 𝑤 } ) ) ∈ V )
46 45 ad2antrr ( ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) ∧ 𝑤𝑋 ) → ( 𝑧 ∪ ( ( 𝑌𝑦 ) × { 𝑤 } ) ) ∈ V )
47 fofn ( 𝑧 : 𝑦onto𝑋𝑧 Fn 𝑦 )
48 47 adantl ( ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) → 𝑧 Fn 𝑦 )
49 48 ad2antlr ( ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) ∧ 𝑤𝑋 ) → 𝑧 Fn 𝑦 )
50 vex 𝑤 ∈ V
51 fnconstg ( 𝑤 ∈ V → ( ( 𝑌𝑦 ) × { 𝑤 } ) Fn ( 𝑌𝑦 ) )
52 50 51 mp1i ( ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) ∧ 𝑤𝑋 ) → ( ( 𝑌𝑦 ) × { 𝑤 } ) Fn ( 𝑌𝑦 ) )
53 disjdif ( 𝑦 ∩ ( 𝑌𝑦 ) ) = ∅
54 53 a1i ( ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) ∧ 𝑤𝑋 ) → ( 𝑦 ∩ ( 𝑌𝑦 ) ) = ∅ )
55 49 52 54 fnund ( ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) ∧ 𝑤𝑋 ) → ( 𝑧 ∪ ( ( 𝑌𝑦 ) × { 𝑤 } ) ) Fn ( 𝑦 ∪ ( 𝑌𝑦 ) ) )
56 elpwi ( 𝑦 ∈ 𝒫 𝑌𝑦𝑌 )
57 undif ( 𝑦𝑌 ↔ ( 𝑦 ∪ ( 𝑌𝑦 ) ) = 𝑌 )
58 56 57 sylib ( 𝑦 ∈ 𝒫 𝑌 → ( 𝑦 ∪ ( 𝑌𝑦 ) ) = 𝑌 )
59 58 ad2antrl ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) → ( 𝑦 ∪ ( 𝑌𝑦 ) ) = 𝑌 )
60 59 adantr ( ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) ∧ 𝑤𝑋 ) → ( 𝑦 ∪ ( 𝑌𝑦 ) ) = 𝑌 )
61 60 fneq2d ( ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) ∧ 𝑤𝑋 ) → ( ( 𝑧 ∪ ( ( 𝑌𝑦 ) × { 𝑤 } ) ) Fn ( 𝑦 ∪ ( 𝑌𝑦 ) ) ↔ ( 𝑧 ∪ ( ( 𝑌𝑦 ) × { 𝑤 } ) ) Fn 𝑌 ) )
62 55 61 mpbid ( ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) ∧ 𝑤𝑋 ) → ( 𝑧 ∪ ( ( 𝑌𝑦 ) × { 𝑤 } ) ) Fn 𝑌 )
63 rnun ran ( 𝑧 ∪ ( ( 𝑌𝑦 ) × { 𝑤 } ) ) = ( ran 𝑧 ∪ ran ( ( 𝑌𝑦 ) × { 𝑤 } ) )
64 forn ( 𝑧 : 𝑦onto𝑋 → ran 𝑧 = 𝑋 )
65 64 ad2antll ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) → ran 𝑧 = 𝑋 )
66 65 adantr ( ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) ∧ 𝑤𝑋 ) → ran 𝑧 = 𝑋 )
67 66 uneq1d ( ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) ∧ 𝑤𝑋 ) → ( ran 𝑧 ∪ ran ( ( 𝑌𝑦 ) × { 𝑤 } ) ) = ( 𝑋 ∪ ran ( ( 𝑌𝑦 ) × { 𝑤 } ) ) )
68 fconst6g ( 𝑤𝑋 → ( ( 𝑌𝑦 ) × { 𝑤 } ) : ( 𝑌𝑦 ) ⟶ 𝑋 )
69 68 frnd ( 𝑤𝑋 → ran ( ( 𝑌𝑦 ) × { 𝑤 } ) ⊆ 𝑋 )
70 69 adantl ( ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) ∧ 𝑤𝑋 ) → ran ( ( 𝑌𝑦 ) × { 𝑤 } ) ⊆ 𝑋 )
71 ssequn2 ( ran ( ( 𝑌𝑦 ) × { 𝑤 } ) ⊆ 𝑋 ↔ ( 𝑋 ∪ ran ( ( 𝑌𝑦 ) × { 𝑤 } ) ) = 𝑋 )
72 70 71 sylib ( ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) ∧ 𝑤𝑋 ) → ( 𝑋 ∪ ran ( ( 𝑌𝑦 ) × { 𝑤 } ) ) = 𝑋 )
73 67 72 eqtrd ( ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) ∧ 𝑤𝑋 ) → ( ran 𝑧 ∪ ran ( ( 𝑌𝑦 ) × { 𝑤 } ) ) = 𝑋 )
74 63 73 eqtrid ( ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) ∧ 𝑤𝑋 ) → ran ( 𝑧 ∪ ( ( 𝑌𝑦 ) × { 𝑤 } ) ) = 𝑋 )
75 df-fo ( ( 𝑧 ∪ ( ( 𝑌𝑦 ) × { 𝑤 } ) ) : 𝑌onto𝑋 ↔ ( ( 𝑧 ∪ ( ( 𝑌𝑦 ) × { 𝑤 } ) ) Fn 𝑌 ∧ ran ( 𝑧 ∪ ( ( 𝑌𝑦 ) × { 𝑤 } ) ) = 𝑋 ) )
76 62 74 75 sylanbrc ( ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) ∧ 𝑤𝑋 ) → ( 𝑧 ∪ ( ( 𝑌𝑦 ) × { 𝑤 } ) ) : 𝑌onto𝑋 )
77 foeq1 ( 𝑥 = ( 𝑧 ∪ ( ( 𝑌𝑦 ) × { 𝑤 } ) ) → ( 𝑥 : 𝑌onto𝑋 ↔ ( 𝑧 ∪ ( ( 𝑌𝑦 ) × { 𝑤 } ) ) : 𝑌onto𝑋 ) )
78 46 76 77 spcedv ( ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) ∧ 𝑤𝑋 ) → ∃ 𝑥 𝑥 : 𝑌onto𝑋 )
79 37 78 exlimddv ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ ( 𝑦 ∈ 𝒫 𝑌𝑧 : 𝑦onto𝑋 ) ) → ∃ 𝑥 𝑥 : 𝑌onto𝑋 )
80 79 expr ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ 𝑦 ∈ 𝒫 𝑌 ) → ( 𝑧 : 𝑦onto𝑋 → ∃ 𝑥 𝑥 : 𝑌onto𝑋 ) )
81 80 exlimdv ( ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) ∧ 𝑦 ∈ 𝒫 𝑌 ) → ( ∃ 𝑧 𝑧 : 𝑦onto𝑋 → ∃ 𝑥 𝑥 : 𝑌onto𝑋 ) )
82 81 rexlimdva ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) → ( ∃ 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto𝑋 → ∃ 𝑥 𝑥 : 𝑌onto𝑋 ) )
83 34 82 impbid ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) → ( ∃ 𝑥 𝑥 : 𝑌onto𝑋 ↔ ∃ 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto𝑋 ) )
84 24 83 bitrd ( ( 𝑌 ∈ V ∧ 𝑋 ≠ ∅ ) → ( 𝑋* 𝑌 ↔ ∃ 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto𝑋 ) )
85 22 84 pm2.61dane ( 𝑌 ∈ V → ( 𝑋* 𝑌 ↔ ∃ 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto𝑋 ) )
86 1 85 syl ( 𝑌𝑉 → ( 𝑋* 𝑌 ↔ ∃ 𝑦 ∈ 𝒫 𝑌𝑧 𝑧 : 𝑦onto𝑋 ) )