Opened 11 years ago

Closed 11 years ago

# Creating morphisms between projective varieties fails

Reported by: Owned by: cremona AlexGhitza major sage-4.6.2 algebraic geometry scheme projective morphism Niels, AlexGhitza sage-4.6.2.alpha0 John Cremona Andrey Novoseltsev N/A

### Description

Construction of morphisms between projective varieties which are no projective space itself fails, since the test that the defining polynomials are homogeneous and of the same degree cannot test `QuotientRingElement`s as these do not have `is_homogeneous()` or `degree()` methods.

Example:

```sage: P2.<x,y,z>=ProjectiveSpace(QQ,2)
sage: f = x^3+y^3+60*z^3
sage: g = y^2*z-( x^3 - 6400*z^3/3)
sage: C = Curve(f)
sage: E = Curve(g)
sage: xbar,ybar,zbar=C.coordinate_ring().gens()
sage: H = C.Hom(E)
sage: H([zbar,xbar-ybar,-(xbar+ybar)/80])
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)

/home/jec/<ipython console> in <module>()

/home/jec/sage-current/local/lib/python2.6/site-packages/sage/schemes/generic/homset.pyc in __call__(self, x, check)
234         """
235         if isinstance(x, (list, tuple)):
--> 236             return self.domain()._point_morphism_class(self, x, check=check)
237
238         if is_RingHomomorphism(x):

/home/jec/sage-current/local/lib/python2.6/site-packages/sage/schemes/generic/algebraic_scheme.pyc in _point_morphism_class(self, *args, **kwds)
1099 class AlgebraicScheme_subscheme_projective(AlgebraicScheme_subscheme):
1100     def _point_morphism_class(self, *args, **kwds):
-> 1101         return morphism.SchemeMorphism_on_points_projective_space(*args, **kwds)
1102
1103     def dimension(self):

/home/jec/sage-current/local/lib/python2.6/site-packages/sage/schemes/generic/morphism.pyc in __init__(self, parent, polys, check)
456             # morphisms from projective space are always given by
457             # homogeneous polynomials of the same degree
--> 458             deg = self.defining_polynomials()[0].degree()
459             for poly in self.defining_polynomials():
460                 if (poly.degree() != deg) or not poly.is_homogeneous():

/home/jec/sage-current/local/lib/python2.6/site-packages/sage/structure/element.so in sage.structure.element.Element.__getattr__ (sage/structure/element.c:2666)()

/home/jec/sage-current/local/lib/python2.6/site-packages/sage/structure/parent.so in sage.structure.parent.getattr_from_other_class (sage/structure/parent.c:2840)()

/home/jec/sage-current/local/lib/python2.6/site-packages/sage/structure/parent.so in sage.structure.parent.raise_attribute_error (sage/structure/parent.c:2638)()

AttributeError: 'QuotientRingElement' object has no attribute 'degree'
```

Patch up soon.

### Changed 11 years ago by cremona

applies to 4.6.1.alpha1

### comment:1 Changed 11 years ago by cremona

• Authors set to John Cremona
• Status changed from new to needs_review

### comment:2 Changed 11 years ago by cremona

I am CC'ing AlexGhitza? since the problem was caused by #3964 of he was the author (and I was the referee who clearly did not do a good job!)

### comment:3 Changed 11 years ago by novoselt

• Reviewers set to Andrey Novoseltsev
• Status changed from needs_review to positive_review

Fixes the error reported in this ticket, positive review!

### comment:4 Changed 11 years ago by jdemeyer

• Merged in set to sage-4.6.2.alpha0
• Resolution set to fixed
• Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.