Zulip Chat Archive
Stream: lean4
Topic: The absorbing law
loooong (Jun 22 2023 at 17:32):
I'm learning lean4 by mathematics in lean. In the sec 2.5 page 21, I notice that the left hand side of the second absorbing law is x \lub x \glb y but not x \lub (x \glb y). whiy these brakets can be ignored?
Kevin Buzzard (Jun 22 2023 at 17:53):
\lub
and \glb
are notation, and the way notation works in Lean is that it has a "binding power". To give a familiar example: the binding power of *
is larger than the binding power of +
, so a + b * c
gets parsed as a + (b * c)
, whereas a * b + c
gets parsed as (a * b) + c
. To figure out why the brackets can be ignored you will need to know the binding power of \lub
and \glb
. In Lean 3 this was easily established using #print notation
but I'm not sure what the lean 4 equivalent is. However one can still ctrl-click on the notation which takes you to the definitions of the symbols in mathlib:
@[inherit_doc]
infixl:68 " ⊔ " => Sup.sup
@[inherit_doc]
infixl:69 " ⊓ " => Inf.inf
So \glb
has a slightly higher binding power than \lub
(69 > 68) meaning that the brackets aren't needed.
Kevin Buzzard (Jun 22 2023 at 17:55):
I would be interested in knowing if there is a trick to discover the binding power of the notation in Lean 4 without jumping to its definition.
loooong (Jun 22 2023 at 18:12):
thank you @Kevin Buzzard . :+1:
Last updated: Dec 20 2023 at 11:08 UTC