Metamath Proof Explorer


Theorem unwf

Description: A binary union is well-founded iff its elements are. (Contributed by Mario Carneiro, 10-Jun-2013) (Revised by Mario Carneiro, 17-Nov-2014)

Ref Expression
Assertion unwf ( ( 𝐴 ∈ ∪ ( 𝑅1 “ On ) ∧ 𝐵 ∈ ∪ ( 𝑅1 “ On ) ) ↔ ( 𝐴 ∪ 𝐵 ) ∈ ∪ ( 𝑅1 “ On ) )

Proof

Step Hyp Ref Expression
1 r1rankidb ⊢ ( 𝐴 ∈ ∪ ( 𝑅1 “ On ) → 𝐴 ⊆ ( 𝑅1 ‘ ( rank ‘ 𝐴 ) ) )
2 1 adantr ⊢ ( ( 𝐴 ∈ ∪ ( 𝑅1 “ On ) ∧ 𝐵 ∈ ∪ ( 𝑅1 “ On ) ) → 𝐴 ⊆ ( 𝑅1 ‘ ( rank ‘ 𝐴 ) ) )
3 ssun1 ⊢ ( rank ‘ 𝐴 ) ⊆ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) )
4 rankdmr1 ⊢ ( rank ‘ 𝐴 ) ∈ dom 𝑅1
5 r1dmlim ⊢ Lim dom 𝑅1
6 limord ⊢ ( Lim dom 𝑅1 → Ord dom 𝑅1 )
7 5 6 ax-mp ⊢ Ord dom 𝑅1
8 rankdmr1 ⊢ ( rank ‘ 𝐵 ) ∈ dom 𝑅1
9 ordunel ⊢ ( ( Ord dom 𝑅1 ∧ ( rank ‘ 𝐴 ) ∈ dom 𝑅1 ∧ ( rank ‘ 𝐵 ) ∈ dom 𝑅1 ) → ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ∈ dom 𝑅1 )
10 7 4 8 9 mp3an ⊢ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ∈ dom 𝑅1
11 r1ord3g ⊢ ( ( ( rank ‘ 𝐴 ) ∈ dom 𝑅1 ∧ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ∈ dom 𝑅1 ) → ( ( rank ‘ 𝐴 ) ⊆ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) → ( 𝑅1 ‘ ( rank ‘ 𝐴 ) ) ⊆ ( 𝑅1 ‘ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ) ) )
12 4 10 11 mp2an ⊢ ( ( rank ‘ 𝐴 ) ⊆ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) → ( 𝑅1 ‘ ( rank ‘ 𝐴 ) ) ⊆ ( 𝑅1 ‘ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ) )
13 3 12 ax-mp ⊢ ( 𝑅1 ‘ ( rank ‘ 𝐴 ) ) ⊆ ( 𝑅1 ‘ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) )
14 2 13 sstrdi ⊢ ( ( 𝐴 ∈ ∪ ( 𝑅1 “ On ) ∧ 𝐵 ∈ ∪ ( 𝑅1 “ On ) ) → 𝐴 ⊆ ( 𝑅1 ‘ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ) )
15 r1rankidb ⊢ ( 𝐵 ∈ ∪ ( 𝑅1 “ On ) → 𝐵 ⊆ ( 𝑅1 ‘ ( rank ‘ 𝐵 ) ) )
16 15 adantl ⊢ ( ( 𝐴 ∈ ∪ ( 𝑅1 “ On ) ∧ 𝐵 ∈ ∪ ( 𝑅1 “ On ) ) → 𝐵 ⊆ ( 𝑅1 ‘ ( rank ‘ 𝐵 ) ) )
17 ssun2 ⊢ ( rank ‘ 𝐵 ) ⊆ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) )
18 r1ord3g ⊢ ( ( ( rank ‘ 𝐵 ) ∈ dom 𝑅1 ∧ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ∈ dom 𝑅1 ) → ( ( rank ‘ 𝐵 ) ⊆ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) → ( 𝑅1 ‘ ( rank ‘ 𝐵 ) ) ⊆ ( 𝑅1 ‘ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ) ) )
19 8 10 18 mp2an ⊢ ( ( rank ‘ 𝐵 ) ⊆ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) → ( 𝑅1 ‘ ( rank ‘ 𝐵 ) ) ⊆ ( 𝑅1 ‘ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ) )
20 17 19 ax-mp ⊢ ( 𝑅1 ‘ ( rank ‘ 𝐵 ) ) ⊆ ( 𝑅1 ‘ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) )
21 16 20 sstrdi ⊢ ( ( 𝐴 ∈ ∪ ( 𝑅1 “ On ) ∧ 𝐵 ∈ ∪ ( 𝑅1 “ On ) ) → 𝐵 ⊆ ( 𝑅1 ‘ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ) )
22 14 21 unssd ⊢ ( ( 𝐴 ∈ ∪ ( 𝑅1 “ On ) ∧ 𝐵 ∈ ∪ ( 𝑅1 “ On ) ) → ( 𝐴 ∪ 𝐵 ) ⊆ ( 𝑅1 ‘ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ) )
23 fvex ⊢ ( 𝑅1 ‘ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ) ∈ V
24 23 elpw2 ⊢ ( ( 𝐴 ∪ 𝐵 ) ∈ 𝒫 ( 𝑅1 ‘ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ) ↔ ( 𝐴 ∪ 𝐵 ) ⊆ ( 𝑅1 ‘ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ) )
25 22 24 sylibr ⊢ ( ( 𝐴 ∈ ∪ ( 𝑅1 “ On ) ∧ 𝐵 ∈ ∪ ( 𝑅1 “ On ) ) → ( 𝐴 ∪ 𝐵 ) ∈ 𝒫 ( 𝑅1 ‘ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ) )
26 r1sucg ⊢ ( ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ∈ dom 𝑅1 → ( 𝑅1 ‘ suc ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ) = 𝒫 ( 𝑅1 ‘ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ) )
27 10 26 ax-mp ⊢ ( 𝑅1 ‘ suc ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ) = 𝒫 ( 𝑅1 ‘ ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) )
28 25 27 eleqtrrdi ⊢ ( ( 𝐴 ∈ ∪ ( 𝑅1 “ On ) ∧ 𝐵 ∈ ∪ ( 𝑅1 “ On ) ) → ( 𝐴 ∪ 𝐵 ) ∈ ( 𝑅1 ‘ suc ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ) )
29 r1elwf ⊢ ( ( 𝐴 ∪ 𝐵 ) ∈ ( 𝑅1 ‘ suc ( ( rank ‘ 𝐴 ) ∪ ( rank ‘ 𝐵 ) ) ) → ( 𝐴 ∪ 𝐵 ) ∈ ∪ ( 𝑅1 “ On ) )
30 28 29 syl ⊢ ( ( 𝐴 ∈ ∪ ( 𝑅1 “ On ) ∧ 𝐵 ∈ ∪ ( 𝑅1 “ On ) ) → ( 𝐴 ∪ 𝐵 ) ∈ ∪ ( 𝑅1 “ On ) )
31 ssun1 ⊢ 𝐴 ⊆ ( 𝐴 ∪ 𝐵 )
32 sswf ⊢ ( ( ( 𝐴 ∪ 𝐵 ) ∈ ∪ ( 𝑅1 “ On ) ∧ 𝐴 ⊆ ( 𝐴 ∪ 𝐵 ) ) → 𝐴 ∈ ∪ ( 𝑅1 “ On ) )
33 31 32 mpan2 ⊢ ( ( 𝐴 ∪ 𝐵 ) ∈ ∪ ( 𝑅1 “ On ) → 𝐴 ∈ ∪ ( 𝑅1 “ On ) )
34 ssun2 ⊢ 𝐵 ⊆ ( 𝐴 ∪ 𝐵 )
35 sswf ⊢ ( ( ( 𝐴 ∪ 𝐵 ) ∈ ∪ ( 𝑅1 “ On ) ∧ 𝐵 ⊆ ( 𝐴 ∪ 𝐵 ) ) → 𝐵 ∈ ∪ ( 𝑅1 “ On ) )
36 34 35 mpan2 ⊢ ( ( 𝐴 ∪ 𝐵 ) ∈ ∪ ( 𝑅1 “ On ) → 𝐵 ∈ ∪ ( 𝑅1 “ On ) )
37 33 36 jca ⊢ ( ( 𝐴 ∪ 𝐵 ) ∈ ∪ ( 𝑅1 “ On ) → ( 𝐴 ∈ ∪ ( 𝑅1 “ On ) ∧ 𝐵 ∈ ∪ ( 𝑅1 “ On ) ) )
38 30 37 impbii ⊢ ( ( 𝐴 ∈ ∪ ( 𝑅1 “ On ) ∧ 𝐵 ∈ ∪ ( 𝑅1 “ On ) ) ↔ ( 𝐴 ∪ 𝐵 ) ∈ ∪ ( 𝑅1 “ On ) )