### Navigation

- index
- modules |
- next |
- previous |
- General Rings, Ideals, and Morphisms »

# Quotient Ring Elements

AUTHORS:

- William Stein

class `sage.rings.quotient_ring_element.``QuotientRingElement`(parent, rep, reduce=True)

  Bases: `sage.structure.element.RingElement`

  An element of a quotient ring \(R/I\).

  INPUT:

  - `parent` - the ring \(R/I\)
  - `rep` - a representative of the element in \(R\); this is used as the internal representation of the element
  - `reduce` - bool (optional, default: True) - if True, then the internal representation of the element is `rep` reduced modulo the ideal \(I\)

  EXAMPLES:

      sage: R.<x> = PolynomialRing(ZZ)
      sage: S.<xbar> = R.quo((4 + 3*x + x^2, 1 + x^2)); S
      Quotient of Univariate Polynomial Ring in x over Integer Ring by the ideal (x^2 + 3*x + 4, x^2 + 1)
      sage: v = S.gens(); v
      (xbar,)

      sage: loads(v[0].dumps()) == v[0]
      True

      sage: R.<x,y> = PolynomialRing(QQ, 2)
      sage: S = R.quo(x^2 + y^2); S
      Quotient of Multivariate Polynomial Ring in x, y over Rational Field by the ideal (x^2 + y^2)
      sage: S.gens()
      (xbar, ybar)

  We name each of the generators.

      sage: S.<a,b> = R.quotient(x^2 + y^2)
      sage: a
      a
      sage: b
      b
      sage: a^2 + b^2 == 0
      True
      sage: b.lift()
      y
      sage: (a^3 + b^2).lift()
      -x*y^2 + y^2

  `is_unit`()

    Return True if self is a unit in the quotient ring.

    TODO: This is not fully implemented, as illustrated in the example below. So far, self is determined to be unit only if its representation in the cover ring \(R\) is also a unit.

    EXAMPLES:

        sage: R.<x,y> = QQ[]; S.<a,b> = R.quo(1 - x*y); type(a)
        <class 'sage.rings.quotient_ring_element.QuotientRing_generic_with_category.element_class'>
        sage: a*b
        1
        sage: a.is_unit()
        Traceback (most recent call last):
        ...
        NotImplementedError
        sage: S(1).is_unit()
        True

  `lc`()

    Return the leading coefficent of this quotient ring element.

    EXAMPLE:

        sage: R.<x,y,z>=PolynomialRing(GF(7),3,order='lex')
        sage: I = sage.rings.ideal.FieldIdeal(R)
        sage: Q = R.quo( I )
        sage: f = Q( z*y + 2*x )
        sage: f.lc()
        2

    TESTS:

        sage: R.<x,y> = QQ[]; S.<a,b> = R.quo(x^2 + y^2); type(a)
        <class 'sage.rings.quotient_ring_element.QuotientRing_generic_with_category.element_class'>
        sage: (a+3*a*b+b).lc()
        3

  `lift`()

    If self is an element of \(R/I\), then return self as an element of \(R\).

    EXAMPLES:

        sage: R.<x,y> = QQ[]; S.<a,b> = R.quo(x^2 + y^2); type(a)
        <class 'sage.rings.quotient_ring_element.QuotientRing_generic_with_category.element_class'>
        sage: a.lift()
        x
        sage: (3/5*(a + a^2 + b^2)).lift()
        3/5*x

  `lm`()

    Return the leading monomial of this quotient ring element.

    EXAMPLE:

        sage: R.<x,y,z>=PolynomialRing(GF(7),3,order='lex')
        sage: I = sage.rings.ideal.FieldIdeal(R)
        sage: Q = R.quo( I )
        sage: f = Q( z*y + 2*x )
        sage: f.lm()
        xbar

    TESTS:

        sage: R.<x,y> = QQ[]; S.<a,b> = R.quo(x^2 + y^2); type(a)
        <class 'sage.rings.quotient_ring_element.QuotientRing_generic_with_category.element_class'>
        sage: (a+3*a*b+b).lm()
        a*b

  `lt`()

    Return the leading term of this quotient ring element.

    EXAMPLE:

        sage: R.<x,y,z>=PolynomialRing(GF(7),3,order='lex')
        sage: I = sage.rings.ideal.FieldIdeal(R)
        sage: Q = R.quo( I )
        sage: f = Q( z*y + 2*x )
        sage: f.lt()
        2*xbar

    TESTS:

        sage: R.<x,y> = QQ[]; S.<a,b> = R.quo(x^2 + y^2); type(a)
        <class 'sage.rings.quotient_ring_element.QuotientRing_generic_with_category.element_class'>
        sage: (a+3*a*b+b).lt()
        3*a*b

  `monomials`()

    Return the monomials in `self`.

    OUTPUT:

    A list of monomials.

    EXAMPLES:

        sage: R.<x,y> = QQ[]; S.<a,b> = R.quo(x^2 + y^2); type(a)
        <class 'sage.rings.quotient_ring_element.QuotientRing_generic_with_category.element_class'>
        sage: a.monomials()
        [a]
        sage: (a+a*b).monomials()
        [a*b, a]
        sage: R.zero().monomials()
        []

  `reduce`(G)

    Reduce this quotient ring element by a set of quotient ring elements `G`.

    INPUT:

    - `G` - a list of quotient ring elements

    EXAMPLE:

        sage: P.<a,b,c,d,e> = PolynomialRing(GF(2), 5, order='lex')
        sage: I1 = ideal([a*b + c*d + 1, a*c*e + d*e, a*b*e + c*e, b*c + c*d*e + 1])
        sage: Q = P.quotient( sage.rings.ideal.FieldIdeal(P) )
        sage: I2 = ideal([Q(f) for f in I1.gens()])
        sage: f = Q((a*b + c*d + 1)^2  + e)
        sage: f.reduce(I2.gens())
        ebar

  `variables`()

    Return all variables occurring in `self`.

    OUTPUT:

    A tuple of linear monomials, one for each variable occurring in `self`.

    EXAMPLES:

        sage: R.<x,y> = QQ[]; S.<a,b> = R.quo(x^2 + y^2); type(a)
        <class 'sage.rings.quotient_ring_element.QuotientRing_generic_with_category.element_class'>
        sage: a.variables()
        (a,)
        sage: b.variables()
        (b,)
        sage: s = a^2 + b^2 + 1; s
        1
        sage: s.variables()
        ()
        sage: (a+b).variables()
        (a, b)

### Navigation

- index
- modules |
- next |
- previous |
- General Rings, Ideals, and Morphisms »