Homset for finite fields - Finite Rings

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

# Homset for finite fields

This is the set of all field homomorphisms between two finite fields.

EXAMPLES:

Sage

    sage: R.<t> = ZZ[]
    sage: E.<a> = GF(25, modulus = t^2 - 2)
    sage: F.<b> = GF(625)
    sage: H = Hom(E, F)
    sage: f = H([4*b^3 + 4*b^2 + 4*b]); f
    Ring morphism:
      From: Finite Field in a of size 5^2
      To:   Finite Field in b of size 5^4
      Defn: a |--> 4*b^3 + 4*b^2 + 4*b
    sage: f(2)
    2
    sage: f(a)
    4*b^3 + 4*b^2 + 4*b
    sage: len(H)
    2
    sage: [phi(2*a)^2 for phi in Hom(E, F)]
    [3, 3]

Python

    >>> from sage.all import *
    >>> R = ZZ['t']; (t,) = R._first_ngens(1)
    >>> E = GF(Integer(25), modulus = t**Integer(2) - Integer(2), names=('a',)); (a,) = E._first_ngens(1)
    >>> F = GF(Integer(625), names=('b',)); (b,) = F._first_ngens(1)
    >>> H = Hom(E, F)
    >>> f = H([Integer(4)*b**Integer(3) + Integer(4)*b**Integer(2) + Integer(4)*b]); f
    Ring morphism:
      From: Finite Field in a of size 5^2
      To:   Finite Field in b of size 5^4
      Defn: a |--> 4*b^3 + 4*b^2 + 4*b
    >>> f(Integer(2))
    2
    >>> f(a)
    4*b^3 + 4*b^2 + 4*b
    >>> len(H)
    2
    >>> [phi(Integer(2)*a)**Integer(2) for phi in Hom(E, F)]
    [3, 3]

We can also create endomorphisms:

Sage

    sage: End(E)
    Automorphism group of Finite Field in a of size 5^2
    sage: End(GF(7))[0]
    Ring endomorphism of Finite Field of size 7
      Defn: 1 |--> 1
    sage: H = Hom(GF(7), GF(49, 'c'))
    sage: H[0](2)
    2

[Python]

    >>> from sage.all import *
    >>> End(E)
    Automorphism group of Finite Field in a of size 5^2
    >>> End(GF(Integer(7)))[Integer(0)]
    Ring endomorphism of Finite Field of size 7
      Defn: 1 |--> 1
    >>> H = Hom(GF(Integer(7)), GF(Integer(49), 'c'))
    >>> H[Integer(0)](Integer(2))
    2

