Theorem: Cardinal.isStrongLimit_beth
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rcases eq_or_ne o 0 with (rfl | h)
state_before: α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
H : IsSuccLimit o
⊢ (beth o).IsStrongLimit
state_after: case inl
α : Type u_1
r : α → α → Prop
H : IsSuccLimit 0
⊢ (beth 0).IsStrongLimit

case inr
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
H : IsSuccLimit o
h : o ≠ 0
⊢ (beth o).IsStrongLimit

tactic: rw [beth_zero]
state_before: case inl
α : Type u_1
r : α → α → Prop
H : IsSuccLimit 0
⊢ (beth 0).IsStrongLimit
state_after: case inl
α : Type u_1
r : α → α → Prop
H : IsSuccLimit 0
⊢ ℵ₀.IsStrongLimit

tactic: exact isStrongLimit_aleph0
state_before: case inl
α : Type u_1
r : α → α → Prop
H : IsSuccLimit 0
⊢ ℵ₀.IsStrongLimit
state_after: no goals

tactic: refine ⟨beth_ne_zero o, fun a ha => ?_⟩
state_before: case inr
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
H : IsSuccLimit o
h : o ≠ 0
⊢ (beth o).IsStrongLimit
state_after: case inr
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
H : IsSuccLimit o
h : o ≠ 0
a : Cardinal.{u_2}
ha : a < beth o
⊢ 2 ^ a < beth o

tactic: rw [beth_limit ⟨h, isSuccLimit_iff_succ_lt.1 H⟩] at ha
state_before: case inr
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
H : IsSuccLimit o
h : o ≠ 0
a : Cardinal.{u_2}
ha : a < beth o
⊢ 2 ^ a < beth o
state_after: case inr
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
H : IsSuccLimit o
h : o ≠ 0
a : Cardinal.{u_2}
ha : a < ⨆ a, beth ↑a
⊢ 2 ^ a < beth o

tactic: rcases exists_lt_of_lt_ciSup' ha with ⟨⟨i, hi⟩, ha⟩
state_before: case inr
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
H : IsSuccLimit o
h : o ≠ 0
a : Cardinal.{u_2}
ha : a < ⨆ a, beth ↑a
⊢ 2 ^ a < beth o
state_after: case inr.intro.mk
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
H : IsSuccLimit o
h : o ≠ 0
a : Cardinal.{u_2}
ha✝ : a < ⨆ a, beth ↑a
i : Ordinal.{u_2}
hi : i ∈ Iio o
ha : a < beth ↑⟨i, hi⟩
⊢ 2 ^ a < beth o

tactic: have := power_le_power_left two_ne_zero ha.le
state_before: case inr.intro.mk
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
H : IsSuccLimit o
h : o ≠ 0
a : Cardinal.{u_2}
ha✝ : a < ⨆ a, beth ↑a
i : Ordinal.{u_2}
hi : i ∈ Iio o
ha : a < beth ↑⟨i, hi⟩
⊢ 2 ^ a < beth o
state_after: case inr.intro.mk
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
H : IsSuccLimit o
h : o ≠ 0
a : Cardinal.{u_2}
ha✝ : a < ⨆ a, beth ↑a
i : Ordinal.{u_2}
hi : i ∈ Iio o
ha : a < beth ↑⟨i, hi⟩
this : 2 ^ a ≤ 2 ^ beth ↑⟨i, hi⟩
⊢ 2 ^ a < beth o

tactic: rw [← beth_succ] at this
state_before: case inr.intro.mk
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
H : IsSuccLimit o
h : o ≠ 0
a : Cardinal.{u_2}
ha✝ : a < ⨆ a, beth ↑a
i : Ordinal.{u_2}
hi : i ∈ Iio o
ha : a < beth ↑⟨i, hi⟩
this : 2 ^ a ≤ 2 ^ beth ↑⟨i, hi⟩
⊢ 2 ^ a < beth o
state_after: case inr.intro.mk
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
H : IsSuccLimit o
h : o ≠ 0
a : Cardinal.{u_2}
ha✝ : a < ⨆ a, beth ↑a
i : Ordinal.{u_2}
hi : i ∈ Iio o
ha : a < beth ↑⟨i, hi⟩
this : 2 ^ a ≤ beth (succ ↑⟨i, hi⟩)
⊢ 2 ^ a < beth o

tactic: exact this.trans_lt (beth_lt.2 (H.succ_lt hi))
state_before: case inr.intro.mk
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
H : IsSuccLimit o
h : o ≠ 0
a : Cardinal.{u_2}
ha✝ : a < ⨆ a, beth ↑a
i : Ordinal.{u_2}
hi : i ∈ Iio o
ha : a < beth ↑⟨i, hi⟩
this : 2 ^ a ≤ beth (succ ↑⟨i, hi⟩)
⊢ 2 ^ a < beth o
state_after: no goals