Opened 4 years ago

Closed 23 months ago

#23047 closed enhancement (worksforme)

Meta Ticket: Utilize coercion framework for scheme points and morphisms

Reported by: bhutz Owned by: bhutz
Priority: major Milestone: sage-duplicate/invalid/wontfix
Component: algebraic geometry Keywords: sd104, SI2019
Cc: novoselt, paulfili, atowsley Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Status badges

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) since ZZ is coercible to QQ. This may involve a finding a larger common parent.

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 and GL 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 (8)

comment:1 Changed 4 years ago by novoselt

  • Cc novoselt added

comment:2 Changed 4 years ago by bhutz

  • Authors paulfili, atowsley deleted
  • Cc paulfili atowsley added

comment:3 Changed 4 years ago by bhutz

  • Owner changed from (none) to bhutz

The three tickets for this functionality are the following:

  • #23814 - matrix action on maps
  • #23816 - matrix action on points

comment:4 Changed 4 years ago by atowsley

The three tickets for this functionality are the following: (change 23814 to 23813)

#23805 - coercion for points

#23813 - matrix action on maps

#23816 - matrix action on points

comment:5 Changed 23 months ago by bhutz

  • Milestone changed from sage-8.0 to sage-9.0
  • Status changed from new to needs_review

all tickets finished as of sage-days 104

comment:6 Changed 23 months ago by bhutz

  • Status changed from needs_review to positive_review

not sure how to go about closing a meta ticket like this. I'm marking it positive as all aspects are now completed.

comment:7 Changed 23 months ago by bhutz

  • Keywords sd104 SI2019 added

comment:8 Changed 23 months ago by chapoton

  • Milestone changed from sage-9.0 to sage-duplicate/invalid/wontfix
  • Resolution set to worksforme
  • Status changed from positive_review to closed

Not sure how to close that kind of ticket either, so used "works for me"

Note: See TracTickets for help on using tickets.