Opened 15 months ago
Last modified 11 months ago
#23047 new enhancement
Meta Ticket: Utilize coercion framework for scheme points and morphisms
Reported by: | bhutz | Owned by: | bhutz |
---|---|---|---|
Priority: | major | Milestone: | sage-8.0 |
Component: | algebraic geometry | Keywords: | |
Cc: | novoselt, paulfili, atowsley | Merged in: | |
Authors: | Reviewers: | ||
Report Upstream: | N/A | Work issues: | |
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description
While there is some coercion-like behavior for schemes objects, it is done in an ad-hoc way that does not utilize the coercion framework and is overdue to be updated.
The following three scenarios should work using the coercion model.
- Coercion between ambient spaces whose base rings are compatible.
For example,
\mathbb{P}^n(ZZ)
should be coercible to\mathbb{P}^n(QQ)
sinceZZ
is coercible to
sage: P.<x,y> = ProjectiveSpace(QQ,1) sage: T.<u,v> = ProjectiveSpace(ZZ,1) sage: Q = P(1,1);Q2 = T(1,1) sage: Q == Q2 False
This would be a major a paradigm shift for schemes, since currently the first comparison for points is equality of the ambient spaces. The current behavior is in direct contradiction to other areas of Sage, for example, matrix spaces.
sage: m1=matrix(QQ,2,2,[1,1,0,1]) sage: m2=matrix(ZZ,2,2,[1,1,0,1]) sage: m1==m2 True
This would also allow functions to act on points when the domain of the function and ambient space of the point are compatible.
- Coercion of other objects to schemes points
These other objects could be any object which makes sense to coerce such as: base ring elements or list/tuples of base ring elements.
While it is sometimes possible to initialize a point in some of these scenarios, since it is not done through the coercion framework, comparisons fail.
sage: P.<u,v>=ProjectiveSpace(ZZ,1) sage: P(0) == 0 False
- left and right actions for base rings and matrices on scheme points and morphisms
There is a natural
PGL
action on projective space andGL
action on affine space. It would be natural to use the aspect of the coercion model.
There is also a natural action of the base ring on projective points and morphisms. This is currently done with the scale_by() function, which modifies the object in place. However, there are good arguments for why this should be changed (see ticket #22268).
Change History (4)
comment:1 Changed 15 months ago by
- Cc novoselt added
comment:2 Changed 15 months ago by
- Cc paulfili atowsley added
comment:3 Changed 11 months ago by
- Owner changed from (none) to bhutz
The three tickets for this functionality are the following: