Metamath Proof Explorer


Theorem rankxpsuc

Description: The rank of a Cartesian product when the rank of the union of its arguments is a successor ordinal. Part of Exercise 4 of Kunen p. 107. See rankxplim for the limit ordinal case. (Contributed by NM, 19-Sep-2006)

Ref Expression
Hypotheses rankxplim.1 𝐴 ∈ V
rankxplim.2 𝐵 ∈ V
Assertion rankxpsuc ( ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 ∧ ( 𝐴 × 𝐵 ) ≠ ∅ ) → ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc suc ( rank ‘ ( 𝐴𝐵 ) ) )

Proof

Step Hyp Ref Expression
1 rankxplim.1 𝐴 ∈ V
2 rankxplim.2 𝐵 ∈ V
3 unixp ( ( 𝐴 × 𝐵 ) ≠ ∅ → ( 𝐴 × 𝐵 ) = ( 𝐴𝐵 ) )
4 3 fveq2d ( ( 𝐴 × 𝐵 ) ≠ ∅ → ( rank ‘ ( 𝐴 × 𝐵 ) ) = ( rank ‘ ( 𝐴𝐵 ) ) )
5 rankuni ( rank ‘ ( 𝐴 × 𝐵 ) ) = ( rank ‘ ( 𝐴 × 𝐵 ) )
6 rankuni ( rank ‘ ( 𝐴 × 𝐵 ) ) = ( rank ‘ ( 𝐴 × 𝐵 ) )
7 6 unieqi ( rank ‘ ( 𝐴 × 𝐵 ) ) = ( rank ‘ ( 𝐴 × 𝐵 ) )
8 5 7 eqtri ( rank ‘ ( 𝐴 × 𝐵 ) ) = ( rank ‘ ( 𝐴 × 𝐵 ) )
9 4 8 eqtr3di ( ( 𝐴 × 𝐵 ) ≠ ∅ → ( rank ‘ ( 𝐴𝐵 ) ) = ( rank ‘ ( 𝐴 × 𝐵 ) ) )
10 suc11reg ( suc ( rank ‘ ( 𝐴𝐵 ) ) = suc ( rank ‘ ( 𝐴 × 𝐵 ) ) ↔ ( rank ‘ ( 𝐴𝐵 ) ) = ( rank ‘ ( 𝐴 × 𝐵 ) ) )
11 9 10 sylibr ( ( 𝐴 × 𝐵 ) ≠ ∅ → suc ( rank ‘ ( 𝐴𝐵 ) ) = suc ( rank ‘ ( 𝐴 × 𝐵 ) ) )
12 11 adantl ( ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 ∧ ( 𝐴 × 𝐵 ) ≠ ∅ ) → suc ( rank ‘ ( 𝐴𝐵 ) ) = suc ( rank ‘ ( 𝐴 × 𝐵 ) ) )
13 fvex ( rank ‘ ( 𝐴𝐵 ) ) ∈ V
14 eleq1 ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 → ( ( rank ‘ ( 𝐴𝐵 ) ) ∈ V ↔ suc 𝐶 ∈ V ) )
15 13 14 mpbii ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 → suc 𝐶 ∈ V )
16 sucexb ( 𝐶 ∈ V ↔ suc 𝐶 ∈ V )
17 15 16 sylibr ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶𝐶 ∈ V )
18 nlimsucg ( 𝐶 ∈ V → ¬ Lim suc 𝐶 )
19 17 18 syl ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 → ¬ Lim suc 𝐶 )
20 limeq ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 → ( Lim ( rank ‘ ( 𝐴𝐵 ) ) ↔ Lim suc 𝐶 ) )
21 19 20 mtbird ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 → ¬ Lim ( rank ‘ ( 𝐴𝐵 ) ) )
22 1 2 rankxplim2 ( Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) → Lim ( rank ‘ ( 𝐴𝐵 ) ) )
23 21 22 nsyl ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 → ¬ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) )
24 1 2 xpex ( 𝐴 × 𝐵 ) ∈ V
25 24 rankeq0 ( ( 𝐴 × 𝐵 ) = ∅ ↔ ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ )
26 25 necon3abii ( ( 𝐴 × 𝐵 ) ≠ ∅ ↔ ¬ ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ )
27 rankon ( rank ‘ ( 𝐴 × 𝐵 ) ) ∈ On
28 27 onordi Ord ( rank ‘ ( 𝐴 × 𝐵 ) )
29 ordzsl ( Ord ( rank ‘ ( 𝐴 × 𝐵 ) ) ↔ ( ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ ∨ ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ∨ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ) )
30 28 29 mpbi ( ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ ∨ ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ∨ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) )
31 3orass ( ( ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ ∨ ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ∨ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ) ↔ ( ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ ∨ ( ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ∨ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ) ) )
32 30 31 mpbi ( ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ ∨ ( ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ∨ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ) )
33 32 ori ( ¬ ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ → ( ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ∨ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ) )
34 26 33 sylbi ( ( 𝐴 × 𝐵 ) ≠ ∅ → ( ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ∨ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ) )
35 34 ord ( ( 𝐴 × 𝐵 ) ≠ ∅ → ( ¬ ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 → Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ) )
36 35 con1d ( ( 𝐴 × 𝐵 ) ≠ ∅ → ( ¬ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) → ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ) )
37 23 36 syl5com ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 → ( ( 𝐴 × 𝐵 ) ≠ ∅ → ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ) )
38 nlimsucg ( 𝑥 ∈ V → ¬ Lim suc 𝑥 )
39 38 elv ¬ Lim suc 𝑥
40 limeq ( ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 → ( Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ↔ Lim suc 𝑥 ) )
41 39 40 mtbiri ( ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 → ¬ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) )
42 41 rexlimivw ( ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 → ¬ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) )
43 1 2 rankxplim3 ( Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ↔ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) )
44 42 43 sylnib ( ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 → ¬ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) )
45 37 44 syl6com ( ( 𝐴 × 𝐵 ) ≠ ∅ → ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 → ¬ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ) )
46 unixp0 ( ( 𝐴 × 𝐵 ) = ∅ ↔ ( 𝐴 × 𝐵 ) = ∅ )
47 24 uniex ( 𝐴 × 𝐵 ) ∈ V
48 47 rankeq0 ( ( 𝐴 × 𝐵 ) = ∅ ↔ ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ )
49 6 eqeq1i ( ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ ↔ ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ )
50 46 48 49 3bitri ( ( 𝐴 × 𝐵 ) = ∅ ↔ ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ )
51 50 necon3abii ( ( 𝐴 × 𝐵 ) ≠ ∅ ↔ ¬ ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ )
52 onuni ( ( rank ‘ ( 𝐴 × 𝐵 ) ) ∈ On → ( rank ‘ ( 𝐴 × 𝐵 ) ) ∈ On )
53 27 52 ax-mp ( rank ‘ ( 𝐴 × 𝐵 ) ) ∈ On
54 53 onordi Ord ( rank ‘ ( 𝐴 × 𝐵 ) )
55 ordzsl ( Ord ( rank ‘ ( 𝐴 × 𝐵 ) ) ↔ ( ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ ∨ ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ∨ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ) )
56 54 55 mpbi ( ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ ∨ ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ∨ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) )
57 3orass ( ( ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ ∨ ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ∨ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ) ↔ ( ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ ∨ ( ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ∨ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ) ) )
58 56 57 mpbi ( ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ ∨ ( ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ∨ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ) )
59 58 ori ( ¬ ( rank ‘ ( 𝐴 × 𝐵 ) ) = ∅ → ( ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ∨ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ) )
60 51 59 sylbi ( ( 𝐴 × 𝐵 ) ≠ ∅ → ( ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ∨ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ) )
61 60 ord ( ( 𝐴 × 𝐵 ) ≠ ∅ → ( ¬ ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 → Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) ) )
62 61 con1d ( ( 𝐴 × 𝐵 ) ≠ ∅ → ( ¬ Lim ( rank ‘ ( 𝐴 × 𝐵 ) ) → ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ) )
63 45 62 syld ( ( 𝐴 × 𝐵 ) ≠ ∅ → ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 → ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ) )
64 63 impcom ( ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 ∧ ( 𝐴 × 𝐵 ) ≠ ∅ ) → ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 )
65 onsucuni2 ( ( ( rank ‘ ( 𝐴 × 𝐵 ) ) ∈ On ∧ ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ) → suc ( rank ‘ ( 𝐴 × 𝐵 ) ) = ( rank ‘ ( 𝐴 × 𝐵 ) ) )
66 53 65 mpan ( ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 → suc ( rank ‘ ( 𝐴 × 𝐵 ) ) = ( rank ‘ ( 𝐴 × 𝐵 ) ) )
67 66 rexlimivw ( ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 → suc ( rank ‘ ( 𝐴 × 𝐵 ) ) = ( rank ‘ ( 𝐴 × 𝐵 ) ) )
68 64 67 syl ( ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 ∧ ( 𝐴 × 𝐵 ) ≠ ∅ ) → suc ( rank ‘ ( 𝐴 × 𝐵 ) ) = ( rank ‘ ( 𝐴 × 𝐵 ) ) )
69 12 68 eqtrd ( ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 ∧ ( 𝐴 × 𝐵 ) ≠ ∅ ) → suc ( rank ‘ ( 𝐴𝐵 ) ) = ( rank ‘ ( 𝐴 × 𝐵 ) ) )
70 suc11reg ( suc suc ( rank ‘ ( 𝐴𝐵 ) ) = suc ( rank ‘ ( 𝐴 × 𝐵 ) ) ↔ suc ( rank ‘ ( 𝐴𝐵 ) ) = ( rank ‘ ( 𝐴 × 𝐵 ) ) )
71 69 70 sylibr ( ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 ∧ ( 𝐴 × 𝐵 ) ≠ ∅ ) → suc suc ( rank ‘ ( 𝐴𝐵 ) ) = suc ( rank ‘ ( 𝐴 × 𝐵 ) ) )
72 37 imp ( ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 ∧ ( 𝐴 × 𝐵 ) ≠ ∅ ) → ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 )
73 onsucuni2 ( ( ( rank ‘ ( 𝐴 × 𝐵 ) ) ∈ On ∧ ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 ) → suc ( rank ‘ ( 𝐴 × 𝐵 ) ) = ( rank ‘ ( 𝐴 × 𝐵 ) ) )
74 27 73 mpan ( ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 → suc ( rank ‘ ( 𝐴 × 𝐵 ) ) = ( rank ‘ ( 𝐴 × 𝐵 ) ) )
75 74 rexlimivw ( ∃ 𝑥 ∈ On ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc 𝑥 → suc ( rank ‘ ( 𝐴 × 𝐵 ) ) = ( rank ‘ ( 𝐴 × 𝐵 ) ) )
76 72 75 syl ( ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 ∧ ( 𝐴 × 𝐵 ) ≠ ∅ ) → suc ( rank ‘ ( 𝐴 × 𝐵 ) ) = ( rank ‘ ( 𝐴 × 𝐵 ) ) )
77 71 76 eqtr2d ( ( ( rank ‘ ( 𝐴𝐵 ) ) = suc 𝐶 ∧ ( 𝐴 × 𝐵 ) ≠ ∅ ) → ( rank ‘ ( 𝐴 × 𝐵 ) ) = suc suc ( rank ‘ ( 𝐴𝐵 ) ) )