Finite Ring Extensions¶
Let \(f: A\rightarrow B\) be a finite ring extension, given as a ring map between (quotients of) multivariate polynomial rings.
Let \(m_1, \dots, m_s\) be elements of \(B\) that generate \(B\) as an \(A\)-module. Consider the surjective ring morphism \(\psi:A[z_1, ..., z_s]\rightarrow B\) defined by \(f\) and evaluation on \(m_1, \dots, m_s\).
Then the class FiniteRingExtension returns the quotient ring \(C/I\) with \(C=A[z_1, ..., z_s]\) and \(I=Ker(\psi)\) together with a ring morphism \(\phi:B\rightarrow C/I\), inverse to the morphism \(\psi:C/I\rightarrow B\) induced and still denoted by \(\psi\).
Moreover, the annihilator \(Ann_A(B)\) of \(B\) as an \(A\)-module is calculated as well as a presentation matrix \(P\) of \(B\) as an \(A\)-module:
EXAMPLE:
Consider the twisted cubic in \(\mathbb{P}^3\). On the level of ChowRings the inclusion \(i\) induces the ring map
sage: A.<h> = ChowRing('h', 1, 'h^4') # P3
sage: B.<w> = ChowRing('w', 1, 'w^2') # P1
sage: j = A.hom([3*w], B) # j=i^{*} sends h to 3*w.
sage: F = FiniteRingExtension(j); F
Quotient of Multivariate Polynomial Ring in z, h over Rational Field by the ideal (h^2, z - 1)
sage: F.psi()
Ring morphism:
From: Quotient of Multivariate Polynomial Ring in z, h over Rational Field by the ideal (h^2, z - 1)
To: Quotient of Multivariate Polynomial Ring in w over Rational Field by the ideal (w^2)
Defn: 1 |--> 1
h |--> 3*w
sage: F.phi()
Ring morphism:
From: Quotient of Multivariate Polynomial Ring in w over Rational Field by the ideal (w^2)
To: Quotient of Multivariate Polynomial Ring in z, h over Rational Field by the ideal (h^2, z - 1)
Defn: w |--> 1/3*h
sage: F.ann()
Ideal (h^2) of Quotient of Multivariate Polynomial Ring in h over Rational Field by the ideal (h^4)
sage: F.prm() # presentation matrix
[0]
sage: F.mgs() # module generators
(1,)
sage: F.mds() # module generator degrees
(0,)
sage: F.nvs() # new variables that have been introduced
('z',)
AUTHORS:
- Manfred Lehn (2013)
- Christoph Sorger (2013)
-
class
sage.schemes.chow.finite_ring_extension.
FiniteRingExtension
(f, var_name='z')¶ Bases:
sage.rings.quotient_ring.QuotientRing_generic
Construct a
FiniteRingExtension
.INPUT:
f
– a finite ring morphism between (quotients of) multivariate polynomial rings.
OUTPUT:
EXAMPLES:
Consider the morphism on the level of Chow rings induced by the Veronese embedding (http://en.wikipedia.org/wiki/Veronese_surface) \(i:\mathbb{P}^2\longrightarrow\mathbb{P}^5\):
sage: A.<y> = ChowRing('y', 1, 'y^6') # P5 sage: B.<x> = ChowRing('x', 1, 'x^3') # P2 sage: f = A.hom([2*x], B) sage: F = FiniteRingExtension(f) sage: F.cover_ring().gens() (z, y) sage: F.defining_ideal().gens() [y^3, z - 1]
Another examples is the morphism on the level of Chow rings induced by the Segre embedding \(\mathbb{P}^2\times\mathbb{P}^2\longrightarrow\mathbb{P}^8\):
sage: A.<l> = ChowRing('l', 1, 'l^9') sage: B.<h,k> = ChowRing(['h', 'k'], [1, 1], ['h^3', 'k^3']) sage: f = A.hom([h+k], B) # Segre embedding P2 x P2 to P8 sage: F = FiniteRingExtension(f); sage: F.cover_ring().gens() (z1, z2, z3, l) sage: F.defining_ideal().gens() [l^5, z3 - 1, 2*z2*l^3 - l^4, 3*z1*l - 3*z2*l^2 + l^3, z2^2 - z1, z1*z2, z1^2]
-
ann
()¶ Return the annihilator \(Ann_A(B)\) of \(B\) seen as an \(A\)-module via \(f\).
EXAMPLES:
sage: A.<y> = ChowRing('y', 1, 'y^6') # P5 sage: B.<x> = ChowRing('x', 1, 'x^3') # P2 sage: f = A.hom([2*x], B) sage: F = FiniteRingExtension(f) sage: F.ann().gens() [y^3] sage: A.<l> = ChowRing('l', 1, 'l^9') sage: B.<h,k> = ChowRing(['h', 'k'], [1, 1], ['h^3', 'k^3']) sage: f = A.hom([h+k], B) # Segre embedding P2 x P2 to P8 sage: F = FiniteRingExtension(f) sage: F.ann().gens() [l^5]
-
mds
()¶ Return the tuple of the degrees of the module generators of \(B\) seen as an \(A\)-module via \(f\).
EXAMPLES:
sage: A.<y> = ChowRing('y', 1, 'y^6') # P5 sage: B.<x> = ChowRing('x', 1, 'x^3') # P2 sage: f = A.hom([2*x], B) sage: F = FiniteRingExtension(f) sage: F.mds() (0,) sage: A.<l> = ChowRing('l', 1, 'l^9') sage: B.<h,k> = ChowRing(['h', 'k'], [1, 1], ['h^3', 'k^3']) sage: f = A.hom([h+k], B) # Segre embedding P2 x P2 to P8 sage: F = FiniteRingExtension(f) sage: F.mds() (2, 1, 0)
-
mgs
()¶ Return the tuple of module generators of \(B\) seen as an \(A\)-module via \(f\).
EXAMPLES:
sage: A.<y> = ChowRing('y', 1, 'y^6') # P5 sage: B.<x> = ChowRing('x', 1, 'x^3') # P2 sage: f = A.hom([2*x], B) sage: F = FiniteRingExtension(f) sage: F.mgs() (1,) sage: A.<l> = ChowRing('l', 1, 'l^9') sage: B.<h,k> = ChowRing(['h', 'k'], [1, 1], ['h^3', 'k^3']) sage: f = A.hom([h+k], B) # Segre embedding P2 x P2 to P8 sage: F = FiniteRingExtension(f) sage: F.mgs() (k^2, k, 1)
-
nvs
()¶ Return the tuple of ‘new’ variables \((z_1, \dots, z_s)\) corresponding to the module generators of the \(A\)-module \(B\) (via \(f\)).
EXAMPLES:
sage: A.<y> = ChowRing('y', 1, 'y^6') # P5 sage: B.<x> = ChowRing('x', 1, 'x^3') # P2 sage: f = A.hom([2*x], B) sage: F = FiniteRingExtension(f, var_name='t') sage: F.nvs() ('t',) sage: A.<l> = ChowRing('l', 1, 'l^9') sage: B.<h,k> = ChowRing(['h', 'k'], [1, 1], ['h^3', 'k^3']) sage: f = A.hom([h+k], B) # Segre embedding P2 x P2 to P8 sage: F = FiniteRingExtension(f) sage: F.nvs() ('z1', 'z2', 'z3')
-
phi
()¶ Return the isomorphism \(\phi:B\longrightarrow C/I\) inverse to \(\psi\).
EXAMPLES:
sage: A.<y> = ChowRing('y', 1, 'y^6') # P5 sage: B.<x> = ChowRing('x', 1, 'x^3') # P2 sage: f = A.hom([2*x], B) sage: F = FiniteRingExtension(f) sage: F.phi() Ring morphism: From: Quotient of Multivariate Polynomial Ring in x over Rational Field by the ideal (x^3) To: Quotient of Multivariate Polynomial Ring in z, y over Rational Field by the ideal (y^3, z - 1) Defn: x |--> 1/2*y sage: A.<l> = ChowRing('l', 1, 'l^9') sage: B.<h,k> = ChowRing(['h', 'k'], [1, 1], ['h^3', 'k^3']) sage: f = A.hom([h+k], B) # Segre embedding P2 x P2 to P8 sage: F = FiniteRingExtension(f) sage: F.phi() Ring morphism: From: Quotient of Multivariate Polynomial Ring in h, k over Rational Field by the ideal (h^3, k^3) To: Quotient of Multivariate Polynomial Ring in z1, z2, z3, l over Rational Field by the ideal (l^5, z3 - 1, 2*z2*l^3 - l^4, 3*z1*l - 3*z2*l^2 + l^3, z2^2 - z1, z1*z2, z1^2) Defn: h |--> -z2 + l k |--> z2
-
prm
()¶ Return the presentation matrix.
\[A^{*}\mathbb{P}^3\ \xrightarrow{\ j\ }\ A^{*}\mathbb{P}^1.\]EXAMPLES:
sage: A.<y> = ChowRing('y', 1, 'y^6') # P5 sage: B.<x> = ChowRing('x', 1, 'x^3') # P2 sage: f = A.hom([2*x], B) sage: F = FiniteRingExtension(f) sage: F.prm() [0] sage: A.<l> = ChowRing('l', 1, 'l^9') sage: B.<h,k> = ChowRing(['h', 'k'], [1, 1], ['h^3', 'k^3']) sage: f = A.hom([h+k], B) # Segre embedding P2 x P2 to P8 sage: F = FiniteRingExtension(f) sage: F.prm() [ 0 3*l] [ 2*l^3 -3*l^2] [ -l^4 l^3]
-
psi
()¶ Return he isomorphism \(\psi:C/I\longrightarrow B\) given by \(f\) and the module generators.
EXAMPLES:
sage: A.<y> = ChowRing('y', 1, 'y^6') # P5 sage: B.<x> = ChowRing('x', 1, 'x^3') # P2 sage: f = A.hom([2*x], B) sage: F = FiniteRingExtension(f) sage: F.psi() Ring morphism: From: Quotient of Multivariate Polynomial Ring in z, y over Rational Field by the ideal (y^3, z - 1) To: Quotient of Multivariate Polynomial Ring in x over Rational Field by the ideal (x^3) Defn: 1 |--> 1 y |--> 2*x sage: A.<l> = ChowRing('l', 1, 'l^9') sage: B.<h,k> = ChowRing(['h', 'k'], [1, 1], ['h^3', 'k^3']) sage: f = A.hom([h+k], B) # Segre embedding P2 x P2 to P8 sage: F = FiniteRingExtension(f) sage: F.psi() Ring morphism: From: Quotient of Multivariate Polynomial Ring in z1, z2, z3, l over Rational Field by the ideal (l^5, z3 - 1, 2*z2*l^3 - l^4, 3*z1*l - 3*z2*l^2 + l^3, z2^2 - z1, z1*z2, z1^2) To: Quotient of Multivariate Polynomial Ring in h, k over Rational Field by the ideal (h^3, k^3) Defn: z1 |--> k^2 z2 |--> k 1 |--> 1 l |--> h + k
-
push_down
(v)¶ Return the push_down of a sequence of elements in B.
INPUT:
v
– a list or tuple of elements in B
EXAMPLES:
sage: A.<y> = ChowRing('y', 1, 'y^6') # P5 sage: B.<x> = ChowRing('x', 1, 'x^3') # P2 sage: f = A.hom([2*x], B) sage: F = FiniteRingExtension(f) sage: F.push_down([x^2]) [1/4*y^2] sage: A.<l> = ChowRing('l', 1, 'l^9') sage: B.<h,k> = ChowRing(['h', 'k'], [1, 1], ['h^3', 'k^3']) sage: f = A.hom([h+k], B) # Segre embedding P2 x P2 to P8 sage: F = FiniteRingExtension(f) sage: F.push_down((h, k)) [ 0 0] [-1 1] [ l 0]