Ideals of non-commutative rings

Generic implementation of one- and two-sided ideals of non-commutative rings.

AUTHOR:

EXAMPLES:

sage: MS = MatrixSpace(ZZ,2,2)
sage: MS*MS([0,1,-2,3])
Left Ideal
(
  [ 0  1]
  [-2  3]
)
 of Full MatrixSpace of 2 by 2 dense matrices over Integer Ring
sage: MS([0,1,-2,3])*MS
Right Ideal
(
  [ 0  1]
  [-2  3]
)
 of Full MatrixSpace of 2 by 2 dense matrices over Integer Ring
sage: MS*MS([0,1,-2,3])*MS
Twosided Ideal
(
  [ 0  1]
  [-2  3]
)
 of Full MatrixSpace of 2 by 2 dense matrices over Integer Ring
>>> from sage.all import *
>>> MS = MatrixSpace(ZZ,Integer(2),Integer(2))
>>> MS*MS([Integer(0),Integer(1),-Integer(2),Integer(3)])
Left Ideal
(
  [ 0  1]
  [-2  3]
)
 of Full MatrixSpace of 2 by 2 dense matrices over Integer Ring
>>> MS([Integer(0),Integer(1),-Integer(2),Integer(3)])*MS
Right Ideal
(
  [ 0  1]
  [-2  3]
)
 of Full MatrixSpace of 2 by 2 dense matrices over Integer Ring
>>> MS*MS([Integer(0),Integer(1),-Integer(2),Integer(3)])*MS
Twosided Ideal
(
  [ 0  1]
  [-2  3]
)
 of Full MatrixSpace of 2 by 2 dense matrices over Integer Ring

See letterplace_ideal for a more elaborate implementation in the special case of ideals in free algebras.

class sage.rings.noncommutative_ideals.IdealMonoid_nc(R)[source]

Bases: IdealMonoid_c

Base class for the monoid of ideals over a non-commutative ring.

Note

This class is essentially the same as IdealMonoid_c, but does not complain about non-commutative rings.

EXAMPLES:

sage: MS = MatrixSpace(ZZ,2,2)
sage: MS.ideal_monoid()
Monoid of ideals of Full MatrixSpace of 2 by 2 dense matrices over Integer Ring
>>> from sage.all import *
>>> MS = MatrixSpace(ZZ,Integer(2),Integer(2))
>>> MS.ideal_monoid()
Monoid of ideals of Full MatrixSpace of 2 by 2 dense matrices over Integer Ring
class sage.rings.noncommutative_ideals.Ideal_nc(ring, gens, coerce=True, side='twosided')[source]

Bases: Ideal_generic

Generic non-commutative ideal.

All fancy stuff such as the computation of Groebner bases must be implemented in sub-classes. See LetterplaceIdeal for an example.

EXAMPLES:

sage: MS = MatrixSpace(QQ,2,2)
sage: I = MS*[MS.1,MS.2]; I
Left Ideal
(
  [0 1]
  [0 0],

  [0 0]
  [1 0]
)
 of Full MatrixSpace of 2 by 2 dense matrices over Rational Field
sage: [MS.1,MS.2]*MS
Right Ideal
(
  [0 1]
  [0 0],

  [0 0]
  [1 0]
)
 of Full MatrixSpace of 2 by 2 dense matrices over Rational Field
sage: MS*[MS.1,MS.2]*MS
Twosided Ideal
(
  [0 1]
  [0 0],

  [0 0]
  [1 0]
)
 of Full MatrixSpace of 2 by 2 dense matrices over Rational Field
>>> from sage.all import *
>>> MS = MatrixSpace(QQ,Integer(2),Integer(2))
>>> I = MS*[MS.gen(1),MS.gen(2)]; I
Left Ideal
(
  [0 1]
  [0 0],
<BLANKLINE>
  [0 0]
  [1 0]
)
 of Full MatrixSpace of 2 by 2 dense matrices over Rational Field
>>> [MS.gen(1),MS.gen(2)]*MS
Right Ideal
(
  [0 1]
  [0 0],
<BLANKLINE>
  [0 0]
  [1 0]
)
 of Full MatrixSpace of 2 by 2 dense matrices over Rational Field
>>> MS*[MS.gen(1),MS.gen(2)]*MS
Twosided Ideal
(
  [0 1]
  [0 0],
<BLANKLINE>
  [0 0]
  [1 0]
)
 of Full MatrixSpace of 2 by 2 dense matrices over Rational Field
side()[source]

Return a string that describes the sidedness of this ideal.

EXAMPLES:

sage: # needs sage.combinat
sage: A = SteenrodAlgebra(2)
sage: IL = A*[A.1+A.2,A.1^2]
sage: IR = [A.1+A.2,A.1^2]*A
sage: IT = A*[A.1+A.2,A.1^2]*A
sage: IL.side()
'left'
sage: IR.side()
'right'
sage: IT.side()
'twosided'
>>> from sage.all import *
>>> # needs sage.combinat
>>> A = SteenrodAlgebra(Integer(2))
>>> IL = A*[A.gen(1)+A.gen(2),A.gen(1)**Integer(2)]
>>> IR = [A.gen(1)+A.gen(2),A.gen(1)**Integer(2)]*A
>>> IT = A*[A.gen(1)+A.gen(2),A.gen(1)**Integer(2)]*A
>>> IL.side()
'left'
>>> IR.side()
'right'
>>> IT.side()
'twosided'