diff --git a/M2/Macaulay2/packages/Schubert2.m2 b/M2/Macaulay2/packages/Schubert2.m2 index d9a4590051c..24d23eb7ea6 100644 --- a/M2/Macaulay2/packages/Schubert2.m2 +++ b/M2/Macaulay2/packages/Schubert2.m2 @@ -2,14 +2,16 @@ newPackage( "Schubert2", AuxiliaryFiles => true, - Version => "0.7", - Date => "April 24, 2013", + Version => "0.8", + Date => "May 28, 2026", Authors => { - {Name => "Daniel R. Grayson", Email => "dan@math.uiuc.edu", HomePage => "http://www.math.uiuc.edu/~dan/"}, - {Name => "Michael E. Stillman", Email => "mike@math.cornell.edu", HomePage => "http://www.math.cornell.edu/People/Faculty/stillman.html"}, - {Name => "Stein A. Strømme", Email => "stromme@math.uib.no", HomePage => "http://stromme.uib.no/home/" }, - {Name => "David Eisenbud", Email => "de@msri.org", HomePage => "http://www.msri.org/~de/"}, - {Name => "Charley Crissman", Email => "charleyc@math.berkeley.edu", HomePage => "http://math.berkeley.edu/~charleyc/"} + {Name => "Daniel R. Grayson", Email => "danielrichardgrayson@gmail.com", HomePage => "https://www.graysonfamily.org/dan/"}, + {Name => "Michael E. Stillman", Email => "mes15@cornell.edu", HomePage => "https://pi.math.cornell.edu/~mike/"}, + {Name => "Stein A. Strømme" }, + {Name => "David Eisenbud", Email => "de@msri.org", HomePage => "https://eisenbud.github.io/"}, + {Name => "Charley Crissman", Email => "charley.crissman@bellevuecollege.edu" }, + {Name => "Burt Totaro", Email => "totaro@math.ucla.edu", HomePage => "https://www.math.ucla.edu/~totaro/"}, + {Name => "Jiahe Wang", Email => "jiahewang@math.ucla.edu", HomePage => "https://sites.google.com/view/jiahewang/home"}, }, HomePage => "https://macaulay2.com/", Headline => "characteristic classes for varieties without equations", @@ -35,7 +37,10 @@ export { "AbstractSheaf", "abstractSheaf", "AbstractVariety", "abstractVariety", "tautologicalLineBundle", "bundles", "schubertRing", "DefaultPushForward", "DefaultPullBack", "DefaultIntegral", "abstractVarietyMap", "extensionAlgebra", "inclusion", "SubTangent", "SuperTangent", - "SubDimension", "SuperDimension", "NormalClass", "Codimension"} + "SubDimension", "SuperDimension", "NormalClass", "Codimension", + "symmetricDegeneracyLocus", "symmetricDegeneracyLocus2", "skewDegeneracyLocus", "skewDegeneracyLocus2", + "symmetricKernelBundle", "skewKernelBundle", "weightedProjectiveBundle", "WPS", + } -- not exported, for now: "logg", "expp", "reciprocal", "ToddClass" protect ChernCharacter @@ -1842,6 +1847,280 @@ degeneracyLocus(ZZ,AbstractSheaf,AbstractSheaf) := (k,B,A) -> ( S := first G.Bundles; sectionZeroLocus Hom(S,(G/X)^* B)) + + +------------------------------------------------------------ +-- Symmetric degeneracy locus as an abstract variety. +-- This yields an abstract variety S that is a resolution of singularities of the locus S_0 +-- where a general symmetric map E -> E^* tensor L has rank at most k, +-- following Fulton's Intersection Theory, Example 14.4.11. +-- Here E is a vector bundle and L is a line bundle. +-- (It is assumed that there are enough such maps that S_0 has the expected dimension.) +-- If the map E -> E^* tensor L never has rank less than k, then S is isomorphic +-- to the actual degeneracy locus S_0. +------------------------------------------------------------ + +symmetricDegeneracyLocus = method(TypicalValue => AbstractVariety) + +symmetricDegeneracyLocus(ZZ,AbstractSheaf) := (k, E) -> ( + X := variety E; + symmetricDegeneracyLocus(k, E, OO_X) + ) + +symmetricDegeneracyLocus(ZZ,AbstractSheaf,AbstractSheaf) := (k, E, L) -> ( + X := variety E; + if X =!= variety L then error "expected bundles on the same variety"; + if rank L != 1 then error "the second sheaf should be a line bundle"; + e := rank E; + G := flagBundle({e-k,k}, E); + S := G.Bundles#0; + Q := G.Bundles#1; + p := G/X; + sectionZeroLocus( + ((dual(Q) ** dual(S)) ** (p^*L)) ++ (symmetricPower(2,dual(S)) ** (p^*L)) + ) + ) + +------------------------------------------------------------ +-- This yields an abstract variety S that is a resolution of singularities of the locus S_0 +-- where a general skew-symmetric map E -> E^* tensor L has rank at most k, +-- following Fulton's Intersection Theory, Example 14.4.11. +-- Here E is a vector bundle, L is a line bundle, and k is even. +-- (It is assumed that there are enough such maps that S_0 has the expected dimension.) +-- If the map E -> E^* tensor L never has rank less than k, then S is isomorphic +-- to the actual degeneracy locus S_0. +------------------------------------------------------------ + +skewDegeneracyLocus = method(TypicalValue => AbstractVariety) + +skewDegeneracyLocus(ZZ,AbstractSheaf) := (k, E) -> ( + X := variety E; + skewDegeneracyLocus(k, E, OO_X) + ) + +skewDegeneracyLocus(ZZ,AbstractSheaf,AbstractSheaf) := (k, E, L) -> ( + X := variety E; + if X =!= variety L then error "expected bundles on the same variety"; + if rank L != 1 then error "the second sheaf should be a line bundle"; + e := rank E; + if not even k then error "the rank bound should be even"; + G := flagBundle({e-k,k}, E); + S := G.Bundles#0; + Q := G.Bundles#1; + p := G/X; + sectionZeroLocus( + ((dual(Q) ** dual(S)) ** (p^*L)) ++ (exteriorPower(2,dual(S)) ** (p^*L)) + ) + ) +------------------------------------------------------------ +-- Helper: Schur class s_lambda(F). +-- +-- This is the Schur polynomial in the Chern classes of F: +-- +-- s_lambda(F) = det(c_{lambda_i + j - i}(F)). +-- +-- It is different from ch(schur(lambda,F)). +------------------------------------------------------------ + +schurClass = (lambda,F) -> ( + X := variety F; + A := intersectionRing X; + l := #lambda; + + c := i -> ( + if i == 0 then 1_A + else if i < 0 then 0_A + else chern(i,F) + ); + + det matrix apply(l, i -> apply(l, j -> c(lambda#i + j - i))) + ) + +------------------------------------------------------------ +-- Symmetric degeneracy class on the original base. +-- This is the Harris--Tu closed formula, Theorems 1 and 10. +-- Convention: a general symmetric map E -> E^* tensor L. +------------------------------------------------------------ + +symmetricDegeneracyLocus2 = method(TypicalValue => RingElement) + +symmetricDegeneracyLocus2(ZZ,AbstractSheaf) := (k,E) -> ( + X := variety E; + symmetricDegeneracyLocus2(k,E,OO_X) + ) + +symmetricDegeneracyLocus2(ZZ,AbstractSheaf,AbstractSheaf) := (k,E,L) -> ( + X := variety E; + if X =!= variety L then error "expected bundles on the same variety"; + if rank L != 1 then error "the second sheaf should be a line bundle"; + n := rank E; + if k < 0 or k > n then error "the rank bound should be between 0 and the rank of the first bundle"; + + d := n-k; + codim := d*(d+1)//2; + + F := dual(E) ** (L ^** (1/2)); + + if d == 0 then 1_(intersectionRing X) + else part(codim, (2^d) * schurClass(reverse toList(1..d), F)) + ) + +------------------------------------------------------------ +-- Skew-symmetric degeneracy class on the original base. +-- This is the Harris--Tu closed formula, Theorems 8 and 10. +-- Convention: a general skew-symmetric map E -> E^* tensor L. +------------------------------------------------------------ + +skewDegeneracyLocus2 = method(TypicalValue => RingElement) + +skewDegeneracyLocus2(ZZ,AbstractSheaf) := (k,E) -> ( + X := variety E; + skewDegeneracyLocus2(k,E,OO_X) + ) + +skewDegeneracyLocus2(ZZ,AbstractSheaf,AbstractSheaf) := (k,E,L) -> ( + X := variety E; + if X =!= variety L then error "expected bundles on the same variety"; + if rank L != 1 then error "the second sheaf should be a line bundle"; + n := rank E; + if k < 0 or k > n then error "the rank bound should be between 0 and the rank of the first bundle"; + if not even k then error "the rank bound should be even"; + + d := n-k; + codim := d*(d-1)//2; + + F := dual(E) ** (L ^** (1/2)); + + if d <= 1 then 1_(intersectionRing X) + else part(codim, schurClass(reverse toList(1..d-1), F)) + ) + +------------------------------------------------------------ +--kernel bundle for a symmetric map +------------------------------------------------------------ +symmetricKernelBundle = method(TypicalValue => AbstractSheaf) + +symmetricKernelBundle(ZZ,AbstractSheaf) := (k,E) -> ( + X := variety E; + symmetricKernelBundle(k,E,OO_X) + ) + +symmetricKernelBundle(ZZ,AbstractSheaf,AbstractSheaf) := (k,E,L) -> ( + X := variety E; + Z := symmetricDegeneracyLocus(k,E,L); + G := target Z.StructureMap; + S := first G.Bundles; + K := (Z/G)^* S; + Z.StructureMap = Z/X; + K + ) + +------------------------------------------------------------ +--kernel bundle for a skew-symmetric map +------------------------------------------------------------ + +skewKernelBundle = method(TypicalValue => AbstractSheaf) + +skewKernelBundle(ZZ,AbstractSheaf) := (k,E) -> ( + X := variety E; + skewKernelBundle(k,E,OO_X) + ) + +skewKernelBundle(ZZ,AbstractSheaf,AbstractSheaf) := (k,E,L) -> ( + X := variety E; + Z := skewDegeneracyLocus(k,E,L); + G := target Z.StructureMap; + S := first G.Bundles; + K := (Z/G)^* S; + Z.StructureMap = Z/X; + K + ) + +------------------------------------------------------------ +--trivial weighted projective bundle over X +------------------------------------------------------------ +weightedProjectiveBundle = method( + Options => {VariableName => "h"}, + TypicalValue => AbstractVariety + ) + +weightedProjectiveBundle(List,AbstractVariety) := opts -> (weights,X) -> ( + if #weights == 0 then error "expected a nonempty list of weights"; + if not all(weights, a -> instance(a,ZZ) and a > 0) + then error "expected positive integer weights"; + + n := #weights - 1; + prodW := product weights; + + Hsym := if instance(opts.VariableName,String) + then getSymbol opts.VariableName + else opts.VariableName; + + S := intersectionRing X; + + -- A^*(X)[h]/(h^(n+1)). + U := S(monoid [{Hsym}, + Degrees => {1}, + Join => false, + DegreeRank => 1]); + + H := U_0; + A := U / ideal(H^(n+1)); + h := A_0; + + WP := abstractVariety(dim X + n,A); + + WP.Base = X; + WP.Weights = weights; + + -- Pullback from the base. + pullback := method(); + pullback S := r -> promote(r,A); + pullback ZZ := a -> promote(a,A); + pullback QQ := a -> promote(a,A); + + -- Pushforward: pi_*(alpha H^n) = alpha/(a_0...a_n). + pushforward := method(); + pushforward A := f -> promote(coefficient(h^n,f),S) / prodW; + pushforward ZZ := a -> pushforward promote(a,A); + pushforward QQ := a -> pushforward promote(a,A); + + Trel := sum(weights, a -> OO_WP(a*h)) - OO_WP; + + p := abstractVarietyMap(X,WP,pullback,pushforward, + TangentBundle => Trel); + + WP.StructureMap = p; + + -- Integration on WP is integration after pushing forward to X. + integral A := f -> integral (p_* f); + + WP.TautologicalLineBundle = + abstractSheaf(WP, Rank => 1, ChernClass => 1_A + h); + + if X.?TangentBundle + then WP.TangentBundle = Trel + p^*(tangentBundle X) + else WP.TangentBundle = Trel; + + use WP; + WP + ) + +weightedProjectiveBundle List := opts -> weights -> ( + weightedProjectiveBundle(weights,point,VariableName => opts.VariableName) + ) + +WPS = method( + Options => {VariableName => "h"}, + TypicalValue => AbstractVariety + ) + +WPS List := opts -> weights -> ( + weightedProjectiveBundle(weights,point,VariableName => opts.VariableName) + ) + + + kernelBundle = method(TypicalValue => AbstractVariety) kernelBundle(ZZ,AbstractSheaf,AbstractSheaf) := (k,B,A) -> ( X := variety A; diff --git a/M2/Macaulay2/packages/Schubert2/demo3.m2 b/M2/Macaulay2/packages/Schubert2/demo3.m2 index 385624601f4..181384e09f4 100644 --- a/M2/Macaulay2/packages/Schubert2/demo3.m2 +++ b/M2/Macaulay2/packages/Schubert2/demo3.m2 @@ -17,3 +17,43 @@ assert( b == t ) d = flatten for i from 0 to 4 list for j from 0 to i list F_{i,j} assert( d == t ) +clearAll + +W = abstractProjectiveSpace 7; +h = chern_1(OO_W(1)); +assert(integral(h^7) == 1) +E = 4*OO_W ++ OO_W(-1); +L = OO_W(1); +classY = skewDegeneracyLocus2(2,E,L); +assert(integral(h^4*classY) == 13) +Y = skewDegeneracyLocus(2,E,L); +assert(chi(tangentBundle Y) == -80) + +clearAll + +W = WPS {1,1,1,1,1,1,2,2} +h = chern_1(OO_W(1)); +assert(integral(h^7) == 1/4) +E = 3*OO_W ++ 2*OO_W(-1); +L = OO_W(1); +classY = skewDegeneracyLocus2(2,E,L); +assert(integral(h^4*classY) == 7) +Y = skewDegeneracyLocus(2,E,L); +assert(chi(tangentBundle Y) == -94) +-- Y is a smooth 4-fold that avoids the points of W with nontrivial stabilizer group, +-- and so "chi" gives meaningful answers on Y. + +clearAll + +W = abstractProjectiveSpace 9; +h = chern_1(OO_W(1)); +E = 5*OO_W; +L = OO_W(1); +classY = symmetricDegeneracyLocus2(2,E,L); +assert(integral(h^3*classY) == 35) +Y = symmetricDegeneracyLocus(2,E,L); +assert(chern_1(tangentBundle Y) == 0) +-- That is, Y is a Calabi-Yau 3-fold of degree 35 in P^9. + +clearAll + diff --git a/M2/Macaulay2/packages/Schubert2/doc.m2 b/M2/Macaulay2/packages/Schubert2/doc.m2 index b015588e809..a7721faff1a 100644 --- a/M2/Macaulay2/packages/Schubert2/doc.m2 +++ b/M2/Macaulay2/packages/Schubert2/doc.m2 @@ -10,14 +10,16 @@ Node variety"}@ is not given by equations. Instead, one gives its graded intersection ring of algebraic cycle classes modulo numerical equivalence (tensored with the rational numbers or perhaps with some algebra over the rational numbers), its dimension, a method for counting the number of points in a cycle class - of dimension zero (integration), and the Chern class of its tangent bundle (if + of dimension zero (integration), and the Chern character of its tangent bundle (if known). The intersection ring is represented as a {\em Macaulay2} @ TO2{Ring,"ring"} @, and its elements are {\em - Macaulay2} @ TO2{RingElement,"ring elements"} @. + Macaulay2} @ TO2{RingElement,"ring elements"} @. (More precisely, the intersection ring used by Schubert2 may be + only the subalgebra of the Chow ring tensored with the rationals generated by some explicit classes.) An @TO2{AbstractSheaf,"abstract sheaf"}@ on an abstract variety is represented by an object of class - @ TO AbstractSheaf @ that contains the total Chern character of the sheaf. It should be thought of as an element of + @ TO AbstractSheaf @ that contains the total Chern character of the sheaf in the intersection ring. + It should be thought of as an element of the Grothendieck ring of the variety tensored with the rational numbers, which, by the - Grothendieck-Riemann-Roch theorem, is isomorphic to the intersection ring; the isomorphism is provided + Grothendieck-Riemann-Roch theorem, is isomorphic to the Chow ring tensored with the rationals; the isomorphism is provided by the Chern character. An @TO2{AbstractVarietyMap,"abstract variety map"}@ is a map between abstract varieties: the information encoded @@ -28,14 +30,18 @@ Node unknown integers in formulas, along with variables of positive degree that can be used as Chern classes of generic abstract sheaves. - This package is inspired by @ HREF{"http://stromme.uib.no/home/schubert/", "schubert"} @, which was written by - @ HREF{"http://www.math.uiuc.edu/~katz/", "Sheldon Katz"} @ and @ HREF{"http://stromme.uib.no/", "Stein A. Strømme"} @. + This package is inspired by @ HREF{"https://jmokland.github.io/schubert/", "schubert"} @, which was written by + @ HREF{"https://katzs.web.illinois.edu/", "Sheldon Katz"} @ + and @ HREF{"https://mathshistory.st-andrews.ac.uk/Biographies/Stromme/", "Stein A. Strømme"} @. The theory behind the computations of intersection rings of flag bundles has been made rigorous in the paper {\em Computations in intersection rings of flag bundles} by Grayson, Seceleanu, and Stillman: see @ HREF {"http://arxiv.org/abs/1205.4190","arXiv:1205.4190"} @. The paper also treats the case of isotropic flag bundles, with the corresponding algorithms appearing here for the first time. + In 2026, functions for weighted projective spaces and symmetric and skew-symmetric degeneracy loci + were added. + Subnodes "Lines on hypersurfaces" "Conics on a quintic threefold" @@ -75,7 +81,6 @@ Node LI {"make an easy way to specify maps from a variety to a flag bundle, by specifying where all (but one) of the tautological subquotients go"}, LI {"make it possible to call the toric package"}, - LI {"add the blow up of a subvariety with known normal bundle and known restriction function"}, LI {"add a function that goes from the Hilbert series of a sheaf on projective space to the Chern class"}, LI {"add knowledge of the intersection ring of an abelian variety, in particular of the Jacobian of a curve"}, LI {"add knowledge of the tautological ring (as far as it's known!) of M_(g,n)"}, @@ -394,7 +399,7 @@ Node S : AbstractVariety if omitted, then @ TO point @ is used for it VariableName => Symbol - the symbol to use for the variable representing the first Chern class of the tautological line bundle on the resulting projective space + the symbol to use for the variable representing the first Chern class of the tautological line bundle $O(1)$ on the resulting projective space Outputs : the projective space of rank 1 quotient bundles of the trivial bundle of rank $n+1$ on @@ -449,7 +454,7 @@ Node S : AbstractVariety if omitted, then @ TO point @ is used for it VariableName => Symbol - the symbol to use for the variable representing the first Chern class of the tautological line bundle on the resulting projective space + the symbol to use for the variable representing the first Chern class of the tautological line bundle $O(1)$ on the resulting projective space Outputs : the projective space of rank 1 subbundles of the trivial bundle of rank $n+1$ on @@ -464,7 +469,7 @@ Node todd P chi OO_P(3) Text - The name is quite long. Here is one way to make it shorter + The name is quite long. Here is one way to make it shorter. Example PP = abstractProjectiveSpace X = PP 4 @@ -1033,7 +1038,7 @@ Node a symbol used internally as a key Description Text - If $X$ is an abstract variety and its tautological line bundle has already been built, + If $X$ is an abstract variety and its tautological line bundle {\tt OO_X(1)} has already been built, it is stored in {\tt X.TautologicalLineBundle}. However, because building this bundle can be computationally intensive, it is often not built unless it is requested by @TO tautologicalLineBundle@. The programmer is warned not to make direct reference to this @@ -1344,6 +1349,89 @@ Node bundles X/rank Caveat Perhaps this should be merged with @ TO abstractProjectiveSpace @. (The optional arguments are slightly different.) + + +Node + Key + WPS + (WPS,List) + [WPS,VariableName] + weightedProjectiveBundle + (weightedProjectiveBundle,List,AbstractVariety) + (weightedProjectiveBundle,List) + [weightedProjectiveBundle,VariableName] + Headline + make a weighted projective space, as an abstract variety + Description + Text + The function WPS {a_0,...,a_n} yields the weighted projective space + $\PP^n(a_0,\ldots,a_n)$, as an abstract variety. More generally, weightedProjectiveBundle({a_0,...,a_n},X) + is the product $\PP^n(a_0,\ldots,a_n)\times X$, viewed as a bundle over X. + Synopsis + Usage + WPS weights + Inputs + weights : List + VariableName => Thing + Outputs + : + the weighted projective space $\PP^n(a_0,\ldots,a_n)$, + given a list of positive integer weights $\{ a_0,\ldots,a_n\}$. + Description + Text + A weighted projective space is viewed as a smooth Deligne-Mumford stack, not as a singular variety. + Explicitly, $W = \PP^n(a_0,\ldots,a_n)$ is the quotient stack $[(A^{n+1}-0)/G_m]$, + where the multiplicative group $G_m$ acts on affine space by $t(x_0,\ldots,x_n)=(t^{a_0}x_0,\ldots,t^{a_n}x_n)$. + Since $W$ is smooth, the tangent bundle $TW$ is a vector bundle on $W$, and Schubert2 can make computations + with its Chern classes. Explicitly, the Euler sequence for $W$ has the form + $$0\to O_W\to \oplus_{i=0}^n O_W(a_i)\to TW\to 0.$$ + The intersection ring of $W$ is $\mathbf{Q}[h]/(h^{n+1})$, where $h = c_1(O_W(1))$, + as with the usual projective space; but the degree of the zero-cycle $h^n$ is $1/(a_0\ldots a_n)$ rather than 1. + Text + Note that the Schubert2 function @TO2 {(chi,AbstractSheaf),"chi"} @ + uses the Hirzebruch-Riemann-Roch formula to compute Euler characteristics + of vector bundles, and that gives meaningless answers on a stack such as $W$. + Likewise for @TO2 {(euler,AbstractVariety),"euler W"} @. However, functions such + as @TO sectionZeroLocus@, @TO degeneracyLocus@, and @TO skewDegeneracyLocus@ can + yield subvarieties $Y$ of $W$ that miss the points with nontrivial stabilizer group, + and then @TO2 {(chi,AbstractSheaf),"chi"} @ on $Y$ gives meaningful results. + Text + For example, consider the weighted projective space $W = \PP^7(1^7,2)$. + We can define + a smooth Fano 4-fold $Y$ in $W$ by 5 Pfaffian equations (the locus where a general skew-symmetric map $E\to E^*\otimes L$ + has rank at most 2, in terms of the vector bundles below). We compute that $Y$ has degree $(-K_Y)^4 = c_1(O_Y(1))^4 = 10. + Here $Y$ misses the point + of $W$ with nontrivial stabilizer; so we can use Schubert2 to compute that $\chi(Y, TY) = -81$. + Example + W = WPS {1,1,1,1,1,1,1,2} + h = chern_1(OO_W(1)); + integral(h^7) + E = 4*OO_W(-1) ++ OO_W; + L = OO_W; + Y = skewDegeneracyLocus(2,E,L) + classY = (Y/W)_*(1); + integral(h^4*classY) + chi(tangentBundle Y) + Synopsis + Usage + weightedProjectiveBundle weights + weightedProjectiveBundle(weights,X) + Inputs + weights : List + X : AbstractVariety + VariableName => Thing + Outputs + : + the product $W = \PP^n(a_0,\ldots,a_n) \times X$, + given a list of positive integer weights $\{ a_0,\ldots,a_n\}$. + If $X$ is omitted, then @ TO point @ is used as the base. The projection morphism $W\to X$ + is given in Schubert2 by the notation $W/X$ (with whatever names you choose for these varieties). + SeeAlso + projectiveBundle + abstractProjectiveSpace + + + -------- Node Key @@ -2087,11 +2175,15 @@ Node the {\tt n}-th Cartesian power of {\tt F}, which amounts to multiplication by {\tt n} in the Grothendieck group Description Text - Maybe we should remove this operation, in favor of @ TO (symbol *, ZZ, AbstractSheaf) @. + Maybe we should remove this operation, in favor of @ TO (symbol *, ZZ, AbstractSheaf) @. As indicated below, + Schubert2 interprets (OO_X(1))^10 as a vector bundle of rank 10, whereas OO_X(1)^10 is the line bundle OO_X(10). + So it is probably wiser to write 10*OO_X(1) when you want the bundle of rank 10. Example X = abstractProjectiveSpace 1 F = OO_X(1) + F^10 chi F^10 + OO_X(1)^10 -------- Node Key @@ -2137,7 +2229,7 @@ Node : which depends on the degree of {\tt n}. In the case where {\tt n} has degree 0, the sheaf returned is the tensor product of {\tt F} with - the {\tt n}-th (tensor) power of the tautological line bundle on the variety of {\tt F}. + the {\tt n}-th (tensor) power of the tautological line bundle $O_X(1)$ on the variety $X$ of {\tt F}. In the case where {\tt n} has degree 1, the sheaf returned is the tensor product of {\tt F} with the line bundle whose first Chern class is {\tt n}. Description @@ -2550,6 +2642,8 @@ Node Key (sectionZeroLocus,AbstractSheaf) sectionZeroLocus + Headline + the zero locus of a general section of a vector bundle, as an abstract variety Usage sectionZeroLocus F Inputs @@ -2558,6 +2652,8 @@ Node : the zero locus of a generic section of {\tt F} Description + Text + If you just want the cycle class of the zero locus, that can be obtained by the function @TO2 {(ctop,AbstractSheaf),"ctop"} @. Example X = base(5, n, Bundle => (E,3,c), Bundle => (T,5,t), Bundle => (L,1,{h})) X.TangentBundle = T @@ -2573,6 +2669,8 @@ Node Key (degeneracyLocus2,ZZ,AbstractSheaf,AbstractSheaf) degeneracyLocus2 + Headline + the class of a rank locus for a general map between vector bundles Usage degeneracyLocus2(k,B,A) Inputs @@ -2583,6 +2681,12 @@ Node : the cycle class of the locus where the rank of a generic map from {\tt A} to {\tt B} is at most {\tt k} Description + Text + It is assumed that there are enough such maps that the locus has the expected dimension. Namely, + in terms of $a := \text{rank}(A)$ and $b := \text{rank}(B)$, the class is in codimension $(a-k)(b-k)$. + The formula for this class was given by Porteous. + The degeneracy locus as an abstract variety + can be obtained by @TO degeneracyLocus@. Example X = base(5, Bundle => (L,1,{l}), Bundle => (M,1,{m}), Bundle => (N,1,{n})) degeneracyLocus2(0,L+M+N,OO_X) @@ -2595,10 +2699,19 @@ Node degeneracyLocus2(1,B,A) degeneracyLocus2(2,B,A) degeneracyLocus2(3,B,A) + SeeAlso + degeneracyLocus + kernelBundle + symmetricDegeneracyLocus2 + skewDegeneracyLocus2 + ctop + Node Key (degeneracyLocus,ZZ,AbstractSheaf,AbstractSheaf) degeneracyLocus + Headline + a rank locus for a general map between vector bundles, as an abstract variety Usage degeneracyLocus(k,B,A) Inputs @@ -2609,15 +2722,34 @@ Node : the locus where the rank of a generic map from {\tt A} to {\tt B} is at most {\tt k} Description + Text + More precisely, the function yields an abstract variety $S$ that is a resolution of singularities of the locus $S_0$ + where a general symmetric map $A \to B$ has rank at most $k$, + following Fulton's Intersection Theory, section 14.4. + Text + It is assumed that there are enough such maps that $S_0$ has the expected dimension. Namely, + in terms of $a := \text{rank}(A)$ and $b := \text{rank}(B)$, this locus is in codimension $(a-k)(b-k)$. + If the map $A \to B$ never has rank less than $k$ on the base variety $X$, then $S$ is isomorphic + to the actual degeneracy locus $S_0$. The class of the degeneracy locus + in the intersection ring of $X$ can be obtained by @TO degeneracyLocus2@. Example X = base(5, Bundle => (A,3,a), Bundle => (B,3,b)) Z = degeneracyLocus(2,B,A) Z/X (Z/X)_* 1 + SeeAlso + degeneracyLocus2 + kernelBundle + symmetricDegeneracyLocus + skewDegeneracyLocus + sectionZeroLocus + Node Key (kernelBundle,ZZ,AbstractSheaf,AbstractSheaf) kernelBundle + Headline + the kernel bundle on a rank locus of a general map between vector bundles Usage kernelBundle(k,B,A) Inputs @@ -2626,9 +2758,14 @@ Node A: Outputs : - the kernel bundle on the locus where the rank of a generic map from {\tt A} to {\tt B} is at most {\tt k}, assuming + the kernel bundle on the locus where the rank of a general map from {\tt A} to {\tt B} is at most {\tt k}, assuming that the rank doesn't drop further Description + Text + More precisely, the function yields a vector bundle of rank $\rank(A)-k$ on + @TO2{(degeneracyLocus,ZZ,AbstractSheaf,AbstractSheaf),"degeneracyLocus(k,B,A)"}@, + which is a resolution of singularities of the locus $S_0$ + where a general map $A \to B$ has rank at most $k$. Example X = base(5, Bundle => (A,3,a), Bundle => (B,3,b)) E = kernelBundle(2,B,A) @@ -2645,6 +2782,305 @@ Node W = variety F j = W/X j_* chern_1 F + SeeAlso + degeneracyLocus + symmetricKernelBundle + skewKernelBundle + +Node + Key + (symmetricDegeneracyLocus2,ZZ,AbstractSheaf,AbstractSheaf) + (symmetricDegeneracyLocus2,ZZ,AbstractSheaf) + symmetricDegeneracyLocus2 + Headline + the class of a rank locus for a general symmetric map + Usage + symmetricDegeneracyLocus2(k,E,L) + Inputs + k: + E: + L: + Outputs + : + the cycle class of the locus where the rank of a general symmetric map from $E$ to $E^*\otimes L$ is at most $k$. + Description + Text + The function yields the class in the intersection ring of the locus + where a general symmetric map $E \to E^*\otimes L$ has rank at most $k$. + Here $E$ is a vector bundle and $L$ is a line bundle, on an abstract variety $X$. + If $L$ is omitted, it is taken to be the trivial line bundle. + Text + It is assumed that there are enough such maps that the locus has the expected dimension. Namely, + in terms of $d := \text{rank}(E)-k$, the class is in codimension $\binom{d+1}{2}$. + The formula for this class was given by Harris-Tu and J\'{o}zefiak-Lascoux-Pragacz. + The degeneracy locus as an abstract variety + can be obtained by @TO symmetricDegeneracyLocus@. + Text + For example, consider the locus where a $3\times 3$ symmetric matrix (up to scalars) + has rank at most 1. + Geometrically, this is the Veronese embedding of $\PP^2$ in $\PP^5$ via the line bundle $O(2)$, + so it is a surface of degree 4 in $\PP^5$. Let us check that. + Example + X = abstractProjectiveSpace 5; + E = 3*OO_X; + L = OO_X(1); + h = chern_1(OO_X(1)); + locus1 = symmetricDegeneracyLocus2(1,E,L); + integral(h^2*locus1) + Text + Next, consider the locus where a $3\times 3$ symmetric matrix (up to scalars) has rank at most 2. + This is given by the vanishing of the determinant, so it is a cubic 4-fold in $\PP^5$. + Let us check that. + Example + locus2 = symmetricDegeneracyLocus2(2,E,L); + integral(h^4*locus2) + SeeAlso + symmetricDegeneracyLocus + degeneracyLocus2 + skewDegeneracyLocus2 + ctop + +Node + Key + (symmetricDegeneracyLocus,ZZ,AbstractSheaf,AbstractSheaf) + (symmetricDegeneracyLocus,ZZ,AbstractSheaf) + symmetricDegeneracyLocus + Headline + a rank locus for a general symmetric map, as an abstract variety + Usage + symmetricDegeneracyLocus(k,E,L) + Inputs + k: + E: + L: + Outputs + : + the locus where the rank of a general symmetric map from $E$ to $E^*\otimes L$ is at most $k$. + Description + Text + More precisely, the function yields an abstract variety $S$ that is a resolution of singularities of the locus $S_0$ + where a general symmetric map $E \to E^*\otimes L$ has rank at most $k$, + following Fulton's Intersection Theory, Example 14.4.11. + Here $E$ is a vector bundle and $L$ is a line bundle, on an abstract variety $X$. + If $L$ is omitted, it is taken to be the trivial line bundle. + Text + It is assumed that there are enough such maps that $S_0$ has the expected dimension. Namely, + in terms of $d := \text{rank}(E)-k$, this locus is in codimension $\binom{d+1}{2}$. + If the map $E \to E^* \otimes L$ never has rank less than $k$ on $X$, then $S$ is isomorphic + to the actual degeneracy locus $S_0$. The class of the degeneracy locus + in the intersection ring of $X$ can be obtained by @TO symmetricDegeneracyLocus2@. + Text + For example, consider the locus $W$ where a $3\times 3$ symmetric matrix (up to scalars) + has rank at most 1. + Geometrically, this should be the Veronese embedding of $\PP^2$ in $\PP^5$ via the line bundle $O(2)$, + which is a surface of degree 4 in $\PP^5$. Let us check that, and also + that $\chi(\PP^2,T\PP^2) = 8$. + Example + X = abstractProjectiveSpace 5; + E = 3*OO_X; + L = OO_X(1); + h = chern_1(OO_X(1)); + S = symmetricDegeneracyLocus(1,E,L) + chi(tangentBundle S) + f = S/X + locus1 = f_*(1); + integral(h^2*locus1) + SeeAlso + symmetricKernelBundle + symmetricDegeneracyLocus2 + degeneracyLocus + skewDegeneracyLocus + sectionZeroLocus + +Node + Key + (symmetricKernelBundle,ZZ,AbstractSheaf,AbstractSheaf) + symmetricKernelBundle + Headline + the kernel bundle on a rank locus of a general symmetric map + Usage + symmetricKernelBundle(k,E,L) + Inputs + k: + E: + L: + Outputs + : + the kernel bundle on the locus where the rank of a general symmetric map from $E$ to $E^*\otimes L$ is $k$ + Description + Text + More precisely, the function yields a vector bundle of rank $\rank(E)-k$ on + @TO2{(symmetricDegeneracyLocus,ZZ,AbstractSheaf,AbstractSheaf),"symmetricDegeneracyLocus(k,E,L)"}@, + which is a resolution of singularities of the locus $S_0$ + where a general symmetric map $E \to E^*\otimes L$ has rank at most $k$. + Here $E$ is a vector bundle and $L$ is a line bundle, on an abstract variety $X$. + If $L$ is omitted, it is taken to be the trivial line bundle. + Text + For example, consider the locus $W$ where a $3\times 3$ symmetric matrix (up to scalars) + has rank at most 1. + Geometrically, this is the Veronese embedding of $\PP^2$ in $\PP^5$ via the line bundle $O(2)$, + which is a surface of degree 4 in $\PP^5$. Viewing this surface as $\PP^2$, the kernel bundle $K$ + is the kernel of the natural map $O_{\PP^2}^3\to O_{\PP^2}(1)$ on $\PP^2$. + Let us check that $\chi(\PP^2,K)=0$ and $\chi(\PP^2,K^*)=3$. + Example + X = abstractProjectiveSpace 5; + E = 3*OO_X; + L = OO_X(1); + h = chern_1(OO_X(1)); + K = symmetricKernelBundle(1,E,L) + chi(K) + chi(dual(K)) + SeeAlso + kernelBundle + skewKernelBundle + symmetricDegeneracyLocus + +Node + Key + (skewDegeneracyLocus2,ZZ,AbstractSheaf,AbstractSheaf) + (skewDegeneracyLocus2,ZZ,AbstractSheaf) + skewDegeneracyLocus2 + Headline + the class of a rank locus for a general skew-symmetric map + Usage + skewDegeneracyLocus2(k,E,L) + Inputs + k: + E: + L: + Outputs + : + the cycle class of the locus where the rank of a generic skew-symmetric map from $E$ to $E^*\otimes L$ is at most $k$. + Description + Text + In other words, this is a locus defined by Pfaffian equations. + The function yields the class in the intersection ring of the locus + where a general skew-symmetric map $E \to E^*\otimes L$ has rank at most $k$. + The number $k$ must be even. Here $E$ is a vector bundle and $L$ is a line bundle, on an abstract variety $X$. + If $L$ is omitted, it is taken to be the trivial line bundle. + Text + It is assumed that there are enough such maps that the locus has the expected dimension. Namely, + in terms of $d := \text{rank}(E)-k$, the class is in codimension $\binom{d}{2}$. + The formula for this class was given by Harris-Tu and J\'{o}zefiak-Lascoux-Pragacz. + The degeneracy locus as an abstract variety + can be obtained by @TO skewDegeneracyLocus@. + Text + For example, consider the locus where a $6\times 6$ skew-symmetric matrix (up to scalars) + has rank less than 6 (hence at most 4). This is the cubic hypersurface in $\PP^{14}$ defined by the Pfaffian. + Let us check that. + Example + X = abstractProjectiveSpace 14; + E = 6*OO_X; + L = OO_X(1); + h = chern_1(OO_X(1)); + locus4 = skewDegeneracyLocus2(4,E,L); + integral(h^(13)*locus4) + Text + Next, consider the locus where a $6\times 6$ skew-symmetric matrix (up to scalars) has rank at most 2. + This is the Grassmannian $\text{Gr}(2,6)$ of lines in $\PP^5$; it is an 8-fold of degree 14 in $\PP^{14}$. + Let us check that. + Example + locus2 = skewDegeneracyLocus2(2,E,L); + integral(h^8*locus2) + SeeAlso + skewDegeneracyLocus + degeneracyLocus2 + symmetricDegeneracyLocus2 + ctop + +Node + Key + (skewDegeneracyLocus,ZZ,AbstractSheaf,AbstractSheaf) + skewDegeneracyLocus + Headline + a rank locus for a general skew-symmetric map, as an abstract variety + Usage + skewDegeneracyLocus(k,E,L) + Inputs + k: + E: + L: + Outputs + : + the locus where the rank of a generic skew-symmetric map from $E$ to $E^*\otimes L$ is at most $k$. + Description + Text + In other words, this is a locus defined by Pfaffian equations. + More precisely, the function yields an abstract variety $S$ that is a resolution of singularities of the locus $S_0$ + where a general skew-symmetric map $E \to E^*\otimes L$ has rank at most $k$, + following Fulton's Intersection Theory, Example 14.4.11. + The number $k$ must be even. Here $E$ is a vector bundle and $L$ is a line bundle, on an abstract variety $X$. + If $L$ is omitted, it is taken to be the trivial line bundle. + Text + It is assumed that there are enough such maps that $S_0$ has the expected dimension. Namely, + in terms of $d := \text{rank}(E)-k$, this locus is in codimension $\binom{d}{2}$. + If the map $E \to E^* \otimes L$ never has rank less than $k$ on $X$, then $S$ is isomorphic + to the actual degeneracy locus $S_0$. + The class of the degeneracy locus + in the intersection ring of $X$ can be obtained by @TO skewDegeneracyLocus2@. + Text + For example, consider the locus $W$ where a $6\times 6$ skew-symmetric matrix (up to scalars) + has rank at most 2. + This is the Grassmannian $\text{Gr}(2,6)$ of lines in $\PP^5$; it is an 8-fold of degree 14 in $\PP^{14}$. + Let us check this, and also that $\chi(\text{Gr}(2,6),T\text{Gr}(2,6)) = 35$. + Example + X = abstractProjectiveSpace 14; + E = 6*OO_X; + L = OO_X(1); + h = chern_1(OO_X(1)); + W = skewDegeneracyLocus(2,E,L) + chi(tangentBundle W) + f = W/X + locus2 = f_*(1); + integral(h^8*locus2) + SeeAlso + skewKernelBundle + skewDegeneracyLocus2 + degeneracyLocus + symmetricDegeneracyLocus + sectionZeroLocus + +Node + Key + (skewKernelBundle,ZZ,AbstractSheaf,AbstractSheaf) + skewKernelBundle + Headline + the kernel bundle on a rank locus of a general skew-symmetric map + Usage + skewKernelBundle(k,E,L) + Inputs + k: + E: + L: + Outputs + : + the kernel bundle on the locus where the rank of a general skew-symmetric map from $E$ to $E^*\otimes L$ is $k$ + Description + Text + More precisely, the function yields a vector bundle of rank $\rank(E)-k$ on + @TO2{(skewDegeneracyLocus,ZZ,AbstractSheaf,AbstractSheaf),"skewDegeneracyLocus(k,E,L)"}@, + which is a resolution of singularities of the locus $S_0$ + where a general skew-symmetric map $E \to E^*\otimes L$ has rank at most $k$. The number $k$ must be even. + Here $E$ is a vector bundle and $L$ is a line bundle, on an abstract variety $X$. + If $L$ is omitted, it is taken to be the trivial line bundle. + Text + For example, consider the locus where a $6\times 6$ skew-symmetric matrix (up to scalars) + has rank at most 2. + This is the Grassmannian $W = \text{Gr}(2,6)$ of lines in $\PP^5$. The kernel bundle $K$ is the dual of the rank-4 + quotient bundle $Q$, $0\to S\to O_W^6\to Q\to 0$ over the Grassmannian. Let us check that $\chi(W, K)=0$ + and $\chi(W,dual(K))=6$. + Example + X = abstractProjectiveSpace 14; + E = 6*OO_X; + L = OO_X(1); + K = skewKernelBundle(2,E,L) + chi(K) + chi(dual(K)) + SeeAlso + kernelBundle + symmetricKernelBundle + skewDegeneracyLocus + ------- Node Key @@ -3455,7 +3891,7 @@ Node tautologicalLineBundle X Description Text - Returns the tautological line bundle of the variety $X$. In the case of a + Returns the tautological line bundle of the variety $X$, also called {\tt OO_X(1)}. In the case of a @TO FlagBundle@, this is the line bundle defining the Pl\"ucker embedding. Used in @TO (symbol SPACE,AbstractSheaf,ZZ)@.