Metamath Proof Explorer


Theorem onov0suclim

Description: Compactly express rules for binary operations on ordinals. (Contributed by RP, 18-Jan-2025)

Ref Expression
Hypotheses onov0suclim.0 ( 𝐴 ∈ On → ( 𝐴 ∅ ) = 𝐷 )
onov0suclim.suc ( ( 𝐴 ∈ On ∧ 𝐶 ∈ On ) → ( 𝐴 suc 𝐶 ) = 𝐸 )
onov0suclim.lim ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ Lim 𝐵 ) → ( 𝐴 𝐵 ) = 𝐹 )
Assertion onov0suclim ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) → ( ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = 𝐷 ) ∧ ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ( 𝐴 𝐵 ) = 𝐸 ) ∧ ( Lim 𝐵 → ( 𝐴 𝐵 ) = 𝐹 ) ) )

Proof

Step Hyp Ref Expression
1 onov0suclim.0 ( 𝐴 ∈ On → ( 𝐴 ∅ ) = 𝐷 )
2 onov0suclim.suc ( ( 𝐴 ∈ On ∧ 𝐶 ∈ On ) → ( 𝐴 suc 𝐶 ) = 𝐸 )
3 onov0suclim.lim ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ Lim 𝐵 ) → ( 𝐴 𝐵 ) = 𝐹 )
4 eloni ( 𝐵 ∈ On → Ord 𝐵 )
5 orduniorsuc ( Ord 𝐵 → ( 𝐵 = 𝐵𝐵 = suc 𝐵 ) )
6 unizlim ( Ord 𝐵 → ( 𝐵 = 𝐵 ↔ ( 𝐵 = ∅ ∨ Lim 𝐵 ) ) )
7 6 biimpd ( Ord 𝐵 → ( 𝐵 = 𝐵 → ( 𝐵 = ∅ ∨ Lim 𝐵 ) ) )
8 7 orim1d ( Ord 𝐵 → ( ( 𝐵 = 𝐵𝐵 = suc 𝐵 ) → ( ( 𝐵 = ∅ ∨ Lim 𝐵 ) ∨ 𝐵 = suc 𝐵 ) ) )
9 5 8 mpd ( Ord 𝐵 → ( ( 𝐵 = ∅ ∨ Lim 𝐵 ) ∨ 𝐵 = suc 𝐵 ) )
10 4 9 syl ( 𝐵 ∈ On → ( ( 𝐵 = ∅ ∨ Lim 𝐵 ) ∨ 𝐵 = suc 𝐵 ) )
11 10 adantl ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) → ( ( 𝐵 = ∅ ∨ Lim 𝐵 ) ∨ 𝐵 = suc 𝐵 ) )
12 oveq2 ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = ( 𝐴 ∅ ) )
13 12 1 sylan9eqr ( ( 𝐴 ∈ On ∧ 𝐵 = ∅ ) → ( 𝐴 𝐵 ) = 𝐷 )
14 13 ex ( 𝐴 ∈ On → ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = 𝐷 ) )
15 14 ad2antrr ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ 𝐵 = ∅ ) → ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = 𝐷 ) )
16 eloni ( 𝐶 ∈ On → Ord 𝐶 )
17 0elsuc ( Ord 𝐶 → ∅ ∈ suc 𝐶 )
18 16 17 syl ( 𝐶 ∈ On → ∅ ∈ suc 𝐶 )
19 18 adantl ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ∅ ∈ suc 𝐶 )
20 simpl ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → 𝐵 = suc 𝐶 )
21 19 20 eleqtrrd ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ∅ ∈ 𝐵 )
22 n0i ( ∅ ∈ 𝐵 → ¬ 𝐵 = ∅ )
23 21 22 syl ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ¬ 𝐵 = ∅ )
24 23 pm2.21d ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = 𝐸 ) )
25 24 adantl ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ ( 𝐵 = suc 𝐶𝐶 ∈ On ) ) → ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = 𝐸 ) )
26 25 impancom ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ 𝐵 = ∅ ) → ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ( 𝐴 𝐵 ) = 𝐸 ) )
27 nlim0 ¬ Lim ∅
28 limeq ( 𝐵 = ∅ → ( Lim 𝐵 ↔ Lim ∅ ) )
29 27 28 mtbiri ( 𝐵 = ∅ → ¬ Lim 𝐵 )
30 29 adantl ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ 𝐵 = ∅ ) → ¬ Lim 𝐵 )
31 30 pm2.21d ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ 𝐵 = ∅ ) → ( Lim 𝐵 → ( 𝐴 𝐵 ) = 𝐹 ) )
32 15 26 31 3jca ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ 𝐵 = ∅ ) → ( ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = 𝐷 ) ∧ ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ( 𝐴 𝐵 ) = 𝐸 ) ∧ ( Lim 𝐵 → ( 𝐴 𝐵 ) = 𝐹 ) ) )
33 32 ex ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) → ( 𝐵 = ∅ → ( ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = 𝐷 ) ∧ ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ( 𝐴 𝐵 ) = 𝐸 ) ∧ ( Lim 𝐵 → ( 𝐴 𝐵 ) = 𝐹 ) ) ) )
34 29 con2i ( Lim 𝐵 → ¬ 𝐵 = ∅ )
35 34 adantl ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ Lim 𝐵 ) → ¬ 𝐵 = ∅ )
36 35 pm2.21d ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ Lim 𝐵 ) → ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = 𝐷 ) )
37 limeq ( 𝐵 = suc 𝐶 → ( Lim 𝐵 ↔ Lim suc 𝐶 ) )
38 37 notbid ( 𝐵 = suc 𝐶 → ( ¬ Lim 𝐵 ↔ ¬ Lim suc 𝐶 ) )
39 38 biimprd ( 𝐵 = suc 𝐶 → ( ¬ Lim suc 𝐶 → ¬ Lim 𝐵 ) )
40 nlimsucg ( 𝐶 ∈ On → ¬ Lim suc 𝐶 )
41 39 40 impel ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ¬ Lim 𝐵 )
42 41 adantl ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ ( 𝐵 = suc 𝐶𝐶 ∈ On ) ) → ¬ Lim 𝐵 )
43 42 pm2.21d ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ ( 𝐵 = suc 𝐶𝐶 ∈ On ) ) → ( Lim 𝐵 → ( 𝐴 𝐵 ) = 𝐸 ) )
44 43 impancom ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ Lim 𝐵 ) → ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ( 𝐴 𝐵 ) = 𝐸 ) )
45 3 a1d ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ Lim 𝐵 ) → ( Lim 𝐵 → ( 𝐴 𝐵 ) = 𝐹 ) )
46 36 44 45 3jca ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ Lim 𝐵 ) → ( ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = 𝐷 ) ∧ ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ( 𝐴 𝐵 ) = 𝐸 ) ∧ ( Lim 𝐵 → ( 𝐴 𝐵 ) = 𝐹 ) ) )
47 46 ex ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) → ( Lim 𝐵 → ( ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = 𝐷 ) ∧ ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ( 𝐴 𝐵 ) = 𝐸 ) ∧ ( Lim 𝐵 → ( 𝐴 𝐵 ) = 𝐹 ) ) ) )
48 33 47 jaod ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) → ( ( 𝐵 = ∅ ∨ Lim 𝐵 ) → ( ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = 𝐷 ) ∧ ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ( 𝐴 𝐵 ) = 𝐸 ) ∧ ( Lim 𝐵 → ( 𝐴 𝐵 ) = 𝐹 ) ) ) )
49 1n0 1o ≠ ∅
50 necom ( 1o ≠ ∅ ↔ ∅ ≠ 1o )
51 df-1o 1o = suc ∅
52 uni0 ∅ = ∅
53 suceq ( ∅ = ∅ → suc ∅ = suc ∅ )
54 52 53 ax-mp suc ∅ = suc ∅
55 51 54 eqtr4i 1o = suc
56 55 neeq2i ( ∅ ≠ 1o ↔ ∅ ≠ suc ∅ )
57 df-ne ( ∅ ≠ suc ∅ ↔ ¬ ∅ = suc ∅ )
58 50 56 57 3bitri ( 1o ≠ ∅ ↔ ¬ ∅ = suc ∅ )
59 id ( 𝐵 = ∅ → 𝐵 = ∅ )
60 unieq ( 𝐵 = ∅ → 𝐵 = ∅ )
61 suceq ( 𝐵 = ∅ → suc 𝐵 = suc ∅ )
62 60 61 syl ( 𝐵 = ∅ → suc 𝐵 = suc ∅ )
63 59 62 eqeq12d ( 𝐵 = ∅ → ( 𝐵 = suc 𝐵 ↔ ∅ = suc ∅ ) )
64 63 notbid ( 𝐵 = ∅ → ( ¬ 𝐵 = suc 𝐵 ↔ ¬ ∅ = suc ∅ ) )
65 58 64 bitr4id ( 𝐵 = ∅ → ( 1o ≠ ∅ ↔ ¬ 𝐵 = suc 𝐵 ) )
66 49 65 mpbii ( 𝐵 = ∅ → ¬ 𝐵 = suc 𝐵 )
67 66 con2i ( 𝐵 = suc 𝐵 → ¬ 𝐵 = ∅ )
68 67 adantl ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ 𝐵 = suc 𝐵 ) → ¬ 𝐵 = ∅ )
69 68 pm2.21d ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ 𝐵 = suc 𝐵 ) → ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = 𝐷 ) )
70 simprl ( ( 𝐴 ∈ On ∧ ( 𝐵 = suc 𝐶𝐶 ∈ On ) ) → 𝐵 = suc 𝐶 )
71 70 oveq2d ( ( 𝐴 ∈ On ∧ ( 𝐵 = suc 𝐶𝐶 ∈ On ) ) → ( 𝐴 𝐵 ) = ( 𝐴 suc 𝐶 ) )
72 2 adantrl ( ( 𝐴 ∈ On ∧ ( 𝐵 = suc 𝐶𝐶 ∈ On ) ) → ( 𝐴 suc 𝐶 ) = 𝐸 )
73 71 72 eqtrd ( ( 𝐴 ∈ On ∧ ( 𝐵 = suc 𝐶𝐶 ∈ On ) ) → ( 𝐴 𝐵 ) = 𝐸 )
74 73 ex ( 𝐴 ∈ On → ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ( 𝐴 𝐵 ) = 𝐸 ) )
75 74 ad2antrr ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ 𝐵 = suc 𝐵 ) → ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ( 𝐴 𝐵 ) = 𝐸 ) )
76 onuni ( 𝐵 ∈ On → 𝐵 ∈ On )
77 nlimsucg ( 𝐵 ∈ On → ¬ Lim suc 𝐵 )
78 76 77 syl ( 𝐵 ∈ On → ¬ Lim suc 𝐵 )
79 limeq ( 𝐵 = suc 𝐵 → ( Lim 𝐵 ↔ Lim suc 𝐵 ) )
80 79 notbid ( 𝐵 = suc 𝐵 → ( ¬ Lim 𝐵 ↔ ¬ Lim suc 𝐵 ) )
81 80 biimprd ( 𝐵 = suc 𝐵 → ( ¬ Lim suc 𝐵 → ¬ Lim 𝐵 ) )
82 78 81 mpan9 ( ( 𝐵 ∈ On ∧ 𝐵 = suc 𝐵 ) → ¬ Lim 𝐵 )
83 82 adantll ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ 𝐵 = suc 𝐵 ) → ¬ Lim 𝐵 )
84 83 pm2.21d ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ 𝐵 = suc 𝐵 ) → ( Lim 𝐵 → ( 𝐴 𝐵 ) = 𝐹 ) )
85 69 75 84 3jca ( ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) ∧ 𝐵 = suc 𝐵 ) → ( ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = 𝐷 ) ∧ ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ( 𝐴 𝐵 ) = 𝐸 ) ∧ ( Lim 𝐵 → ( 𝐴 𝐵 ) = 𝐹 ) ) )
86 85 ex ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) → ( 𝐵 = suc 𝐵 → ( ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = 𝐷 ) ∧ ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ( 𝐴 𝐵 ) = 𝐸 ) ∧ ( Lim 𝐵 → ( 𝐴 𝐵 ) = 𝐹 ) ) ) )
87 48 86 jaod ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) → ( ( ( 𝐵 = ∅ ∨ Lim 𝐵 ) ∨ 𝐵 = suc 𝐵 ) → ( ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = 𝐷 ) ∧ ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ( 𝐴 𝐵 ) = 𝐸 ) ∧ ( Lim 𝐵 → ( 𝐴 𝐵 ) = 𝐹 ) ) ) )
88 11 87 mpd ( ( 𝐴 ∈ On ∧ 𝐵 ∈ On ) → ( ( 𝐵 = ∅ → ( 𝐴 𝐵 ) = 𝐷 ) ∧ ( ( 𝐵 = suc 𝐶𝐶 ∈ On ) → ( 𝐴 𝐵 ) = 𝐸 ) ∧ ( Lim 𝐵 → ( 𝐴 𝐵 ) = 𝐹 ) ) )