# [eeps] Proposal for /\ and \/ operators

Richard Carlsson <>
Thu Feb 26 11:57:46 CET 2009

```Raimo Niskanen wrote:
> Can you explain to a non-mathematician (me) why you have defined
> (E1 /\ E2) as min(E1, E2) and
> (E1 \/ E2) as max(E1, E2). To me it seems counterintuitive
> since /\ looks like a mountain hence max
> and \/ looks like a valley hence min.
> And I do not want to fully understand Lattice theory
> to understand which operator is which. I am a simple programmer.

Crash course: /\ (and any variants thereof, like upside-down U, etc.,)
are used in mathematics to express variants on the concepts of Greatest
Lower Bound (Infimum), inf(A,B) being the largest value in the same
domain that is at least as low as both A and B (i.e., it tries to
"approach A and B from below until it hits the ceiling"). Depending on
the domain, inf(A,B) could be A, B, or possibly some even smaller value
C in case A and B cannot be compared directly. (If it can only be A or
B, then inf is simply "minimum".) Another term sometimes used for this
operator is "meet". It also works as "and" if you consider 1 as true and
0 as false: and(A,B) = min(A,B). And of course as set intersection,
which is a generalized sort of "and".

Analogously, you have \/ and other 'U'-like symbols as Least Upper Bound
(Supremum, sup(A,B), "join", approaching from above). It also works as
"or" (latin Vel) for binary logic: or(A,B) = max(A,B), and as set union.

I've found this mnemonic useful: if it contains a U/V/J-like shape in
its name, it is a U-family operator (Union, lUb, sUp, Vel (or), Join),
otherwise it's the other kind (intersection, glb, inf, and, meet).

Still, you put your finger on an important point: I'm sure that given
these operators in Erlang, I would occasionally pick the wrong one.

/Richard C

```