# Blowups

present_finite_extension_ringMethod
  present_finite_extension_ring(F::Oscar.AffAlgHom)

Given a finite homomorphism F $:$ A $\rightarrow$ B of algebras of type <: Union{MPolyRing, MPolyQuoRing} over a field, return a presentation

$$$A^r \rightarrow A^s\rightarrow B \rightarrow 0$$$

of B as an A-module.

More precisely, return a tuple (gensB, M, pf), say, where

• gensB is a vector of polynomials representing generators for B as an A-module,
• M is an r $\times$ s-matrix of polynomials defining the map $A^r \rightarrow A^s$, and
• pf is a map which gives rise to a section of the map $A^s\rightarrow B$.
Note

The finiteness condition on F is checked by the function.

Examples

julia> R, (x, y, z) = polynomial_ring(QQ, ["x", "y", "z"]);

julia> I = ideal(R, [z^2-y^2*(y+1)])
Ideal generated by
-y^3 - y^2 + z^2

julia> A, _ = quo(R, I)
(Quotient of multivariate polynomial ring by ideal (-y^3 - y^2 + z^2), Map: R -> A)

julia> B, (s,t) =  polynomial_ring(QQ, ["s", "t"]);

julia> F = hom(A,B, [s, t^2-1, t*(t^2-1)])
Ring homomorphism
from quotient of multivariate polynomial ring by ideal (-y^3 - y^2 + z^2)
to multivariate polynomial ring in 2 variables over QQ
defined by
x -> s
y -> t^2 - 1
z -> t^3 - t

julia> gensB, M, pf = present_finite_extension_ring(F);

julia> gensB
2-element Vector{QQMPolyRingElem}:
t
1

julia> M
2×2 Matrix{QQMPolyRingElem}:
y   -z
-z  y^2 + y

julia> pf(s)
2-element Vector{QQMPolyRingElem}:
0
x

julia> pf(t)
2-element Vector{QQMPolyRingElem}:
1
0

julia> A, (a, b, c) = polynomial_ring(QQ, ["a", "b", "c"]);

julia> R, (x, y, z) = polynomial_ring(QQ, ["x", "y", "z"]);

julia> I = ideal(R, [x*y])
Ideal generated by
x*y

julia> B, _ = quo(R, I)
(Quotient of multivariate polynomial ring by ideal (x*y), Map: R -> B)

julia> (x, y, z) = gens(B)
3-element Vector{MPolyQuoRingElem{QQMPolyRingElem}}:
x
y
z

julia> F = hom(A, B, [x^2+z, y^2-1, z^3])
Ring homomorphism
from multivariate polynomial ring in 3 variables over QQ
to quotient of multivariate polynomial ring by ideal (x*y)
defined by
a -> x^2 + z
b -> y^2 - 1
c -> z^3

julia> gensB, M, pf = present_finite_extension_ring(F);

julia> gensB
2-element Vector{QQMPolyRingElem}:
y
1

julia> M
2×2 Matrix{QQMPolyRingElem}:
a^3 - c  0
0        a^3*b + a^3 - b*c - c

julia> pf(y)
2-element Vector{QQMPolyRingElem}:
1
0

julia> pf(one(B))
2-element Vector{QQMPolyRingElem}:
0
1

Experimental

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

source
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(E) and structure_map(Bl), respectively.

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

julia> i = hom(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 (h^3, e*h, e^3, e^2 + h^2)

Experimental

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

source