Subschemes of products of projective spaces¶
AUTHORS:
- Ben Hutz (2014): subschemes of Cartesian products of projective space 
- class sage.schemes.product_projective.subscheme.AlgebraicScheme_subscheme_product_projective(A, polynomials, category=None)[source]¶
- Bases: - AlgebraicScheme_subscheme_projective- Construct an algebraic subscheme of a product of projective spaces. - Warning - You should not create objects of this class directly. The preferred method to construct such subschemes is to use - subscheme()method of- Product of Projective Spaces.- INPUT: - A– ambient- Product of Projective Spaces
- polynomials– single polynomial, ideal or iterable of defining multi-homogeneous polynomials
 - EXAMPLES: - sage: P.<x, y, u, v> = ProductProjectiveSpaces([1, 1], QQ) sage: P.subscheme([u*x^2 - v*y*x]) Closed subscheme of Product of projective spaces P^1 x P^1 over Rational Field defined by: x^2*u - x*y*v - >>> from sage.all import * >>> P = ProductProjectiveSpaces([Integer(1), Integer(1)], QQ, names=('x', 'y', 'u', 'v',)); (x, y, u, v,) = P._first_ngens(4) >>> P.subscheme([u*x**Integer(2) - v*y*x]) Closed subscheme of Product of projective spaces P^1 x P^1 over Rational Field defined by: x^2*u - x*y*v - affine_patch(I, return_embedding=False)[source]¶
- Return the \(I\)-th affine patch of this projective scheme where \(I\) is a multi-index. - INPUT: - I– list or tuple of positive integers
- return_embedding– boolean; if- Truethe projective embedding is also returned
 - OUTPUT: - An affine algebraic scheme 
- An embedding into a product of projective space (optional) 
 - EXAMPLES: - sage: PP.<x,y,z,w,u,v> = ProductProjectiveSpaces([3, 1],QQ) sage: W = PP.subscheme([y^2*z - x^3, z^2 - w^2, u^3 - v^3]) sage: W.affine_patch([0, 1], True) (Closed subscheme of Affine Space of dimension 4 over Rational Field defined by: x0^2*x1 - 1, x1^2 - x2^2, x3^3 - 1, Scheme morphism: From: Closed subscheme of Affine Space of dimension 4 over Rational Field defined by: x0^2*x1 - 1, x1^2 - x2^2, x3^3 - 1 To: Closed subscheme of Product of projective spaces P^3 x P^1 over Rational Field defined by: -x^3 + y^2*z, z^2 - w^2, u^3 - v^3 Defn: Defined on coordinates by sending (x0, x1, x2, x3) to (1 : x0 : x1 : x2 , x3 : 1)) - >>> from sage.all import * >>> PP = ProductProjectiveSpaces([Integer(3), Integer(1)],QQ, names=('x', 'y', 'z', 'w', 'u', 'v',)); (x, y, z, w, u, v,) = PP._first_ngens(6) >>> W = PP.subscheme([y**Integer(2)*z - x**Integer(3), z**Integer(2) - w**Integer(2), u**Integer(3) - v**Integer(3)]) >>> W.affine_patch([Integer(0), Integer(1)], True) (Closed subscheme of Affine Space of dimension 4 over Rational Field defined by: x0^2*x1 - 1, x1^2 - x2^2, x3^3 - 1, Scheme morphism: From: Closed subscheme of Affine Space of dimension 4 over Rational Field defined by: x0^2*x1 - 1, x1^2 - x2^2, x3^3 - 1 To: Closed subscheme of Product of projective spaces P^3 x P^1 over Rational Field defined by: -x^3 + y^2*z, z^2 - w^2, u^3 - v^3 Defn: Defined on coordinates by sending (x0, x1, x2, x3) to (1 : x0 : x1 : x2 , x3 : 1)) 
 - dimension()[source]¶
