Dear Martin, I don't know much about this area but I don't think construction() is always implemented like that. For example FreeAlgebra(QQ, 2).tensor(FreeAlgebra(QQ, 2)).construction() returns a functor and two arguments. As a default implementation in the category this might still well work for a lot of cases. Curiously, in the tensor example, change_ring() is actually implemented using construction() (and fails.)
julian On Saturday, April 13, 2024 at 1:58:47 PM UTC+3 axio...@yahoo.de wrote: > Dear all, > > For parents in the category `Set`, sage has a method `construction`, which > yields either None, or a functor F and a parent R, such that F(R) yields > the original parent, see below for the docstring. > > Many parents implement a method `change_ring`, which returns the parent > with the base ring replaced. For example: > > sage: R.<x> = QQ[] > sage: R.change_ring(ZZ) > Univariate Polynomial Ring in x over Integer Ring > > What I wonder: shouldn't `change_ring` be also a parent method in some > category, e.g. in Category_over_base_ring, which defaults to > > def change_ring(self, R): > c = self.construction() > if c is None: > raise NotImplementedError > return c[0](R) > > Martin > > Signature: Sets.ParentMethods.construction(self) > Docstring: > Return a pair "(functor, parent)" such that "functor(parent)" > returns "self". If "self" does not have a functorial construction, > return "None". > > EXAMPLES: > > sage: QQ.construction() > (FractionField, Integer Ring) > sage: f, R = QQ['x'].construction() > sage: f > Poly[x] > sage: R > Rational Field > sage: f(R) > Univariate Polynomial Ring in x over Rational Field > > -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/93ae1cdd-3f10-4ffe-9cc9-b4443254788cn%40googlegroups.com.