Example #1
0
 def test__get_mon_lst__21_xyvw(self):
     mon_lst = get_mon_lst([2, 1], PolyRing('x,y,v,w').gens())
     print(mon_lst)
     assert str(mon_lst) == '[x^2*v, x^2*w, x*y*v, x*y*w, y^2*v, y^2*w]'
Example #2
0
 def test__get_mon_lst__12_xyvw(self):
     mon_lst = get_mon_lst([1, 2], PolyRing('x,y,v,w').gens())
     print(mon_lst)
     assert str(mon_lst) == '[x*v^2, x*v*w, x*w^2, y*v^2, y*v*w, y*w^2]'
Example #3
0
 def test__get_mon_lst__22_xyvw(self):
     mon_lst = get_mon_lst([2, 2], PolyRing('x,y,v,w').gens())
     assert str(
         mon_lst
     ) == '[x^2*v^2, x^2*v*w, x^2*w^2, x*y*v^2, x*y*v*w, x*y*w^2, y^2*v^2, y^2*v*w, y^2*w^2]'
Example #4
0
 def test__get_mon_lst__11_xyvw(self):
     mon_lst = get_mon_lst([1, 1], PolyRing('x,y,v,w').gens())
     assert str(mon_lst) == '[x*v, x*w, y*v, y*w]'
Example #5
0
 def test__get_mon_lst__2_xyz(self):
     mon_lst = get_mon_lst([2], PolyRing('x,y,z').gens())
     assert str(mon_lst) == '[x^2, x*y, x*z, y^2, y*z, z^2]'