- Return the dimension of the algebraic subscheme. - OUTPUT: integer - EXAMPLES: - sage: X.<x,y,z,w,u,v> = ProductProjectiveSpaces([2, 2], QQ) sage: L = (-w - v)*x + (-w*y - u*z) sage: Q = ((-u*w - v^2)*x^2 + ((-w^2 - u*w + (-u*v - u^2))*y + (-w^2 - u*v)*z)*x ....: + ((-w^2 - u*w - u^2)*y^2 + (-u*w - v^2)*z*y + (-w^2 + (-v - u)*w)*z^2)) sage: W = X.subscheme([L, Q]) sage: W.dimension() # needs sage.libs.singular 2 - >>> from sage.all import * >>> X = ProductProjectiveSpaces([Integer(2), Integer(2)], QQ, names=('x', 'y', 'z', 'w', 'u', 'v',)); (x, y, z, w, u, v,) = X._first_ngens(6) >>> L = (-w - v)*x + (-w*y - u*z) >>> Q = ((-u*w - v**Integer(2))*x**Integer(2) + ((-w**Integer(2) - u*w + (-u*v - u**Integer(2)))*y + (-w**Integer(2) - u*v)*z)*x ... + ((-w**Integer(2) - u*w - u**Integer(2))*y**Integer(2) + (-u*w - v**Integer(2))*z*y + (-w**Integer(2) + (-v - u)*w)*z**Integer(2))) >>> W = X.subscheme([L, Q]) >>> W.dimension() # needs sage.libs.singular 2 - sage: PP.<x,y,z,u,v,s,t> = ProductProjectiveSpaces([2, 1, 1], QQ) sage: X = PP.subscheme([x^3, x^5 + y^5, z^6, x*u - v*y, s^2 - t^2]) sage: X.dimension() # needs sage.libs.singular -1 - >>> from sage.all import * >>> PP = ProductProjectiveSpaces([Integer(2), Integer(1), Integer(1)], QQ, names=('x', 'y', 'z', 'u', 'v', 's', 't',)); (x, y, z, u, v, s, t,) = PP._first_ngens(7) >>> X = PP.subscheme([x**Integer(3), x**Integer(5) + y**Integer(5), z**Integer(6), x*u - v*y, s**Integer(2) - t**Integer(2)]) >>> X.dimension() # needs sage.libs.singular -1 - sage: PP = ProductProjectiveSpaces([2, 1, 3], CC, 't') # needs sage.rings.real_mpfr sage: PP.subscheme([]).dimension() # needs sage.libs.singular sage.rings.real_mpfr 6 - >>> from sage.all import * >>> PP = ProductProjectiveSpaces([Integer(2), Integer(1), Integer(3)], CC, 't') # needs sage.rings.real_mpfr >>> PP.subscheme([]).dimension() # needs sage.libs.singular sage.rings.real_mpfr 6 - sage: PP = ProductProjectiveSpaces([1, 3, 1], ZZ, 't') sage: PP.subscheme([]).dimension() # needs sage.libs.singular 5 - >>> from sage.all import * >>> PP = ProductProjectiveSpaces([Integer(1), Integer(3), Integer(1)], ZZ, 't') >>> PP.subscheme([]).dimension() # needs sage.libs.singular 5 - sage: PP.<x,y,u,v,s,t> = ProductProjectiveSpaces([1,1,1], CC) # needs sage.rings.real_mpfr sage: X = PP.subscheme([x^2 - y^2, u - v, s^2 - t^2]) # needs sage.libs.singular sage.rings.real_mpfr sage: X.dimension() # needs sage.libs.singular sage.rings.real_mpfr 0 - >>> from sage.all import * >>> PP = ProductProjectiveSpaces([Integer(1),Integer(1),Integer(1)], CC, names=('x', 'y', 'u', 'v', 's', 't',)); (x, y, u, v, s, t,) = PP._first_ngens(6)# needs sage.rings.real_mpfr >>> X = PP.subscheme([x**Integer(2) - y**Integer(2), u - v, s**Integer(2) - t**Integer(2)]) # needs sage.libs.singular sage.rings.real_mpfr >>> X.dimension() # needs sage.libs.singular sage.rings.real_mpfr 0 
 - intersection_multiplicity(X, P)[source]¶
