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
1
2
3
# This file was *autogenerated* from the file Grassmannian.sage
4
from sage.all_cmdline import * # import sage library
5
6
_sage_const_2 = Integer(2); _sage_const_1 = Integer(1); _sage_const_0 = Integer(0)
7
from Equivariant_Vector_Bundles_On_Homogeneous_Varieties.Base_Space.Homogeneous_Variety import Irreducible_Homogeneous_Variety
8
9
10
11
class Grassmannian ( Irreducible_Homogeneous_Variety ) :
12
13
def __init__( self , k :int , N :int ) -> None :
14
"""
15
Initialize the Grassmannian Gr(k,N).
16
17
INPUT:
18
- ``k`` -- Integer ;
19
- ``N`` -- Integer ;
20
21
OUTPUT: None.
22
"""
23
assert isinstance( N , Integer ) , TypeError('The input for `N` must be an integer.')
24
assert _sage_const_2 <= N , ValueError('The integer `N` must be equal to or greater than 2.')
25
self._N = N
26
27
assert isinstance( k , Integer ) , TypeError('The input for `k` must be an integer.')
28
assert k in (ellipsis_range( _sage_const_1 ,Ellipsis, N-_sage_const_1 )) , ValueError('The integer `k` need to be in the range '+str((ellipsis_range( _sage_const_1 ,Ellipsis, N-_sage_const_1 )))+'.')
29
self._k = k
30
31
from Equivariant_Vector_Bundles_On_Homogeneous_Varieties.Base_Space.Homogeneous_Variety import Irreducible_Cartan_Group
32
G = Irreducible_Cartan_Group( Cartan_Family='A' , Cartan_Degree=N-_sage_const_1 )
33
P = G.Maximal_Parabolic_Subgroup( Excluded_Node=k )
34
super( Grassmannian , self ).__init__( P )
35
36
37
def __repr__ ( self ) -> tuple[ int ] :
38
"""Returns all attributes which are necessary to initialize the object."""
39
return self.k() , self.N()
40
41
42
def __str__ ( self , Output_Style='Long' ) -> str :
43
"""Returns a one-line string as short description."""
44
if Output_Style == 'Short' : return 'Gr('+str(self.k())+';'+str(self.N())+')'
45
elif Output_Style == 'Long' : return 'Grassmannian variety of '+str(self.k())+'-dimensional linear subspaces in a '+str(self.N())+'-dimensional ambient vector space.'
46
else : raise ValueError('The input for ``Output_Style`` is inappropriate.')
47
48
49
def Fano_Index ( self ) -> int :
50
"""Returns the Fano index of ``self``."""
51
return self.N()
52
53
54
def Fonarev_Collection ( self ) -> "Lefschetz_Collection" :
55
"""
56
Returns Fonarev's (conjecturally full) minimal exceptional collection on ``self``.
57
58
OUTPUT:
59
- (Conjecturally full) minimal exceptional collection
60
61
REFERENCE:
62
- [Fon2012] Fonarev, A.: On minimal Lefschetz decompositions for Grassmannians
63
"""
64
fw = self.Basis('fw')
65
LC = self.Lefschetz_Collection( Starting_Block=[] , Support_Pattern='Trivial' )
66
for YD , Orbit_Length in Young_Diagram.Minimal_Upper_Triangulars( self.N()-self.k() , self.k() ) :
67
New_Object = self.Equivariant_Vector_Bundle( YD )
68
LC += self.Lefschetz_Collection( Starting_Block=[New_Object] , Support_Pattern=tuple(Orbit_Length*[_sage_const_1 ]) )
69
return LC
70
71
72
def Kapranov_Collection ( self ) -> "Lefschetz_Collection" :
73
"""
74
Returns Kapranov's full exceptional collection on ``self``.
75
76
OUTPUT:
77
- Full exceptional collection cU^alpha with n-k => alpha_1 => alpha_2 => ... => alpha_k => 0 (lexicographically orderd)
78
79
REFERENCE:
80
- [Kap1988] Kapranov, M. M.: On the derived categories of coherent sheaves on some homogeneous spaces. Invent. Math.92(1988), no.3, 479–508.
81
"""
82
k = self.k()
83
N = self.N()
84
fw = self.Basis('fw')
85
Weights = [ list(Weight)+[ _sage_const_0 ] for Weight in IntegerListsLex( length=k , max_part=N-k , max_slope=_sage_const_0 ) ]
86
Weights.reverse()
87
Starting_Block = [ self.Irreducible_Equivariant_Vector_Bundle( sum([ self.Null_Weight() ] + [ (Weight[Node-_sage_const_1 ]-Weight[Node]) * fw[Node] for Node in (ellipsis_range( _sage_const_1 ,Ellipsis, k )) ]) )
88
for Weight in Weights
89
]
90
Support_Pattern = 'Trivial'
91
return self.Lefschetz_Collection( Starting_Block=Starting_Block , Support_Pattern=Support_Pattern )
92
93
94
95
class Projective_Space ( Grassmannian ) :
96
97
def __init__( self , Dimension :int ) -> None :
98
"""
99
Initialize the projective space of a given dimension.
100
101
INPUT:
102
- ``Dimension`` -- Integer ;
103
104
OUTPUT: None.
105
"""
106
assert isinstance( Dimension , Integer ) , TypeError('The input for `Dimension` must be an integer.')
107
assert _sage_const_0 < Dimension , ValueError('The dimension must be greater than zero.')
108
109
super( Projective_Space , self ).__init__( k=_sage_const_1 , N=Dimension+_sage_const_1 )
110
111
112
def __repr__ ( self ) -> int :
113
"""Returns all attributes which are necessary to initialize the object."""
114
return self.Dimension()
115
116
117
def __str__ ( self , Output_Style='Long' ) -> str :
118
"""Returns a one-line string as short description."""
119
if Output_Style == 'Short' : return 'PP^'+str(self.Dimension())
120
elif Output_Style == 'Long' : return 'Projective space of dimension '+str(self.Dimension())+'.'
121
else : raise ValueError('The input for ``Output_Style`` is inappropriate.')
122
123
124
def Beilinson_Collection ( self ) -> "Lefschetz_Collection" :
125
"""
126
Returns Beilinson's full exceptional collection on ``self``.
127
128
OUTPUT:
129
- Lefschetz collection with starting block ( O_X ) and support partition (self.Dimension()+1)*[ 1 ].
130
131
REFERENCE:
132
- [Bei1978] Beilinson, A. A.: Coherent sheaves on Pn and problems in linear algebra. Funktsional. Anal. i Prilozhen.12(1978), no.3, 68–69.
133
"""
134
Starting_Block = [ self.calO() ]
135
Support_Pattern = tuple( (self.Dimension()+_sage_const_1 )*[ _sage_const_1 ])
136
return self.Lefschetz_Collection( Starting_Block=Starting_Block , Support_Pattern=Support_Pattern )
137
138
139
140
class Dual_Projective_Space ( Grassmannian ) :
141
142
def __init__( self , Dimension :int ) -> None :
143
"""
144
Initialize the dual projective space of a given dimension.
145
146
INPUT:
147
- ``Dimension`` -- Integer ;
148
149
OUTPUT: None.
150
"""
151
assert isinstance( Dimension , Integer ) , TypeError('The input for `Dimension` must be an integer.')
152
assert _sage_const_0 < Dimension , ValueError('The dimension must be greater than zero.')
153
154
super( Dual_Projective_Space , self ).__init__( k=Dimension , N=Dimension+_sage_const_1 )
155
156
157
def __repr__ ( self ) -> int :
158
"""Returns all attributes which are necessary to initialize the object."""
159
return self.Dimension()
160
161
162
def __str__ ( self , Output_Style='Long' ) -> str :
163
"""Returns a one-line string as short description."""
164
if Output_Style == 'Short' : return 'PP^('+str(self.Dimension())+',v)'
165
elif Output_Style == 'Long' : return 'Dual projective space of dimension '+str(self.Dimension())+'.'
166
else : raise ValueError('The input for ``Output_Style`` is inappropriate.')
167
168
169