def __init__(self, J): """ """ R = J.base_ring() PP = ProjectiveSpace(3, R, ["X0", "X1", "X2", "X3"]) X0, X1, X2, X3 = PP.gens() C = J.curve() f, h = C.hyperelliptic_polynomials() a12 = f[0] a10 = f[1] a8 = f[2] a6 = f[3] a4 = f[4] a2 = f[5] a0 = f[6] if h != 0: c6 = h[0] c4 = h[1] c2 = h[2] c0 = h[3] a12, a10, a8, a6, a4, a2, a0 = \ (4*a12 + c6**2, 4*a10 + 2*c4*c6, 4*a8 + 2*c2*c6 + c4**2, 4*a6 + 2*c0*c6 + 2*c2*c4, 4*a4 + 2*c0*c4 + c2**2, 4*a2 + 2*c0*c2, 4*a0 + c0**2) F = \ (-4*a8*a12 + a10**2)*X0**4 + \ -4*a6*a12*X0**3*X1 + \ -2*a6*a10*X0**3*X2 + \ -4*a12*X0**3*X3 + \ -4*a4*a12*X0**2*X1**2 + \ (4*a2*a12 - 4*a4*a10)*X0**2*X1*X2 + \ -2*a10*X0**2*X1*X3 + \ (-4*a0*a12 + 2*a2*a10 - 4*a4*a8 + a6**2)*X0**2*X2**2 + \ -4*a8*X0**2*X2*X3 + \ -4*a2*a12*X0*X1**3 + \ (8*a0*a12 - 4*a2*a10)*X0*X1**2*X2 + \ (4*a0*a10 - 4*a2*a8)*X0*X1*X2**2 + \ -2*a6*X0*X1*X2*X3 + \ -2*a2*a6*X0*X2**3 + \ -4*a4*X0*X2**2*X3 + \ -4*X0*X2*X3**2 + \ -4*a0*a12*X1**4 + \ -4*a0*a10*X1**3*X2 + \ -4*a0*a8*X1**2*X2**2 + \ X1**2*X3**2 + \ -4*a0*a6*X1*X2**3 + \ -2*a2*X1*X2**2*X3 + \ (-4*a0*a4 + a2**2)*X2**4 + \ -4*a0*X2**3*X3 AlgebraicScheme_subscheme_projective.__init__(self, PP, F) X, Y, Z = C.ambient_space().gens() if a0 == 0: a0 = a2 phi = Hom(C, self)([0, Z**2, X * Z, a0 * X**2], Schemes()) C._kummer_morphism = phi J._kummer_surface = self
def __init__(self,J): """ """ R = J.base_ring() PP = ProjectiveSpace(3,R,["X0","X1","X2","X3"]) X0, X1, X2, X3 = PP.gens() C = J.curve() f, h = C.hyperelliptic_polynomials() a12 = f[0]; a10 = f[1]; a8 = f[2]; a6 = f[3]; a4 = f[4]; a2 = f[5]; a0 = f[6] if h != 0: c6 = h[0]; c4 = h[1]; c2 = h[2]; c0 = h[3] a12, a10, a8, a6, a4, a2, a0 = \ (4*a12 + c6**2, 4*a10 + 2*c4*c6, 4*a8 + 2*c2*c6 + c4**2, 4*a6 + 2*c0*c6 + 2*c2*c4, 4*a4 + 2*c0*c4 + c2**2, 4*a2 + 2*c0*c2, 4*a0 + c0**2) F = \ (-4*a8*a12 + a10**2)*X0**4 + \ -4*a6*a12*X0**3*X1 + \ -2*a6*a10*X0**3*X2 + \ -4*a12*X0**3*X3 + \ -4*a4*a12*X0**2*X1**2 + \ (4*a2*a12 - 4*a4*a10)*X0**2*X1*X2 + \ -2*a10*X0**2*X1*X3 + \ (-4*a0*a12 + 2*a2*a10 - 4*a4*a8 + a6**2)*X0**2*X2**2 + \ -4*a8*X0**2*X2*X3 + \ -4*a2*a12*X0*X1**3 + \ (8*a0*a12 - 4*a2*a10)*X0*X1**2*X2 + \ (4*a0*a10 - 4*a2*a8)*X0*X1*X2**2 + \ -2*a6*X0*X1*X2*X3 + \ -2*a2*a6*X0*X2**3 + \ -4*a4*X0*X2**2*X3 + \ -4*X0*X2*X3**2 + \ -4*a0*a12*X1**4 + \ -4*a0*a10*X1**3*X2 + \ -4*a0*a8*X1**2*X2**2 + \ X1**2*X3**2 + \ -4*a0*a6*X1*X2**3 + \ -2*a2*X1*X2**2*X3 + \ (-4*a0*a4 + a2**2)*X2**4 + \ -4*a0*X2**3*X3 AlgebraicScheme_subscheme_projective.__init__(self, PP, F) X, Y, Z = C.ambient_space().gens() if a0 ==0: a0 = a2 phi = Hom(C,self)([0,Z**2,X*Z,a0*X**2],Schemes()) C._kummer_morphism = phi J._kummer_surface = self
def subscheme(self, X): """ Return the closed subscheme defined by ``X``. INPUT: - ``X`` - a list or tuple of equations. EXAMPLES:: sage: A.<x,y,z> = ProjectiveSpace(2, QQ) sage: X = A.subscheme([x*z^2, y^2*z, x*y^2]); X Closed subscheme of Projective Space of dimension 2 over Rational Field defined by: x*z^2, y^2*z, x*y^2 sage: X.defining_polynomials () (x*z^2, y^2*z, x*y^2) sage: I = X.defining_ideal(); I Ideal (x*z^2, y^2*z, x*y^2) of Multivariate Polynomial Ring in x, y, z over Rational Field sage: I.groebner_basis() [x*y^2, y^2*z, x*z^2] sage: X.dimension() 0 sage: X.base_ring() Rational Field sage: X.base_scheme() Spectrum of Rational Field sage: X.structure_morphism() Scheme morphism: From: Closed subscheme of Projective Space of dimension 2 over Rational Field defined by: x*z^2, y^2*z, x*y^2 To: Spectrum of Rational Field Defn: Structure map sage: TestSuite(X).run(skip=["_test_an_element", "_test_elements",\ "_test_elements_eq", "_test_some_elements", "_test_elements_eq_reflexive",\ "_test_elements_eq_symmetric", "_test_elements_eq_transitive",\ "_test_elements_neq"]) """ from sage.schemes.generic.algebraic_scheme import AlgebraicScheme_subscheme_projective return AlgebraicScheme_subscheme_projective(self, X)
def affine_patch(self, i, AA=None): r""" Return the i-th affine patch of this projective curve. INPUT: - ``i`` -- affine coordinate chart of the projective ambient space of this curve to compute affine patch with respect to. - ``AA`` -- (default: None) ambient affine space, this is constructed if it is not given. OUTPUT: - a curve in affine space. EXAMPLES:: sage: P.<x,y,z,w> = ProjectiveSpace(CC, 3) sage: C = Curve([y*z - x^2, w^2 - x*y], P) sage: C.affine_patch(0) Affine Curve over Complex Field with 53 bits of precision defined by x0*x1 - 1.00000000000000, x2^2 - x0 :: sage: P.<x,y,z> = ProjectiveSpace(QQ, 2) sage: C = Curve(x^3 - x^2*y + y^3 - x^2*z, P) sage: C.affine_patch(1) Affine Plane Curve over Rational Field defined by x0^3 - x0^2*x1 - x0^2 + 1 :: sage: A.<x,y> = AffineSpace(QQ, 2) sage: P.<u,v,w> = ProjectiveSpace(QQ, 2) sage: C = Curve([u^2 - v^2], P) sage: C.affine_patch(1, A).ambient_space() == A True """ from .constructor import Curve return Curve( AlgebraicScheme_subscheme_projective.affine_patch(self, i, AA))
def affine_patch(self, i, AA=None): r""" Return the i-th affine patch of this projective curve. INPUT: - ``i`` -- affine coordinate chart of the projective ambient space of this curve to compute affine patch with respect to. - ``AA`` -- (default: None) ambient affine space, this is constructed if it is not given. OUTPUT: - a curve in affine space. EXAMPLES:: sage: P.<x,y,z,w> = ProjectiveSpace(CC, 3) sage: C = Curve([y*z - x^2, w^2 - x*y], P) sage: C.affine_patch(0) Affine Curve over Complex Field with 53 bits of precision defined by x0*x1 - 1.00000000000000, x2^2 - x0 :: sage: P.<x,y,z> = ProjectiveSpace(QQ, 2) sage: C = Curve(x^3 - x^2*y + y^3 - x^2*z, P) sage: C.affine_patch(1) Affine Plane Curve over Rational Field defined by x0^3 - x0^2*x1 - x0^2 + 1 :: sage: A.<x,y> = AffineSpace(QQ, 2) sage: P.<u,v,w> = ProjectiveSpace(QQ, 2) sage: C = Curve([u^2 - v^2], P) sage: C.affine_patch(1, A).ambient_space() == A True """ from .constructor import Curve return Curve(AlgebraicScheme_subscheme_projective.affine_patch(self, i, AA))