Theorem: Ordinal.cof_succ
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: apply le_antisymm
state_before: α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
⊢ (succ o).cof = 1
state_after: case a
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
⊢ (succ o).cof ≤ 1

case a
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
⊢ 1 ≤ (succ o).cof

tactic: refine inductionOn o fun α r _ => ?_
state_before: case a
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
⊢ (succ o).cof ≤ 1
state_after: case a
α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
o : Ordinal.{u_2}
α : Type u_2
r : α → α → Prop
x✝ : IsWellOrder α r
⊢ (succ (type r)).cof ≤ 1

tactic: change cof (type _) ≤ _
state_before: case a
α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
o : Ordinal.{u_2}
α : Type u_2
r : α → α → Prop
x✝ : IsWellOrder α r
⊢ (succ (type r)).cof ≤ 1
state_after: case a
α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
o : Ordinal.{u_2}
α : Type u_2
r : α → α → Prop
x✝ : IsWellOrder α r
⊢ (type (Sum.Lex r EmptyRelation)).cof ≤ 1

tactic: rw [← (_ : #_ = 1)]
state_before: case a
α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
o : Ordinal.{u_2}
α : Type u_2
r : α → α → Prop
x✝ : IsWellOrder α r
⊢ (type (Sum.Lex r EmptyRelation)).cof ≤ 1
state_after: case a
α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
o : Ordinal.{u_2}
α : Type u_2
r : α → α → Prop
x✝ : IsWellOrder α r
⊢ (type (Sum.Lex r EmptyRelation)).cof ≤ #?m.48789

α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
o : Ordinal.{u_2}
α : Type u_2
r : α → α → Prop
x✝ : IsWellOrder α r
⊢ #?m.48789 = 1

tactic: apply cof_type_le
state_before: case a
α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
o : Ordinal.{u_2}
α : Type u_2
r : α → α → Prop
x✝ : IsWellOrder α r
⊢ (type (Sum.Lex r EmptyRelation)).cof ≤ #?m.48789
state_after: case a.h
α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
o : Ordinal.{u_2}
α : Type u_2
r : α → α → Prop
x✝ : IsWellOrder α r
⊢ Unbounded (Sum.Lex r EmptyRelation) ?a.S✝

case a.S
α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
o : Ordinal.{u_2}
α : Type u_2
r : α → α → Prop
x✝ : IsWellOrder α r
⊢ Set (α ⊕ PUnit.{u_2 + 1})

tactic: refine fun a => ⟨Sum.inr PUnit.unit, Set.mem_singleton _, ?_⟩
state_before: case a.h
α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
o : Ordinal.{u_2}
α : Type u_2
r : α → α → Prop
x✝ : IsWellOrder α r
⊢ Unbounded (Sum.Lex r EmptyRelation) ?a.S✝

case a.S
α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
o : Ordinal.{u_2}
α : Type u_2
r : α → α → Prop
x✝ : IsWellOrder α r
⊢ Set (α ⊕ PUnit.{u_2 + 1})
state_after: case a.h
α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
o : Ordinal.{u_2}
α : Type u_2
r : α → α → Prop
x✝ : IsWellOrder α r
a : α ⊕ PUnit.{u_2 + 1}
⊢ ¬Sum.Lex r EmptyRelation (Sum.inr PUnit.unit) a

tactic: rcases a with (a | ⟨⟨⟨⟩⟩⟩) <;> simp [EmptyRelation]
state_before: case a.h
α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
o : Ordinal.{u_2}
α : Type u_2
r : α → α → Prop
x✝ : IsWellOrder α r
a : α ⊕ PUnit.{u_2 + 1}
⊢ ¬Sum.Lex r EmptyRelation (Sum.inr PUnit.unit) a
state_after: no goals

tactic: rw [Cardinal.mk_fintype, Set.card_singleton]
state_before: α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
o : Ordinal.{u_2}
α : Type u_2
r : α → α → Prop
x✝ : IsWellOrder α r
⊢ #↑{Sum.inr PUnit.unit} = 1
state_after: α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
o : Ordinal.{u_2}
α : Type u_2
r : α → α → Prop
x✝ : IsWellOrder α r
⊢ ↑1 = 1

tactic: simp
state_before: α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
o : Ordinal.{u_2}
α : Type u_2
r : α → α → Prop
x✝ : IsWellOrder α r
⊢ ↑1 = 1
state_after: no goals

tactic: rw [← Cardinal.succ_zero, succ_le_iff]
state_before: case a
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
⊢ 1 ≤ (succ o).cof
state_after: case a
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
⊢ 0 < (succ o).cof

tactic: simpa [lt_iff_le_and_ne, Cardinal.zero_le] using fun h =>
  succ_ne_zero o (cof_eq_zero.1 (Eq.symm h))
state_before: case a
α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
⊢ 0 < (succ o).cof
state_after: no goals