Blowups

blowupMethod
  blowup(i::AbstractVarietyMap; symbol::String="e")

Given an inclusion i$ : $ X $\rightarrow$ Y, say, return the blowup of Y along X.

More precisely, return a tuple (Bl, E, j), say, where

  • Bl, an abstract variety, is the blowup,
  • E, an abstract variety, is the exceptional divisor, and
  • j, a map of abstract varieties, is the inclusion of E into Bl.
Note

The resulting maps Bl $\rightarrow$ Y and E $\rightarrow$ X are obtained entering structure_map(Bl) and structure_map(E), respectively.

Examples

Taken from the sage package Chow by Lehn/Sorger:

julia> P2xP2 = abstract_projective_space(2, symbol = "k")*abstract_projective_space(2, symbol = "l")
AbstractVariety of dim 4

julia> P8 = abstract_projective_space(8)
AbstractVariety of dim 8

julia> k, l = gens(P2xP2)
2-element Vector{MPolyQuoRingElem{MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}}}:
 k
 l

julia> Se = map(P2xP2, P8, [k+l])
AbstractVarietyMap from AbstractVariety of dim 4 to AbstractVariety of dim 8

julia> Bl, E, j = blowup(Se)
(AbstractVariety of dim 8, AbstractVariety of dim 7, AbstractVarietyMap from AbstractVariety of dim 7 to AbstractVariety of dim 8)

julia> betti_numbers(Bl)
9-element Vector{Int64}:
 1
 2
 4
 7
 8
 7
 4
 2
 1

The Steiner problem:

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> H = gens(P5)[1]
H

julia> i = map(P2, P5, [2*h])
AbstractVarietyMap from AbstractVariety of dim 2 to AbstractVariety of dim 5

julia> Bl, E, j = blowup(i)
(AbstractVariety of dim 5, AbstractVariety of dim 4, AbstractVarietyMap from AbstractVariety of dim 4 to AbstractVariety of dim 5)

julia> e, HBl = gens(chow_ring(Bl))
2-element Vector{MPolyQuoRingElem{MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}}}:
 e
 H

julia> integral((6*HBl-2*e)^5)
3264
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
blowup_pointsMethod
function blowup_points(X::AbstractVariety, n::Int; symbol::String = "e")

Return the blowup of X at n points.

Examples

julia> P2 = abstract_projective_space(2)
AbstractVariety of dim 2

julia> Bl = blowup_points(P2, 1)
AbstractVariety of dim 2

julia> chow_ring(Bl)
Quotient
  of multivariate polynomial ring in 2 variables over QQ graded by
    e -> [1]
    h -> [1]
  by ideal (e*h, e^2 + h^2)
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source