Morphisms between number fields - Algebraic Numbers and Number Fields

Skip to content
Back to top
View this page
Edit this page

# Morphisms between number fields

This module provides classes to represent ring homomorphisms between number fields (i.e. field embeddings).

class sage.rings.number_field.morphism.CyclotomicFieldHomomorphism_im_gens

  Bases: `NumberFieldHomomorphism_im_gens`

class sage.rings.number_field.morphism.NumberFieldHomomorphism_im_gens

  Bases: `RingHomomorphism_im_gens`

  preimage(y)

    Compute a preimage of \(y\) in the domain, provided one exists. Raises a `ValueError` if \(y\) has no preimage.

    INPUT:

    - `y` – an element of the codomain of `self`

    OUTPUT:

    Returns the preimage of \(y\) in the domain, if one exists. Raises a `ValueError` if \(y\) has no preimage.

    EXAMPLES:

    Sage

        sage: x = polygen(ZZ, 'x')
        sage: K.<a> = NumberField(x^2 - 7)
        sage: L.<b> = NumberField(x^4 - 7)
        sage: f = K.embeddings(L)[0]
        sage: f.preimage(3*b^2 - 12/7)
        3*a - 12/7
        sage: f.preimage(b)
        Traceback (most recent call last):
        ...
        ValueError: Element 'b' is not in the image of this homomorphism.

    Python

        >>> from sage.all import *
        >>> x = polygen(ZZ, 'x')
        >>> K = NumberField(x**Integer(2) - Integer(7), names=('a',)); (a,) = K._first_ngens(1)
        >>> L = NumberField(x**Integer(4) - Integer(7), names=('b',)); (b,) = L._first_ngens(1)
        >>> f = K.embeddings(L)[Integer(0)]
        >>> f.preimage(Integer(3)*b**Integer(2) - Integer(12)/Integer(7))
        3*a - 12/7
        >>> f.preimage(b)
        Traceback (most recent call last):
        ...
        ValueError: Element 'b' is not in the image of this homomorphism.

    Sage

        sage: F.<b> = QuadraticField(23)
        sage: G.<a> = F.extension(x^3 + 5)
        sage: f = F.embeddings(G)[0]
        sage: f.preimage(a^3 + 2*b + 3)
        2*b - 2

    [Python]

        >>> from sage.all import *
        >>> F = QuadraticField(Integer(23), names=('b',)); (b,) = F._first_ngens(1)
        >>> G = F.extension(x**Integer(3) + Integer(5), names=('a',)); (a,) = G._first_ngens(1)
        >>> f = F.embeddings(G)[Integer(0)]
        >>> f.preimage(a**Integer(3) + Integer(2)*b + Integer(3))
        2*b - 2

class sage.rings.number_field.morphism.RelativeNumberFieldHomomorphism_from_abs(parent, abs_hom)

  Bases: `RingHomomorphism`

  A homomorphism from a relative number field to some other ring, stored as a homomorphism from the corresponding absolute field.

  abs_hom()

    Return the corresponding homomorphism from the absolute number field.

    EXAMPLES:

    Sage

        sage: x = polygen(ZZ, 'x')
        sage: K.<a, b> = NumberField([x^3 + 2, x^2 + x + 1])
        sage: K.hom(a, K).abs_hom()
        Ring morphism:
          From: Number Field in a with defining polynomial
                x^6 - 3*x^5 + 6*x^4 - 3*x^3 - 9*x + 9
          To:   Number Field in a with defining polynomial x^3 + 2 over its base field
          Defn: a |--> a - b

    Python

        >>> from sage.all import *
        >>> x = polygen(ZZ, 'x')
        >>> K = NumberField([x**Integer(3) + Integer(2), x**Integer(2) + x + Integer(1)], names=('a', 'b',)); (a, b,) = K._first_ngens(2)
        >>> K.hom(a, K).abs_hom()
        Ring morphism:
          From: Number Field in a with defining polynomial
                x^6 - 3*x^5 + 6*x^4 - 3*x^3 - 9*x + 9
          To:   Number Field in a with defining polynomial x^3 + 2 over its base field
          Defn: a |--> a - b

  im_gens()

    Return the images of the generators under this map.

    EXAMPLES:

    Sage

        sage: x = polygen(ZZ, 'x')
        sage: K.<a, b> = NumberField([x^3 + 2, x^2 + x + 1])
        sage: K.hom(a, K).im_gens()
        [a, b]

    Python

        >>> from sage.all import *
        >>> x = polygen(ZZ, 'x')
        >>> K = NumberField([x**Integer(3) + Integer(2), x**Integer(2) + x + Integer(1)], names=('a', 'b',)); (a, b,) = K._first_ngens(2)
        >>> K.hom(a, K).im_gens()
        [a, b]