Zulip Chat Archive

Stream: general

Topic: A question in MIL at section 2.5


YUAN Dong (Sep 15 2025 at 10:33):

Hello everyone.

I met a question when finishing the exercises in MIL. It is about the proof of theorem absorb2.
In the solution below, after using le_trans , we want to prove x ⊔ x ⊓ y ≤ x fist. The answer uses sup_le to get 2 new goals ⊢ x ≤ x and ⊢ x ⊓ y ≤ x.
I do not understand why the 2 goals occurs. Does it mean that by default we compute x ⊓ y first in the expression x ⊔ x ⊓ y?

import MIL.Common
import Mathlib.Topology.MetricSpace.Basic

section
variable {α : Type*} [PartialOrder α]
variable (x y z : α)


section
variable {α : Type*} [Lattice α]
variable (x y z : α)


#check (inf_le_left : x  y  x)
#check (inf_le_right : x  y  y)
#check (le_inf : z  x  z  y  z  x  y)
#check x  y
#check (le_sup_left : x  x  y)
#check (le_sup_right : y  x  y)
#check (sup_le : x  z  y  z  x  y  z)

theorem absorb2 : x  x  y = x := by
  apply le_antisymm
  · apply sup_le
    · apply le_refl
    apply inf_le_left
  apply le_sup_left

Here are my thoughts.
I tried to solve the problem by prove x ⊔ x ⊓ y ≤ x ⊔ x = x, so I wrote

theorem absorb2 : x  x  y = x := by
  apply le_antisymm
  · apply inf_le_left : x  y  x
  -- not finished
  apply le_sup_left

But I just got

tactic 'apply' failed, failed to unify
?a ⊓ ?b ≤ ?a
with
x ⊔ x ⊓ y ≤ x

for the line · apply inf_le_left : x ⊓ y ≤ x .
Please tell me Why can not I use inf_le_left here? It made me puzzle.

Best wishes.

Yaël Dillies (Sep 16 2025 at 05:13):

YUAN Dong said:

Does it mean that by default we compute x ⊓ y first in the expression x ⊔ x ⊓ y?

Yes, exactly. Try hovering over it in the infoview, you will see that x ⊔ x ⊓ y is secretly x ⊔ (x ⊓ y)


Last updated: Dec 20 2025 at 21:32 UTC