- Return the intersection multiplicity of this subscheme and the subscheme - Xat the point- P.- This uses the intersection_multiplicity function for affine subschemes on affine patches of this subscheme and - Xthat contain- P.- INPUT: - X– subscheme in the same ambient space as this subscheme
- P– a point in the intersection of this subscheme with- X
 - OUTPUT: integer - EXAMPLES: - Multiplicity of a fixed point of the map \(z^2 + \frac{1}{4}\): - sage: PP.<x,y,u,v> = ProductProjectiveSpaces(QQ, [1, 1]) sage: G = PP.subscheme([(x^2 + 1/4*y^2)*v - y^2*u]) sage: D = PP.subscheme([x*v - y*u]) sage: sorted(G.intersection(D).rational_points()) # needs sage.libs.singular [(1/2 : 1 , 1/2 : 1), (1 : 0 , 1 : 0)] sage: Q = PP([1/2,1,1/2,1]) sage: G.intersection_multiplicity(D, Q) # needs sage.libs.singular 2 - >>> from sage.all import * >>> PP = ProductProjectiveSpaces(QQ, [Integer(1), Integer(1)], names=('x', 'y', 'u', 'v',)); (x, y, u, v,) = PP._first_ngens(4) >>> G = PP.subscheme([(x**Integer(2) + Integer(1)/Integer(4)*y**Integer(2))*v - y**Integer(2)*u]) >>> D = PP.subscheme([x*v - y*u]) >>> sorted(G.intersection(D).rational_points()) # needs sage.libs.singular [(1/2 : 1 , 1/2 : 1), (1 : 0 , 1 : 0)] >>> Q = PP([Integer(1)/Integer(2),Integer(1),Integer(1)/Integer(2),Integer(1)]) >>> G.intersection_multiplicity(D, Q) # needs sage.libs.singular 2 - sage: # needs sage.rings.finite_rings sage: F.<a> = GF(4) sage: PP.<x,y,z,u,v,w> = ProductProjectiveSpaces(F, [2, 2]) sage: X = PP.subscheme([z^5 + 3*x*y^4 + 8*y^5, u^2 - v^2]) sage: Y = PP.subscheme([x^6 + z^6, w*z - v*y]) sage: Q = PP([a,a+1,1,a,a,1]) sage: X.intersection_multiplicity(Y, Q) # needs sage.libs.singular 16 - >>> from sage.all import * >>> # needs sage.rings.finite_rings >>> F = GF(Integer(4), names=('a',)); (a,) = F._first_ngens(1) >>> PP = ProductProjectiveSpaces(F, [Integer(2), Integer(2)], names=('x', 'y', 'z', 'u', 'v', 'w',)); (x, y, z, u, v, w,) = PP._first_ngens(6) >>> X = PP.subscheme([z**Integer(5) + Integer(3)*x*y**Integer(4) + Integer(8)*y**Integer(5), u**Integer(2) - v**Integer(2)]) >>> Y = PP.subscheme([x**Integer(6) + z**Integer(6), w*z - v*y]) >>> Q = PP([a,a+Integer(1),Integer(1),a,a,Integer(1)]) >>> X.intersection_multiplicity(Y, Q) # needs sage.libs.singular 16 - sage: PP.<x,y,z,u,v,w> = ProductProjectiveSpaces(QQ, [2, 2]) sage: X = PP.subscheme([x^2*u^3 + y*z*u*v^2, x - y]) sage: Y = PP.subscheme([u^3 - w^3, x*v - y*w, z^3*w^2 - y^3*u*v]) sage: Q = PP([0,0,1,0,1,0]) sage: X.intersection_multiplicity(Y, Q) # needs sage.libs.singular Traceback (most recent call last): ... TypeError: the intersection of this subscheme and (=Closed subscheme of Affine Space of dimension 4 over Rational Field defined by: x2^3 - x3^3, -x1*x3 + x0, -x1^3*x2 + x3^2) must be proper and finite - >>> from sage.all import * >>> PP = ProductProjectiveSpaces(QQ, [Integer(2), Integer(2)], names=('x', 'y', 'z', 'u', 'v', 'w',)); (x, y, z, u, v, w,) = PP._first_ngens(6) >>> X = PP.subscheme([x**Integer(2)*u**Integer(3) + y*z*u*v**Integer(2), x - y]) >>> Y = PP.subscheme([u**Integer(3) - w**Integer(3), x*v - y*w, z**Integer(3)*w**Integer(2) - y**Integer(3)*u*v]) >>> Q = PP([Integer(0),Integer(0),Integer(1),Integer(0),Integer(1),Integer(0)]) >>> X.intersection_multiplicity(Y, Q) # needs sage.libs.singular Traceback (most recent call last): ... TypeError: the intersection of this subscheme and (=Closed subscheme of Affine Space of dimension 4 over Rational Field defined by: x2^3 - x3^3, -x1*x3 + x0, -x1^3*x2 + x3^2) must be proper and finite 
 - is_smooth(point=None)[source]¶
