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

tactic: apply (sup_le_iff.2 _).antisymm (max_le_iff.2 ⟨_, _⟩)
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α : Type u
β : Type v
f : α ⊕ β → Ordinal.{max (max u v) w}
⊢ sup f = max (sup fun a => f (Sum.inl a)) (sup fun b => f (Sum.inr b))
state_after: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α : Type u
β : Type v
f : α ⊕ β → Ordinal.{max (max u v) w}
⊢ ∀ (i : α ⊕ β), f i ≤ max (sup fun a => f (Sum.inl a)) (sup fun b => f (Sum.inr b))

α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α : Type u
β : Type v
f : α ⊕ β → Ordinal.{max (max u v) w}
⊢ (sup fun a => f (Sum.inl a)) ≤ sup f

α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α : Type u
β : Type v
f : α ⊕ β → Ordinal.{max (max u v) w}
⊢ (sup fun b => f (Sum.inr b)) ≤ sup f

tactic: all_goals
  apply sup_le_of_range_subset.{_, max u v, w}
  rintro i ⟨a, rfl⟩
  apply mem_range_self
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α : Type u
β : Type v
f : α ⊕ β → Ordinal.{max (max u v) w}
⊢ (sup fun a => f (Sum.inl a)) ≤ sup f

α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α : Type u
β : Type v
f : α ⊕ β → Ordinal.{max (max u v) w}
⊢ (sup fun b => f (Sum.inr b)) ≤ sup f
state_after: no goals

tactic: rintro (i | i)
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α : Type u
β : Type v
f : α ⊕ β → Ordinal.{max (max u v) w}
⊢ ∀ (i : α ⊕ β), f i ≤ max (sup fun a => f (Sum.inl a)) (sup fun b => f (Sum.inr b))
state_after: case inl
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α : Type u
β : Type v
f : α ⊕ β → Ordinal.{max (max u v) w}
i : α
⊢ f (Sum.inl i) ≤ max (sup fun a => f (Sum.inl a)) (sup fun b => f (Sum.inr b))

case inr
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α : Type u
β : Type v
f : α ⊕ β → Ordinal.{max (max u v) w}
i : β
⊢ f (Sum.inr i) ≤ max (sup fun a => f (Sum.inl a)) (sup fun b => f (Sum.inr b))

tactic: exact le_max_of_le_left (le_sup _ i)
state_before: case inl
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α : Type u
β : Type v
f : α ⊕ β → Ordinal.{max (max u v) w}
i : α
⊢ f (Sum.inl i) ≤ max (sup fun a => f (Sum.inl a)) (sup fun b => f (Sum.inr b))
state_after: no goals

tactic: exact le_max_of_le_right (le_sup _ i)
state_before: case inr
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α : Type u
β : Type v
f : α ⊕ β → Ordinal.{max (max u v) w}
i : β
⊢ f (Sum.inr i) ≤ max (sup fun a => f (Sum.inl a)) (sup fun b => f (Sum.inr b))
state_after: no goals

tactic: apply sup_le_of_range_subset.{_, max u v, w}
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α : Type u
β : Type v
f : α ⊕ β → Ordinal.{max (max u v) w}
⊢ (sup fun b => f (Sum.inr b)) ≤ sup f
state_after: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α : Type u
β : Type v
f : α ⊕ β → Ordinal.{max (max u v) w}
⊢ (range fun b => f (Sum.inr b)) ⊆ range f

tactic: rintro i ⟨a, rfl⟩
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α : Type u
β : Type v
f : α ⊕ β → Ordinal.{max (max u v) w}
⊢ (range fun b => f (Sum.inr b)) ⊆ range f
state_after: case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α : Type u
β : Type v
f : α ⊕ β → Ordinal.{max (max u v) w}
a : β
⊢ (fun b => f (Sum.inr b)) a ∈ range f

tactic: apply mem_range_self
state_before: case intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α : Type u
β : Type v
f : α ⊕ β → Ordinal.{max (max u v) w}
a : β
⊢ (fun b => f (Sum.inr b)) a ∈ range f
state_after: no goals