I'm interested in implementing Weil restriction (restriction of scalars) for affine schemes. I see from #5569, that there is an implementation for ideals. I'd like to extend this to affine schemes/points/morphisms. There is also an aborted attempt of Weil restriction for projective models of elliptic curves #13266 that does not seem to be going anywhere.
While the code for the restriction for each of these (affine) objects is not difficult, this seems like something that should be implemented as a functor as you'd like the resulting schemes/points/morphisms to all play nicely together. However, I know little about functors in Sage. I've looked around in the code a little bit hoping to find an example where something like this was done before, but I'm having some trouble. I see where Spec is implemented as a functor, but I'm not sure that is helpful. I've also seen the documentation about which functions a new functor class should override. I'm sure I'm going to get this wrong, but as a place to start this discussion would an implementation look something like this 1) create a new functor class WeilRestrictionAffineFunctor which implements _coerce_into_domain(self, x) _apply_functor(self, x) _apply_functor_to_morphism(self, f) although it doesn't seem like any of these three would apply to the points of the affine scheme. 2) Given an affine scheme A and a morphism f:A -> A, have the methods A.weil_restriction() and f.weil_restriction() call the functor so that domains/codomains all match-up nicely? For example, I'd like something like this to work sage: K.<w>=QuadraticField(3) sage: A.<x,y>=AffineSpace(K,2) sage: X=A.subscheme([y^2-x^2]) sage: H=End(X) sage: f=H([y,x]) sage: P=X(-1,1) sage: f(P).weil_restriction() == f.weil_restriction(P.weil_restriction()) True I'm sure I could make this work manually by caching the weil_restriction of a scheme so that a new one is only created when it doesn't already exist (like 'homogenize' does) but, at least mathematically, this really should be a functor. I guess my first question is then: Is a functor the 'right' choice for implementation of Weil restriction in Sage? If yes, is there anywhere else in Sage something like this is done from which I can base this new functionality? Thanks, Ben -- 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 post to this group, send email to sage-devel@googlegroups.com. Visit this group at http://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.