Example #6
0
def usecase_celestial_types():
    '''
    Let surface X in P^m be the blowups of P^1xP^1 in either 0 or 2 complex conjugate  
    points so that m=8 and m=6 respectively. 
    Here P^1xP^1 denotes the fiber product of the projective line with itself. 
    We verify for n in [3,4,5,6,7] whether X can be linearly projected into the 
    projective n-sphere S^n.  
    
    If m=8, then the celestial type is (2,8,n), where the first entry denotes 
    the number of conics contained in X through (almost) every point.
    
    If m=6, then the celestial type is (3,6,n) or (2,6,n). If X in S^5 has celestial type
    (2,6,5), then X has a real isolated singularity (see dp6_sing() for a visualization)).  
    '''

    # We provide certificates "c_lst" and "prv_Q" for "get_surf()",
    # which were obtained by a previous (long) computation.

    #
    # P^1xP^1
    #
    # We construct a parametrization of the double Segre surface dP8 in
    # projective 8-space. This surface contains 2 conics through each point
    #
    ring = PolyRing('x,y,v,w', True)
    ls_dP8 = LinearSeries(get_mon_lst([2, 2], ring.gens()), ring)
    OrbTools.p('ls_dP8 =', ls_dP8)

    get_surf(ls_dP8, (7 + 1, 1), [
        -8, -8, -10, -6, -7, 6, 5, 6, 0, -8, -2, -7, -7, 7, -1, 0, -9, 7, 1, -9
    ])

    prv_Q = sage_matrix([(0, 0, 0, 1, 1, 1, 0, 0, 0),
                         (0, 1, 0, 0, 0, 0, 0, 0, 0),
                         (1, 0, 1, 1, 0, 0, 0, 1, 0),
                         (1, 0, 0, 1, 0, 0, 1, 0, 0),
                         (0, 0, 0, 0, 0, 0, 1, 0, 1),
                         (0, 1, 0, 0, 1, 0, 1, 0, 1),
                         (0, 0, 0, 1, 1, 0, 1, 0, 1),
                         (1, 0, 0, 1, 0, 0, 1, 1, 0)])
    get_surf(
        ls_dP8, (6 + 1, 1),
        [3, -3, 3, -7, 7, 1, -4, 3, -10, 6, -4, -6, -6, 4, -9, 3, -6, -4, 1],
        prv_Q)

    prv_Q = sage_matrix([(0, 1, 0, 0, 1, 0, 1, 0, 1),
                         (1, 1, 1, 1, 0, 1, 0, 0, 1),
                         (1, 1, 0, 1, 1, 1, 1, 0, 1),
                         (1, 1, 1, 1, 1, 1, 1, 1, 1),
                         (1, 0, 1, 0, 1, 0, 1, 0, 0),
                         (0, 0, 1, 0, 1, 0, 0, 1, 0),
                         (0, 0, 0, 0, 0, 0, 1, 1, 1)])
    get_surf(ls_dP8, (5 + 1, 1), [
        -7, -2, -1, -5, -4, 6, -2, -2, -2, 2, 9, -4, -9, -4, 2, -10, 9, -6, -1
    ], prv_Q)

    prv_Q = sage_matrix([(0, 1, 0, 1, 1, 1, 0, 1, 1),
                         (1, 0, 0, 0, 1, 1, 0, 1, 1),
                         (1, 0, 0, 0, 1, 0, 0, 0, 1),
                         (0, 1, 1, 0, 0, 0, 1, 1, 0),
                         (1, 1, 1, 0, 0, 0, 1, 1, 0),
                         (0, 1, 1, 1, 0, 1, 1, 1, 0)])
    get_surf(ls_dP8, (4 + 1, 1),
             [-2, -3, 6, 7, -10, -2, -4, -8, -3, -4, 4, -6], prv_Q)

    #
    # P^1xP^1 blown up in two general complex conjugate points
    #
    # We construct a parametrization of a sextic del Pezzo surface dP6
    # in projective 6-space, that contains 3 conics through each point.
    # We show that dP6 can be projected into S^5 and S^4.
    #
    a0 = PolyRing('x,y,v,w', True).ext_num_field('t^2 + 1').root_gens()[0]
    bp_tree = BasePointTree(['xv', 'xw', 'yv', 'yw'])
    bp_tree.add('xv', (-a0, a0), 1)
    bp_tree.add('xv', (a0, -a0), 1)
    ls_dP6 = LinearSeries.get([2, 2], bp_tree)
    OrbTools.p('ls_dP6 =', ls_dP6)
    get_surf(ls_dP6, (5 + 1, 1), [-9, -6, 1, 4, -1, -8, -5, -5, -4, 8, 1])
    prv_Q = sage_matrix([(0, 0, 0, 1, 0, 1, 1), (1, 1, 0, 1, 0, 0, 0),
                         (0, 1, 1, 0, 1, 0, 1), (1, 1, 0, 0, 1, 0, 0),
                         (1, 1, 1, 1, 1, 1, 0), (1, 0, 0, 1, 0, 1, 1)])
    get_surf(ls_dP6, (4 + 1, 1), [-1, -9, -10, -7, -10, -8, 0], prv_Q)

    #
    # P^1xP^1 blown up in two complex conjugate points that lie in the same fiber
    #
    # We construct a parametrization of a sextic weak del Pezzo surface wdP6
    # in projective 6-space, that contains 2 conics through each point.
    # We show that wdP6 can be projected into S^5 and S^4.
    #
    a0 = PolyRing('x,y,v,w', True).ext_num_field('t^2 + 1').root_gens()[0]
    bp_tree = BasePointTree(['xv', 'xw', 'yv', 'yw'])
    bp_tree.add('xv', (a0, 0),
                1)  # the complex conjugate base points lie in the same fiber
    bp_tree.add('xv', (-a0, 0), 1)
    ls_wdP6 = LinearSeries.get([2, 2], bp_tree)
    OrbTools.p('ls_wdP6 =', ls_wdP6)
    get_surf(ls_wdP6, (5 + 1, 1), [-6, 8, -7, -8, 0, -8, 2, -5, -8])
    prv_Q = sage_matrix([(1, 0, 0, 1, 1, 1, 0), (1, 0, 0, 1, 0, 1, 1),
                         (0, 1, 1, 1, 0, 1, 0), (0, 0, 0, 0, 1, 0, 0),
                         (0, 1, 0, 1, 1, 1, 0), (0, 0, 0, 1, 1, 1, 0)])
    get_surf(ls_wdP6, (4 + 1, 1), [-2, -7, -6, -10, -2, -4, 4], prv_Q)