Special extensions of function fields¶
This module currently implements only constant field extension.
Constant field extensions¶
EXAMPLES:
Constant field extension of the rational function field over rational numbers:
sage: K.<x> = FunctionField(QQ)
sage: N.<a> = QuadraticField(2)                                                     # needs sage.rings.number_field
sage: L = K.extension_constant_field(N)                                             # needs sage.rings.number_field
sage: L                                                                             # needs sage.rings.number_field
Rational function field in x over Number Field in a with defining
polynomial x^2 - 2 with a = 1.4142... over its base
sage: d = (x^2 - 2).divisor()                                                       # needs sage.libs.pari sage.modules
sage: d                                                                             # needs sage.libs.pari sage.modules
-2*Place (1/x)
 + Place (x^2 - 2)
sage: L.conorm_divisor(d)                                                           # needs sage.libs.pari sage.modules sage.rings.number_field
-2*Place (1/x)
 + Place (x - a)
 + Place (x + a)
>>> from sage.all import *
>>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1)
>>> N = QuadraticField(Integer(2), names=('a',)); (a,) = N._first_ngens(1)# needs sage.rings.number_field
>>> L = K.extension_constant_field(N)                                             # needs sage.rings.number_field
>>> L                                                                             # needs sage.rings.number_field
Rational function field in x over Number Field in a with defining
polynomial x^2 - 2 with a = 1.4142... over its base
>>> d = (x**Integer(2) - Integer(2)).divisor()                                                       # needs sage.libs.pari sage.modules
>>> d                                                                             # needs sage.libs.pari sage.modules
-2*Place (1/x)
 + Place (x^2 - 2)
>>> L.conorm_divisor(d)                                                           # needs sage.libs.pari sage.modules sage.rings.number_field
-2*Place (1/x)
 + Place (x - a)
 + Place (x + a)
Constant field extension of a function field over a finite field:
sage: # needs sage.rings.finite_rings sage.rings.function_field
sage: K.<x> = FunctionField(GF(2)); R.<Y> = K[]
sage: F.<y> = K.extension(Y^3 - x^2*(x^2 + x + 1)^2)
sage: E = F.extension_constant_field(GF(2^3))
sage: E
Function field in y defined by y^3 + x^6 + x^4 + x^2 over its base
sage: p = F.get_place(3)
sage: E.conorm_place(p)  # random
Place (x + z3, y + z3^2 + z3)
 + Place (x + z3^2, y + z3)
 + Place (x + z3^2 + z3, y + z3^2)
sage: q = F.get_place(2)
sage: E.conorm_place(q)  # random
Place (x + 1, y^2 + y + 1)
sage: E.conorm_divisor(p + q)  # random
Place (x + 1, y^2 + y + 1)
 + Place (x + z3, y + z3^2 + z3)
 + Place (x + z3^2, y + z3)
 + Place (x + z3^2 + z3, y + z3^2)
>>> from sage.all import *
>>> # needs sage.rings.finite_rings sage.rings.function_field
>>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = K['Y']; (Y,) = R._first_ngens(1)
>>> F = K.extension(Y**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1)
>>> E = F.extension_constant_field(GF(Integer(2)**Integer(3)))
>>> E
Function field in y defined by y^3 + x^6 + x^4 + x^2 over its base
>>> p = F.get_place(Integer(3))
>>> E.conorm_place(p)  # random
Place (x + z3, y + z3^2 + z3)
 + Place (x + z3^2, y + z3)
 + Place (x + z3^2 + z3, y + z3^2)
>>> q = F.get_place(Integer(2))
>>> E.conorm_place(q)  # random
Place (x + 1, y^2 + y + 1)
>>> E.conorm_divisor(p + q)  # random
Place (x + 1, y^2 + y + 1)
 + Place (x + z3, y + z3^2 + z3)
 + Place (x + z3^2, y + z3)
 + Place (x + z3^2 + z3, y + z3^2)
AUTHORS:
- Kwankyu Lee (2021-12-24): added constant field extension 
- class sage.rings.function_field.extensions.ConstantFieldExtension(F, k_ext)[source]¶
- Bases: - FunctionFieldExtension- Constant field extension. - INPUT: - F– a function field whose constant field is \(k\)
- k_ext– an extension of \(k\)
 - conorm_divisor(d)[source]¶
