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
See letterplace_ideal for a more elaborate implementation in the special case of ideals in free algebras.
TESTS:
sage: A = SteenrodAlgebra(2)
sage: IL = A*[A.1+A.2,A.1^2]; IL
Left Ideal (Sq(2) + Sq(4), Sq(1,1)) of mod 2 Steenrod algebra, milnor basis
sage: TestSuite(IL).run(skip=['_test_category'],verbose=True)
running ._test_eq() . . . pass
running ._test_not_implemented_methods() . . . pass
running ._test_pickling() . . . pass
Bases: sage.rings.ideal_monoid.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
Bases: sage.rings.ideal.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
Return a string that describes the sidedness of this ideal.
EXAMPLES:
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'