- Test whether the algebraic subscheme is smooth. - EXAMPLES: - sage: X.<x,y,z,w,u,v> = ProductProjectiveSpaces([2, 2],QQ) sage: L = (-w - v)*x + (-w*y - u*z) sage: Q = ((-u*w - v^2)*x^2 + ((-w^2 - u*w + (-u*v - u^2))*y + (-w^2 - u*v)*z)*x ....: + ((-w^2 - u*w - u^2)*y^2 + (-u*w - v^2)*z*y + (-w^2 + (-v - u)*w)*z^2)) sage: W = X.subscheme([L, Q]) sage: W.is_smooth() Traceback (most recent call last): ... NotImplementedError: Not Implemented - >>> from sage.all import * >>> X = ProductProjectiveSpaces([Integer(2), Integer(2)],QQ, names=('x', 'y', 'z', 'w', 'u', 'v',)); (x, y, z, w, u, v,) = X._first_ngens(6) >>> L = (-w - v)*x + (-w*y - u*z) >>> Q = ((-u*w - v**Integer(2))*x**Integer(2) + ((-w**Integer(2) - u*w + (-u*v - u**Integer(2)))*y + (-w**Integer(2) - u*v)*z)*x ... + ((-w**Integer(2) - u*w - u**Integer(2))*y**Integer(2) + (-u*w - v**Integer(2))*z*y + (-w**Integer(2) + (-v - u)*w)*z**Integer(2))) >>> W = X.subscheme([L, Q]) >>> W.is_smooth() Traceback (most recent call last): ... NotImplementedError: Not Implemented 
 - multiplicity(P)[source]¶
- Return the multiplicity of - Pon this subscheme.- This is computed as the multiplicity of the corresponding point on an affine patch of this subscheme that contains - P. This subscheme must be defined over a field. An error is returned if- Pnot a point on this subscheme.- INPUT: - P– a point on this subscheme
 - OUTPUT: integer - EXAMPLES: - sage: PP.<x,y,z,w> = ProductProjectiveSpaces(QQ, [1, 1]) sage: X = PP.subscheme([x^4*z^3 - y^4*w^3]) sage: Q1 = PP([1,1,1,1]) sage: X.multiplicity(Q1) # needs sage.libs.singular 1 sage: Q2 = PP([0,1,1,0]) sage: X.multiplicity(Q2) # needs sage.libs.singular 3 - >>> from sage.all import * >>> PP = ProductProjectiveSpaces(QQ, [Integer(1), Integer(1)], names=('x', 'y', 'z', 'w',)); (x, y, z, w,) = PP._first_ngens(4) >>> X = PP.subscheme([x**Integer(4)*z**Integer(3) - y**Integer(4)*w**Integer(3)]) >>> Q1 = PP([Integer(1),Integer(1),Integer(1),Integer(1)]) >>> X.multiplicity(Q1) # needs sage.libs.singular 1 >>> Q2 = PP([Integer(0),Integer(1),Integer(1),Integer(0)]) >>> X.multiplicity(Q2) # needs sage.libs.singular 3 - sage: PP.<x,y,z,w,u> = ProductProjectiveSpaces(GF(11), [1,2]) sage: X = PP.subscheme([x^7*u - y^7*z, u^6*x^2 - w^3*z^3*x*y - w^6*y^2]) sage: Q1 = PP([1,0,10,1,0]) sage: X.multiplicity(Q1) # needs sage.libs.singular sage.rings.finite_rings 1 sage: Q2 = PP([1,0,1,0,0]) sage: X.multiplicity(Q2) # needs sage.libs.singular sage.rings.finite_rings 4 - >>> from sage.all import * >>> PP = ProductProjectiveSpaces(GF(Integer(11)), [Integer(1),Integer(2)], names=('x', 'y', 'z', 'w', 'u',)); (x, y, z, w, u,) = PP._first_ngens(5) >>> X = PP.subscheme([x**Integer(7)*u - y**Integer(7)*z, u**Integer(6)*x**Integer(2) - w**Integer(3)*z**Integer(3)*x*y - w**Integer(6)*y**Integer(2)]) >>> Q1 = PP([Integer(1),Integer(0),Integer(10),Integer(1),Integer(0)]) >>> X.multiplicity(Q1) # needs sage.libs.singular sage.rings.finite_rings 1 >>> Q2 = PP([Integer(1),Integer(0),Integer(1),Integer(0),Integer(0)]) >>> X.multiplicity(Q2) # needs sage.libs.singular sage.rings.finite_rings 4 
 - segre_embedding(PP=None)[source]¶
