(, , ). , A , ( , ) .
, , , semilattice. , max, :
- max idempotent, , , : max (x, x) = x
- max , , : max (x, y) = max (y, x)
- max , , : max (max (x, y), z) = max (x, max (y, z) )
, . , , " " . , union intersection, , .
(, , ..) , (, ), , . ( , ).
, , , () , , , , :
Element e = data[0];
for (i in data[1 .. n])
e = meet(e, data[i])
, , , , , , . , , , .. "max" "min", , , max min.
, . , , . , ,
min(int.MAX_VALUE, x) = min(x, int.MAX_VALUE) = x
, int.MAX_VALUE , . , int.MAX_VALUE . ( & top;),
meet (& top;, x) = meet (x, & top;) = x
max min, int.MIN_VALUE,
max(int.MIN_VALUE, x) = max(x, int.MIN_VALUE) = x
& top; , , ,
Element e = Element.TOP;
for (i in data[0 .. n])
e = meet(e, data[i])
, e meet(e, data[0]) = meet(Element.TOP, data[0]) = data[0], , . , , ; , .
, . , , ,
meet(x, y) = x if x lexicographically precedes y
= y otherwise
, meet("a", "ab") = "a", meet("dog, "cat") = "cat" .. s, property (s, x) = meet (x, s) = x, . , , .
, , , . , , , & top; , meet (& top;, x) = meet (x, & top;) = x. , , .
, ,
bool found = false;
Element e;
for (i in data[0 .. n]) {
if (!found) {
found = true;
e = i;
} else {
e = meet(e, i);
}
}
, found , . , , e - . , , e .
, ! , ... .: -)