Theorem: Ordinal.sup_eq_lsub_iff_succ
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: refine' ⟨fun h => _, fun hf => le_antisymm (sup_le_lsub f) (lsub_le fun i => _)⟩
state_before: α : Type ?u.324464
β : Type ?u.324467
γ : Type ?u.324470
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
⊢ sup f = lsub f ↔ ∀ (a : Ordinal), a < lsub f → succ a < lsub f

tactic: by_contra' hle
state_before: case refine'_2
α : Type ?u.324464
β : Type ?u.324467
γ : Type ?u.324470
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
hf : ∀ (a : Ordinal), a < lsub f → succ a < lsub f
i : ι
⊢ f i < sup f

tactic: have heq := (sup_succ_eq_lsub f).2 ⟨i, le_antisymm (le_sup _ _) hle⟩
state_before: case refine'_2
α : Type ?u.324464
β : Type ?u.324467
γ : Type ?u.324470
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
hf : ∀ (a : Ordinal), a < lsub f → succ a < lsub f
i : ι
hle : sup f ≤ f i
⊢ False

tactic: have :=
  hf _
    (by
      rw [← heq]
      exact lt_succ (sup f))
state_before: case refine'_2
α : Type ?u.324464
β : Type ?u.324467
γ : Type ?u.324470
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
hf : ∀ (a : Ordinal), a < lsub f → succ a < lsub f
i : ι
hle : sup f ≤ f i
heq : succ (sup f) = lsub f
⊢ False

tactic: rw [heq] at this
state_before: case refine'_2
α : Type ?u.324464
β : Type ?u.324467
γ : Type ?u.324470
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
hf : ∀ (a : Ordinal), a < lsub f → succ a < lsub f
i : ι
hle : sup f ≤ f i
heq : succ (sup f) = lsub f
this : succ (sup f) < lsub f
⊢ False

tactic: exact this.false
state_before: case refine'_2
α : Type ?u.324464
β : Type ?u.324467
γ : Type ?u.324470
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
hf : ∀ (a : Ordinal), a < lsub f → succ a < lsub f
i : ι
hle : sup f ≤ f i
heq : succ (sup f) = lsub f
this : lsub f < lsub f
⊢ False

tactic: rw [← h]
state_before: case refine'_1
α : Type ?u.324464
β : Type ?u.324467
γ : Type ?u.324470
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
h : sup f = lsub f
⊢ ∀ (a : Ordinal), a < lsub f → succ a < lsub f

tactic: exact fun a => sup_not_succ_of_ne_sup fun i => (lsub_le_iff.1 (le_of_eq h.symm) i).ne
state_before: case refine'_1
α : Type ?u.324464
β : Type ?u.324467
γ : Type ?u.324470
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
h : sup f = lsub f
⊢ ∀ (a : Ordinal), a < sup f → succ a < sup f

tactic: rw [← heq]
state_before: α : Type ?u.324464
β : Type ?u.324467
γ : Type ?u.324470
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
hf : ∀ (a : Ordinal), a < lsub f → succ a < lsub f
i : ι
hle : sup f ≤ f i
heq : succ (sup f) = lsub f
⊢ ?m.325906 < lsub f

tactic: exact lt_succ (sup f)
state_before: α : Type ?u.324464
β : Type ?u.324467
γ : Type ?u.324470
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
hf : ∀ (a : Ordinal), a < lsub f → succ a < lsub f
i : ι
hle : sup f ≤ f i
heq : succ (sup f) = lsub f
⊢ ?m.325906 < succ (sup f)

α : Type ?u.324464
β : Type ?u.324467
γ : Type ?u.324470
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
hf : ∀ (a : Ordinal), a < lsub f → succ a < lsub f
i : ι
hle : sup f ≤ f i
heq : succ (sup f) = lsub f
⊢ Ordinal