def _element_constructor_(self, x): """ Construct an element of ``self``. EXAMPLES:: sage: C = CombinatorialFreeModule(QQ, ['a','b','c']) sage: TA = TensorAlgebra(C) sage: TA(['a','b','c']) B['a'] # B['b'] # B['c'] sage: TA(['a','b','b']) B['a'] # B['b'] # B['b'] sage: TA(['a','b','c']) + TA(['a']) B['a'] + B['a'] # B['b'] # B['c'] sage: TA(['a','b','c']) + TA(['a','b','a']) B['a'] # B['b'] # B['a'] + B['a'] # B['b'] # B['c'] sage: TA(['a','b','c']) + TA(['a','b','c']) 2*B['a'] # B['b'] # B['c'] sage: TA(C.an_element()) 2*B['a'] + 2*B['b'] + 3*B['c'] """ FM = self._indices if isinstance(x, (list, tuple)): x = FM.prod(FM.gen(elt) for elt in x) return self.monomial(x) if x in FM._indices: return self.monomial(FM.gen(x)) if x in self._base_module: return self.sum_of_terms((FM.gen(k), v) for k,v in x) return CombinatorialFreeModule._element_constructor_(self, x)
def _element_constructor_(self, x): """ Construct an element of ``self``. EXAMPLES:: sage: C = CombinatorialFreeModule(QQ, ['a','b','c']) sage: TA = TensorAlgebra(C) sage: TA(['a','b','c']) B['a'] # B['b'] # B['c'] sage: TA(['a','b','b']) B['a'] # B['b'] # B['b'] sage: TA(['a','b','c']) + TA(['a']) B['a'] + B['a'] # B['b'] # B['c'] sage: TA(['a','b','c']) + TA(['a','b','a']) B['a'] # B['b'] # B['a'] + B['a'] # B['b'] # B['c'] sage: TA(['a','b','c']) + TA(['a','b','c']) 2*B['a'] # B['b'] # B['c'] sage: TA(C.an_element()) 2*B['a'] + 2*B['b'] + 3*B['c'] """ FM = self._indices if isinstance(x, (list, tuple)): x = FM.prod(FM.gen(elt) for elt in x) return self.monomial(x) if x in FM._indices: return self.monomial(FM.gen(x)) if x in self._base_module: return self.sum_of_terms((FM.gen(k), v) for k, v in x) return CombinatorialFreeModule._element_constructor_(self, x)
def _element_constructor_(self, x): r""" Convert ``x`` into ``self``. EXAMPLES:: sage: R = algebras.FQSym(QQ).G() sage: x, y, z = R([1]), R([2,1]), R([3,2,1]) sage: R(x) G[1] sage: R(x+4*y) G[1] + 4*G[2, 1] sage: R(1) G[] sage: D = algebras.FQSym(ZZ).G() sage: X, Y, Z = D([1]), D([2,1]), D([3,2,1]) sage: R(X-Y).parent() Free Quasi-symmetric functions over Rational Field in the G basis sage: R([1, 3, 2]) G[1, 3, 2] sage: R(Permutation([1, 3, 2])) G[1, 3, 2] sage: R(SymmetricGroup(4)(Permutation([1,3,4,2]))) G[1, 3, 4, 2] sage: RF = algebras.FQSym(QQ).F() sage: R(RF([2, 3, 4, 1])) G[4, 1, 2, 3] sage: R(RF([3, 2, 4, 1])) G[4, 2, 1, 3] sage: DF = algebras.FQSym(ZZ).F() sage: D(DF([2, 3, 4, 1])) G[4, 1, 2, 3] sage: R(DF([2, 3, 4, 1])) G[4, 1, 2, 3] sage: RF(R[2, 3, 4, 1]) F[4, 1, 2, 3] """ if isinstance(x, (list, tuple, PermutationGroupElement)): x = Permutation(x) try: P = x.parent() if isinstance(P, FreeQuasisymmetricFunctions.G): if P is self: return x return self.element_class(self, x.monomial_coefficients()) except AttributeError: pass return CombinatorialFreeModule._element_constructor_(self, x)
def _element_constructor_(self, x): """ Construct an element of ``self``. EXAMPLES:: sage: D = DescentAlgebra(QQ, 4).D() sage: D([1, 3]) D{1, 3} """ if isinstance(x, (list, set)): x = tuple(x) if isinstance(x, tuple): return self.monomial(x) return CombinatorialFreeModule._element_constructor_(self, x)
def _element_constructor_(self, x): """ Construct an element of ``self``. EXAMPLES:: sage: D = DescentAlgebra(QQ, 4).D() sage: D([1, 3]) D{1, 3} """ if isinstance(x, (list, set)): x = tuple(x) if isinstance(x, tuple): return self.monomial(x) return CombinatorialFreeModule._element_constructor_(self, x)
def _element_constructor_(self, x): """ Convert ``x`` into ``self``. EXAMPLES:: sage: F.<x,y> = FreeAlgebra(QQ, 2) sage: R = F.pbw_basis() sage: R(3) 3*PBW[1] sage: R(x*y) PBW[x*y] + PBW[y]*PBW[x] """ if isinstance(x, FreeAlgebraElement): return self._alg.pbw_element(self._alg(x)) return CombinatorialFreeModule._element_constructor_(self, x)
def _element_constructor_(self, x): """ Convert ``x`` into ``self``. EXAMPLES:: sage: F.<x,y> = FreeAlgebra(QQ, 2) sage: R = F.pbw_basis() sage: R(3) 3*PBW[1] sage: R(x*y) PBW[x*y] + PBW[y]*PBW[x] """ if isinstance(x, FreeAlgebraElement): return self._alg.pbw_element(self._alg(x)) return CombinatorialFreeModule._element_constructor_(self, x)
def _element_constructor_(self, x): r""" Convert ``x`` into ``self``. EXAMPLES:: sage: R = algebras.FQSym(QQ).F() sage: x, y, z = R([1]), R([2,1]), R([3,2,1]) sage: R(x) F[1] sage: R(x+4*y) F[1] + 4*F[2, 1] sage: R(1) F[] sage: D = algebras.FQSym(ZZ).F() sage: X, Y, Z = D([1]), D([2,1]), D([3,2,1]) sage: R(X-Y).parent() Free Quasi-symmetric functions over Rational Field in the F basis sage: R([1, 3, 2]) F[1, 3, 2] sage: R(Permutation([1, 3, 2])) F[1, 3, 2] sage: R(SymmetricGroup(4)(Permutation([1,3,4,2]))) F[1, 3, 4, 2] """ if isinstance(x, (list, tuple, PermutationGroupElement)): x = Permutation(x) try: P = x.parent() if isinstance(P, FreeQuasisymmetricFunctions.F): if P is self: return x return self.element_class(self, x.monomial_coefficients()) except AttributeError: pass return CombinatorialFreeModule._element_constructor_(self, x)