Extension of semi-lattices and lattices
Extension of meet semi-lattices
[1]:
from galactic.algebras.lattice import MeetSemiLattice
from galactic.algebras.poset import HasseDiagram
from galactic.examples.arithmetic import IntegerRenderer
from galactic.examples.arithmetic import Integer
[2]:
meet_semi_lattice = MeetSemiLattice[Integer](
domain=[
Integer(3),
Integer(7),
Integer(2 * 7),
Integer(3 * 5),
]
)
HasseDiagram[Integer](
meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[2]:
[3]:
meet_semi_lattice.extend([Integer(3 * 7)])
HasseDiagram[Integer](
meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[3]:
[4]:
meet_semi_lattice.extend([Integer(2 * 11)])
HasseDiagram[Integer](
meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[4]:
[5]:
meet_semi_lattice.extend([Integer(11)])
HasseDiagram[Integer](
meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[5]:
[6]:
meet_semi_lattice.extend([Integer(3 * 11)])
HasseDiagram[Integer](
meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[6]:
[7]:
meet_semi_lattice.extend([Integer(2 * 7 * 11)])
HasseDiagram[Integer](
meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[7]:
[8]:
meet_semi_lattice.extend([Integer(2 * 2 * 3 * 5 * 7 * 11)])
HasseDiagram[Integer](
meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[8]:
[9]:
meet_semi_lattice.extend([Integer(2 * 3 * 7 * 11)])
HasseDiagram[Integer](
meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[9]:
[10]:
meet_semi_lattice.extend([Integer(3 * 7 * 11)])
HasseDiagram[Integer](
meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[10]:
[11]:
meet_semi_lattice.extend([Integer(5)])
HasseDiagram[Integer](
meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[11]:
[12]:
meet_semi_lattice.extend([Integer(3 * 5 * 13)])
HasseDiagram[Integer](
meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[12]:
[13]:
meet_semi_lattice.extend([Integer(2 * 5)])
HasseDiagram[Integer](
meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[13]:
[14]:
meet_semi_lattice.extend([Integer(35)])
HasseDiagram[Integer](
meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[14]:
[15]:
meet_semi_lattice.extend([Integer(2 * 3 * 3 * 5 * 7 * 11)])
HasseDiagram[Integer](
meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[15]:
Extension of join semi-lattices
[16]:
from galactic.algebras.lattice import JoinSemiLattice
from galactic.algebras.poset import HasseDiagram
from galactic.examples.arithmetic import IntegerRenderer
from galactic.examples.arithmetic import Integer
[17]:
join_semi_lattice = JoinSemiLattice[Integer](
domain=[
Integer(3),
Integer(7),
Integer(2 * 7),
Integer(3 * 5),
]
)
HasseDiagram[Integer](
join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[17]:
[18]:
join_semi_lattice.extend([Integer(2 * 11)])
HasseDiagram[Integer](
join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[18]:
[19]:
join_semi_lattice.extend([Integer(11)])
HasseDiagram[Integer](
join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[19]:
[20]:
join_semi_lattice.extend([Integer(3 * 11)])
HasseDiagram[Integer](
join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[20]:
[21]:
join_semi_lattice.extend([Integer(2 * 7 * 11)])
HasseDiagram[Integer](
join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[21]:
[22]:
join_semi_lattice.extend([Integer(2 * 2 * 3 * 5 * 7 * 11)])
HasseDiagram[Integer](
join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[22]:
[23]:
join_semi_lattice.extend([Integer(3 * 7 * 11)])
HasseDiagram[Integer](
join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[23]:
[24]:
join_semi_lattice.extend([Integer(5)])
HasseDiagram[Integer](
join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[24]:
[25]:
join_semi_lattice.extend([Integer(3 * 5 * 13)])
HasseDiagram[Integer](
join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[25]:
[26]:
join_semi_lattice.extend([Integer(2 * 5)])
HasseDiagram[Integer](
join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[26]:
[27]:
join_semi_lattice.extend([Integer(35)])
HasseDiagram[Integer](
join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[27]:
[28]:
join_semi_lattice.extend([Integer(2 * 3 * 3 * 5 * 7 * 11)])
HasseDiagram[Integer](
join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[28]:
Extension of lattices
First example
[29]:
from galactic.algebras.lattice import Lattice
from galactic.algebras.poset import HasseDiagram
from galactic.examples.arithmetic import IntegerRenderer
from galactic.examples.arithmetic import Integer
[30]:
lattice = Lattice[Integer](
domain=[
Integer(3),
Integer(7),
Integer(2 * 7),
Integer(3 * 5),
]
)
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[30]:
[31]:
lattice.extend([Integer(3 * 7)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[31]:
[32]:
lattice.extend([Integer(2 * 11)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[32]:
[33]:
lattice.extend([Integer(11)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[33]:
[34]:
lattice.extend([Integer(3 * 11)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[34]:
[35]:
lattice.extend([Integer(2 * 7 * 11)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[35]:
[36]:
lattice.extend([Integer(2 * 2 * 3 * 5 * 7 * 11)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[36]:
[37]:
lattice.extend([Integer(3 * 7 * 11)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[37]:
[38]:
lattice.extend([Integer(5)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[38]:
[39]:
lattice.extend([Integer(3 * 5 * 13)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[39]:
[40]:
lattice.extend([Integer(2 * 5)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[40]:
[41]:
lattice.extend([Integer(5 * 7)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[41]:
[42]:
lattice.extend([Integer(2 * 3 * 3 * 5 * 7 * 11)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[42]:
[43]:
from galactic.algebras.lattice import ReducedContextDiagram
ReducedContextDiagram(
lattice,
domain_renderer=IntegerRenderer(meet_irreducible=True),
co_domain_renderer=IntegerRenderer(join_irreducible=True),
)
[43]:
[44]:
from galactic.algebras.relational import BinaryTable
BinaryTable(
lattice.reduced_context,
domain_renderer=IntegerRenderer(),
co_domain_renderer=IntegerRenderer(meet_irreducible=True),
)
[44]:
90090 |
60060 |
13860 |
15015 |
2730 |
4290 |
770 |
462 |
|
---|---|---|---|---|---|---|---|---|
\(3=3^1\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
|
\(7=7^1\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
|
\(2=2^1\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
|
\(11=11^1\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
|
\(5=5^1\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
|
\(4620=2^23^15^17^111^1\) |
\(\checkmark\) |
\(\checkmark\) |
||||||
\(195=3^15^113^1\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
\(\checkmark\) |
|||
\(6930=2^13^25^17^111^1\) |
\(\checkmark\) |
\(\checkmark\) |
Second example
[45]:
lattice = Lattice[Integer](domain=[Integer(1)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[45]:
[46]:
lattice.extend([Integer(2)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[46]:
[47]:
lattice.extend([Integer(12)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[47]:
[48]:
lattice.extend([Integer(18)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[48]:
[49]:
lattice.extend([Integer(30)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[49]:
[50]:
lattice.extend([Integer(42)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[50]:
[51]:
lattice.extend([Integer(5040)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[51]:
[52]:
lattice.extend([Integer(7560)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[52]:
[53]:
lattice.extend([Integer(30240)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[53]:
[54]:
lattice.extend([Integer(60480)])
HasseDiagram[Integer](
lattice,
domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[54]: