Morphisms between extension of rings¶
AUTHOR:
Xavier Caruso (2019)
-
class
sage.rings.ring_extension_morphism.
MapFreeModuleToRelativeRing
¶ Bases:
sage.categories.map.Map
Base class of the module isomorphism between a ring extension and a free module over one of its bases.
-
is_injective
()¶ Return whether this morphism is injective.
EXAMPLES:
sage: K = GF(11^6).over(GF(11^3)) sage: V, i, j = K.free_module() sage: i.is_injective() True
-
is_surjective
()¶ Return whether this morphism is surjective.
EXAMPLES:
sage: K = GF(11^6).over(GF(11^3)) sage: V, i, j = K.free_module() sage: i.is_surjective() True
-
-
class
sage.rings.ring_extension_morphism.
MapRelativeRingToFreeModule
¶ Bases:
sage.categories.map.Map
Base class of the module isomorphism between a ring extension and a free module over one of its bases.
-
is_injective
()¶ Return whether this morphism is injective.
EXAMPLES:
sage: K = GF(11^6).over(GF(11^3)) sage: V, i, j = K.free_module() sage: j.is_injective() True
-
is_surjective
()¶ Return whether this morphism is injective.
EXAMPLES:
sage: K = GF(11^6).over(GF(11^3)) sage: V, i, j = K.free_module() sage: j.is_surjective() True
-
-
class
sage.rings.ring_extension_morphism.
RingExtensionBackendIsomorphism
¶ Bases:
sage.rings.ring_extension_morphism.RingExtensionHomomorphism
A class for implementating isomorphisms taking an element of the backend to its ring extension.
-
class
sage.rings.ring_extension_morphism.
RingExtensionBackendReverseIsomorphism
¶ Bases:
sage.rings.ring_extension_morphism.RingExtensionHomomorphism
A class for implementating isomorphisms from a ring extension to its backend.
-
class
sage.rings.ring_extension_morphism.
RingExtensionHomomorphism
¶ Bases:
sage.rings.morphism.RingMap
A class for ring homomorphisms between extensions.
-
base_map
()¶ Return the base map of this morphism or just
None
if the base map is a coercion map.EXAMPLES:
sage: F = GF(5) sage: K.<a> = GF(5^2).over(F) sage: L.<b> = GF(5^6).over(K)
We define the absolute Frobenius of L:
sage: FrobL = L.hom([b^5, a^5]) sage: FrobL Ring endomorphism of Field in b with defining polynomial x^3 + (2 + 2*a)*x - a over its base Defn: b |--> (-1 + a) + (1 + 2*a)*b + a*b^2 with map on base ring: a |--> 1 - a sage: FrobL.base_map() Ring morphism: From: Field in a with defining polynomial x^2 + 4*x + 2 over its base To: Field in b with defining polynomial x^3 + (2 + 2*a)*x - a over its base Defn: a |--> 1 - a
The square of
FrobL
acts trivially on K; in other words, it has a trivial base map:sage: phi = FrobL^2 sage: phi Ring endomorphism of Field in b with defining polynomial x^3 + (2 + 2*a)*x - a over its base Defn: b |--> 2 + 2*a*b + (2 - a)*b^2 sage: phi.base_map()
-
is_identity
()¶ Return whether this morphism is the identity.
EXAMPLES:
sage: K.<a> = GF(5^2).over() # over GF(5) sage: FrobK = K.hom([a^5]) sage: FrobK.is_identity() False sage: (FrobK^2).is_identity() True
Coercion maps are not considered as identity morphisms:
sage: L.<b> = GF(5^6).over(K) sage: iota = L.defining_morphism() sage: iota Ring morphism: From: Field in a with defining polynomial x^2 + 4*x + 2 over its base To: Field in b with defining polynomial x^3 + (2 + 2*a)*x - a over its base Defn: a |--> a sage: iota.is_identity() False
-
is_injective
()¶ Return whether this morphism is injective.
EXAMPLES:
sage: K = GF(5^10).over(GF(5^5)) sage: iota = K.defining_morphism() sage: iota Ring morphism: From: Finite Field in z5 of size 5^5 To: Field in z10 with defining polynomial x^2 + (2*z5^3 + 2*z5^2 + 4*z5 + 4)*x + z5 over its base Defn: z5 |--> z5 sage: iota.is_injective() True sage: K = GF(7).over(ZZ) sage: iota = K.defining_morphism() sage: iota Ring morphism: From: Integer Ring To: Finite Field of size 7 over its base Defn: 1 |--> 1 sage: iota.is_injective() False
-
is_surjective
()¶ Return whether this morphism is surjective.
EXAMPLES:
sage: K = GF(5^10).over(GF(5^5)) sage: iota = K.defining_morphism() sage: iota Ring morphism: From: Finite Field in z5 of size 5^5 To: Field in z10 with defining polynomial x^2 + (2*z5^3 + 2*z5^2 + 4*z5 + 4)*x + z5 over its base Defn: z5 |--> z5 sage: iota.is_surjective() False sage: K = GF(7).over(ZZ) sage: iota = K.defining_morphism() sage: iota Ring morphism: From: Integer Ring To: Finite Field of size 7 over its base Defn: 1 |--> 1 sage: iota.is_surjective() True
-