Abstract Bundles
Types
The OSCAR type for abstract vector bundles is AbstractBundle.
Constructors
abstract_bundle — Method
abstract_bundle(X::AbstractVariety, ch::Union{MPolyDecRingElem, MPolyQuoRingElem})
abstract_bundle(X::AbstractVariety, r::RingElement, c::Union{MPolyDecRingElem, MPolyQuoRingElem})Return an abstract vector bundle on X by specifying its Chern character ch. Equivalently, specify its rank r and total Chern class c.
Examples
We show two ways of constructing the Horrocks-Mumford bundle F [HM73]. First, we create F as the cohomology bundle of its Beilinson monad (see Equation (2.1) in [HM73]):
\[0 \rightarrow \mathcal O_{\mathbb P^4}^5(2)\rightarrow \bigwedge^2\mathrm{T}^*_{\mathbb P^4}(5) \rightarrow \mathcal O_{\mathbb P^4}^5(3)\rightarrow 0.\]
Then, we show the constructor above at work.
julia> P4 = abstract_projective_space(4)
AbstractVariety of dim 4
julia> A = 5*OO(P4, 2)
AbstractBundle of rank 5 on AbstractVariety of dim 4
julia> B = 2*exterior_power(cotangent_bundle(P4), 2)*OO(P4, 5)
AbstractBundle of rank 12 on AbstractVariety of dim 4
julia> C = 5*OO(P4, 3)
AbstractBundle of rank 5 on AbstractVariety of dim 4
julia> F = B-A-C
AbstractBundle of rank 2 on AbstractVariety of dim 4
julia> total_chern_class(F)
10*h^2 + 5*h + 1
julia> h = gens(P4)[1]
h
julia> F == abstract_bundle(P4, 2, 10*h^2 + 5*h + 1)
true
This function is part of the experimental code in Oscar. Please read here for more details.
Underlying Data of an Abstract Bundle
An abstract bundle is made up from (a selection of) the data discussed here:
parent — Method
parent(F::AbstractBundle)Return the underlying abstract variety of F.
Examples
julia> G = abstract_grassmannian(3,5)
AbstractVariety of dim 6
julia> Q = tautological_bundles(G)[2]
AbstractBundle of rank 2 on AbstractVariety of dim 6
julia> parent(Q) == G
true
This function is part of the experimental code in Oscar. Please read here for more details.
chern_character — Method
chern_character(F::AbstractBundle)Return the Chern character of F.
Examples
julia> G = abstract_grassmannian(3, 5)
AbstractVariety of dim 6
julia> Q = tautological_bundles(G)[2]
AbstractBundle of rank 2 on AbstractVariety of dim 6
julia> chern_character(Q)
-1//2*c[1]^2 + 1//6*c[1]*c[2] - 1//24*c[1]*c[3] - c[1] + c[2] - 1//3*c[3] + 2
This function is part of the experimental code in Oscar. Please read here for more details.
rank — Method
rank(F::AbstractBundle)Return the rank of F.
Examples
julia> G = abstract_grassmannian(3,5)
AbstractVariety of dim 6
julia> Q = tautological_bundles(G)[2]
AbstractBundle of rank 2 on AbstractVariety of dim 6
julia> rank(symmetric_power(Q,3))
4
This function is part of the experimental code in Oscar. Please read here for more details.
total_chern_class — Method
total_chern_class(F::AbstractBundle)Return the total Chern class of F.
Examples
julia> G = abstract_grassmannian(3, 5)
AbstractVariety of dim 6
julia> Q = tautological_bundles(G)[2]
AbstractBundle of rank 2 on AbstractVariety of dim 6
julia> total_chern_class(Q)
c[1]^2 - c[1] - c[2] + 1
julia> chern_class(Q, 1)
-c[1]
julia> chern_class(Q, 2)
c[1]^2 - c[2]
This function is part of the experimental code in Oscar. Please read here for more details.
Further Data Associated to an Abstract Bundle
chern_class — Method
chern_class(F::AbstractBundle, k::Int)Return the k-th Chern class of F.
Examples
julia> T, (d,) = polynomial_ring(QQ, [:d])
(Multivariate polynomial ring in 1 variable over QQ, QQMPolyRingElem[d])
julia> QT = fraction_field(T)
Fraction field
of multivariate polynomial ring in 1 variable over QQ
julia> P4 = abstract_projective_space(4, base = QT)
AbstractVariety of dim 4
julia> h = gens(P4)[1]
h
julia> F = abstract_bundle(P4, 2, 10*h^2 + 5*h + 1) # Horrocks-Mumford bundle
AbstractBundle of rank 2 on AbstractVariety of dim 4
julia> chern_class(F*OO(P4, d), 1)
(2*d + 5)*h
julia> chern_class(F*OO(P4, d), 2)
(d^2 + 5*d + 10)*h^2
julia> chern_class(F*OO(P4, -3), 1)
-h
julia> chern_class(F*OO(P4, -3), 2)
4*h^2
This function is part of the experimental code in Oscar. Please read here for more details.
top_chern_class — Method
top_chern_class(F::AbstractBundle)Return the top Chern class of F.
Examples
julia> P4 = abstract_projective_space(4)
AbstractVariety of dim 4
julia> h = gens(P4)[1]
h
julia> F = abstract_bundle(P4, 2, 10*h^2 + 5*h + 1)
AbstractBundle of rank 2 on AbstractVariety of dim 4
julia> top_chern_class(F)
10*h^2
This function is part of the experimental code in Oscar. Please read here for more details.
total_segre_class — Method
total_segre_class(F::AbstractBundle)Return the total Segre class of F.
Examples
julia> G = abstract_grassmannian(3,5)
AbstractVariety of dim 6
julia> Q = tautological_bundles(G)[2]
AbstractBundle of rank 2 on AbstractVariety of dim 6
julia> C = total_chern_class(Q)
c[1]^2 - c[1] - c[2] + 1
julia> S = total_segre_class(Q)
c[1] + c[2] + c[3] + 1
julia> C*S
1
This function is part of the experimental code in Oscar. Please read here for more details.
segre_class — Method
segre_class(F::AbstractBundle, k::Int)Return the k-th Segre class of F.
Examples
julia> G = abstract_grassmannian(3,5)
AbstractVariety of dim 6
julia> Q = tautological_bundles(G)[2]
AbstractBundle of rank 2 on AbstractVariety of dim 6
julia> segre_class(Q,0)
1
julia> segre_class(Q,1)
c[1]
julia> segre_class(Q,2)
c[2]
julia> segre_class(Q,3)
c[3]
This function is part of the experimental code in Oscar. Please read here for more details.
todd_class — Method
todd_class(F::AbstractBundle)Return the Todd class of F.
Examples
julia> P = abstract_projective_space(4, symbol = "H"); # Hartshorne, p. 433
julia> F = exterior_power(cotangent_bundle(P), 3)*OO(P,3);
julia> G = OO(P, 1)+4*OO(P);
julia> Z = degeneracy_locus(F, G, 3) # rational surface in P4
AbstractVariety of dim 2
julia> TZ = tangent_bundle(Z);
julia> K = canonical_class(Z)
z - H
julia> chern_class(TZ, 1) == -K
true
julia> tc = todd_class(TZ)
-1//2*z + 1//8*H^2 + 1//2*H + 1
julia> tc == 1-1//2*K+1//12*(K^2+chern_class(TZ, 2))
true
This function is part of the experimental code in Oscar. Please read here for more details.
total_pontryagin_class — Method
pontryagin_class — Method
euler_characteristic — Method
euler_characteristic(F::AbstractBundle)Return the Euler characteristic $\chi(F)$
euler_pairing(F::AbstractBundle, G::AbstractBundle)Return the Euler pairing $\chi(F,G)$.
Examples
julia> P = abstract_projective_space(4, symbol = "H"); # Hartshorne, p. 433
julia> F = exterior_power(cotangent_bundle(P), 3)*OO(P,3);
julia> G = OO(P, 1)+4*OO(P);
julia> Z = degeneracy_locus(F, G, 3) # rational surface in P4
AbstractVariety of dim 2
julia> TZ = tangent_bundle(Z);
julia> tc = todd_class(TZ)
-1//2*z + 1//8*H^2 + 1//2*H + 1
julia> K = canonical_class(Z)
z - H
julia> H = polarization(Z)
H
julia> ec = euler_characteristic(OO(Z, H))
4
julia> ec == integral(1//2*H*(H-K)+1//12*(K^2+chern_class(TZ, 2)))
true
This function is part of the experimental code in Oscar. Please read here for more details.
hilbert_polynomial — Method
hilbert_polynomial(F::AbstractBundle)If F is an abstract vector bundle on an abstract variety with a given polarization, then return the corresponding Hilbert polynomial of F.
Examples
julia> P2 = abstract_projective_space(2)
AbstractVariety of dim 2
julia> hilbert_polynomial(OO(P2))
1//2*t^2 + 3//2*t + 1
julia> euler_characteristic(OO(P2))
1
julia> euler_characteristic(OO(P2, 1))
3
julia> euler_characteristic(OO(P2, 2))
6
julia> euler_characteristic(OO(P2, 3))
10
This function is part of the experimental code in Oscar. Please read here for more details.
Operations on Abstract Bundles
- — Method
-(F::AbstractBundle)
*(n::RingElement, F::AbstractBundle)
+(F::AbstractBundle, G::AbstractBundle)
-(F::AbstractBundle, G::AbstractBundle)
*(F::AbstractBundle, G::AbstractBundle)Return -F, the sum F $+ \dots +$ F of n copies of F, F $+$ G, F $-$ G, and the tensor product of F and G, respectively.
Examples
julia> P3 = abstract_projective_space(3)
AbstractVariety of dim 3
julia> 4*OO(P3, 1) - OO(P3) == tangent_bundle(P3) # Euler sequence
true
This function is part of the experimental code in Oscar. Please read here for more details.
dual — Method
dual(F::AbstractBundle)Return the dual bundle of F.
Examples
julia> P4 = abstract_projective_space(4)
AbstractVariety of dim 4
julia> h = gens(P4)[1]
h
julia> F = abstract_bundle(P4, 2, 10*h^2 + 5*h + 1) # Horrocks-Mumford bundle
AbstractBundle of rank 2 on AbstractVariety of dim 4
julia> c1 = chern_class(F, 1)
5*h
julia> Fd = dual(F)
AbstractBundle of rank 2 on AbstractVariety of dim 4
julia> chern_class(Fd, 1)
-5*h
julia> F == Fd*OO(P4, 5) # self-duality up to twist
true
This function is part of the experimental code in Oscar. Please read here for more details.
det — Method
det(F::AbstractBundle)Return the determinant bundle of F.
Examples
julia> P3 = abstract_projective_space(3)
AbstractVariety of dim 3
julia> T = tangent_bundle(P3)
AbstractBundle of rank 3 on AbstractVariety of dim 3
julia> chern_class(T, 1)
4*h
julia> det(T) == OO(P3, 4)
true
This function is part of the experimental code in Oscar. Please read here for more details.
exterior_power — Method
symmetric_power — Method
pullback — Method
pullback(f::AbstractVarietyMap, F::AbstractBundle)Return the pullback of F via f.
Examples
julia> P2 = abstract_projective_space(2)
AbstractVariety of dim 2
julia> P5 = abstract_projective_space(5, symbol = "H")
AbstractVariety of dim 5
julia> h = gens(P2)[1]
h
julia> i = map(P2, P5, [2*h])
AbstractVarietyMap from AbstractVariety of dim 2 to AbstractVariety of dim 5
julia> E = pullback(i, OO(P5,1))
AbstractBundle of rank 1 on AbstractVariety of dim 2
julia> total_chern_class(E)
2*h + 1
This function is part of the experimental code in Oscar. Please read here for more details.
pushforward — Method
pushforward(f::AbstractVarietyMap, F::AbstractBundle)Return the pushforward of F via f, that is, return the alternating sum of all direct images of F via f.
Examples
julia> P2 = abstract_projective_space(2)
AbstractVariety of dim 2
julia> P5 = abstract_projective_space(5, symbol = "H")
AbstractVariety of dim 5
julia> h = gens(P2)[1]
h
julia> f = map(P2, P5, [2*h])
AbstractVarietyMap from AbstractVariety of dim 2 to AbstractVariety of dim 5
julia> F = OO(P2,1)
AbstractBundle of rank 1 on AbstractVariety of dim 2
julia> c = pushforward(f, chern_character(F) * todd_class(f))
7*H^5 - 7*H^4 + 4*H^3
julia> chern_character(pushforward(f, F)) == c # Grothendieck-Riemann-Roch
true
This function is part of the experimental code in Oscar. Please read here for more details.
Tests on Abstract Bundles
== — Method
==(F::AbstractBundle, G::AbstractBundle)Return true if F is equal to G, and false otherwise.
Examples
julia> P2 = abstract_projective_space(2)
AbstractVariety of dim 2
julia> 3*OO(P2, 1) - OO(P2) == tangent_bundle(P2) # Euler sequence
true
This function is part of the experimental code in Oscar. Please read here for more details.