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 = 4 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.calU(fw[n]) F4 = ( X.calU().Exterior_Power(4) * calS ) F3 = ( X.calU().Exterior_Power(3) * calS ).Extend_Equivariantly_By( F4 ) 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' ) # First collection # Degree = 0 E = X.calO() LC += X.Lefschetz_Collection( Starting_Block=[E] , Support_Pattern=h*[1] ) # Degree = 1 E = X.calU( fw[1] ) LC += X.Lefschetz_Collection( Starting_Block=[E] , Support_Pattern=h*[1] ) E = X.calU( fw[2] ) LC += X.Lefschetz_Collection( Starting_Block=[E] , Support_Pattern=h*[1] ) E = X.calU( fw[3] ) LC += X.Lefschetz_Collection( Starting_Block=[E] , Support_Pattern=h*[1] ) # Degree = 2 E = X.calU( fw[1]+fw[2] ) LC += X.Lefschetz_Collection( Starting_Block=[E] , Support_Pattern=h*[1] ) E = X.calU( 2*fw[2] ) LC += X.Lefschetz_Collection( Starting_Block=[E] , Support_Pattern=2*[1] ) ##E = X.calU( 2*fw[1] ) ##LC += X.calU( 3*fw[1]+fw[5] )(-1).Extend_Equivariantly_By( F4 * E ).Maximal_Numerically_Exceptional_Orbit() # 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] ) E = X.calS() LC += X.Lefschetz_Collection( Starting_Block=[X.calU( fw[1]+2*fw[n] )(-1).Extend_Equivariantly_By( F4 * E )] , Support_Pattern=6*[1] ) LC += X.Lefschetz_Collection( Starting_Block=[X.calU( fw[2]+2*fw[n] )(-1).Extend_Equivariantly_By( F3 * E )] , Support_Pattern=6*[1] ) # Spinor collection # Degree = 1/2 E = X.calS() LC += X.Lefschetz_Collection( Starting_Block=[E] , Support_Pattern=6*[1] ) # Degree = 3/2 E = X.calO()(1) LC += X.Lefschetz_Collection( Starting_Block=[X.calU( fw[1]+fw[n] ).Extend_Equivariantly_By( F4 * E )] , Support_Pattern=h*[1] ) LC += X.Lefschetz_Collection( Starting_Block=[X.calU( fw[2]+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( F4 * E )] , Support_Pattern=h*[1] ) LC += X.Lefschetz_Collection( Starting_Block=[X.calU( fw[1]+fw[2]+fw[n] ).Extend_Equivariantly_By( F3 * E )] , Support_Pattern=h*[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( Labelling=[ 'E'+str(Counter) for Counter in [ 1 .. len(LC.Starting_Block()) ] ] ) ) print() LC_Is_Numercially_Exceptional = LC.Is_Numerically_Exceptional() print( 'Is LC numerially exceptional?' , LC_Is_Numercially_Exceptional ) print()
Base space: OGr(4;11) rk K0(X): 80 Fano index: 6 Objects of starting block:
Number of objects: 74 LC has maximal expected length? False Grid of LC:
Is LC numerially exceptional? True
Universe = [] for Node in [ k .. n-1 ] : Universe += [ X.calU( c1*fw[1]+c2*fw[2] + fw[Node] )(-1) for c1 in [ 0 .. 4 ] for c2 in [ 0 .. 4 ] ] for Node in [ n ] : Universe += [ X.calU( c1*fw[1]+c2*fw[2] + 2*fw[Node] )(-1) for c1 in [ 0 .. 4 ] for c2 in [ 0 .. 4 ] ] StartWith = 0 Output = dict({}) StartWith = 0 Output.update({ 0 : 'len(Universe): '+str(len(Universe))+'\n' }) for ObjectLength in [ 2 , 3 , 4 , 5 , 6 ] : Output.update({ 1 : 'Object length: '+str(ObjectLength)+'\n'+'-> Total number of candidates: '+str(binomial(len(Universe),ObjectLength))+'\n' }) Counter = 0 for SummandsIndices in Subsets( range(len(Universe)) , ObjectLength , submultiset=True ) : Counter += 1 clear_output(wait=True) for Key in sorted(Output.keys()) : print( Output[Key] ) print( 'Current object: '+str(Counter) ) if Counter < StartWith : continue New_Object = X.Zero_Vector_Bundle() for SummandIndex in SummandsIndices : New_Object += Universe[SummandIndex] print( 'New object to test: '+str(New_Object) ) String = '' for Column , Rows in LC.Test_For_Numerically_Exceptional_Proper_Extension( New_Object=New_Object , Test_If_Self_Is_Exceptional=False ) : if 0 < len(Rows) : print( 'In the column='+str(Column)+': '+str(Rows) ) String += 'In the column='+str(Column)+': '+str(Rows)+'\n' if 0 < len(String) : if not 2 in Output.keys() : Output.update({ 2 : '' }) Output[2] += 'Tested '+str(New_Object)+':\n'+String + '\n' print()
len(Universe): 50 Object length: 2 -> Total number of candidates: 1225 Current object: 1120 New object to test: VB(Lambda[1] + 4*Lambda[2] - Lambda[4] + 2*Lambda[5]) + VB(4*Lambda[1] + 4*Lambda[2] - Lambda[4] + 2*Lambda[5])
--------------------------------------------------------------------------- KeyboardInterrupt Traceback (most recent call last) Cell In [20], line 34 31 print( 'New object to test: '+str(New_Object) ) 33 String = '' ---> 34 for Column , Rows in LC.Test_For_Numerically_Exceptional_Proper_Extension( New_Object=New_Object , Test_If_Self_Is_Exceptional=False ) : 35 if Integer(0) < len(Rows) : 36 print( 'In the column='+str(Column)+': '+str(Rows) )
File /tmp/ipykernel_25707/80901849.py:531, in Lefschetz_Collection.Test_For_Numerically_Exceptional_Proper_Extension(self, New_Object, Relevant_Columns, Test_If_Self_Is_Exceptional) 528 Test_Numerically=True 530 assert isinstance( New_Object , Equivariant_Vector_Bundle ) , 'The input for `New_Object` need to be an equivariant vector bundle.' --> 531 New_Orbit = New_Object.Maximal_Numerically_Exceptional_Orbit() 533 if Relevant_Columns == None : Relevant_Columns = set(range(self.Width()+Integer(1))) 534 assert isinstance( Relevant_Columns , set ) , 'If the input for `Relevant_Columns` is not None, then it need to be a set.'
File /tmp/ipykernel_25707/3214646350.py:287, in Equivariant_Vector_Bundle.Maximal_Numerically_Exceptional_Orbit(self, Twist) 284 assert Twist.Is_Line_Bundle() , ValueError('The input for ``Twist`` need to be a line bundle.') 286 Orbit_Length = Integer(0) --> 287 if self.Is_Numerically_Exceptional() : 288 Orbit_Length = Integer(1) 289 Moving_Object = self
File /tmp/ipykernel_25707/3214646350.py:231, in Equivariant_Vector_Bundle.Is_Numerically_Exceptional(self) 229 def Is_Numerically_Exceptional ( self ) -> bool : 230 """Tests if ``self`` is numerically exceptional, i.e. Euler_Sum(self,self) = kk.""" --> 231 return self.Is_Exceptional( Test_Numerically=True )
File /tmp/ipykernel_25707/3214646350.py:222, in Equivariant_Vector_Bundle.Is_Exceptional(self, Test_Numerically) 219 else : return False 221 elif Test_Numerically == True : --> 222 if self.Euler_Sum(self) == WCR(Integer(1)) : return True 223 else : return False 225 else :
File /tmp/ipykernel_25707/3214646350.py:157, in Equivariant_Vector_Bundle.Euler_Sum(self, other) 155 """Returns sum_{ p } (-1)^p EXT^p(``self``,``other``).""" 156 WCR = self.Base_Space().Parent_Group().Weyl_Character_Ring() --> 157 Result = sum([ (-Integer(1))**Degree * Weyl_Character for Degree , Weyl_Character in self.EXT(other).items() ]) 158 if Result == Integer(0) : return WCR(Integer(0)) 159 else : return Result
File /tmp/ipykernel_25707/3214646350.py:175, in Equivariant_Vector_Bundle.EXT(self, other, *p) 172 elif isinstance( other , Extension_Of_Equivariant_Vector_Bundles ) : E2 = other.SemiSimplification() 173 else : raise TypeError( 'The input for ``other`` must be an equivariant vector bundle over an irreducible homogeneous variety or' + 'an equivariant extension of those ones.') --> 175 return ( E1.Dual() * E2 ).Cohomology( *p )
File /tmp/ipykernel_25707/1189217894.py:98, in Direct_Sum_Of_Equivariant_Vector_Bundles.__mul__(self, other) 96 for Weyl_Character_HW , Weyl_Character_Multiplicity in Multiplicity_1 * Multiplicity_2 : 97 for VB , Mult in ( Vector_Bundle_1 * Vector_Bundle_2 ).SemiSimplification().Summands() : ---> 98 Product += self.__class__( Base_Space=self.Base_Space() , Summands=[ ( VB , Mult * Weyl_Character_Multiplicity * WCR(Weyl_Character_HW) ) ] ) 100 if isinstance( Product , self.__class__ ) : Product.Tidy_Up() 101 return Product
File /tmp/ipykernel_25707/3214646350.py:7, in Equivariant_Vector_Bundle.__add__(self, other) 5 if isinstance( other , ( Irreducible_Equivariant_Vector_Bundle , Direct_Sum_Of_Equivariant_Vector_Bundles , Extension_Of_Equivariant_Vector_Bundles ) ) : 6 New_Constituent_Parts = self.Constituent_Parts() + other.Constituent_Parts() ----> 7 Sum = Direct_Sum_Of_Equivariant_Vector_Bundles( Base_Space=self.Base_Space() , Summands=New_Constituent_Parts ) 8 Sum.Tidy_Up() 10 if Sum.Is_Irreducible() : return Sum[Integer(0)]
File /tmp/ipykernel_25707/1189217894.py:51, in Direct_Sum_Of_Equivariant_Vector_Bundles.__init__(self, Base_Space, Summands) 47 assert Mult in WCR , ValueError('The multiplicity of the '+str(Summand_Counter)+'-th summnad is not an element of the Weyl character ring ``'+str(WCR)+'``.') 49 self._Summands += [ ( VB , Mult ) ] ---> 51 self.Tidy_Up()
File /tmp/ipykernel_25707/1189217894.py:404, in Direct_Sum_Of_Equivariant_Vector_Bundles.Tidy_Up(self) 402 Summand_Is_Implemented_After_Tidying_Up = False 403 for Summand_Counter_2 , ( Vector_Bundle_2 , Multiplicity_2 ) in enumerate( Summands ) : --> 404 if Vector_Bundle_1 == Vector_Bundle_2 : 405 Summands[Summand_Counter_2] = ( Vector_Bundle_2 , Multiplicity_2+Multiplicity_1 ) 406 Summand_Is_Implemented_After_Tidying_Up = True
File /tmp/ipykernel_25707/2070952829.py:6, in Algebraic_Structure.__eq__(self, other) 4 """Tests if two objects of the same class and if they coincide.""" 5 if isinstance( other , self.__class__ ) : ----> 6 if self.__repr__() == other.__repr__() : return True 7 else : return False 8 else : return False
File /tmp/ipykernel_25707/3978931721.py:102, in Irreducible_Equivariant_Vector_Bundle.__repr__(self) 98 Summands = [ ( self , -WCR(Integer(1)) ) ] 99 return Direct_Sum_Of_Equivariant_Vector_Bundles( Base_Space=Base_Space , Summands=Summands ) --> 102 def __repr__ ( self ) : 103 """Returns all attributes which are necessary to initialize the object.""" 104 return self.Base_Space() , self.Highest_Weight()
File src/cysignals/signals.pyx:310, in cysignals.signals.python_check_interrupt()
KeyboardInterrupt: