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]'
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]'
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]'
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]'
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]'
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)