Theorem: max_assoc
File: Mathlib/Init/Order/LinearOrder.lean

tactic: apply eq_max
state_before: α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ max (max a b) c = max a (max b c)
state_after: case h₁
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ a ≤ max (max a b) c

case h₂
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ max b c ≤ max (max a b) c

case h₃
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ ∀ {d : α}, a ≤ d → max b c ≤ d → max (max a b) c ≤ d

tactic: apply le_trans
state_before: case h₁
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ a ≤ max (max a b) c
state_after: case h₁.a
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ a ≤ ?h₁.b

case h₁.a
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ ?h₁.b ≤ max (max a b) c

case h₁.b
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ α

tactic: apply le_max_left a b
state_before: case h₁.a
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ a ≤ ?h₁.b

case h₁.a
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ ?h₁.b ≤ max (max a b) c

case h₁.b
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ α
state_after: case h₁.a
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ max a b ≤ max (max a b) c

tactic: apply le_max_left
state_before: case h₁.a
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ max a b ≤ max (max a b) c
state_after: no goals

tactic: apply max_le
state_before: case h₂
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ max b c ≤ max (max a b) c
state_after: case h₂.h₁
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ b ≤ max (max a b) c

case h₂.h₂
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ c ≤ max (max a b) c

tactic: apply le_trans
state_before: case h₂.h₁
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ b ≤ max (max a b) c

case h₂.h₂
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ c ≤ max (max a b) c
state_after: case h₂.h₁.a
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ b ≤ ?h₂.h₁.b

case h₂.h₁.a
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ ?h₂.h₁.b ≤ max (max a b) c

case h₂.h₁.b
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ α

case h₂.h₂
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ c ≤ max (max a b) c

tactic: apply le_max_right a b
state_before: case h₂.h₁.a
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ b ≤ ?h₂.h₁.b

case h₂.h₁.a
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ ?h₂.h₁.b ≤ max (max a b) c

case h₂.h₁.b
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ α

case h₂.h₂
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ c ≤ max (max a b) c
state_after: case h₂.h₁.a
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ max a b ≤ max (max a b) c

case h₂.h₂
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ c ≤ max (max a b) c

tactic: apply le_max_left
state_before: case h₂.h₁.a
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ max a b ≤ max (max a b) c

case h₂.h₂
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ c ≤ max (max a b) c
state_after: case h₂.h₂
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ c ≤ max (max a b) c

tactic: apply le_max_right
state_before: case h₂.h₂
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ c ≤ max (max a b) c
state_after: no goals

tactic: intro d h₁ h₂
state_before: case h₃
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ ∀ {d : α}, a ≤ d → max b c ≤ d → max (max a b) c ≤ d
state_after: case h₃
α : Type u
inst✝ : LinearOrder α
a b c d : α
h₁ : a ≤ d
h₂ : max b c ≤ d
⊢ max (max a b) c ≤ d

tactic: apply max_le
state_before: case h₃
α : Type u
inst✝ : LinearOrder α
a b c d : α
h₁ : a ≤ d
h₂ : max b c ≤ d
⊢ max (max a b) c ≤ d
state_after: case h₃.h₁
α : Type u
inst✝ : LinearOrder α
a b c d : α
h₁ : a ≤ d
h₂ : max b c ≤ d
⊢ max a b ≤ d

case h₃.h₂
α : Type u
inst✝ : LinearOrder α
a b c d : α
h₁ : a ≤ d
h₂ : max b c ≤ d
⊢ c ≤ d

tactic: apply max_le h₁
state_before: case h₃.h₁
α : Type u
inst✝ : LinearOrder α
a b c d : α
h₁ : a ≤ d
h₂ : max b c ≤ d
⊢ max a b ≤ d

case h₃.h₂
α : Type u
inst✝ : LinearOrder α
a b c d : α
h₁ : a ≤ d
h₂ : max b c ≤ d
⊢ c ≤ d
state_after: case h₃.h₁
α : Type u
inst✝ : LinearOrder α
a b c d : α
h₁ : a ≤ d
h₂ : max b c ≤ d
⊢ b ≤ d

case h₃.h₂
α : Type u
inst✝ : LinearOrder α
a b c d : α
h₁ : a ≤ d
h₂ : max b c ≤ d
⊢ c ≤ d

tactic: apply le_trans (le_max_left _ _) h₂
state_before: case h₃.h₁
α : Type u
inst✝ : LinearOrder α
a b c d : α
h₁ : a ≤ d
h₂ : max b c ≤ d
⊢ b ≤ d

case h₃.h₂
α : Type u
inst✝ : LinearOrder α
a b c d : α
h₁ : a ≤ d
h₂ : max b c ≤ d
⊢ c ≤ d
state_after: case h₃.h₂
α : Type u
inst✝ : LinearOrder α
a b c d : α
h₁ : a ≤ d
h₂ : max b c ≤ d
⊢ c ≤ d

tactic: apply le_trans (le_max_right _ _) h₂
state_before: case h₃.h₂
α : Type u
inst✝ : LinearOrder α
a b c d : α
h₁ : a ≤ d
h₂ : max b c ≤ d
⊢ c ≤ d
state_after: no goals