Package sage :: Package rings :: Package polynomial :: Module polynomial_quotient_ring
[hide private]
[frames] | no frames]

Module polynomial_quotient_ring

source code


Quotients of Univariate Polynomial Rings

EXAMPLES:
    sage: R.<x> = QQ[]
    sage: S = R.quotient(x**3-3*x+1, 'alpha')
    sage: S.gen()**2 in S
    True
    sage: x in S
    True
    sage: S.gen() in R
    False
    sage: 1 in S
    True



Classes [hide private]
  PolynomialQuotientRing_generic
Quotient of a univariate polynomial ring by an ideal.
  PolynomialQuotientRing_domain
EXAMPLES:...
  PolynomialQuotientRing_field
EXAMPLES:...
Functions [hide private]
 
PolynomialQuotientRing(ring, polynomial, names=['4ti2-20061025', 'R-2.6.0', 'atlas-3.7.37', 'atlas-3.8.1', 'a...)
Create a quotient of a polynomial ring.
source code
 
is_PolynomialQuotientRing(x) source code
Function Details [hide private]

PolynomialQuotientRing(ring, polynomial, names=['4ti2-20061025', 'R-2.6.0', 'atlas-3.7.37', 'atlas-3.8.1', 'a...)

source code 

Create a quotient of a polynomial ring.

INPUT:
    ring -- a univariate polynomial ring in one variable.
    polynomial -- element
    names -- (optional) name for the variable
    
OUTPUT:
    Creates the quotient ring R/I, where R is the ring and I is
    the principal ideal generated by the polynomial.

EXAMPLES:

We create the quotient ring $\Z[x]/(x^3+7)$, and demonstrate many
basic functions with it:

    sage: Z = IntegerRing()
    sage: R = PolynomialRing(Z,'x'); x = R.gen()
    sage: S = R.quotient(x^3 + 7, 'a'); a = S.gen()
    sage: S
    Univariate Quotient Polynomial Ring in a over Integer Ring with modulus x^3 + 7
    sage: a^3
    -7
    sage: S.is_field()
    False
    sage: a in S
    True
    sage: x in S
    True
    sage: a in R
    False
    sage: S.polynomial_ring()
    Univariate Polynomial Ring in x over Integer Ring
    sage: S.modulus()
    x^3 + 7
    sage: S.degree()
    3

We create the ``iterated'' polynomial ring quotient
$$
       R = (\F_2[y]/(y^{2}+y+1))[x]/(x^3 - 5).
$$

    sage: A.<y> = PolynomialRing(GF(2)); A
    Univariate Polynomial Ring in y over Finite Field of size 2
    sage: B = A.quotient(y^2 + y + 1, 'y2'); print B
    Univariate Quotient Polynomial Ring in y2 over Finite Field of size 2 with modulus y^2 + y + 1
    sage: C = PolynomialRing(B, 'x'); x=C.gen(); print C
    Univariate Polynomial Ring in x over Univariate Quotient Polynomial Ring in y2 over Finite Field of size 2 with modulus y^2 + y + 1
    sage: R = C.quotient(x^3 - 5); print R
    Univariate Quotient Polynomial Ring in xbar over Univariate Quotient Polynomial Ring in y2 over Finite Field of size 2 with modulus y^2 + y + 1 with modulus x^3 + 1


Next we create a number field, but viewed as a quotient of a
polynomial ring over $\Q$:
    sage: R = PolynomialRing(RationalField(), 'x'); x = R.gen()
    sage: S = R.quotient(x^3 + 2*x - 5, 'a')
    sage: S
    Univariate Quotient Polynomial Ring in a over Rational Field with modulus x^3 + 2*x - 5
    sage: S.is_field()
    True
    sage: S.degree()
    3

There are conversion functions for easily going back and forth
between quotients of polynomial rings over $\Q$ and number
fields:
    sage: K = S.number_field(); K
    Number Field in a with defining polynomial x^3 + 2*x - 5
    sage: K.polynomial_quotient_ring()
    Univariate Quotient Polynomial Ring in a over Rational Field with modulus x^3 + 2*x - 5

The leading coefficient must be a unit (but need not be 1).
    sage: R = PolynomialRing(Integers(9), 'x'); x = R.gen()
    sage: S = R.quotient(2*x^4 + 2*x^3 + x + 2, 'a')
    sage: S = R.quotient(3*x^4 + 2*x^3 + x + 2, 'a')
    Traceback (most recent call last):
    ...
    TypeError: polynomial must have unit leading coefficient

Another example:
    sage: R.<x> = PolynomialRing(IntegerRing())
    sage: f = x^2 + 1
    sage: R.quotient(f)
    Univariate Quotient Polynomial Ring in xbar over Integer Ring with modulus x^2 + 1