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

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

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

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

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

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

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

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

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

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

tactic: apply min_le_left
state_before: case h₁.a
α : Type u
inst✝ : LinearOrder α
a b c : α
⊢ min a b ≤ a
state_after: no goals

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

tactic: apply min_le_right
state_before: case h₃.h₂
α : Type u
inst✝ : LinearOrder α
a b c d : α
h₁ : d ≤ a
h₂ : d ≤ min b c
⊢ min b c ≤ c
state_after: no goals