Source code for msinvar.indecomposable
# *****************************************************************************
# Copyright (C) 2021 Sergey Mozgovoy <mozhov@gmail.com>
#
# Distributed under the terms of the GNU General Public License (GPL)
# http://www.gnu.org/licenses/
# *****************************************************************************
from sage.misc.misc_c import prod
from msinvar.iterators import MultiPartitionsLE_iterator
from msinvar.utils import vec, phi
from msinvar.invariants import Invariant
[docs]def hua_formula(Q):
"""
Count the number of (absolutely) indecomposable representations of the
quiver Q.
We apply the Hua formula as described in :arxiv:`math/0608321`.
EXAMPLES::
sage: from msinvar.quivers import Quiver
sage: from msinvar.indecomposable import hua_formula
sage: Q=Quiver('1-2') # quiver of type A2
sage: Q.prec([3,3])
sage: hua_formula(Q).dict()
{(0, 1): 1, (1, 0): 1, (1, 1): 1}
sage: Q=Quiver('1-1') # Jordan quiver
sage: Q.prec([3])
sage: hua_formula(Q).dict() # we use q=y^2
{(1,): y^2, (2,): y^2, (3,): y^2}
"""
q = Q.y**2
dct = hua_formula_dict(Q, q, Q.prec())
return Invariant(Q.R(dct).Log()*(q-1))
[docs]def hua_formula_dict(Q, q, bound):
"""Auxiliary method."""
z = tuple([0]*len(bound))
dct = {z: 1}
for l in MultiPartitionsLE_iterator(bound):
d = tuple(vec.add(l))
p = sum(Q.eform(a, a) for a in l)
l = l+[z]
s = q**(-p)/prod(phi(1/q, vec.sub(l[k], l[k+1]))
for k in range(len(l)-1))
if d not in dct:
dct[d] = 0
dct[d] += s
return dct