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:

\[A^p\ \xrightarrow{P}\ A^s\ \xrightarrow{m}\ B\ \longrightarrow\ 0\]

EXAMPLE:

Consider the twisted cubic in \(\mathbb{P}^3\). On the level of ChowRings the inclusion \(i\) induces the ring map

\[A^{*}\mathbb{P}^3\ \xrightarrow{\ j\ }\ A^{*}\mathbb{P}^1.\]
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]