Skip to content

Commit

Permalink
some changes, ready for demo; note that method 1 for linear series is…
Browse files Browse the repository at this point in the history
… turned off
  • Loading branch information
Devlin-Mallory committed Jun 5, 2024
1 parent 7d51019 commit 8e57922
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 7 deletions.
21 changes: 17 additions & 4 deletions RuledSurfaces.m2
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ export {
"imageOfLinearSeries",
"sectionFromLineBundleQuotient",
"isMultipleOf",
"minimalEmbedding"
"minimalEmbedding",
"checkSurjectivityOnH0",
}

protect symbol Bound
Expand Down Expand Up @@ -80,6 +81,16 @@ findGlobalGeneratorsOfTwist(CoherentSheaf) := E -> (
(i + 1, sheaf basis(i + 1, module E))
)

checkSurjectivityOnH0 = method()
checkSurjectivityOnH0(ProjectiveBundle, WeilDivisor, ZZ) := (PE, D, m) -> checkSurjectivityOnH0(PE, divisorToLineBundle L, m)
checkSurjectivityOnH0(ProjectiveBundle, CoherentSheaf, ZZ) := (PE, L, m) -> (
q := last findGlobalGeneratorsOfTwist sheaf PE;
--TODO: erase the first line below once symmetric powers work better
if m == 1 then isSurjective HH^0(q ** L) else
isSurjective HH^0(symmetricPower(m, q) ** L)
)


multiProjEmbedding = method()
multiProjEmbedding(ProjectiveBundle) := PE -> multiProjEmbedding(sheaf PE)
multiProjEmbedding(CoherentSheaf) := E -> (
Expand Down Expand Up @@ -117,6 +128,7 @@ imageOfLinearSeries(ProjectiveBundle, WeilDivisor, ZZ) := (PE, D, m) -> (
a := generatingDegree PE;
X := variety PE;
xx := (ring X)_0;
--if D divides OO_X(ma), returns OO_X(ma)/D
multipleFlag := isMultipleOf(OO_X(m * a), divisorToLineBundle(D));
E := sheaf PE;
T := multiProjEmbedding(E);
Expand All @@ -125,8 +137,9 @@ imageOfLinearSeries(ProjectiveBundle, WeilDivisor, ZZ) := (PE, D, m) -> (
--phi is phiD x id_P^r
phi := map(T, SD monoid T, vars T | matrix phiD);
T' := prune quotient ker phi;
if instance(multipleFlag, ZZ) then (
--I think the below line is a bit wrong... try it with E = nonsplit rank 2 on elliptic curve
--if instance(multipleFlag, ZZ) then (
if false then (
--I think the below line is wrong...
B := basis({m, 1 - multipleFlag}, T');
b := rank source B;
t := symbol t;
Expand All @@ -148,7 +161,7 @@ minimalEmbedding(CoherentSheaf) := E -> minimalEmbedding projectiveBundle E
minimalEmbedding(ProjectiveBundle) := PE -> (
findGlobalGeneratorsOfTwist PE;
a := generatingDegree PE;
imageOfLinearSeries(PE,OO_(variety PE)(a+1),1)
imageOfLinearSeries(PE, OO_(variety PE)(a + 1), 1)
)

--checks whether L2 divides L1, i.e., if L1 is L2^n for some n
Expand Down
12 changes: 9 additions & 3 deletions RuledSurfaces/RS-tests.m2
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ TEST ///
loadPackage "Divisor"
loadPackage "RuledSurfaces"

S = (ZZ/2)[x,y,z]
S = (ZZ/7)[x,y,z]
I = ideal(x^3+y^3+z^3)
R = S/I
X = Proj R
Expand Down Expand Up @@ -40,11 +40,17 @@ TEST ///
P1 = Proj ZZ/17[x,y]
E = OO_P1^2
E' = E(-1)
E'' = E(-2)
PE = projectiveBundle E
PE' = projectiveBundle E'
PE'' = projectiveBundle E''
imageOfLinearSeries(PE'', OO_P1(2),1)
imageOfLinearSeries(PE'', OO_P1(1),1)
assert instance(try imageOfLinearSeries(PE, OO_P2(1), 1), Nothing)
imageOfLinearSeries(PE,OO_P1(1),1)
imageOfLinearSeries(PE',OO_P1(2),1)
imageOfLinearSeries(PE, OO_P1(1),1)
imageOfLinearSeries(PE', OO_P1(2),1)
imageOfLinearSeries(PE', OO_P1(1),1)
imageOfLinearSeries(PE'', OO_P1(2),1)
q0=E^{0}
q1=E^{1}

Expand Down

0 comments on commit 8e57922

Please sign in to comment.