class sage.rings.finite_rings.homset.FiniteFieldHomset(R, S, category=None)

  Bases: `RingHomset_generic`

  Set of homomorphisms with domain a given finite field.

  index(item)

    Return the index of `self`.

    EXAMPLES:

    Sage

        sage: K.<z> = GF(1024)
        sage: g = End(K)[3]
        sage: End(K).index(g) == 3
        True

    Python

        >>> from sage.all import *
        >>> K = GF(Integer(1024), names=('z',)); (z,) = K._first_ngens(1)
        >>> g = End(K)[Integer(3)]
        >>> End(K).index(g) == Integer(3)
        True

  is_aut()

    Check if `self` is an automorphism.

    EXAMPLES:

    Sage

        sage: Hom(GF(4, 'a'), GF(16, 'b')).is_aut()
        False
        sage: Hom(GF(4, 'a'), GF(4, 'c')).is_aut()
        False
        sage: Hom(GF(4, 'a'), GF(4, 'a')).is_aut()
        True

    Python

        >>> from sage.all import *
        >>> Hom(GF(Integer(4), 'a'), GF(Integer(16), 'b')).is_aut()
        False
        >>> Hom(GF(Integer(4), 'a'), GF(Integer(4), 'c')).is_aut()
        False
        >>> Hom(GF(Integer(4), 'a'), GF(Integer(4), 'a')).is_aut()
        True

  list()

    Return a list of all the elements in this set of field homomorphisms.

    EXAMPLES:

    Sage

        sage: K.<a> = GF(25)
        sage: End(K)
        Automorphism group of Finite Field in a of size 5^2
        sage: list(End(K))
        [Ring endomorphism of Finite Field in a of size 5^2
          Defn: a |--> 4*a + 1,
         Ring endomorphism of Finite Field in a of size 5^2
          Defn: a |--> a]
        sage: L.<z> = GF(7^6)
        sage: [g for g in End(L) if (g^3)(z) == z]
        [Ring endomorphism of Finite Field in z of size 7^6
          Defn: z |--> z,
         Ring endomorphism of Finite Field in z of size 7^6
          Defn: z |--> 5*z^4 + 5*z^3 + 4*z^2 + 3*z + 1,
         Ring endomorphism of Finite Field in z of size 7^6
          Defn: z |--> 3*z^5 + 5*z^4 + 5*z^2 + 2*z + 3]

    Python

        >>> from sage.all import *
        >>> K = GF(Integer(25), names=('a',)); (a,) = K._first_ngens(1)
        >>> End(K)
        Automorphism group of Finite Field in a of size 5^2
        >>> list(End(K))
        [Ring endomorphism of Finite Field in a of size 5^2
          Defn: a |--> 4*a + 1,
         Ring endomorphism of Finite Field in a of size 5^2
          Defn: a |--> a]
        >>> L = GF(Integer(7)**Integer(6), names=('z',)); (z,) = L._first_ngens(1)
        >>> [g for g in End(L) if (g**Integer(3))(z) == z]
        [Ring endomorphism of Finite Field in z of size 7^6
          Defn: z |--> z,
         Ring endomorphism of Finite Field in z of size 7^6
          Defn: z |--> 5*z^4 + 5*z^3 + 4*z^2 + 3*z + 1,
         Ring endomorphism of Finite Field in z of size 7^6
          Defn: z |--> 3*z^5 + 5*z^4 + 5*z^2 + 2*z + 3]

    Between isomorphic fields with different moduli:

    Sage

        sage: k1 = GF(1009)
        sage: k2 = GF(1009, modulus='primitive')
        sage: Hom(k1, k2).list()
        [Ring morphism:
           From: Finite Field of size 1009
           To:   Finite Field of size 1009
           Defn: 1 |--> 1]
        sage: Hom(k2, k1).list()
        [Ring morphism:
           From: Finite Field of size 1009
           To:   Finite Field of size 1009
           Defn: 11 |--> 11]

        sage: k1.<a> = GF(1009^2, modulus='first_lexicographic')
        sage: k2.<b> = GF(1009^2, modulus='conway')
        sage: Hom(k1, k2).list()
        [Ring morphism:
           From: Finite Field in a of size 1009^2
           To:   Finite Field in b of size 1009^2
           Defn: a |--> 290*b + 864,
         Ring morphism:
           From: Finite Field in a of size 1009^2
           To:   Finite Field in b of size 1009^2
           Defn: a |--> 719*b + 145]

    [Python]

        >>> from sage.all import *
        >>> k1 = GF(Integer(1009))
        >>> k2 = GF(Integer(1009), modulus='primitive')
        >>> Hom(k1, k2).list()
        [Ring morphism:
           From: Finite Field of size 1009
           To:   Finite Field of size 1009
           Defn: 1 |--> 1]
        >>> Hom(k2, k1).list()
        [Ring morphism:
           From: Finite Field of size 1009
           To:   Finite Field of size 1009
           Defn: 11 |--> 11]

        >>> k1 = GF(Integer(1009)**Integer(2), modulus='first_lexicographic', names=('a',)); (a,) = k1._first_ngens(1)
        >>> k2 = GF(Integer(1009)**Integer(2), modulus='conway', names=('b',)); (b,) = k2._first_ngens(1)
        >>> Hom(k1, k2).list()
        [Ring morphism:
           From: Finite Field in a of size 1009^2
           To:   Finite Field in b of size 1009^2
           Defn: a |--> 290*b + 864,
         Ring morphism:
           From: Finite Field in a of size 1009^2
           To:   Finite Field in b of size 1009^2
           Defn: a |--> 719*b + 145]

  order()

    Return the order of this set of field homomorphisms.

    EXAMPLES:

    Sage

        sage: K.<a> = GF(125)
        sage: End(K)
        Automorphism group of Finite Field in a of size 5^3
        sage: End(K).order()
        3
        sage: L.<b> = GF(25)
        sage: Hom(L, K).order() == Hom(K, L).order() == 0
        True

    Python

        >>> from sage.all import *
        >>> K = GF(Integer(125), names=('a',)); (a,) = K._first_ngens(1)
        >>> End(K)
        Automorphism group of Finite Field in a of size 5^3
        >>> End(K).order()
        3
        >>> L = GF(Integer(25), names=('b',)); (b,) = L._first_ngens(1)
        >>> Hom(L, K).order() == Hom(K, L).order() == Integer(0)
        True