[Asa] S. Asai, Semibricks, Int. Math. Res. Not. rny150, 2018.
[BCZ1] E. Barnard, G. Todorov, S. Zhu, Minimal inclusion of torsion classes, Algebraic Combin., 2 (5) (2019), 879--901.
[BCZ2] E. Barnard, G. Todorov, S. Zhu, Dynamical Combinatorics and Torsion Classes, J. Pure Appl. Algebra 225 (2021), no. 9, 106642.
[DIRRT] L. Demonet, O. Iyama, N. Reading, I. Reiten, H. Thomas, Lattice theory of torsion classes, arXiv:1711.01785.
[RST] N. Reading, D. E. Speyer, H. Thomas, The fundamental theorem of finite semidistributive lattices, arXiv:1907.08050.
Recently, many people (including me) have been considering the lattice of torsion classes.
Let $\Lambda$ be a finite-dimensional algebra. Then consider $L:=\mathsf{tors}\,\Lambda$, the complete lattice of torsion classes. Assume further that $\Lambda$ is $\tau$-tilting finite, which means that $\mathsf{tors}\,\Lambda$ is a finite lattice.
This lattice $L$ is a semidistributive lattice, that is, if $\mathcal{T} \cap \mathcal{U}_1 = \mathcal{T} \cap \mathcal{U}_2$, then $\mathcal{T} \cap (\mathcal{U}_1 \vee \mathcal{U}_2) = \mathcal{T} \cap \mathcal{U}_1\, ( = \mathcal{T} \cap \mathcal{U}_2)$ holds, and the dual condition is satisfied. The key fact to prove this is the equality $\mathcal{U}_1 \vee \mathcal{U}_2 = \mathsf{Filt}\,(\mathcal{U}_1 \cup \mathcal{U}_2)$, and the dual condition is automatic by the standard duality (see [DIRRT Theorem 3.1] for the precise proof). Thus we do not have to remember the definition of semidistributivity like me.
Let's look at some examples in SageMath. The easiest non-trivial lattice which is isomorphic to the lattice of torsion class is:
L_A2 = posets.PentagonPoset()
L_A2.plot(figsize = 3)
This lattice L
is nothing but $\mathsf{tors}\, \Lambda$ for $\Lambda = kQ$ for $Q = [1 \to 2]$. Note that the Hasse quiver in SageMath is opposite of the representation-theorist's Hasse quiver convention, thus the node 0
is the smallest element. In this document, we follow representation-theoretist's convention.
The following L_pp
is $\mathsf{tors}\, \Pi$ where $\Pi$ is a preprojective algebra of type $A_3$, since $\mathsf{tors}\,\Pi$ is isomorphic to the lattice of weak order on the Weyl group $W$ of type $A_3$. In this way, we can construct the lattice of torsion classes for any preprojective algebra of Dynkin type.
W = WeylGroup("A3")
L_pp = W.weak_lattice()
Moreover, we can construct the lattice of torsion classes for any Dynkin path algebra, since it is isomorphic to the Cambrian lattice.
For example, the following L_A3
is $\mathsf{tors}\,\Lambda$ for $\Lambda = k[1 \leftarrow 2 \to 3]$, where (1,3,2)
represents the Coxeter element $s_1 s_3 s_2$ corresponding to the orientation $1 \leftarrow 2 \to 3$.
L_A3 = W.cambrian_lattice((1,3,2))
L_A3.plot(label_elements=False, figsize = 5)
Or we can construct this lattice by constructing posets of $c_Q$-sortable elements as follows.
c_Q = W.from_reduced_word([1,3,2])
LL_A3_poset = L_pp.subposet([w for w in W if w.is_coxeter_sortable(c_Q)])
LL_A3 = LatticePoset(LL_A3_poset)
LL_A3.is_isomorphic(L_A3)
True
In [DIRRT] and [BCZ1], the labeling of arrows in the Hasse quiver of $L$ was introduced, which assign a brick to each arrow defined as follows (recall that a brick is a module with a division endomorphism ring).
Suppose that there is an arrow $\mathcal{T} \to \mathcal{U}$, namely, $\mathcal{T}\supsetneq \mathcal{U}$ is a minimal inclusion of torsion classes. Then [DIRRT Theorem 3.3] shows that there uniquely exists a brick $B$ contained in the category $\mathcal{T} \cap \mathcal{U}^\perp$, where $\mathcal{U}^\perp$ is the Hom-perpendicular category of $\mathcal{U}$, that is, the torsion-free class corresponding to $\mathcal{U}$. Thus we can put a brick $B$ on the arrow $\mathcal{T} \to \mathcal{U}$, which is called a brick labeling.
However, we cannot naively compute brick labels in SageMath because we should consider bricks. The problem is that we cannot deal with modules, hence bricks, for a general f.d. algebra in SageMath. Instead, we use join-irreducible elements.
Consider when a torsion class $\mathcal{T}$ cannot be written as a join of other torsion classes properly contained in $\mathcal{T}$. Such an element of $\mathcal{T} \in L$ is called join-irreducible. We can easily check that this is the case precisely when there is a unique arrow $\mathcal{T} \to \mathcal{T}_*$ starting at $\mathcal{T}$. This is a purely lattice-theoretic notion, but surprisingly, there is a representation-theoretic description of join-irreducibles as follows [DIRRT Theorem 1.4]:
We have a bijection between
The maps are given as follows.
Of course, we can compute join-irreducibles in SageMath since it's purely combinatorial:
L_A2.plot(figsize=3)
L_A2.join_irreducibles()
[1, 2, 3]
The following shows that there are $11$ bricks in $\mathsf{mod}\, \Pi$ for a preprojective algebra $\Pi$ of type $A_3$.
len(L_pp.join_irreducibles())
11
Therefore, under this bijection, we can use join-irreducibles to represent bricks!
Of course, one may dualize the above bijection by the standard duality: there is a bijection between bricks and join-irreducible elements in the lattice of torsion-free classes. Since the lattice of torsion-free classes is the opposite of $L$, the second set can be regarded as the set of meet-irreducible element in $L$. By combining, we obtain the following bijections.
$$ \{\text{join-irreducibles in $L$}\} \rightleftarrows \{\text{bricks}\} \rightleftarrows \{\text{meet-irreducibles in $L$}\} $$Let $\kappa$ be the composition, which is a bijection from join-irreducibles to meet-irreducibles. It is natural to ask whether one can compute $\kappa$ in a purely lattice-theoretical way, and this turns out to be true.
Before describing it, let's describe $\kappa$ from the representation-theoretic perspective. Let $B$ be a brick. Then the corresponding join-irreducible element is $\mathsf{T}(B)$, and the corresponding meet-irreducible element is $^\perp \mathsf{F}(B)$ (where $\mathsf{F}(B)$ is the smallest torsion-free class containing $B$), and it's easy to see $^\perp \mathsf{F}(B) = {}^\perp B$.
Thus $\kappa$ satisfies the following formula.
$$ \kappa(\mathsf{T}(B)) = {}^\perp B. $$Let $L$ be a general finite semiditributive lattice and $j$ a join-irreducible element of $L$. Then there is a unique Hasse arrow $j \to j_*$ starting at $j$. Define $\kappa(j)$ as follows:
$$ \kappa(j) = \max \{ m \in L \, | \, j \wedge x = j_* \}, $$where $\max$ is the maximum element. Then actually this is well-defined, is meet-irreducible, and gives a bijection from join-irreducibles to meet-irreducibles, see e.g. [RST Theorem 2.28].
In [BCZ2 Theorem A] (and maybe implicitly in [DIRRT]), it was shown that $\kappa$ on $L = \mathsf{tors}\, \Lambda$ is precisely the above composition $\{ \text{j-irr} \} \xrightarrow{\sim} \{\text{bricks}\} \xrightarrow{\sim} \{\text{meet-irr} \}$, hence it coincides with the above description $\kappa(\mathsf{T}(B)) = {}^\perp B$.
To compute the kappa map, let's use kappa.py
. To use it, import add_kappa()
function from kappa.py
and execute it.
from kappa import add_kappa
add_kappa()
For example, for a pentagon poset L_A2
, we can compute $\kappa$ as follows.
L_A2.plot(figsize = 3)
for j in L_A2.join_irreducibles():
print(f"The kappa of {j} is {L_A2.kappa(j)}")
The kappa of 1 is 3 The kappa of 2 is 1 The kappa of 3 is 2
So, why do we need this kappa map in the representation theory of algebra? The answer is that it naturally arises when we consider the relation between torsion-free classes and bricks represented by join-irreducibles.
Let $B$ be a brick, and consider the following problem.
In SageMath, we can use join-irreducibles to represent bricks since they are in bijection. The join-irreducible corresponding to $B$ is $\mathsf{T}(B)$, hence the answer is clear:
For example, the number of bricks contained in $\mathcal{T}$ is equal to the number of join-irreducibles $x$ satisfying $x \leq \mathcal{T}$. The following code prints the number of bricks contained in each torsion class over the path algebra of type $A_2$.
for T in L_A2:
bricks_in_T = [j for j in L_A2.join_irreducibles() if L_A2.is_lequal(j,T)]
print(f"The number of bricks in {T} is {len(bricks_in_T)}")
The number of bricks in 0 is 0 The number of bricks in 1 is 1 The number of bricks in 2 is 1 The number of bricks in 3 is 2 The number of bricks in 4 is 3
Next, consider torsion-free side, namely, the following problem.
Since we have decided that we use join-irreducibles to represent bricks, we can only use $\mathsf{T}(B)$. Thus this problem is not so easy, and we can use kappa map to solve it!
Consider when $B \in \mathcal{T}^\perp$ holds. This is equivalent to $\mathsf{F}(B) \subseteq \mathcal{T}^\perp$, where $\mathsf{F}(B)$ is the smallest torsion-free class containing $B$. By taking $^\perp(-)$, we obtain $^\perp B = ^\perp \mathsf{F}(B) \supseteq \mathcal{T}$. Therefore, we want to represent $^\perp B$ using $\mathsf{T}(B)$, and this is achieved by the kappa map by the above formula: $\kappa(\mathsf{T}(B)) = {}^\perp B$!
To sum up, the answer is:
And this condition is purely lattice-theoretical, hence SageMath can compute it!
For example, the following code computes the numbers of torsion classes and torsion-free classes containing each brick.
for j in L_A2.join_irreducibles():
tors = [T for T in L_A2 if L_A2.is_lequal(j,T)]
m = L_A2.kappa(j)
torf = [T for T in L_A2 if L_A2.is_gequal(m,T)]
print(f"There are {len(tors)} tors and {len(torf)} torfs which contain a brick represented by {j}")
There are 2 tors and 3 torfs which contain a brick represented by 1 There are 3 tors and 2 torfs which contain a brick represented by 2 There are 2 tors and 2 torfs which contain a brick represented by 3
As another example, one can compute the number of bricks containing in $\mathcal{T}_1 \cap \mathcal{T}_2^\perp$ for given torsion classes $\mathcal{T}_1$ and $\mathcal{T}_2$. The subcategory of this form appears in various literatures including my paper, which was the motivation for dealing with the kappa map.
In kappa.py
, we also compute the extended kappa map $\overline{\kappa}$ for a finite semidistributive. I'll explain the meaning of it following [BCZ2].
Let $\mathcal{T}$ be any torsion class. Since we are assuming that $\Lambda$ is $\tau$-tilting finite, there are only finitely many Hasse arrows starting at $\mathcal{T}$, namely, $\mathcal{T} \to \mathcal{T}_i$ for $i=1,2,\dots, m$. Let $B_i$ be the brick label of $\mathcal{T} \to \mathcal{T}_i$. Then it is known that the following equality holds (e.g. [Asa], [BCZ1]):
$$ \mathcal{T} = \mathsf{T}(B_1)\vee \cdots \vee \mathsf{T}(B_m) $$This represents an arbitrary torsion class $\mathcal{T}$ as a join of join-irreducibles $\mathsf{T}(B_i)$. This presentation has a good lattice-theoretic property, thus is called a canonical join representation (see [BCZ1]). I omit the definition, but this says that this presentation is minimal, and is uniquely determined naturally only from $\mathcal{T}$.
In [BCZ2], the extended kappa map $\overline{\kappa} \colon L \to L$ for a finite semiditributive lattice $L$ was introduced. This is defined as follows: for $x \in L$, take a canonical join representation $x = j_1 \vee \cdots \vee j_m$. Then
$$ \overline{\kappa}(x) := \kappa(j_1) \wedge \cdots \wedge \kappa(j_m) $$Therefore, when applied to the above $\mathcal{T}$, we obtain
$$ \overline{\kappa}(\mathcal{T}) = \kappa(\mathsf{T}(B_1)) \wedge \cdots \wedge \kappa(\mathsf{T}(B_m)) = {}^\perp B_1 \cap \cdots \cap {}^\perp B_m. $$Let's consider it in detail. By duality, $\mathcal{T}':= \overline{\kappa}(\mathcal{T}) = {}^\perp B_1 \cap \cdots \cap {}^\perp B_m$ is a canonical meet representation (note that ${}^\perp B$ is meet-irreducible in our $L$ by duality). Therefore, there are exactly $m$ arrows $\mathcal{T}'_i \to \mathcal{T}'$ with its label $B_i$ for $i=1,\dots, m$, and $\mathcal{T}'$ is characterized by this property.
To sum up, $\overline{\kappa}(\mathcal{T})$ is the following description using the brick labeling:
This $\overline{\kappa}$ is bijective by construction, hence this map is an extra symmetry on the lattice of torsion classes! For a further investigation of this map, we refer the reader to [BCZ2].
For example, let us compute $\overline{\kappa}$ for $A_2$ quiver:
L_A2.plot(figsize = 3)
for x in L_A2:
print(f"The extended kappa of {x} is {L_A2.extended_kappa(x)}")
The extended kappa of 0 is 4 The extended kappa of 1 is 3 The extended kappa of 2 is 1 The extended kappa of 3 is 2 The extended kappa of 4 is 0
Finally, consider $\overline{\kappa}$ using wide subcategoeis. It's known that torsion classes are in bijection with wide subcategories (since we are assuming that $\Lambda$ is $\tau$-tilting finite). The wide subcategory corresponding to the above $\mathcal{T}$ is precisely $\mathcal{W}:= \mathsf{Filt}\, \{ B_1,\dots, B_m\}$, and the coverse is given by $\mathsf{T}(\mathcal{W})$. Then it is easy to check ${}^\perp B_1 \cap \cdots \cap {}^\perp B_m = {}^\perp \mathcal{W}$. To sum up, starting from the wide subcategory $\mathcal{W}$, we have
$$ \overline{\kappa}(\mathsf{T}(\mathcal{W})) = {}^\perp \mathcal{W} $$This means that the follownig commutes!
$$ \require{AMScd} \begin{CD} \{ \text{wide subcats} \} @= \{ \text{wide subcats} \} \\ @V{\mathsf{T}}VV @V{^\perp (-)}VV\\ L = \{ \text{torsion classes}\} @>{\overline{\kappa}}>> L \end{CD} $$