public interface Lattice
The method isDistributive() can be used to discover whether distributivity holds.
| Modifier and Type | Field and Description |
|---|---|
static boolean |
RING
Use ring notation (
+ and * instead of | and &)
in all output. |
static boolean |
UTF8
Use UTF-8 symbols for operators in all outputs.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
comp(Element x,
Element y)
Return whether the two provided elements are comparable.
|
Map<Element,Set<Element>> |
coveringRelation()
Return the covering relation of this lattice.
|
Collection<Element> |
elements()
Return all elements of this lattice (optional operation).
|
Collection<Element> |
generators()
Return a collection of generators for the lattice.
|
boolean |
isDistributive()
Return true if this lattice is distributive.
|
Element |
join(Element... element)
Return the join of the provided elements.
|
boolean |
leq(Element x,
Element y)
Return whether an element is less than or equal to another element in the natural order of
this lattice.
|
Element |
meet(Element... element)
Return the meet of the provided elements.
|
Element |
one()
Return the one of this lattice.
|
Element |
pscomp(Element x,
Element y)
Return the pseudocomplement of the first element relative to the second element (optional operation).
|
Element |
psdiff(Element x,
Element y)
Return the Brouwerian pseudo-difference of two elements (optional operation).
|
Element |
symdiff(Element x,
Element y)
Return the symmetric difference of the arguments, that is,
psdiff(x,y).join(psdiff(y,x)). |
Element |
valueOf(String name)
Return an element of this lattice, given its name.
|
Element |
zero()
Return the zero of this lattice.
|
static final boolean UTF8
it.unimi.dsi.lama4j.utf8.static final boolean RING
+ and * instead of | and &)
in all output. This constant is settable using the Boolean system property it.unimi.dsi.lama4j.ring.boolean isDistributive()
Element meet(Element... element)
one, and upon a singleton list the only specified element.element - the elements whose meet has to be computed.Element join(Element... element)
zero, and upon a singleton list the only specified element.element - the elements whose join has to be computed.Collection<Element> generators()
zero or
one. There is no guarantee of freeness or minimality.Collection<Element> elements()
This operation might not implemented, for instance, in infinite lattices.
Element valueOf(String name)
Certain lattices make it possible to define names for elements. This method returns the element corresponding to the provided name.
name - the name of an element of this lattice.name.ElementNameException - if the provided name does not match any
element of this lattice.Element zero()
Note that there is no guarantee that the returned element is the only element representing zero in this lattice. Other zeroes may arise from computations, but they will always be equal to the element returned by this method.
Element one()
Note that there is no guarantee that the returned element is the only element representing one in this lattice. Other ones may arise from computations, but they will always be equal to the element returned by this method.
boolean comp(Element x, Element y)
x - an element.y - another element.boolean leq(Element x, Element y)
x - an element.y - another element.Element psdiff(Element x, Element y)
The (Brouwerian) pseudo-difference of x and y, usually denoted by x − y, is defined by a Galois connection with the join operation (categorically speaking, an adjunction):
If the Galois connection exists, this lattice is endowed with the structure of a Brouwerian algebra. In that case, if the lattice is finite
and the lattice is necessarily distributive. Conversely, all finite distributive lattices are Brouwerian algebras, with x − y defined as above.
x - an element.y - another element.x − y.UnsupportedOperationException - if this lattice is not Browerian.Element pscomp(Element x, Element y)
The pseudocomplement of x relative to y, denoted by x ⇒ y, is defined by a Galois connection with the meet operation (categorically speaking, an adjunction):
If the Galois connection exists, this lattice is endowed with the structure of a Heyting algebra. In that case, if the lattice is finite
and the lattice is necessarily distributive. Conversely, all finite distributive lattices are Heyting algebras.
x - an element.y - another element.x ⇒ y.Element symdiff(Element x, Element y)
psdiff(x,y).join(psdiff(y,x)).x - an element.y - another element.x Δ y.Element.join(Element),
psdiff(Element, Element)Map<Element,Set<Element>> coveringRelation()
The covering relation of a lattice relates elements x, y such that there is no element strictly between x and y. In can be interpreted as a graph and drawn, resulting in the Hasse diagram of the lattice.