Lattice¶
Elements¶
Lattice are a particular case of poset. Their elements have the following properties:
For all \(x, y\) of a poset, there exists a unique infimum and a unique supremum:
Integer example¶
[1]:
from galactic.examples.arithmetic import Integer
[2]:
Integer(24) & Integer(18)
[2]:
[3]:
Integer(24) | Integer(18)
[3]:
Color example¶
[4]:
from galactic.examples.color import Color
[5]:
Color(red=0.8, green=0.5, blue=0.7) \
& Color(red=0.5, green=1.0, blue=0.9)
[5]:
[6]:
Color(red=0.8, green=0.5, blue=0.7) \
| Color(red=0.5, green=1.0, blue=0.9)
[6]:
Collections¶
All operations on poset are available and some extras features:
get the minimum and maximum elements from a lattice;
get the atoms and the co-atoms elements from a lattice;
get the meet-irreducible and the join-irreducible elements from a lattice;
get the meet-irreducible generators and the join-irreducible generators of an element of the lattice.
Integer example¶
[7]:
from galactic.algebras.lattice import BasicLattice
from galactic.algebras.poset import HasseDiagram
from galactic.examples.arithmetic import IntegerRenderer
[8]:
integers = [
Integer(2),
Integer(3),
Integer(5),
Integer(7),
Integer(9)
]
lattice = BasicLattice(integers)
HasseDiagram(lattice, renderer=IntegerRenderer())
[8]:
[9]:
display(*lattice)
[10]:
lattice.minimum()
[10]:
[11]:
lattice.maximum()
[11]:
[12]:
display(*lattice.atoms())
[13]:
display(*lattice.co_atoms())
[14]:
display(*lattice.meet_irreducible())
[15]:
display(*lattice.join_irreducible())
[16]:
display(*lattice.smallest_meet_irreducible(Integer(30)))
[17]:
display(*lattice.greatest_join_irreducible(Integer(30)))
Color example¶
[18]:
from galactic.examples.color import Color, ColorRenderer
from galactic.algebras.lattice import CompactLattice
[19]:
lattice = CompactLattice([
Color(red=1.0, green=0.7, blue=0.5),
Color(red=0.6, green=1.0, blue=0.1),
Color(red=0.4, green=0.6, blue=0.7),
Color(red=1.0, green=0.4, blue=0.3),
])
[20]:
HasseDiagram(lattice, renderer=ColorRenderer())
[20]:
Context¶
There exists a bijection between a lattice and its minimal binary table called its equivalent context:
the rows are composed by the meet-irreducible
the columns are composed by the join-irreducible
the boolean value for row \(i\) and column \(j\) is True if \(i\geq j\)
Integer example¶
[21]:
from galactic.algebras.lattice import ReducedContext
integers = [
Integer(2),
Integer(3),
Integer(5),
Integer(7),
Integer(9)
]
lattice = CompactLattice(integers)
context = ReducedContext(lattice, renderer=IntegerRenderer())
list(context)
[21]:
[(Integer(2), Integer(70)),
(Integer(2), Integer(90)),
(Integer(2), Integer(126)),
(Integer(2), Integer(210)),
(Integer(3), Integer(90)),
(Integer(3), Integer(126)),
(Integer(3), Integer(210)),
(Integer(3), Integer(315)),
(Integer(5), Integer(70)),
(Integer(5), Integer(90)),
(Integer(5), Integer(210)),
(Integer(5), Integer(315)),
(Integer(7), Integer(70)),
(Integer(7), Integer(126)),
(Integer(7), Integer(210)),
(Integer(7), Integer(315)),
(Integer(9), Integer(90)),
(Integer(9), Integer(126)),
(Integer(9), Integer(315))]
[22]:
context
[22]:
\(70=2^15^17^1\) |
\(90=2^13^25^1\) |
\(126=2^13^27^1\) |
\(210=2^13^15^17^1\) |
\(315=3^25^17^1\) |
|
---|---|---|---|---|---|
\(2=2^1\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
|
\(3=3^1\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
|
\(5=5^1\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
|
\(7=7^1\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
|
\(9=3^2\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |