1 | initial version |

This output should never occur, because `Id.normal_basis()`

should return a list/sequence of *monomials* which form a vector space basis of the quotient ring, and `0`

is not a monomial (it is the "empty sum of monomials").

If `Id.dimension() > 0`

then the quotient is not finite-dimensional, and the convention seems to be to return the empty list `[]`

in this case. In recent versions of SageMath you can still obtain part of the (infinite) basis, by passing a `degree`

argument to `normal_basis`

; this will return all monomials of the specified degree in the basis:

```
sage: R.<x,y,z>=PolynomialRing(QQ)
sage: I=R.ideal([x^2+y^2-1, z])
sage: I.dimension()
1
sage: I.normal_basis(1)
[y, x]
sage: I.normal_basis(2)
[y^2, x*y]
```

In the above output `z`

is absent because $z=0$ in the quotient, and `x^2`

is absent because $x^2 = 1 - y^2$ in the quotient, etc.

2 | No.2 Revision |

This output should never occur, because `Id.normal_basis()`

should return a list/sequence of *monomials* which form a vector space basis of the quotient ring, and `0`

is not a monomial (it is the "empty sum of monomials").

If `Id.dimension() > 0`

then the quotient is not ~~finite-dimensional, ~~finite-dimensional (i.e. the normal basis is infinite), and the ~~convention ~~*convention* seems to be for `normal_basis()`

to return the empty list `[]`

in this ~~case. ~~case (it does not mean that the normal basis is actually empty, it just means we cannot really return the whole thing in a reasonable way). In recent versions of SageMath you can still obtain part of the (infinite) basis, by passing a `degree`

argument to `normal_basis`

; this will return all monomials of the specified degree in the basis:

```
sage: R.<x,y,z>=PolynomialRing(QQ)
sage: I=R.ideal([x^2+y^2-1, z])
sage: I.dimension()
1
sage: I.normal_basis(1)
[y, x]
sage: I.normal_basis(2)
[y^2, x*y]
```

In the above output `z`

is absent because $z=0$ in the quotient, and `x^2`

is absent because $x^2 = 1 - y^2$ in the quotient, etc.

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.