This is a manual of kappa.py, an additional module for SageMath.
AUTHOR: Haruhisa Enomoto
REFERENCES:
A function add_kappa()
in kappa.py adds to a Sage class sage.combinat.posets.lattices.FiniteLatticePoset
class methods
kappa
extended_kappa
kappa_dual
extended_kappa_dual
To use it, first import add_kappa
function from kappa.py
and execute add_kappa()
.
from kappa import add_kappa
add_kappa()
By this, we can use the above methods for an instance of a Sage class FiniteLatticePoset
.
Let $L$ be a finite lattice. An element $j$ of $L$ is join-irreducible if $j = \bigvee A$ for a subset $A$ of $L$ implies $j \in A$. This is equivalent to that there is a unique element $j_*$ which is covered by $j$. Dually, we define meet-irreducible elements.
A kappa map $\kappa(j)$ for a join-irreducible element $j$ of $L$ is defined, if exists, as a maximum element $x$ satisfying $j \wedge x = j_*$. Then $\kappa(j)$ is meet-irreducible if exists (see e.g. [RST, Theorem 2.28]).
Return $\kappa(j)$ for a join-irreducible element $j$
of a finite lattice self
if it exists.
INPUT:
j
-- an element of self
,
which is expected to be join-irreducible
check
-- a Boolean (default: True
),
whether to check that j
is indeed join-irreducible
OUTPUT:
an element of self
, or None
if it does not exist.
A method sage.combinat.posets.hasse_diagram.HasseDiagram.kappa
EXAMPLE:
L = posets.PentagonPoset()
L.plot(figsize = 3)
L.kappa(1)
3
L.kappa(4)
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-4-d512d9c9e07a> in <module>() ----> 1 L.kappa(Integer(4)) /home/sage/Documents/GitHub/kappa-map-for-lattices-in-sage/kappa.py in kappa(self, j, check) 38 39 if check and j not in self.join_irreducibles(): ---> 40 raise ValueError("{0} is not join-irreducible.".format(j)) 41 42 hasse = self._hasse_diagram ValueError: 4 is not join-irreducible.
L_new = LatticePoset({1: [2, 3], 2: [4, 5], 3: [6], 4: [6], 5: [6]})
L_new.plot(figsize = 4)
L_new.kappa(2)
3
L_new.kappa(3) is None
True
Let $m$ be a meet-irreducible element in a finite lattice $L$, and $m_*$ a unique element covering $m$. A dual kappa map $\kappa^d(m)$ for a meet-irreducible element $j$ of $L$ is defined, if exists, as a minimum element $x$ satisfying $x \vee m = m_*$. Then $\kappa^d(m)$ is join-irreducible if exists. Moreover, $\kappa$ and $\kappa^d$ are mutually inverse bijecionts between the set of join-irreducibles and meet-irreducibles if and only if $L$ is semidistributive, see e.g. [RST Corollary 2.29].
Return $\kappa^d(m)$ for a meet-irreducible element $m$ in a finite lattice if it exists.
INPUT:
m
-- an element of self
,
which is expected to be meet-irreducible
check
-- a Boolean (default: True
),
whether to check that m
is indeed join-irreducible
OUTPUT:
an element of self
, or None
if it does not exist.
A method sage.combinat.posets.hasse_diagram.HasseDiagram.kappa_dual
EXAMPLE:
L = posets.PentagonPoset()
L.kappa_dual(3)
1
An extended kappa map $\overline{\kappa}(x)$ for an element $x$ of a finite lattice $L$ is defined as follows. First, let $x = j_1 \vee \cdots \vee j_n$ be a canonical join representation of $x$ if exists. Then $\overline{\kappa}(x) := \kappa(j_1) \wedge \cdots \wedge \kappa(j_n)$ if $\kappa(j_1), \dots, \kappa(j_n)$ are defined. This map is well-defined if $L$ is semidistributive.
An extended dual kappa map $\overline{\kappa^d}(x)$ is defined completely dually. This map is well-defined and is an inverse of $\overline{\kappa}$ if $L$ is semidistributive.
Return $\overline{\kappa}(x)$ for an element $x$
of a finite lattice self
if it exists.
INPUT:
x
-- an element of self
OUTPUT:
an element of self
, or None
if it does not exist.
REFERENCE:
L = posets.PentagonPoset()
L.plot(figsize = 4)
for x in L:
print(f"extended_kappa({x}) is {L.extended_kappa(x)}")
extended_kappa(0) is 4 extended_kappa(1) is 3 extended_kappa(2) is 1 extended_kappa(3) is 2 extended_kappa(4) is 0
Return $\overline{\kappa^d}(x)$ for an element $x$
in a finite lattice self
if it exists.
INPUT:
x
-- an element of self
OUTPUT:
an element of self
, or None
if it does not exist.
REFERENCE:
EXAMPLE:
L = posets.PentagonPoset()
for x in L:
print(f"extended_kappa_dual({x}) is {L.extended_kappa_dual(x)}")
extended_kappa_dual(0) is 4 extended_kappa_dual(1) is 2 extended_kappa_dual(2) is 3 extended_kappa_dual(3) is 1 extended_kappa_dual(4) is 0