Non-unital non-associative algebras#
- class sage.categories.magmatic_algebras.MagmaticAlgebras(base, name=None)#
Bases:
Category_over_base_ring
The category of algebras over a given base ring.
An algebra over a ring \(R\) is a module over \(R\) endowed with a bilinear multiplication.
Warning
MagmaticAlgebras
will eventually replace the currentAlgebras
for consistency with e.g. Wikipedia article Algebras which assumes neither associativity nor the existence of a unit (see github issue #15043).EXAMPLES:
sage: from sage.categories.magmatic_algebras import MagmaticAlgebras sage: C = MagmaticAlgebras(ZZ); C Category of magmatic algebras over Integer Ring sage: C.super_categories() [Category of additive commutative additive associative additive unital distributive magmas and additive magmas, Category of modules over Integer Ring]
- Associative#
alias of
AssociativeAlgebras
- class ParentMethods#
Bases:
object
- algebra_generators()#
Return a family of generators of this algebra.
EXAMPLES:
sage: F = AlgebrasWithBasis(QQ).example(); F # optional - sage.combinat sage.modules An example of an algebra with basis: the free algebra on the generators ('a', 'b', 'c') over Rational Field sage: F.algebra_generators() # optional - sage.combinat sage.modules Family (B[word: a], B[word: b], B[word: c])
- Unital#
alias of
UnitalAlgebras
- class WithBasis(base_category)#
Bases:
CategoryWithAxiom_over_base_ring
- class FiniteDimensional(base_category)#
Bases:
CategoryWithAxiom_over_base_ring
- class ParentMethods#
Bases:
object
- derivations_basis()#
Return a basis for the Lie algebra of derivations of
self
as matrices.A derivation \(D\) of an algebra is an endomorphism of \(A\) such that
\[D(ab) = D(a) b + a D(b)\]for all \(a, b \in A\). The set of all derivations form a Lie algebra.
EXAMPLES:
We construct the Heisenberg Lie algebra as a multiplicative algebra:
sage: p_mult = matrix([[0,0,0], [0,0,-1], [0,0,0]]) # optional - sage.combinat sage.modules sage: q_mult = matrix([[0,0,1], [0,0,0], [0,0,0]]) # optional - sage.combinat sage.modules sage: A = algebras.FiniteDimensional(QQ, # optional - sage.combinat sage.modules ....: [p_mult, q_mult, matrix(QQ, 3, 3)], 'p,q,z') sage: A.inject_variables() # optional - sage.combinat sage.modules Defining p, q, z sage: p * q # optional - sage.combinat sage.modules z sage: q * p # optional - sage.combinat sage.modules -z sage: A.derivations_basis() # optional - sage.combinat sage.modules ( [1 0 0] [0 1 0] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1 0 0] [0 1 0] [0 0 0] [0 0 0] [0 0 1], [0 0 0], [0 0 0], [0 0 1], [1 0 0], [0 1 0] )
We construct another example using the exterior algebra and verify we obtain a derivation:
sage: A = algebras.Exterior(QQ, 1) # optional - sage.combinat sage.modules sage: A.derivations_basis() # optional - sage.combinat sage.modules ( [0 0] [0 1] ) sage: D = A.module_morphism(matrix=A.derivations_basis()[0], # optional - sage.combinat sage.modules ....: codomain=A) sage: one, e = A.basis() # optional - sage.combinat sage.modules sage: all(D(a*b) == D(a) * b + a * D(b) # optional - sage.combinat sage.modules ....: for a in A.basis() for b in A.basis()) True
REFERENCES:
- class ParentMethods#
Bases:
object
- algebra_generators()#
Return generators for this algebra.
This default implementation returns the basis of this algebra.
OUTPUT: a family
EXAMPLES:
sage: D4 = DescentAlgebra(QQ, 4).B() # optional - sage.combinat sage.modules sage: D4.algebra_generators() # optional - sage.combinat sage.modules Lazy family (...)_{i in Compositions of 4} sage: R.<x> = ZZ[] sage: P = PartitionAlgebra(1, x, R) # optional - sage.combinat sage.modules sage: P.algebra_generators() # optional - sage.combinat sage.modules Lazy family (Term map from Partition diagrams of order 1 to Partition Algebra of rank 1 with parameter x over Univariate Polynomial Ring in x over Integer Ring(i))_{i in Partition diagrams of order 1}
- product()#
The product of the algebra, as per
Magmas.ParentMethods.product()
By default, this is implemented using one of the following methods, in the specified order:
EXAMPLES:
sage: A = AlgebrasWithBasis(QQ).example() # optional - sage.combinat sage.modules sage: a, b, c = A.algebra_generators() # optional - sage.combinat sage.modules sage: A.product(a + 2*b, 3*c) # optional - sage.combinat sage.modules 3*B[word: ac] + 6*B[word: bc]
- product_on_basis(i, j)#
The product of the algebra on the basis (optional).
INPUT:
i
,j
– the indices of two elements of the basis ofself
Return the product of the two corresponding basis elements indexed by
i
andj
.If implemented,
product()
is defined from it by bilinearity.EXAMPLES:
sage: A = AlgebrasWithBasis(QQ).example() # optional - sage.combinat sage.modules sage: Word = A.basis().keys() # optional - sage.combinat sage.modules sage: A.product_on_basis(Word("abc"), Word("cba")) # optional - sage.combinat sage.modules B[word: abccba]
- additional_structure()#
Return
None
.Indeed, the category of (magmatic) algebras defines no new structure: a morphism of modules and of magmas between two (magmatic) algebras is a (magmatic) algebra morphism.
See also
Todo
This category should be a
CategoryWithAxiom
, the axiom specifying the compatibility between the magma and module structure.EXAMPLES:
sage: from sage.categories.magmatic_algebras import MagmaticAlgebras sage: MagmaticAlgebras(ZZ).additional_structure()
- super_categories()#
EXAMPLES:
sage: from sage.categories.magmatic_algebras import MagmaticAlgebras sage: MA = MagmaticAlgebras(ZZ) sage: MA.super_categories() [Category of additive commutative additive associative additive unital distributive magmas and additive magmas, Category of modules over Integer Ring] sage: from sage.categories.additive_semigroups import AdditiveSemigroups sage: MA.is_subcategory((AdditiveSemigroups() & Magmas()).Distributive()) True