Blowups
present_finite_extension_ring
— Method 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 (gs, PM, sect)
, say, where
gs
is a vector of polynomials representing generators forB
as anA
-module,PM
is anr
$\times$s
-matrix of polynomials defining the map $A^r \rightarrow A^s$, andsect
is a function which gives rise to a section of the augmentation map $ A^s\rightarrow B$.
The finiteness condition on F
is checked by the function.
The function is implemented so that the last element of gs
is one(B)
.
Examples
julia> RA, (h,) = polynomial_ring(QQ, [:h]);
julia> A, _ = quo(RA, ideal(RA, [h^9]));
julia> RB, (k, l) = polynomial_ring(QQ, [:k, :l]);
julia> B, _ = quo(RB, ideal(RB, [k^3, l^3]));
julia> F = hom(A, B, [k+l])
Ring homomorphism
from quotient of multivariate polynomial ring by ideal (h^9)
to quotient of multivariate polynomial ring by ideal (k^3, l^3)
defined by
h -> k + l
julia> gs, PM, sect = present_finite_extension_ring(F);
julia> gs
3-element Vector{QQMPolyRingElem}:
l^2
l
1
julia> PM
3×3 Matrix{QQMPolyRingElem}:
h^3 0 0
-3*h^2 h^3 0
3*h -3*h^2 h^3
julia> sect(k*l)
3-element Vector{QQMPolyRingElem}:
-1
h
0
julia> R, (x, y, z) = polynomial_ring(QQ, [:x, :y, :z]);
julia> I = ideal(R, [z^2-y^2*(y+1)]);
julia> A, _ = quo(R, I);
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> gs, PM, sect = present_finite_extension_ring(F);
julia> gs
2-element Vector{QQMPolyRingElem}:
t
1
julia> PM
2×2 Matrix{QQMPolyRingElem}:
y -z
-z y^2 + y
julia> sect(t)
2-element Vector{QQMPolyRingElem}:
1
0
julia> sect(one(B))
2-element Vector{QQMPolyRingElem}:
0
1
julia> sect(s)
2-element Vector{QQMPolyRingElem}:
0
x
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]);
julia> B, _ = quo(R, I);
julia> (x, y, z) = gens(B);
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> gs, PM, sect = present_finite_extension_ring(F);
julia> gs
2-element Vector{QQMPolyRingElem}:
y
1
julia> PM
2×2 Matrix{QQMPolyRingElem}:
a^3 - c 0
0 a^3*b + a^3 - b*c - c
julia> sect(y)
2-element Vector{QQMPolyRingElem}:
1
0
julia> sect(one(B))
2-element Vector{QQMPolyRingElem}:
0
1
This function is part of the experimental code in Oscar. Please read here for more details.
blowup
— Method 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, andj
, a map of abstract varieties, is the inclusion ofE
intoBl
.
The resulting maps Bl
$\rightarrow$ Y
and E
$\rightarrow$ X
are obtained entering structure_map(Bl)
and structure_map(E)
, 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 = 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
This function is part of the experimental code in Oscar. Please read here for more details.
blowup_points
— Methodfunction 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)
This function is part of the experimental code in Oscar. Please read here for more details.