def to_symmetric_group_algebra_on_basis(self, S): """ Return `D_S` as a linear combination of basis elements in the symmetric group algebra. EXAMPLES:: sage: D = DescentAlgebra(QQ, 4).D() sage: [D.to_symmetric_group_algebra_on_basis(tuple(b)) ....: for b in Subsets(3)] [[1, 2, 3, 4], [2, 1, 3, 4] + [3, 1, 2, 4] + [4, 1, 2, 3], [1, 3, 2, 4] + [1, 4, 2, 3] + [2, 3, 1, 4] + [2, 4, 1, 3] + [3, 4, 1, 2], [1, 2, 4, 3] + [1, 3, 4, 2] + [2, 3, 4, 1], [3, 2, 1, 4] + [4, 2, 1, 3] + [4, 3, 1, 2], [2, 1, 4, 3] + [3, 1, 4, 2] + [3, 2, 4, 1] + [4, 1, 3, 2] + [4, 2, 3, 1], [1, 4, 3, 2] + [2, 4, 3, 1] + [3, 4, 2, 1], [4, 3, 2, 1]] """ n = self.realization_of()._n SGA = SymmetricGroupAlgebra(self.base_ring(), n) # Need to convert S to a list of positions by -1 for indexing P = Permutations(descents=([x-1 for x in S], n)) return SGA.sum_of_terms([(p, 1) for p in P])
def to_symmetric_group_algebra_on_basis(self, S): """ Return `D_S` as a linear combination of basis elements in the symmetric group algebra. EXAMPLES:: sage: D = DescentAlgebra(QQ, 4).D() sage: [D.to_symmetric_group_algebra_on_basis(tuple(b)) ....: for b in Subsets(3)] [[1, 2, 3, 4], [2, 1, 3, 4] + [3, 1, 2, 4] + [4, 1, 2, 3], [1, 3, 2, 4] + [1, 4, 2, 3] + [2, 3, 1, 4] + [2, 4, 1, 3] + [3, 4, 1, 2], [1, 2, 4, 3] + [1, 3, 4, 2] + [2, 3, 4, 1], [3, 2, 1, 4] + [4, 2, 1, 3] + [4, 3, 1, 2], [2, 1, 4, 3] + [3, 1, 4, 2] + [3, 2, 4, 1] + [4, 1, 3, 2] + [4, 2, 3, 1], [1, 4, 3, 2] + [2, 4, 3, 1] + [3, 4, 2, 1], [4, 3, 2, 1]] """ n = self.realization_of()._n SGA = SymmetricGroupAlgebra(self.base_ring(), n) # Need to convert S to a list of positions by -1 for indexing P = Permutations(descents=([x - 1 for x in S], n)) return SGA.sum_of_terms([(p, 1) for p in P])
def example(self, gens=None): """ Return an example of a Lie algebra as per :meth:`Category.example <sage.categories.category.Category.example>`. EXAMPLES:: sage: LieAlgebras(QQ).example() An example of a Lie algebra: the Lie algebra from the associative algebra Symmetric group algebra of order 3 over Rational Field generated by ([2, 1, 3], [2, 3, 1]) Another set of generators can be specified as an optional argument:: sage: F.<x,y,z> = FreeAlgebra(QQ) sage: LieAlgebras(QQ).example(F.gens()) An example of a Lie algebra: the Lie algebra from the associative algebra Free Algebra on 3 generators (x, y, z) over Rational Field generated by (x, y, z) """ if gens is None: from sage.combinat.symmetric_group_algebra import SymmetricGroupAlgebra from sage.rings.rational_field import QQ gens = SymmetricGroupAlgebra(QQ, 3).algebra_generators() from sage.categories.examples.lie_algebras import Example return Example(gens)
def __init__(self, alg, prefix="D"): r""" Initialize ``self``. EXAMPLES:: sage: TestSuite(DescentAlgebra(QQ, 4).D()).run() """ self._prefix = prefix self._basis_name = "standard" p_set = subsets(range(1, alg._n)) CombinatorialFreeModule.__init__(self, alg.base_ring(), map(tuple, p_set), category=DescentAlgebraBases(alg), bracket="", prefix=prefix) # Change of basis: B = alg.B() self.module_morphism( self.to_B_basis, codomain=B, category=self.category()).register_as_coercion() B.module_morphism(B.to_D_basis, codomain=self, category=self.category()).register_as_coercion() # Coercion to symmetric group algebra SGA = SymmetricGroupAlgebra(alg.base_ring(), alg._n) self.module_morphism(self.to_symmetric_group_algebra, codomain=SGA, category=Algebras( alg.base_ring())).register_as_coercion()
def to_symmetric_group_algebra(self, n=None): """ Return the element of a symmetric group algebra corresponding to the element ``self`` of `FQSym`. INPUT: - ``n`` -- integer (default: the maximal degree of ``self``); the rank of the target symmetric group algebra EXAMPLES:: sage: A = algebras.FQSym(QQ).F() sage: x = A([1,3,2,4]) + 5/2 * A([1,2,4,3]) sage: x.to_symmetric_group_algebra() 5/2*[1, 2, 4, 3] + [1, 3, 2, 4] sage: x.to_symmetric_group_algebra(n=7) 5/2*[1, 2, 4, 3, 5, 6, 7] + [1, 3, 2, 4, 5, 6, 7] sage: a = A.zero().to_symmetric_group_algebra(); a 0 sage: parent(a) Symmetric group algebra of order 0 over Rational Field sage: y = A([1,3,2,4]) + 5/2 * A([2,1]) sage: y.to_symmetric_group_algebra() [1, 3, 2, 4] + 5/2*[2, 1, 3, 4] sage: y.to_symmetric_group_algebra(6) [1, 3, 2, 4, 5, 6] + 5/2*[2, 1, 3, 4, 5, 6] """ if not self: if n is None: n = 0 return SymmetricGroupAlgebra(self.base_ring(), n).zero() m = self.maximal_degree() if n is None: n = m elif n < m: raise ValueError("n must be at least the maximal degree") SGA = SymmetricGroupAlgebra(self.base_ring(), n) return SGA._from_dict( {Permutations(n)(key): c for (key, c) in self})
def to_symmetric_group_algebra(self, n=None): """ Return the element of a symmetric group algebra corresponding to the element ``self`` of `FQSym`. INPUT: - ``n`` -- integer (default: the maximal degree of ``self``); the rank of the target symmetric group algebra EXAMPLES:: sage: A = algebras.FQSym(QQ).F() sage: x = A([1,3,2,4]) + 5/2 * A([1,2,4,3]) sage: x.to_symmetric_group_algebra() 5/2*[1, 2, 4, 3] + [1, 3, 2, 4] sage: x.to_symmetric_group_algebra(n=7) 5/2*[1, 2, 4, 3, 5, 6, 7] + [1, 3, 2, 4, 5, 6, 7] sage: a = A.zero().to_symmetric_group_algebra(); a 0 sage: parent(a) Symmetric group algebra of order 0 over Rational Field sage: y = A([1,3,2,4]) + 5/2 * A([2,1]) sage: y.to_symmetric_group_algebra() [1, 3, 2, 4] + 5/2*[2, 1, 3, 4] sage: y.to_symmetric_group_algebra(6) [1, 3, 2, 4, 5, 6] + 5/2*[2, 1, 3, 4, 5, 6] """ if not self: if n is None: n = 0 return SymmetricGroupAlgebra(self.base_ring(), n).zero() m = self.maximal_degree() if n is None: n = m elif n < m: raise ValueError("n must be at least the maximal degree") SGA = SymmetricGroupAlgebra(self.base_ring(), n) return SGA._from_dict({Permutations(n)(key): c for (key, c) in self})
def __init__(self, R, n, r): """ Initialize ``self``. TESTS:: sage: T = SchurTensorModule(QQ, 2, 3) sage: TestSuite(T).run() """ C = CombinatorialFreeModule(R, range(1, n + 1)) self._n = n self._r = r self._sga = SymmetricGroupAlgebra(R, r) self._schur = SchurAlgebra(R, n, r) CombinatorialFreeModule_Tensor.__init__(self, tuple([C] * r)) g = self._schur.module_morphism(self._monomial_product, codomain=self) self._schur_action = self.module_morphism(g, codomain=self, position=1)
def to_symmetric_group_algebra(self): """ Morphism from ``self`` to the symmetric group algebra. EXAMPLES:: sage: D = DescentAlgebra(QQ, 4).D() sage: D.to_symmetric_group_algebra(D[1,3]) [2, 1, 4, 3] + [3, 1, 4, 2] + [3, 2, 4, 1] + [4, 1, 3, 2] + [4, 2, 3, 1] sage: B = DescentAlgebra(QQ, 4).B() sage: B.to_symmetric_group_algebra(B[1,2,1]) [1, 2, 3, 4] + [1, 2, 4, 3] + [1, 3, 4, 2] + [2, 1, 3, 4] + [2, 1, 4, 3] + [2, 3, 4, 1] + [3, 1, 2, 4] + [3, 1, 4, 2] + [3, 2, 4, 1] + [4, 1, 2, 3] + [4, 1, 3, 2] + [4, 2, 3, 1] """ SGA = SymmetricGroupAlgebra(self.base_ring(), self.realization_of()._n) return self.module_morphism(self.to_symmetric_group_algebra_on_basis, codomain=SGA)
def __init__(self, R, n, r): """ Initialize ``self``. TESTS:: sage: T = SchurTensorModule(QQ, 2, 3) sage: TestSuite(T).run() """ C = CombinatorialFreeModule(R, list(range(1, n + 1))) self._n = n self._r = r self._sga = SymmetricGroupAlgebra(R, r) self._schur = SchurAlgebra(R, n, r) cat = ModulesWithBasis(R).TensorProducts().FiniteDimensional() CombinatorialFreeModule_Tensor.__init__(self, tuple([C] * r), category=cat) g = self._schur.module_morphism(self._monomial_product, codomain=self) self._schur_action = self.module_morphism(g, codomain=self, position=1)