Derivations of function fields

For global function fields, which have positive characteristics, the higher derivation is available:

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
sage: L.<y> = K.extension(Y^3 + x + x^3*Y)                                          # needs sage.rings.function_field
sage: h = L.higher_derivation()                                                     # needs sage.rings.function_field
sage: h(y^2, 2)                                                                     # needs sage.rings.function_field
((x^7 + 1)/x^2)*y^2 + x^3*y
>>> from sage.all import *
>>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1)
>>> L = K.extension(Y**Integer(3) + x + x**Integer(3)*Y, names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.function_field
>>> h = L.higher_derivation()                                                     # needs sage.rings.function_field
>>> h(y**Integer(2), Integer(2))                                                                     # needs sage.rings.function_field
((x^7 + 1)/x^2)*y^2 + x^3*y

AUTHORS:

  • William Stein (2010): initial version

  • Julian Rüth (2011-09-14, 2014-06-23, 2017-08-21): refactored class hierarchy; added derivation classes; morphisms to/from fraction fields

  • Kwankyu Lee (2017-04-30): added higher derivations and completions

class sage.rings.function_field.derivations.FunctionFieldDerivation(parent)[source]

Bases: RingDerivationWithoutTwist

Base class for derivations on function fields.

A derivation on \(R\) is a map \(R \to R\) with \(D(\alpha+\beta)=D(\alpha)+D(\beta)\) and \(D(\alpha\beta)=\beta D(\alpha)+\alpha D(\beta)\) for all \(\alpha,\beta\in R\).

EXAMPLES:

sage: K.<x> = FunctionField(QQ)
sage: d = K.derivation()
sage: d
d/dx
>>> from sage.all import *
>>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1)
>>> d = K.derivation()
>>> d
d/dx
is_injective()[source]

Return False since a derivation is never injective.

EXAMPLES:

sage: K.<x> = FunctionField(QQ)
sage: d = K.derivation()
sage: d.is_injective()
False
>>> from sage.all import *
>>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1)
>>> d = K.derivation()
>>> d.is_injective()
False