def _element_constructor_(self, x, check=True, reduce=True): r""" Construct an element of the divisor group. EXAMPLES:: sage: A.<x, y> = AffineSpace(2, CC) sage: C = Curve(y^2 - x^9 - x) sage: DivZZ=C.divisor_group(ZZ) sage: DivQQ=C.divisor_group(QQ) sage: DivQQ( DivQQ.an_element() ) # indirect test 0 sage: DivZZ( DivZZ.an_element() ) # indirect test 0 sage: DivQQ( DivZZ.an_element() ) # indirect test 0 """ if isinstance(x, Divisor_curve): P = x.parent() if P is self: return x elif P == self: return Divisor_curve(x._data, check=False, reduce=False, parent=self) else: x = x._data if isinstance(x, list): return Divisor_curve(x, check=check, reduce=reduce, parent=self) if x == 0: return Divisor_curve([], check=False, reduce=False, parent=self) else: return Divisor_curve([(self.base_ring()(1), x)], check=False, reduce=False, parent=self)
def divisor(self, v, base_ring=None, check=True, reduce=True): r""" Return the divisor specified by ``v``. .. WARNING:: The coefficients of the divisor must be in the base ring and the terms must be reduced. If you set ``check=False`` and/or ``reduce=False`` it is your responsibility to pass a valid object ``v``. """ return Divisor_curve(v, check=check, reduce=reduce, parent=self.divisor_group(base_ring))
def divisor(self, v, base_ring=None, check=True, reduce=True): r""" Return the divisor specified by ``v``. .. WARNING:: The coefficients of the divisor must be in the base ring and the terms must be reduced. If you set ``check=False`` and/or ``reduce=False`` it is your responsibility to pass a valid object ``v``. EXAMPLES:: sage: x,y,z = PolynomialRing(QQ, 3, names='x,y,z').gens() sage: C = Curve(y^2*z - x^3 - 17*x*z^2 + y*z^2) """ return Divisor_curve(v, check=check, reduce=reduce, parent=self.divisor_group(base_ring))