Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement morphisms of elliptic surfaces given by translations #3630

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
c8c525d
Implement morphisms of elliptic surfaces given by translations.
HechtiDerLachs Apr 19, 2024
d4e4777
Remove deprecated code.
HechtiDerLachs Apr 19, 2024
ef54275
Repair method.
HechtiDerLachs Apr 19, 2024
f01816b
Introduce an extra type for strict transforms of ideal sheaves.
HechtiDerLachs Apr 19, 2024
6c728d1
Return identity map for the zero section.
HechtiDerLachs Apr 19, 2024
926f00d
Some tweaks for pushing around divisors.
HechtiDerLachs Apr 19, 2024
657c2e4
Repair doctests in FTheoryTools.
HechtiDerLachs Apr 19, 2024
8970a88
Add some more fancy tests.
HechtiDerLachs Apr 19, 2024
54288df
Repair calls to algebraic lattice.
HechtiDerLachs Apr 19, 2024
979847f
Add cheap_sub_ideal.
HechtiDerLachs Apr 19, 2024
cf253bc
Fix bug.
HechtiDerLachs Apr 19, 2024
8d05ca5
Implement radicals of ideal sheaves.
HechtiDerLachs Apr 22, 2024
3f60cf2
Modify tests so that only all gluings are computed once.
HechtiDerLachs Apr 22, 2024
49f37bf
Take care of is_radical.
HechtiDerLachs Apr 22, 2024
b2b3bf1
Fix bug in produce_object.
HechtiDerLachs Apr 22, 2024
46b616d
Add some check=false.
HechtiDerLachs Apr 22, 2024
b50b7c5
Disable simplification before mapping.
HechtiDerLachs Apr 22, 2024
d0113aa
Disable use of simplify_light.
HechtiDerLachs Apr 22, 2024
eed9258
Fix up maximal_associated points by reverting it to Anne's implementa…
HechtiDerLachs Apr 23, 2024
8644b3f
Introduce poly_complement_equations for PrincipalOpenSubset.
HechtiDerLachs Apr 23, 2024
e2165f9
Overhaul heuristic for simplify_light.
HechtiDerLachs Apr 23, 2024
ba499a3
Use simplify_light again.
HechtiDerLachs Apr 23, 2024
e1dfc52
Rework maximal_associated_points with an internal proof-of-concept me…
HechtiDerLachs Apr 24, 2024
3a2ca7c
Add file for critical loci.
HechtiDerLachs Apr 24, 2024
e9931d1
Fix inheritance of decomposition info.
HechtiDerLachs Apr 24, 2024
6537f47
Add test for internal method.
HechtiDerLachs Apr 24, 2024
2181c3e
Repair pushforward routine.
HechtiDerLachs Apr 24, 2024
fe46fd4
Adjust tests.
HechtiDerLachs Apr 24, 2024
7211ab8
Remove duplicate method definition.
HechtiDerLachs Apr 24, 2024
955902c
Make _maximal_associated_points as fast as the original routine.
HechtiDerLachs Apr 24, 2024
6d4953c
Extend tests.
HechtiDerLachs Apr 24, 2024
906beff
Update tests.
HechtiDerLachs Apr 24, 2024
22d0b76
Address review.
HechtiDerLachs Apr 24, 2024
dc7264f
Take care of the review.
HechtiDerLachs Apr 25, 2024
0d29ace
Disable tests.
HechtiDerLachs Apr 25, 2024
d6e22ec
Add flags for simplification of powers of elements.
HechtiDerLachs Apr 25, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions experimental/Schemes/BlowupMorphism.jl
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,7 @@ For a `BlowupMorphism` ``p : Y → X`` and an `AbsIdealSheaf` ``I`` on ``X`` re
strict transform of ``I`` on ``Y``.
"""
function strict_transform(p::AbsSimpleBlowdownMorphism, I::AbsIdealSheaf)
return StrictTransformIdealSheaf(p, I)
Istrict,_ =_do_transform(p, I, -1)
return Istrict
end
Expand Down Expand Up @@ -892,3 +893,72 @@ function blow_up(m::AbsCoveredScheme, I::AbsIdealSheaf; coordinate_name = "e")
@assert m === scheme(I) "Incompatible scheme and ideal sheaf"
return blow_up(I)
end

########################################################################
# strict transforms of ideal sheaves #
########################################################################

@attributes mutable struct StrictTransformIdealSheaf{SpaceType, OpenType, OutputType,
RestrictionType
} <: AbsIdealSheaf{
SpaceType, OpenType,
OutputType, RestrictionType
}
morphism::AbsSimpleBlowdownMorphism
orig::AbsIdealSheaf
underlying_presheaf::AbsPreSheaf

function StrictTransformIdealSheaf(
f::AbsSimpleBlowdownMorphism,
J::AbsIdealSheaf
)
@assert scheme(J) === codomain(f)
X = domain(f)
Ipre = PreSheafOnScheme(X,
OpenType=AbsAffineScheme, OutputType=Ideal,
RestrictionType=Map,
is_open_func=_is_open_func_for_schemes_without_affine_scheme_open_subscheme(X)
)
I = new{typeof(X), AbsAffineScheme, Ideal, Map}(f, J, Ipre)
return I
end
end

morphism(I::StrictTransformIdealSheaf) = I.morphism
original_ideal_sheaf(I::StrictTransformIdealSheaf) = I.orig
underlying_presheaf(I::StrictTransformIdealSheaf) = I.underlying_presheaf

function produce_object_on_affine_chart(I::StrictTransformIdealSheaf, U::AbsAffineScheme)
f = morphism(I)
X = domain(f)
Y = codomain(f)
J = original_ideal_sheaf(I)
@assert any(x->x===U, affine_charts(X))
E = exceptional_divisor(f)
IE = ideal_sheaf(E)
# We assume that the covering morphism has the default_covering of X as its domain.
simonbrandhorst marked this conversation as resolved.
Show resolved Hide resolved
@assert domain(covering_morphism(f)) === default_covering(X) "not implemented for this covering"
f_loc = covering_morphism(f)[U]
V = codomain(f_loc)
IE_loc = IE(U)
tot = pullback(f_loc)(J(V))
result, _ = saturation_with_index(tot, IE_loc)
return result
end

@attr Bool function is_prime(I::StrictTransformIdealSheaf)
is_subset(original_ideal_sheaf(I), radical(center(morphism(I)))) && return false # It's the unit ideal sheaf in this case
simonbrandhorst marked this conversation as resolved.
Show resolved Hide resolved
return is_prime(original_ideal_sheaf(I))
end

function cheap_sub_ideal(I::StrictTransformIdealSheaf, U::AbsAffineScheme)
II = pullback_ideal_sheaf(I)
return cheap_sub_ideal(II, U)
end

@attr PullbackIdealSheaf function pullback_ideal_sheaf(I::StrictTransformIdealSheaf)
f = morphism(I)
J = original_ideal_sheaf(I)
return PullbackIdealSheaf(f, J)
end

Loading
Loading