- Return the Segre embedding of this subscheme into the appropriate projective space. - INPUT: - PP– (default:- None) ambient image projective space; this is constructed if it is not given
 - OUTPUT: hom from this subscheme to the appropriate subscheme of projective space - EXAMPLES: - sage: X.<x,y,z,w,u,v> = ProductProjectiveSpaces([2, 2], QQ) sage: P = ProjectiveSpace(QQ, 8, 't') sage: L = (-w - v)*x + (-w*y - u*z) sage: Q = ((-u*w - v^2)*x^2 + ((-w^2 - u*w + (-u*v - u^2))*y + (-w^2 - u*v)*z)*x ....: + ((-w^2 - u*w - u^2)*y^2 + (-u*w - v^2)*z*y + (-w^2 + (-v - u)*w)*z^2)) sage: W = X.subscheme([L,Q]) sage: phi = W.segre_embedding(P) # needs sage.libs.singular sage: phi.codomain().ambient_space() == P # needs sage.libs.singular True - >>> from sage.all import * >>> X = ProductProjectiveSpaces([Integer(2), Integer(2)], QQ, names=('x', 'y', 'z', 'w', 'u', 'v',)); (x, y, z, w, u, v,) = X._first_ngens(6) >>> P = ProjectiveSpace(QQ, Integer(8), 't') >>> L = (-w - v)*x + (-w*y - u*z) >>> Q = ((-u*w - v**Integer(2))*x**Integer(2) + ((-w**Integer(2) - u*w + (-u*v - u**Integer(2)))*y + (-w**Integer(2) - u*v)*z)*x ... + ((-w**Integer(2) - u*w - u**Integer(2))*y**Integer(2) + (-u*w - v**Integer(2))*z*y + (-w**Integer(2) + (-v - u)*w)*z**Integer(2))) >>> W = X.subscheme([L,Q]) >>> phi = W.segre_embedding(P) # needs sage.libs.singular >>> phi.codomain().ambient_space() == P # needs sage.libs.singular True - sage: PP.<x,y,u,v,s,t> = ProductProjectiveSpaces([1, 1, 1], CC) # needs sage.rings.real_mpfr sage: PP.subscheme([]).segre_embedding() # needs sage.libs.singular sage.rings.real_mpfr Scheme morphism: From: Closed subscheme of Product of projective spaces P^1 x P^1 x P^1 over Complex Field with 53 bits of precision defined by: (no polynomials) To: Closed subscheme of Projective Space of dimension 7 over Complex Field with 53 bits of precision defined by: -u5*u6 + u4*u7, -u3*u6 + u2*u7, -u3*u4 + u2*u5, -u3*u5 + u1*u7, -u3*u4 + u1*u6, -u3*u4 + u0*u7, -u2*u4 + u0*u6, -u1*u4 + u0*u5, -u1*u2 + u0*u3 Defn: Defined by sending (x : y , u : v , s : t) to (x*u*s : x*u*t : x*v*s : x*v*t : y*u*s : y*u*t : y*v*s : y*v*t). - >>> from sage.all import * >>> PP = ProductProjectiveSpaces([Integer(1), Integer(1), Integer(1)], CC, names=('x', 'y', 'u', 'v', 's', 't',)); (x, y, u, v, s, t,) = PP._first_ngens(6)# needs sage.rings.real_mpfr >>> PP.subscheme([]).segre_embedding() # needs sage.libs.singular sage.rings.real_mpfr Scheme morphism: From: Closed subscheme of Product of projective spaces P^1 x P^1 x P^1 over Complex Field with 53 bits of precision defined by: (no polynomials) To: Closed subscheme of Projective Space of dimension 7 over Complex Field with 53 bits of precision defined by: -u5*u6 + u4*u7, -u3*u6 + u2*u7, -u3*u4 + u2*u5, -u3*u5 + u1*u7, -u3*u4 + u1*u6, -u3*u4 + u0*u7, -u2*u4 + u0*u6, -u1*u4 + u0*u5, -u1*u2 + u0*u3 Defn: Defined by sending (x : y , u : v , s : t) to (x*u*s : x*u*t : x*v*s : x*v*t : y*u*s : y*u*t : y*v*s : y*v*t). - sage: PP.<x,y,z,u,v,s,t> = ProductProjectiveSpaces([2, 1, 1], ZZ) sage: PP.subscheme([x^3, u - v, s^2 - t^2]).segre_embedding() # needs sage.libs.singular Scheme morphism: From: Closed subscheme of Product of projective spaces P^2 x P^1 x P^1 over Integer Ring defined by: x^3, u - v, s^2 - t^2 To: Closed subscheme of Projective Space of dimension 11 over Integer Ring defined by: u10^2 - u11^2, u9 - u11, u8 - u10, -u7*u10 + u6*u11, u6*u10 - u7*u11, u6^2 - u7^2, u5 - u7, u4 - u6, u3^3, -u3*u10 + u2*u11, u2*u10 - u3*u11, -u3*u6 + u2*u7, u2*u6 - u3*u7, u2*u3^2, u2^2 - u3^2, u1 - u3, u0 - u2 Defn: Defined by sending (x : y : z , u : v , s : t) to (x*u*s : x*u*t : x*v*s : x*v*t : y*u*s : y*u*t : y*v*s : y*v*t : z*u*s : z*u*t : z*v*s : z*v*t). - >>> from sage.all import * >>> PP = ProductProjectiveSpaces([Integer(2), Integer(1), Integer(1)], ZZ, names=('x', 'y', 'z', 'u', 'v', 's', 't',)); (x, y, z, u, v, s, t,) = PP._first_ngens(7) >>> PP.subscheme([x**Integer(3), u - v, s**Integer(2) - t**Integer(2)]).segre_embedding() # needs sage.libs.singular Scheme morphism: From: Closed subscheme of Product of projective spaces P^2 x P^1 x P^1 over Integer Ring defined by: x^3, u - v, s^2 - t^2 To: Closed subscheme of Projective Space of dimension 11 over Integer Ring defined by: u10^2 - u11^2, u9 - u11, u8 - u10, -u7*u10 + u6*u11, u6*u10 - u7*u11, u6^2 - u7^2, u5 - u7, u4 - u6, u3^3, -u3*u10 + u2*u11, u2*u10 - u3*u11, -u3*u6 + u2*u7, u2*u6 - u3*u7, u2*u3^2, u2^2 - u3^2, u1 - u3, u0 - u2 Defn: Defined by sending (x : y : z , u : v , s : t) to (x*u*s : x*u*t : x*v*s : x*v*t : y*u*s : y*u*t : y*v*s : y*v*t : z*u*s : z*u*t : z*v*s : z*v*t).