correspond to the homogeneous convex cones.
"""
+from sage.categories.category_types import Category_over_base_ring
from sage.categories.magmatic_algebras import MagmaticAlgebras
from sage.combinat.free_module import CombinatorialFreeModule
from sage.modules.with_basis.subquotient import SubmoduleWithBasis
from mjo.clan.clan_element import (ClanElement,
NormalDecompositionElement)
+class Clans(Category_over_base_ring):
+ r"""
+ The category of clans over the given base ring.
+
+ EXAMPLES::
+
+ sage: Clans(QQ)
+ Category of clans over Rational Field
+
+ """
+ def super_categories(self):
+ R = self.base_ring()
+ return [MagmaticAlgebras(R).FiniteDimensional().WithBasis()]
+ class ParentMethods:
+ pass
+ class ElementMethods:
+ pass
+ class MorphismMethods:
+ pass
+
class Clan(CombinatorialFreeModule):
r"""
Base class for clans.
self._vector_space = vector_space
basis = vector_space.basis()
- category = MagmaticAlgebras(scalar_field).or_subcategory(category)
- category = category.FiniteDimensional().WithBasis()
+ category = Clans(scalar_field).or_subcategory(category)
# Compute the multiplication table.
self._mt = { i: { j : clan_product(basis[i], basis[j])
prefix=None,
bracket=False):
- category = MagmaticAlgebras(scalar_field).or_subcategory(category)
- category = category.FiniteDimensional().WithBasis().Unital()
+ category = Clans(scalar_field).or_subcategory(category).Unital()
# Use the vector_space basis keys so we can convert
# easily between them.