Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

Environment to perform calculations of equivariant vector bundles on homogeneous varieties

1842 views
License: GPL3
ubuntu2204
Kernel: SageMath 9.8
%run '/home/user/Equivariant_Vector_Bundles_On_Homogeneous_Varieties__0-0-1/src/Initialize.ipynb' from IPython.display import clear_output , display , HTML
k = 3 n = 5 N = 2*n+1 X = Orthogonal_Grassmannian(k,N) G = X.Parent_Group() fw = X.Basis('fw') Output = dict({}) Output.update({ 1 : '' }) Output[1] += 'X: '+str(X)+'\n' Output[1] += '(n='+str(n)+')'+'\n' d = X.Dimension() Output[1] += 3*' '+'Dimension: '+str(d)+'\n' lMax = X.K0().rank() Output[1] += 3*' '+'Rank of K0(X) (max. collection length): '+str(lMax)+'\n' wMax = X.Fano_Index() Output[1] += 3*' '+'Fano index (max. orbit length): '+str(wMax)+'\n' Output[1] += '\n' Output.update({ 2 : '' }) Output[2] += 3*' '+'Consecutive Lefschetz collection.'+'\n' LC1 = X.My_Collection( Modus='Con' ) l1 = len(LC1) Output[2] += 3*' '+'Starting block:'+'\n' w1_0 = len( LC1.Starting_Block() ) s = ceil( math.log10( w1_0 ) ) for i , cE in enumerate ( LC1.Starting_Block() , start=1 ) : Output[2] += 6*' '+(s-floor(math.log10(i))-1)*' '+str(i)+' '+str(cE)+'\n' Output[2] += '\n' Output.update({ 3 : '' }) Output[3] += 3*' '+'Alternating Lefschetz collection.'+'\n' LC2 = X.My_Collection( Modus='Alt' ) l2 = len(LC2) Output[3] += 3*' '+'Starting block:'+'\n' w2_0 = len( LC2.Starting_Block() ) s = ceil( math.log10( w2_0 ) ) for i , cE in enumerate ( LC2.Starting_Block() , start=1 ) : Output[3] += 6*' '+(s-floor(math.log10(i))-1)*' '+str(i)+' '+str(cE)+'\n' Output[3] += '\n' Output.update({ 4 : '' }) Output[4] += 3*' '+'Gap.'+'\n' Output[4] += 6*' '+' lMax-l = '+str(lMax-l1)+'\n' Output[4] += 6*' '+'(lMax-l)/wMax = '+str( (lMax-l1)/wMax )+'\n' Output[4] += '\n' Output.update({ 5 : '' }) Output[5] += 3*' '+'Try to fill the gap.'+'\n' Start_With = 0 if 0 < Start_With : Output[5] += 3*' '+'Start later than candidate #'+str(Start_With)+'.'+'\n' Output[5] += '\n' for d , Line in Output.items() : print(Line) cM1 = X.calU( fw[1]+2*fw[n] )(-1) + X.calU( 2*fw[n] )(-1) + X.calU( fw[n-1] )(-1) #cM2 = X.Complex({ -2 : cM1 , -1 : X.calU( fw[n] ) * G.rmV( fw[n] ) , 0 : 'Cokernel' }).SemiSimplification(0) cM2 = cM1*-1 for Smd in ( X.calU( fw[n] ) * G.rmV( fw[n] ) ).Irreducible_Components() : cM2 += Smd # Construct candidate. Candidate = cM2 # Check if candidate is admissible. Candidate_Is_Admissible = False if Candidate.Is_Exceptional( Test_Numerically=True ) : Candidate_Is_Admissible = True if Candidate_Is_Admissible : Candidate_Is_Relevant = False Possible_Output = '' Line = 9*' '+'Semi-simplification is '+bcolors.OKBLUE+str(Candidate)+bcolors.ENDC+'.' print( Line ) Possible_Output += Line+'\n' Line = '' print( Line ) Possible_Output += Line+'\n' for i , LC in enumerate([ LC1 , LC2 ] , start=1 ) : Line += 9*' '+'Can candidate be embedded in the Lefschetz collection LC'+str(i)+'?' print( Line ) Possible_Output += Line+'\n' for xPos , Admissible_Columns in LC.Test_For_Extension ( New_Object=Candidate , Test_Numerically=True , Test_If_Self_Is_Exceptional=False ) : if 0 < len(Admissible_Columns) : Candidate_Is_Relevant = True Line = 12*' '+bcolors.OKGREEN+'Yes'+bcolors.ENDC+' after row '+str(xPos)+' to the columns '+bcolors.OKBLUE+str(Admissible_Columns)+bcolors.ENDC+'.' print( Line ) Possible_Output += Line+'\n' else : Line = 12*' '+bcolors.FAIL+'Not'+bcolors.ENDC+' after row '+str(xPos)+'.' print( Line ) Possible_Output += Line+'\n' Line = '' print( Line ) Possible_Output += Line+'\n' if Candidate_Is_Relevant : Output[5] += Possible_Output
X: Orthogonal grassmannian variety of 3-dimensional isotropic linear subspaces in a 11-dimensional ambient vector space. (n=5) Dimension: 18 Rank of K0(X) (max. collection length): 80 Fano index (max. orbit length): 7 Consecutive Lefschetz collection. Starting block: 1 VB(0) 2 VB(Lambda[1]) 3 VB(Lambda[2]) 4 VB(2*Lambda[1]) 5 VB(Lambda[1] + Lambda[2]) 6 VB(2*Lambda[2]) 7 VB(2*Lambda[1] + Lambda[2]) 8 VB(Lambda[5]) 9 Equivariant extension of VB(Lambda[1] + Lambda[5]) by VB(Lambda[5]) 10 Equivariant extension of VB(2*Lambda[1] + Lambda[5]) by VB(Lambda[1] + Lambda[5]) 11 Equivariant extension of VB(3*Lambda[1] + Lambda[5]) by VB(2*Lambda[1] + Lambda[5]) Alternating Lefschetz collection. Starting block: 1 VB(0) 2 VB(Lambda[5]) 3 VB(Lambda[1]) 4 VB(Lambda[2]) 5 Equivariant extension of VB(Lambda[1] + Lambda[5]) by VB(Lambda[5]) 6 VB(2*Lambda[1]) 7 VB(Lambda[1] + Lambda[2]) 8 VB(2*Lambda[2]) 9 Equivariant extension of VB(2*Lambda[1] + Lambda[5]) by VB(Lambda[1] + Lambda[5]) 10 VB(2*Lambda[1] + Lambda[2]) 11 Equivariant extension of VB(3*Lambda[1] + Lambda[5]) by VB(2*Lambda[1] + Lambda[5]) Gap. lMax-l = 7 (lMax-l)/wMax = 1 Try to fill the gap. Semi-simplification is VB(Lambda[2] - Lambda[3] + 2*Lambda[5]) + VB(Lambda[2] - Lambda[3] + Lambda[4]) + VB(Lambda[2]) + VB(Lambda[1] - Lambda[3] + Lambda[4]) + VB(Lambda[1]) + VB(2*Lambda[5]) + VB(Lambda[4]) + VB(Lambda[3]) + VB(0). Can candidate be embedded in the Lefschetz collection LC1? Not after row 0. Not after row 1. Not after row 2. Not after row 3. Not after row 4. Not after row 5. Not after row 6. Not after row 7. Yes after row 8 to the columns [0, 1, 2, 3, 4, 5, 6]. Yes after row 9 to the columns [0, 1, 2, 3, 4, 5, 6]. Yes after row 10 to the columns [0, 1, 2, 3, 4, 5, 6]. Yes after row 11 to the columns [0, 1, 2, 3, 4, 5, 6]. Can candidate be embedded in the Lefschetz collection LC2? Not after row 0. Not after row 1. Not after row 2. Not after row 3. Not after row 4. Not after row 5. Not after row 6. Not after row 7. Not after row 8. Not after row 9. Yes after row 10 to the columns [0, 1, 2, 3, 4, 5, 6]. Yes after row 11 to the columns [0, 1, 2, 3, 4, 5, 6].
print( cM2.EXT( cM2.Dual()(1) ) )
k = 3 n = 5 N = 2*n+1 X = Orthogonal_Grassmannian(k,N) print( 'X:' , X ) print( '(n = '+str(n)+')' ) print() print( 'Fano index = '+str(X.Fano_Index()) ) print( 'rk K0(X) = '+str(X.K0().rank()) ) print() G = X.Parent_Group() fw = X.Basis('fw') print( 'Initialise suitable objects:' ) print( 3*' ' , '- Repesentations') rV = G.rmV(fw[1]) rS = G.rmV(fw[n]) print( 3*' ' , '- Tautological bundles') cO = X.calO() cU = X.calU() cQ = dict({}) for p in [ 0 .. 2*n-2 ] : Dict = dict({}) Dict.update({ -p+i-1 : cU.Symmetric_Power(p-i)*rV.exterior_power(i) for i in [ 0 .. p ] }) Dict.update({ 0 : 'Cokernel' }) cQ.update({ tuple(p*[1]) : X.Complex(Dict).SemiSimplification(0) }) print( 3*' ' , '- Spinor bundles' ) cS = dict({}) cS.update({ 0 : X.calS() }) cS.update({ y : ( cU.Dual().Symmetric_Power(y)*cS[0] ).Extend_Equivariantly_By( cU.Dual().Symmetric_Power(y-1)*cS[0] ) for y in [ 1 .. n-2 ] }) print() print('Initialise Lefschetz collection:') TC = X.Tautological_Collection( Parts=[1,2] ) SC = X.Spinor_Collection() LC = TC+SC print( 'len(LC) = '+str(len(LC)) ) print( table([ [ x , Obj ] for x , Obj in enumerate( LC.Starting_Block() ) ]) ) print()
X: Orthogonal grassmannian variety of 3-dimensional isotropic linear subspaces in a 11-dimensional ambient vector space. (n = 5) Fano index = 7 rk K0(X) = 80 Initialise suitable objects: - Repesentations - Tautological bundles - Spinor bundles Initialise Lefschetz collection: len(LC) = 73 0 VB(0) 1 VB(Lambda[1]) 2 VB(Lambda[2]) 3 VB(2*Lambda[1]) 4 VB(Lambda[1] + Lambda[2]) 5 VB(2*Lambda[2]) 6 VB(2*Lambda[1] + Lambda[2]) 7 VB(Lambda[5]) 8 Equivariant extension of VB(Lambda[1] + Lambda[5]) by VB(Lambda[5]) 9 Equivariant extension of VB(2*Lambda[1] + Lambda[5]) by VB(Lambda[1] + Lambda[5]) 10 Equivariant extension of VB(3*Lambda[1] + Lambda[5]) by VB(2*Lambda[1] + Lambda[5])
for p , Value in cQ.items() : print( p ) print( Value ) print()
() VB(0) (1,) VB(-Lambda[3] + Lambda[4]) + VB(Lambda[1]) (1, 1) VB(Lambda[1] - Lambda[3] + Lambda[4]) + VB(-Lambda[3] + 2*Lambda[5]) + VB(Lambda[2]) (1, 1, 1) VB(Lambda[1] - Lambda[3] + 2*Lambda[5]) + VB(Lambda[2] - Lambda[3] + Lambda[4]) + VB(-Lambda[3] + 2*Lambda[5]) + VB(Lambda[3]) (1, 1, 1, 1) VB(Lambda[2] - Lambda[3] + 2*Lambda[5]) + VB(Lambda[1] - Lambda[3] + 2*Lambda[5]) + VB(Lambda[4]) + VB(-Lambda[3] + Lambda[4]) (1, 1, 1, 1, 1) VB(Lambda[2] - Lambda[3] + 2*Lambda[5]) + VB(Lambda[1] - Lambda[3] + Lambda[4]) + VB(2*Lambda[5]) + VB(0) (1, 1, 1, 1, 1, 1) VB(Lambda[2] - Lambda[3] + Lambda[4]) + VB(2*Lambda[5]) + VB(Lambda[1]) (1, 1, 1, 1, 1, 1, 1) VB(Lambda[4]) + VB(Lambda[2]) (1, 1, 1, 1, 1, 1, 1, 1) VB(Lambda[3])
for
#cM = cQ[(1,1,1,1,)].Extend_Equivariantly_By( cQ[(1,1,)].Extend_Equivariantly_By( cO ) ) #print( cM ) cR = X.calU( fw[4] )(-1) print( 'cR.Wedge(p):' ) for p in [ 0 .. cR.Rank() ] : print( 3*' ' , p , cR.Wedge(p) ) print() cE1_1 = cU.Dual() * cR.Wedge(2) cE1_2 = cO + cR + cR.Wedge(2) cE1 = cE1_1.Extend_Equivariantly_By(cE1_2) print( 'cE1:' ) print( cE1 ) print() cE2_1 = cU.Dual() * cR.Wedge(2) cE2_2 = cR + cR.Wedge(2) cE2 = cE2_1.Extend_Equivariantly_By(cE2_2) print( 'cE2:' ) print( cE2 ) print() # cE1 = cE2 + cO cE3_1 = cU.Dual() + cU.Dual()*cR cE3_2 = cO cE3 = cE3_1.Extend_Equivariantly_By(cE3_2) print( 'cE3:' ) print( cE3 ) print() cE4_1 = cS[0]^2 * cU cE4_2 = cE3 cE4 = cE4_1.Extend_Equivariantly_By(cE4_2) print( 'cE4:' ) print( cE4 ) print() cE5_1 = cS[0]^2 cE5_2 = cE4 cE5 = cE5_1.Extend_Equivariantly_By(cE5_2) print( 'cE5:' ) print( cE5 ) print()
cE1: Equivariant extension of VB(Lambda[1] - Lambda[3] + 2*Lambda[5]) by VB(0) + VB(-Lambda[3] + Lambda[4]) + VB(-Lambda[3] + 2*Lambda[5]) cE2: Equivariant extension of VB(Lambda[1] - Lambda[3] + 2*Lambda[5]) by VB(-Lambda[3] + Lambda[4]) + VB(-Lambda[3] + 2*Lambda[5]) cE3: Equivariant extension of VB(Lambda[1]) + VB(Lambda[1] - Lambda[3] + Lambda[4]) by VB(0) cE4: Equivariant extension of VB(Lambda[2] - Lambda[3] + 2*Lambda[5]) + VB(Lambda[2] - Lambda[3] + Lambda[4]) + VB(Lambda[2]) by [ VB(Lambda[1]) + VB(Lambda[1] - Lambda[3] + Lambda[4]) , VB(0) ] cE5: Equivariant [1, 2]-extension of VB(2*Lambda[5]) + VB(Lambda[4]) + VB(Lambda[3]) by [ VB(Lambda[2] - Lambda[3] + 2*Lambda[5]) + VB(Lambda[2] - Lambda[3] + Lambda[4]) + VB(Lambda[2]) , [ VB(Lambda[1]) + VB(Lambda[1] - Lambda[3] + Lambda[4]) , VB(0) ] ]
cM2 = cE2 print( 'Summands of cM2:' ) for Smd in cM2.SemiSimplification() : print( 3*' ' , Smd ) print() print( 'EXT( cM2.Dual(2) , cM2 ) = '+str(cM2.Dual()(2).EXT( cM2 )) ) print() cM1 = cE5 print( 'Summands of cM1:' ) for Smd in cM1.SemiSimplification() : print( 3*' ' , Smd ) print() cG = X.calU(fw[5]) print( 'cG='+str(cG) ) print( 'cG.Dual()(2)='+str(cG.Dual()(2)) ) print() for p in [ 0 .. 3 ] : print( '0 --> F_'+str(p+1)+' * cG --> F_'+str(p+1)+' * cG --> '+str( cS[0]*cG*cU.Wedge(p) )+' --> 0' )
Summands of cM2: VB(Lambda[1] - Lambda[3] + 2*Lambda[5]) VB(-Lambda[3] + Lambda[4]) VB(-Lambda[3] + 2*Lambda[5]) EXT( cM2.Dual(2) , cM2 ) = {4: B5(0,0,0,0,0)} Summands of cM1: VB(2*Lambda[5]) VB(Lambda[4]) VB(Lambda[3]) VB(Lambda[2] - Lambda[3] + 2*Lambda[5]) VB(Lambda[2] - Lambda[3] + Lambda[4]) VB(Lambda[2]) VB(Lambda[1]) VB(Lambda[1] - Lambda[3] + Lambda[4]) VB(0) cG=VB(Lambda[5]) cG.Dual()(2)=VB(Lambda[3] + Lambda[5]) 0 --> F_1 * cG --> F_1 * cG --> VB(2*Lambda[5]) + VB(Lambda[4]) + VB(Lambda[3]) --> 0 0 --> F_2 * cG --> F_2 * cG --> VB(Lambda[2] - Lambda[3] + 2*Lambda[5]) + VB(Lambda[2] - Lambda[3] + Lambda[4]) + VB(Lambda[2]) --> 0 0 --> F_3 * cG --> F_3 * cG --> VB(Lambda[1] - Lambda[3] + 2*Lambda[5]) + VB(Lambda[1] - Lambda[3] + Lambda[4]) + VB(Lambda[1]) --> 0 0 --> F_4 * cG --> F_4 * cG --> VB(-Lambda[3] + 2*Lambda[5]) + VB(-Lambda[3] + Lambda[4]) + VB(0) --> 0
cN = X.Zero_Vector_Bundle() #print( 'cM1:' ) for Smd in cM1.SemiSimplification() : cN += Smd*-1 # print( 3*' ' , Smd*-1 ) #print() Rep = G.rmV(fw[5]) print( 'Rep = '+str(Rep) ) VB1 = X.calU( fw[1]+fw[5] ) VB2 = X.calU( fw[5] ) VB=VB1+VB2 print( 'VB = '+str(VB) , '->' , 'VB.Dual()(2) = '+str(VB.Dual()(2)) ) print() #print( str(Rep)+' * '+str(VB)+':' ) for Smd in ( VB1 * Rep ).Irreducible_Components() : cN += Smd # print( 3*' ' , Smd ) #print() for Smd in ( VB2 * Rep ).Irreducible_Components() : cN += Smd print( 'Remaining:' ) print(table([ [ Smd , Smd.Dual()(2) ] for Smd in cN ])) #for p in [ 0 .. cS[0].Rank() ] : # print( p , cS[0].Wedge(p) )
Rep = B5(0,0,0,0,1) VB = VB(Lambda[1] + Lambda[5]) + VB(Lambda[5]) -> VB.Dual()(2) = VB(Lambda[2] + Lambda[5]) + VB(Lambda[3] + Lambda[5]) Remaining: VB(Lambda[1] + Lambda[2] - Lambda[3] + 2*Lambda[5]) VB(Lambda[1] + Lambda[2] - Lambda[3] + 2*Lambda[5]) VB(Lambda[1] + Lambda[2] - Lambda[3] + Lambda[4]) VB(Lambda[1] + Lambda[2] - Lambda[3] + Lambda[4]) VB(Lambda[1] + Lambda[2]) VB(Lambda[1] + Lambda[2]) VB(2*Lambda[1] - Lambda[3] + 2*Lambda[5]) VB(2*Lambda[2] - Lambda[3] + 2*Lambda[5]) VB(2*Lambda[1] - Lambda[3] + Lambda[4]) VB(2*Lambda[2] - Lambda[3] + Lambda[4]) VB(2*Lambda[1]) VB(2*Lambda[2]) VB(Lambda[1] + 2*Lambda[5]) VB(Lambda[2] - Lambda[3] + 2*Lambda[5]) VB(Lambda[1] + Lambda[4]) VB(Lambda[2] - Lambda[3] + Lambda[4]) VB(Lambda[1] + Lambda[3]) VB(Lambda[2]) 2*B5(0,0,0,0,0) * VB(Lambda[1] - Lambda[3] + 2*Lambda[5]) 2*B5(0,0,0,0,0) * VB(Lambda[2] + 2*Lambda[5]) VB(Lambda[2] - Lambda[3] + 2*Lambda[5]) VB(Lambda[1] + 2*Lambda[5]) VB(Lambda[2] - Lambda[3] + Lambda[4]) VB(Lambda[1] + Lambda[4]) VB(Lambda[2]) VB(Lambda[1] + Lambda[3]) VB(Lambda[1] - Lambda[3] + Lambda[4]) VB(Lambda[2] + Lambda[4]) VB(Lambda[1]) VB(Lambda[2] + Lambda[3]) VB(2*Lambda[5]) VB(2*Lambda[5]) VB(Lambda[4]) VB(Lambda[4]) VB(Lambda[3]) VB(Lambda[3]) VB(-Lambda[3] + 2*Lambda[5]) VB(Lambda[3] + 2*Lambda[5]) VB(-Lambda[3] + Lambda[4]) VB(Lambda[3] + Lambda[4])
Dict = dict({}) Dict.update({ 0 : cU.Dual()*cR.Wedge(2) + cR + cR.Wedge(2) }) Stock = X.Zero_Vector_Bundle() for Smd in ( cS[0]*G.rmV(fw[n]) ).Irreducible_Components() : Stock += Smd Dict.update({ 1 : Stock }) Stock = X.Zero_Vector_Bundle() for Smd in ( (cU.Dual()*cS[0])*G.rmV(fw[n]) ).Irreducible_Components() : Stock += Smd Dict.update({ 2 : Stock }) Dict.update({ 3 : 'Cokernel' }) Dummy = X.Complex(Dict).SemiSimplification(2) print( Dummy )
--------------------------------------------------------------------------- AssertionError Traceback (most recent call last) Cell In [122], line 12 10 Dict.update({ Integer(2) : Stock }) 11 Dict.update({ Integer(3) : 'Cokernel' }) ---> 12 Dummy = X.Complex(Dict).SemiSimplification(Integer(2)) 13 print( Dummy )
File /tmp/ipykernel_21256/1270618750.py:261, in Irreducible_Homogeneous_Variety.Complex(self, Objects) 259 def Complex ( self , Objects ) -> "Complex_Over_Irreducible_Homogeneous_Variety" : 260 """Returns a complex of equivariant vector bundles over ``self``.""" --> 261 return Complex_Of_Coherent_Sheaves( Base_Space=self , Objects=Objects )
File /tmp/ipykernel_21256/1415231974.py:47, in Complex_Of_Coherent_Sheaves.__init__(self, Base_Space, Objects) 45 if not Current_Degree in self._Numerical_Cohomology.keys() : 46 Numerical_Kernel_In_Previous_Degree , Numerical_Image_In_Previous_Degree = self.Decompose_Differential_Numerically(Current_Degree-Integer(1)) ---> 47 Numerical_Kernel_In_Current_Degree , Numerical_Image_In_Current_Degree = self.Decompose_Differential_Numerically(Current_Degree) 48 if Numerical_Image_In_Previous_Degree in Numerical_Kernel_In_Current_Degree : 49 Numerical_Cohomology_Group = Numerical_Kernel_In_Current_Degree - Numerical_Image_In_Previous_Degree
File /tmp/ipykernel_21256/1415231974.py:83, in Complex_Of_Coherent_Sheaves.Decompose_Differential_Numerically(self, Degree) 81 else : 82 Domain = self.Zero_Object() ---> 83 for Summand in Current_Object.Irreducible_Components() : 84 Domain += Summand 85 Numerical_Kernel_In_Subsequent_Degree , Numerical_Image_In_Subsequent_Degree = self.Decompose_Differential_Numerically( Degree+Integer(1) )
File /tmp/ipykernel_21256/424321877.py:337, in Direct_Sum_Of_Equivariant_Vector_Bundles.Irreducible_Components(self) 334 yield Irreducible_Component 335 Summed_Ranks += Irreducible_Component.Rank() --> 337 assert Summed_Ranks == self.Rank() , 'The rank of ``self`` is '+str(self.Rank())+'. However, the sum over the ranks of all irreducible components is different, namely '+str(Summed_Ranks)+'.'
AssertionError: The rank of ``self`` is 45. However, the sum over the ranks of all irreducible components is different, namely 30.
#cG = dict({}) #cG.update({ 3 : cS[0]^2 * cU.Wedge(3) }) #for t in [ 2 , 1 , 0 ] : # cG.update({ t : ( cS[0]^2 * cU.Wedge(t) ).Extend_Equivariantly_By( cG[t+1] ) }) #Candidate = cG[2] #Candidate = ( X.calU( fw[1]+2*fw[5] )(-1) ).Extend_Equivariantly_By( X.calU( 2*fw[5] )(-1) + X.calU( fw[4] )(-1) ) Candidate = ( X.calU( fw[1]+fw[4] )(-1) + X.calU( fw[1] ) ).Extend_Equivariantly_By( X.calO() ) #Candidate = X.calU( fw[1]+2*fw[5] )(-1) + X.calU( 2*fw[5] )(-1) + X.calU( fw[4] )(-1) print( 'Candidate for a new object: '+bcolors.OKBLUE+str(Candidate)+bcolors.ENDC ) print( 'Orbit length: '+bcolors.OKBLUE+str( len(Candidate.Maximal_Exceptional_Orbit( Test_Numerically=True )) )+bcolors.ENDC ) Can_Be_Inserted = False if Candidate.Is_Exceptional( Test_Numerically=True ) : print( 'Where can the current object be inserted?' ) for Column , Rows in LC.Test_For_Extension( New_Object=Candidate , Test_Numerically=True , Test_If_Self_Is_Exceptional=False ) : if 0 < len(Rows) : print( 3*' ' , bcolors.OKGREEN+'Result for column='+str(Column)+': '+str(Rows)+bcolors.ENDC ) else : print( 3*' ' , bcolors.FAIL+'Result for column='+str(Column)+': '+str(Rows)+bcolors.ENDC ) else : print( 'The candidate is '+bcolors.FAIL+'NOT'+bcolors.ENDC+' exceptional.' )
Candidate for a new object: Equivariant extension of VB(Lambda[1] - Lambda[3] + Lambda[4]) + VB(Lambda[1]) by VB(0) Orbit length: 0 The candidate is NOT exceptional.
cM = ( X.calU( fw[1]+2*fw[5] )(-1) ).Extend_Equivariantly_By( X.calU( 2*fw[5] )(-1) + X.calU( fw[4] )(-1) ) A = X.Zero_Vector_Bundle() for p in [ 0 .. n-k-2 ] : A += X.calU( fw[1] ) * X.calU( fw[4] )(-1).Wedge(p) B = X.Zero_Vector_Bundle() for p in [ 0 .. n-k-1 ] : B += X.calU( fw[1] ) * X.calU( fw[4] )(-1).Wedge(p) C = ( X.calS()^2 ).Extend_Equivariantly_By( ( X.calS()^2 * cU ).Extend_Equivariantly_By( B.Extend_Equivariantly_By(A) ) ) print( table([ [ Smd , Smd.Dual()(2) ] for Smd in C.SemiSimplification() ]) )
VB(2*Lambda[5]) VB(2*Lambda[5]) VB(Lambda[4]) VB(Lambda[4]) VB(Lambda[3]) VB(Lambda[3]) VB(Lambda[2] - Lambda[3] + 2*Lambda[5]) VB(Lambda[1] + 2*Lambda[5]) VB(Lambda[2] - Lambda[3] + Lambda[4]) VB(Lambda[1] + Lambda[4]) VB(Lambda[2]) VB(Lambda[1] + Lambda[3]) 2*B5(0,0,0,0,0) * VB(Lambda[1]) 2*B5(0,0,0,0,0) * VB(Lambda[2] + Lambda[3]) VB(Lambda[1] - Lambda[3] + Lambda[4]) VB(Lambda[2] + Lambda[4])
U = X.calU() F = X.calU( fw[4] )(-1) S = X.calS() #A = U * F.Wedge(n-2) #for B in [ F.Wedge(n-3) , F.Wedge(n-4) ] : # print(table([ [ Smd , Smd.Cohomology() ] for Smd in A*B ])) # print() for p in [ 0 .. F.Rank() ] : print( F.Wedge(p) )
VB(0) VB(-Lambda[3] + Lambda[4]) VB(-Lambda[3] + 2*Lambda[5]) VB(-Lambda[3] + 2*Lambda[5]) VB(-Lambda[3] + Lambda[4]) VB(0)
k = 3 n = 5 X = Orthogonal_Grassmannian( k , 2*n+1 ) fw = X.Basis('fw') print( 'Base space:' , X.__str__( Output_Style='Short' ) ) print( 'rk K0(X):' , X.K0().rank() ) print( 'Fano index:' , X.Fano_Index() ) print() h = X.Fano_Index() # Kuznetsov's spinor bundle filtration calS = X.calS() F3 = ( X.calU().Exterior_Power(3) * calS ) F2 = ( X.calU().Exterior_Power(2) * calS ).Extend_Equivariantly_By( F3 ) F1 = ( X.calU().Exterior_Power(1) * calS ).Extend_Equivariantly_By( F2 ) F0 = ( X.calU().Exterior_Power(0) * calS ).Extend_Equivariantly_By( F1 ) LC = X.Lefschetz_Collection( Starting_Block=[] , Support_Pattern='Trivial' ) # Tautological collection LC += X.Tautological_Collection() # ... extension of the tautological collection ... # Degree = 3 #E = X.calU( 2*fw[1]+fw[2] ) #LC += X.Lefschetz_Collection( Starting_Block=[E] , Support_Pattern=h*[1] ) ## Mysterious collection #E = X.calS() #LC += X.Lefschetz_Collection( Starting_Block=[X.calU( fw[1]+2*fw[n] )(-1).Extend_Equivariantly_By( X.calU( 2*fw[n] )(-1) + X.calU( fw[n-1] )(-1) )] , Support_Pattern=h*[1] ) # Spinor collection # Degree = 1/2 E = X.calS() LC += X.Lefschetz_Collection( Starting_Block=[E] , Support_Pattern=h*[1] ) # Degree = 3/2 E = X.calO()(1) LC += X.Lefschetz_Collection( Starting_Block=[X.calU( fw[1]+fw[n] ).Extend_Equivariantly_By( F3 * E )] , Support_Pattern=h*[1] ) # Degree = 5/2 E = X.calU( fw[1] )(1) LC += X.Lefschetz_Collection( Starting_Block=[X.calU( 2*fw[1]+fw[n] ).Extend_Equivariantly_By( F3 * E )] , Support_Pattern=h*[1] ) # Degree = 7/2 E = X.calU( 2*fw[1] )(1) LC += X.Lefschetz_Collection( Starting_Block=[X.calU( 3*fw[1]+fw[n] ).Extend_Equivariantly_By( F3 * E )] , Support_Pattern=3*[1] ) print( 'Objects of starting block:' ) Body = [ [ str(Counter)+':' , str(Object) , str(sum([ 1 for Row in LC.Support_Pattern().values() if Row[Counter-1] == True ])) ] for Counter , Object in enumerate( LC.Starting_Block() , start=1 ) ] show( table(Body) ) print() print( 'Number of objects:' , len(LC) ) print( 'LC has maximal expected length?' , LC.Has_Maximal_Expected_Length() ) print() #print( 'Grid of LC:' ) #show( LC.Grid() ) #print() #LC_Is_Numercially_Exceptional = LC.Is_Numerically_Exceptional() #print( 'Is LC numerially exceptional?' , LC_Is_Numercially_Exceptional ) #print()
Base space: OGr(3;11) rk K0(X): 80 Fano index: 7 Objects of starting block:
Number of objects: 66 LC has maximal expected length? False
A = X.calU( fw[1]+fw[4]+fw[5] ) B = X.calU( fw[4]+fw[5] ) New_Object = A.Extend_Equivariantly_By( B ) for Column , Rows in LC.Test_For_Numerically_Exceptional_Proper_Extension( New_Object=New_Object , Test_If_Self_Is_Exceptional=False ) : print( 'Result for column='+str(Column)+': '+str(Rows) )
Lefschetz collection consisting of 0 objects in a grid with width = 1 and height = 0 Result for column=0: [] Result for column=1: [] Result for column=2: [] Result for column=3: [] Result for column=4: [] Result for column=5: [] Result for column=6: [] Result for column=7: [] Result for column=8: [] Result for column=9: [] Result for column=10: []
F = X.calU( 3*fw[1] )(1) Rows = [ [ '' , '' , '' , '' , 'cF_0' , '=' , str(X.Parent_Group().rmV( fw[n] ))+' * '+str(F) , '' , '' ] , [ '0' , '-->' , 'cF_1' , '-->' , 'cF_0' , '-->' , str( X.calU( fw[3]+fw[n] )(-1)*F ) , '-->' , '0' ] , [ '0' , '-->' , 'cF_2' , '-->' , 'cF_1' , '-->' , str( X.calU( fw[2]+fw[n] )(-1)*F ) , '-->' , '0' ] , [ '0' , '-->' , 'cF_3' , '-->' , 'cF_2' , '-->' , str( X.calU( fw[1]+fw[n] )(-1)*F ) , '-->' , '0' ] , [ '' , '' , '' , '' , 'cF_3' , '=' , str( X.calU( fw[n] )(-1)*F ) , '' , '' ] ] print( table(Rows) )
cF_0 = B5(0,0,0,0,1) * VB(3*Lambda[1] + Lambda[3]) 0 --> cF_1 --> cF_0 --> VB(3*Lambda[1] + Lambda[3] + Lambda[5]) --> 0 0 --> cF_2 --> cF_1 --> VB(3*Lambda[1] + Lambda[2] + Lambda[5]) + VB(2*Lambda[1] + Lambda[3] + Lambda[5]) --> 0 0 --> cF_3 --> cF_2 --> VB(4*Lambda[1] + Lambda[5]) + VB(2*Lambda[1] + Lambda[2] + Lambda[5]) --> 0 cF_3 = VB(3*Lambda[1] + Lambda[5])
G = Irreducible_Cartan_Group( 'B' , 5 ) P = G.Maximal_Parabolic_Subgroup(3) X = G/P fw = X.Basis('fw') print( 'Base space:' , X ) print( 'Rank of Grothendieck group rk( K_0(X) ) = '+str( X.K0().rank() ) ) print() Version = 2 print( 'Consider version '+str(Version)+'.' ) print() def A( x:int , y:int=1 ) -> Irreducible_Equivariant_Vector_Bundle : assert x in ZZ and 0 <= x , \ ValueError('The input for ``x`` must be non-negative integer.') assert y in ZZ and 0 <= x , \ ValueError('The input for ``y`` must be non-negative integer.') return X.calU( x*fw[1]+y*fw[X.Cartan_Degree()] )(1-y) # --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- # Version 1 if Version == 1 : E = [ X.calO() , X.calU( fw[1] ) , X.calU( fw[2] ) , X.calU( 2*fw[1] ) , X.calU( fw[1] + fw[2] ) , X.calU( 2*fw[2] ) ] E = [ X.calU( 2*fw[1] + fw[2] ) #X.calU( 2*fw[1] +2*fw[2] ) ] VB1 = X.calU( fw[1] +2*fw[5] )(-1) VB2 = X.calU( +2*fw[5] )(-1) VB3 = X.calU( fw[4] )(-1) F = [ VB1.Extend_Equivariantly_By( VB2 ).Extend_Equivariantly_By( VB3 ) ] S = [ A(0) , A(1).Extend_Equivariantly_By( A(0) ) , A(2).Extend_Equivariantly_By( A(1) ) , A(3).Extend_Equivariantly_By( A(2) ) ] Starting_Block = [] Labelling = [] for Key , List in { 'E' : E , 'F' : F , 'S' : S }.items() : Starting_Block += List Labelling += [ Key+str(Counter) for Counter in [ 1 .. len(List) ] ] Support_Pattern = X.Expected_Support_Partition_For_Minimal_Full_Lefschetz_Collection() # --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- # Version 2 elif Version == 2 : VB1 = X.calU( fw[1] ) VB2 = X.calU( fw[4] )(-1) calQ = VB1.Extend_Equivariantly_By( VB2 ) VB1 = X.calU( fw[2] ) VB2 = X.calU( fw[1]+fw[4] )(-1) VB3 = X.calU( 2*fw[5] )(-1) calQ_Wedge2 = VB1.Extend_Equivariantly_By( VB2 ).Extend_Equivariantly_By( VB3 ) # Wedge^2 calQ VB1 = X.calO(1) VB2 = X.calU( fw[2]+fw[4] )(-1) VB3 = X.calU( fw[1]+2*fw[5] )(-1) VB4 = X.calU( 2*fw[5] )(-1) calQ_Wedge3 = VB1.Extend_Equivariantly_By( VB2.Extend_Equivariantly_By( VB3.Extend_Equivariantly_By( VB4 ) ) ) VB1 = X.calU( fw[4] ) VB2 = X.calU( fw[2]+2*fw[5] )(-1) calQ_Wedge4 = VB1.Extend_Equivariantly_By( VB2.Extend_Equivariantly_By( VB2.Dual()(1).Extend_Equivariantly_By( VB1.Dual()(1) ) ) ) Starting_Block = [ X.calO() , calQ , X.calU().Dual() , calQ_Wedge2.Extend_Equivariantly_By( X.calO() ) , X.calU().Dual().Symmetric_Power(2) , #calQ_Wedge3.Extend_Equivariantly_By( X.calU().Dual() ) , A(0) , A(1).Extend_Equivariantly_By( A(0) ) , A(2).Extend_Equivariantly_By( A(1) ) , A(3).Extend_Equivariantly_By( A(2) ) ] Labelling = [ 'cO' , 'cQ' , 'cUVee' , '[Wedge2-cQ,cO]' , '(Sym2-cUVee)' , 'cS1' , 'cS2' , 'cS3' , 'cS4' ] Support_Pattern = tuple([ 9 , 9 , 9 , 8 , 8 , 8 , 8 ]) # --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- # Initialize the Lefschetz collection LC = Lefschetz_Collection( Base_Space=X , Starting_Block=Starting_Block , Support_Pattern=Support_Pattern ) print( 'Objects of starting block:' ) for Counter , F in enumerate( LC.Starting_Block() , start=1 ) : print( str(Counter)+':' , F ) print() print( 'Grid of LC:' ) print( LC.Grid( Labelling ) ) print() print( 'Number of objects:' , len(LC) ) print( 'LC has maximal expected length?' , LC.Has_Maximal_Expected_Length() ) print() print( 'Is LC numerially exceptional?' , LC.Is_Numerically_Exceptional() )
Base space: Smooth projective variety B5/P({1, 2, 4, 5}). Rank of Grothendieck group rk( K_0(X) ) = 80 Consider version 2. Objects of starting block: 1: VB(0) 2: Equivariant extension of VB(Lambda[1]) by VB(-Lambda[3] + Lambda[4]) 3: VB(Lambda[1]) 4: Equivariant extension of [ [ VB(Lambda[2]) , VB(Lambda[1] - Lambda[3] + Lambda[4]) ] , VB(-Lambda[3] + 2*Lambda[5]) ] by VB(0) 5: VB(2*Lambda[1]) 6: VB(Lambda[5]) 7: Equivariant extension of VB(Lambda[1] + Lambda[5]) by VB(Lambda[5]) 8: Equivariant extension of VB(2*Lambda[1] + Lambda[5]) by VB(Lambda[1] + Lambda[5]) 9: Equivariant extension of VB(3*Lambda[1] + Lambda[5]) by VB(2*Lambda[1] + Lambda[5]) Grid of LC: cO cQ cUVee [Wedge2-cQ,cO] (Sym2-cUVee) cS1 cS2 cS3 cS4 cO(1) cQ(1) cUVee(1) [Wedge2-cQ,cO](1) (Sym2-cUVee)(1) cS1(1) cS2(1) cS3(1) cS4(1) cO(2) cQ(2) cUVee(2) [Wedge2-cQ,cO](2) (Sym2-cUVee)(2) cS1(2) cS2(2) cS3(2) cS4(2) cO(3) cQ(3) cUVee(3) [Wedge2-cQ,cO](3) (Sym2-cUVee)(3) cS1(3) cS2(3) cS3(3) cO(4) cQ(4) cUVee(4) [Wedge2-cQ,cO](4) (Sym2-cUVee)(4) cS1(4) cS2(4) cS3(4) cO(5) cQ(5) cUVee(5) [Wedge2-cQ,cO](5) (Sym2-cUVee)(5) cS1(5) cS2(5) cS3(5) cO(6) cQ(6) cUVee(6) [Wedge2-cQ,cO](6) (Sym2-cUVee)(6) cS1(6) cS2(6) cS3(6) Number of objects: 59 LC has maximal expected length? False Is LC numerially exceptional? True