- Return the conorm of the divisor - din this extension.- INPUT: - d– divisor of the base function field
 - OUTPUT: a divisor of the top function field - EXAMPLES: - sage: # needs sage.rings.finite_rings sage.rings.function_field sage: K.<x> = FunctionField(GF(2)); R.<Y> = K[] sage: F.<y> = K.extension(Y^3 - x^2*(x^2 + x + 1)^2) sage: E = F.extension_constant_field(GF(2^3)) sage: p1 = F.get_place(3) sage: p2 = F.get_place(2) sage: c = E.conorm_divisor(2*p1 + 3*p2) sage: c1 = E.conorm_place(p1) sage: c2 = E.conorm_place(p2) sage: c == 2*c1 + 3*c2 True - >>> from sage.all import * >>> # needs sage.rings.finite_rings sage.rings.function_field >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = K['Y']; (Y,) = R._first_ngens(1) >>> F = K.extension(Y**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1) >>> E = F.extension_constant_field(GF(Integer(2)**Integer(3))) >>> p1 = F.get_place(Integer(3)) >>> p2 = F.get_place(Integer(2)) >>> c = E.conorm_divisor(Integer(2)*p1 + Integer(3)*p2) >>> c1 = E.conorm_place(p1) >>> c2 = E.conorm_place(p2) >>> c == Integer(2)*c1 + Integer(3)*c2 True 
 - conorm_place(p)[source]¶
- Return the conorm of the place \(p\) in this extension. - INPUT: - p– place of the base function field
 - OUTPUT: divisor of the top function field - EXAMPLES: - sage: # needs sage.rings.finite_rings sage.rings.function_field sage: K.<x> = FunctionField(GF(2)); R.<Y> = K[] sage: F.<y> = K.extension(Y^3 - x^2*(x^2 + x + 1)^2) sage: E = F.extension_constant_field(GF(2^3)) sage: p = F.get_place(3) sage: d = E.conorm_place(p) sage: [pl.degree() for pl in d.support()] [1, 1, 1] sage: p = F.get_place(2) sage: d = E.conorm_place(p) sage: [pl.degree() for pl in d.support()] [2] - >>> from sage.all import * >>> # needs sage.rings.finite_rings sage.rings.function_field >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = K['Y']; (Y,) = R._first_ngens(1) >>> F = K.extension(Y**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1) >>> E = F.extension_constant_field(GF(Integer(2)**Integer(3))) >>> p = F.get_place(Integer(3)) >>> d = E.conorm_place(p) >>> [pl.degree() for pl in d.support()] [1, 1, 1] >>> p = F.get_place(Integer(2)) >>> d = E.conorm_place(p) >>> [pl.degree() for pl in d.support()] [2] 
 - defining_morphism()[source]¶
- Return the defining morphism of this extension. - This is the morphism from the base to the top. - EXAMPLES: - sage: # needs sage.rings.finite_rings sage.rings.function_field sage: K.<x> = FunctionField(GF(2)); R.<Y> = K[] sage: F.<y> = K.extension(Y^3 - x^2*(x^2 + x + 1)^2) sage: E = F.extension_constant_field(GF(2^3)) sage: E.defining_morphism() Function Field morphism: From: Function field in y defined by y^3 + x^6 + x^4 + x^2 To: Function field in y defined by y^3 + x^6 + x^4 + x^2 Defn: y |--> y x |--> x 1 |--> 1 - >>> from sage.all import * >>> # needs sage.rings.finite_rings sage.rings.function_field >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = K['Y']; (Y,) = R._first_ngens(1) >>> F = K.extension(Y**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1) >>> E = F.extension_constant_field(GF(Integer(2)**Integer(3))) >>> E.defining_morphism() Function Field morphism: From: Function field in y defined by y^3 + x^6 + x^4 + x^2 To: Function field in y defined by y^3 + x^6 + x^4 + x^2 Defn: y |--> y x |--> x 1 |--> 1 
 - top()[source]¶
- Return the top function field of this extension. - EXAMPLES: - sage: # needs sage.rings.finite_rings sage.rings.function_field sage: K.<x> = FunctionField(GF(2)); R.<Y> = K[] sage: F.<y> = K.extension(Y^3 - x^2*(x^2 + x + 1)^2) sage: E = F.extension_constant_field(GF(2^3)) sage: E.top() Function field in y defined by y^3 + x^6 + x^4 + x^2 - >>> from sage.all import * >>> # needs sage.rings.finite_rings sage.rings.function_field >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = K['Y']; (Y,) = R._first_ngens(1) >>> F = K.extension(Y**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1) >>> E = F.extension_constant_field(GF(Integer(2)**Integer(3))) >>> E.top() Function field in y defined by y^3 + x^6 + x^4 + x^2 
 
- class sage.rings.function_field.extensions.FunctionFieldExtension[source]¶
- Bases: - RingExtension_generic- Abstract base class of function field extensions.