1 | initial version |

Nonzero prime ideals in a Dedekind domain – such as $\mathfrak{p} = (1-\sqrt{-2})$ in $O_K$ – are maximal, so the quotient is a field, called the residue field in Sage:

```
K.<a> = QuadraticField(-2)
OK = K.ring_of_integers()
P = OK.ideal(1-a)
OK_mod_P = P.residue_field()
```

Then you can factor polynomials over $O_K/\mathfrak{p}$, e.g. as follows:

```
sage: R.<x> = PolynomialRing(ZZ)
sage: f = x^3 + 5
sage: f_mod_P = f.change_ring(OK_mod_P); f_mod_P
x^3 + 2
sage: f_mod_P.factor()
(x + 2)^3
sage: S.<y> = PolynomialRing(OK)
sage: S(f) - S(f_mod_P)
3
sage: S(f) - S(f_mod_P) in S.ideal(P)
True
```

2 | No.2 Revision |

Nonzero prime ideals in a Dedekind domain – such as $\mathfrak{p} = (1-\sqrt{-2})$ in $O_K$ – are maximal, so the quotient is a field, called the residue field in Sage:

```
K.<a> = QuadraticField(-2)
OK = K.ring_of_integers()
P = OK.ideal(1-a)
OK_mod_P = P.residue_field()
```

Then you can factor polynomials over $O_K/\mathfrak{p}$, e.g. as follows:

```
sage: R.<x> = PolynomialRing(ZZ)
sage: f = x^3 + 5
sage: f_mod_P = f.change_ring(OK_mod_P); f_mod_P
x^3 + 2
sage: f_mod_P.factor()
(x + 2)^3
```

You can also lift the factorization and double-check the result (e.g. for fun):

```
sage: S.<y> = PolynomialRing(OK)
sage: factorization_lift = prod(S(g)^e for (g,e) in f_mod_P.factor()); factorization_lift
y^3 + 6*y^2 + 12*y + 8
sage: S(f) -
```~~S(f_mod_P)
~~factorization_lift
-6*y^2 - 12*y - 3
sage: S(f) - ~~S(f_mod_P) ~~factorization_lift in S.ideal(P)
True

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.