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]:
../../../_images/notebooks_algebras_lattice_extensions_2_0.png
[3]:
meet_semi_lattice.extend([Integer(3 * 7)])
HasseDiagram[Integer](
    meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[3]:
../../../_images/notebooks_algebras_lattice_extensions_3_0.png
[4]:
meet_semi_lattice.extend([Integer(2 * 11)])
HasseDiagram[Integer](
    meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[4]:
../../../_images/notebooks_algebras_lattice_extensions_4_0.png
[5]:
meet_semi_lattice.extend([Integer(11)])
HasseDiagram[Integer](
    meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[5]:
../../../_images/notebooks_algebras_lattice_extensions_5_0.png
[6]:
meet_semi_lattice.extend([Integer(3 * 11)])
HasseDiagram[Integer](
    meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[6]:
../../../_images/notebooks_algebras_lattice_extensions_6_0.png
[7]:
meet_semi_lattice.extend([Integer(2 * 7 * 11)])
HasseDiagram[Integer](
    meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[7]:
../../../_images/notebooks_algebras_lattice_extensions_7_0.png
[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]:
../../../_images/notebooks_algebras_lattice_extensions_8_0.png
[9]:
meet_semi_lattice.extend([Integer(2 * 3 * 7 * 11)])
HasseDiagram[Integer](
    meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[9]:
../../../_images/notebooks_algebras_lattice_extensions_9_0.png
[10]:
meet_semi_lattice.extend([Integer(3 * 7 * 11)])
HasseDiagram[Integer](
    meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[10]:
../../../_images/notebooks_algebras_lattice_extensions_10_0.png
[11]:
meet_semi_lattice.extend([Integer(5)])
HasseDiagram[Integer](
    meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[11]:
../../../_images/notebooks_algebras_lattice_extensions_11_0.png
[12]:
meet_semi_lattice.extend([Integer(3 * 5 * 13)])
HasseDiagram[Integer](
    meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[12]:
../../../_images/notebooks_algebras_lattice_extensions_12_0.png
[13]:
meet_semi_lattice.extend([Integer(2 * 5)])
HasseDiagram[Integer](
    meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[13]:
../../../_images/notebooks_algebras_lattice_extensions_13_0.png
[14]:
meet_semi_lattice.extend([Integer(35)])
HasseDiagram[Integer](
    meet_semi_lattice, domain_renderer=IntegerRenderer(meet_semi_lattice=True)
)
[14]:
../../../_images/notebooks_algebras_lattice_extensions_14_0.png
[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]:
../../../_images/notebooks_algebras_lattice_extensions_15_0.png

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]:
../../../_images/notebooks_algebras_lattice_extensions_18_0.png
[18]:
join_semi_lattice.extend([Integer(2 * 11)])
HasseDiagram[Integer](
    join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[18]:
../../../_images/notebooks_algebras_lattice_extensions_19_0.png
[19]:
join_semi_lattice.extend([Integer(11)])
HasseDiagram[Integer](
    join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[19]:
../../../_images/notebooks_algebras_lattice_extensions_20_0.png
[20]:
join_semi_lattice.extend([Integer(3 * 11)])
HasseDiagram[Integer](
    join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[20]:
../../../_images/notebooks_algebras_lattice_extensions_21_0.png
[21]:
join_semi_lattice.extend([Integer(2 * 7 * 11)])
HasseDiagram[Integer](
    join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[21]:
../../../_images/notebooks_algebras_lattice_extensions_22_0.png
[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]:
../../../_images/notebooks_algebras_lattice_extensions_23_0.png
[23]:
join_semi_lattice.extend([Integer(3 * 7 * 11)])
HasseDiagram[Integer](
    join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[23]:
../../../_images/notebooks_algebras_lattice_extensions_24_0.png
[24]:
join_semi_lattice.extend([Integer(5)])
HasseDiagram[Integer](
    join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[24]:
../../../_images/notebooks_algebras_lattice_extensions_25_0.png
[25]:
join_semi_lattice.extend([Integer(3 * 5 * 13)])
HasseDiagram[Integer](
    join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[25]:
../../../_images/notebooks_algebras_lattice_extensions_26_0.png
[26]:
join_semi_lattice.extend([Integer(2 * 5)])
HasseDiagram[Integer](
    join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[26]:
../../../_images/notebooks_algebras_lattice_extensions_27_0.png
[27]:
join_semi_lattice.extend([Integer(35)])
HasseDiagram[Integer](
    join_semi_lattice, domain_renderer=IntegerRenderer(join_semi_lattice=True)
)
[27]:
../../../_images/notebooks_algebras_lattice_extensions_28_0.png
[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]:
../../../_images/notebooks_algebras_lattice_extensions_29_0.png

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]:
../../../_images/notebooks_algebras_lattice_extensions_32_0.png
[31]:
lattice.extend([Integer(3 * 7)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[31]:
../../../_images/notebooks_algebras_lattice_extensions_33_0.png
[32]:
lattice.extend([Integer(2 * 11)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[32]:
../../../_images/notebooks_algebras_lattice_extensions_34_0.png
[33]:
lattice.extend([Integer(11)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[33]:
../../../_images/notebooks_algebras_lattice_extensions_35_0.png
[34]:
lattice.extend([Integer(3 * 11)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[34]:
../../../_images/notebooks_algebras_lattice_extensions_36_0.png
[35]:
lattice.extend([Integer(2 * 7 * 11)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[35]:
../../../_images/notebooks_algebras_lattice_extensions_37_0.png
[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]:
../../../_images/notebooks_algebras_lattice_extensions_38_0.png
[37]:
lattice.extend([Integer(3 * 7 * 11)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[37]:
../../../_images/notebooks_algebras_lattice_extensions_39_0.png
[38]:
lattice.extend([Integer(5)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[38]:
../../../_images/notebooks_algebras_lattice_extensions_40_0.png
[39]:
lattice.extend([Integer(3 * 5 * 13)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[39]:
../../../_images/notebooks_algebras_lattice_extensions_41_0.png
[40]:
lattice.extend([Integer(2 * 5)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[40]:
../../../_images/notebooks_algebras_lattice_extensions_42_0.png
[41]:
lattice.extend([Integer(5 * 7)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[41]:
../../../_images/notebooks_algebras_lattice_extensions_43_0.png
[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]:
../../../_images/notebooks_algebras_lattice_extensions_44_0.png
[43]:
from galactic.algebras.lattice import ReducedContextDiagram

ReducedContextDiagram(
    lattice,
    domain_renderer=IntegerRenderer(meet_irreducible=True),
    co_domain_renderer=IntegerRenderer(join_irreducible=True),
)
[43]:
../../../_images/notebooks_algebras_lattice_extensions_45_0.png
[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]:
../../../_images/notebooks_algebras_lattice_extensions_48_0.png
[46]:
lattice.extend([Integer(2)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[46]:
../../../_images/notebooks_algebras_lattice_extensions_49_0.png
[47]:
lattice.extend([Integer(12)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[47]:
../../../_images/notebooks_algebras_lattice_extensions_50_0.png
[48]:
lattice.extend([Integer(18)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[48]:
../../../_images/notebooks_algebras_lattice_extensions_51_0.png
[49]:
lattice.extend([Integer(30)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[49]:
../../../_images/notebooks_algebras_lattice_extensions_52_0.png
[50]:
lattice.extend([Integer(42)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[50]:
../../../_images/notebooks_algebras_lattice_extensions_53_0.png
[51]:
lattice.extend([Integer(5040)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[51]:
../../../_images/notebooks_algebras_lattice_extensions_54_0.png
[52]:
lattice.extend([Integer(7560)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[52]:
../../../_images/notebooks_algebras_lattice_extensions_55_0.png
[53]:
lattice.extend([Integer(30240)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[53]:
../../../_images/notebooks_algebras_lattice_extensions_56_0.png
[54]:
lattice.extend([Integer(60480)])
HasseDiagram[Integer](
    lattice,
    domain_renderer=IntegerRenderer(join_semi_lattice=True, meet_semi_lattice=True),
)
[54]:
../../../_images/notebooks_algebras_lattice_extensions_57_0.png