Morphisms between extension of rings#
AUTHOR:
Xavier Caruso (2019)
- class sage.rings.ring_extension_morphism.MapFreeModuleToRelativeRing#
Bases:
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:
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:
RingExtensionHomomorphism
A class for implementating isomorphisms taking an element of the backend to its ring extension.
- class sage.rings.ring_extension_morphism.RingExtensionBackendReverseIsomorphism#
Bases:
RingExtensionHomomorphism
A class for implementating isomorphisms from a ring extension to its backend.
- class sage.rings.ring_extension_morphism.RingExtensionHomomorphism#
Bases:
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