def representation(self, k, *args, **kwds): """ Return a representation of the quiver. For more information see the :class:`~sage.quivers.representation.QuiverRep` documentation. TESTS:: sage: Q = DiGraph({1:{3:['a']}, 2:{3:['b']}}).path_semigroup() sage: spaces = {1: QQ^2, 2: QQ^3, 3: QQ^2} sage: maps = {(1, 3, 'a'): (QQ^2).Hom(QQ^2).identity(), (2, 3, 'b'): [[1, 0], [0, 0], [0, 0]]} sage: M = Q.representation(QQ, spaces, maps) sage: M Representation with dimension vector (2, 3, 2) """ return QuiverRep(k, self, *args, **kwds)
def S(self, k, vertex): """ Return the simple module over `k` at the given vertex ``vertex``. This module is literally simple only when `k` is a field. INPUT: - `k` -- ring, the base ring of the representation - ``vertex`` -- integer, a vertex of the quiver OUTPUT: - :class:`~sage.quivers.representation.QuiverRep`, the simple module at ``vertex`` with base ring `k` EXAMPLES:: sage: P = DiGraph({1:{2:['a','b']}, 2:{3:['c','d']}}).path_semigroup() sage: S1 = P.S(GF(3), 1) sage: P.S(ZZ, 3).dimension_vector() (0, 0, 1) sage: P.S(ZZ, 1).dimension_vector() (1, 0, 0) The vertex given must be a vertex of the quiver:: sage: P.S(QQ, 4) Traceback (most recent call last): ... ValueError: must specify a valid vertex of the quiver """ if vertex not in self._quiver: raise ValueError("must specify a valid vertex of the quiver") # This is the module with k at the given vertex and zero elsewhere. As # all maps are zero we only need to specify that the given vertex has # dimension 1 and the constructor will zero out everything else. return QuiverRep(k, self, {vertex: 1})
def free_module(self, k): """ Return a free module of rank `1` over ``kP``, where `P` is ``self``. (In other words, the regular representation.) INPUT: - ``k`` -- ring, the base ring of the representation. OUTPUT: - :class:`~sage.quivers.representation.QuiverRep_with_path_basis`, the path algebra considered as a right module over itself. EXAMPLES:: sage: Q = DiGraph({1:{2:['a', 'b'], 3: ['c', 'd']}, 2:{3:['e']}}).path_semigroup() sage: Q.free_module(GF(3)).dimension_vector() (1, 3, 6) """ return QuiverRep(k, self, [[(v, v)] for v in self._quiver], option='paths')
def I(self, k, vertex): """ Return the indecomposable injective module over `k` at the given vertex ``vertex``. This module is literally indecomposable only when `k` is a field. INPUT: - `k` -- ring, the base ring of the representation - ``vertex`` -- integer, a vertex of the quiver OUTPUT: - :class:`~sage.quivers.representation.QuiverRep`, the indecomposable injective module at vertex ``vertex`` with base ring `k` EXAMPLES:: sage: Q = DiGraph({1:{2:['a','b']}, 2:{3:['c','d']}}).path_semigroup() sage: I2 = Q.I(GF(3), 2) sage: Q.I(ZZ, 3).dimension_vector() (4, 2, 1) sage: Q.I(ZZ, 1).dimension_vector() (1, 0, 0) The vertex given must be a vertex of the quiver:: sage: Q.I(QQ, 4) Traceback (most recent call last): ... ValueError: must specify a valid vertex of the quiver """ if vertex not in self._quiver: raise ValueError("must specify a valid vertex of the quiver") return QuiverRep(k, self, [[(vertex, vertex)]], option='dual paths')