I have defined a category Cs()
and its subcategory Ds()
as follows:
class Cs(Category_over_base_ring):
...
def __init__(self, K):
Category_over_base_ring.__init__(self, K)
def super_categories(self):
return [ GradedAlgebras(self.base_field()) ]
class Ds(CategoryWithAxiom):
_base_category_class_and_axiom = (GradedAlgebrasWithDerivation, 'Commutative')
Cs.Commutative = Ds
The omitted code I think its irrelevant. I can check that `Ds()` is a subcategory of `Cs()`:
sage: C = Cs(QQ)
sage: D = Ds(QQ)
sage: D.is_subcategory(C)
True
sage:
Now I create a parent of `Ds()` as follows:
class DParent (Parent,UniqueRepresentation):
def __init__(self,K, *args, **kwds ):
if not (K in Fields() or \
(isinstance(K, Category) and K.is_subcategory(Fields()))):
raise ValueError(
"base must be a field or a subcategory of Fields(); got {}".format(K))
self._base_algebra = PolynomialRing(K,*args,**kwds)
super(DParent,self).__init__(self,
category=Ds(K))
...
And I can check that these parents are objects of `Ds()` but not of `Cs()`:
sage: J = DParent(QQ, 1, 'x', order=TermOrder('wdeglex', (2,)))
sage: J in C
False
sage: J in D
True
Where can I be making a mistake?