1 | initial version |

The simplest way is to do it during the Gröbner basis computation, e.g. in Buchberger's algorithm. I will repeat that it's possible to implement this in a few lines in SageMath.

As an alternative you can use the `lift`

method on a polynomial, passing it a list of generators.

2 | No.2 Revision |

The simplest way is to do it during the Gröbner basis computation, e.g. in Buchberger's algorithm. I will repeat that it's possible to implement this in a few lines in SageMath.

As an alternative you can use the `lift`

method on a polynomial, passing it a list of ~~generators.~~generators or an ideal:

```
sage: R.<x,y> = QQ[]
sage: f = x^2 - y^2
sage: f.lift(R.ideal([x, y]))
[x, -y]
```

3 | No.3 Revision |

The simplest way is to do it during the Gröbner basis computation, e.g. in Buchberger's algorithm. I will repeat that it's possible to implement this in a few lines in SageMath.

As an alternative you can use the `lift`

method on a polynomial, passing it a list of generators or an ideal:

```
sage: R.<x,y> = QQ[]
sage: f = x^2 - y^2
sage: f.lift(R.ideal([x, y]))
[x, -y]
```

Keep in mind that the solution is generally not unique due to the existence of syzygies between the generators.

4 | No.4 Revision |

The simplest way is to do it during the Gröbner basis computation, e.g. in Buchberger's algorithm. ~~I will repeat that it's ~~It's possible to implement this in a few lines in SageMath.

As an alternative you can use the `lift`

method on a polynomial, passing it a list of generators or an ideal:

```
sage: R.<x,y> = QQ[]
sage: f = x^2 - y^2
sage: f.lift(R.ideal([x, y]))
[x, -y]
```

Keep in mind that the solution is generally not unique due to the existence of syzygies between the generators.

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.