# toField(Ring) -- declare that a ring is a field

## Synopsis

• Usage:
L = toField R
• Function: toField
• Inputs:
• Outputs:
• L, a new ring, isomorphic to R, declared to be a field. Polynomial rings over it will support GrÃ¶bner basis operations.

## Description

 `i1 : A = QQ[i]/(i^2+1);` ```i2 : L = toField A o2 = L o2 : PolynomialRing``` ```i3 : B = L[x,y,z] o3 = B o3 : PolynomialRing``` ```i4 : I = ideal(i*x^2-y-i, i*y^2-z-i) 2 2 o4 = ideal (i*x - y - i, i*y - z - i) o4 : Ideal of B``` ```i5 : gens gb I o5 = | y2+iz-1 x2+iy-1 | 1 2 o5 : Matrix B <--- B```

If the engine eventually discovers that some nonzero element of L is not a unit, an error will be signalled. The user may then use getNonUnit to obtain a non-invertible element of L. If a ring probably is a field, it can be used as a field until a contradiction is found, and this may be a good way of discovering whether a ring is a field.

 `i6 : A = ZZ[a]/(a^2+3);` ```i7 : L = toField A o7 = L o7 : PolynomialRing``` ```i8 : L[x,y,z] o8 = L[x, y, z] o8 : PolynomialRing``` ```i9 : try gb ideal (a*x^2-y^2-z^2, y^3, z^3) else getNonUnit L o9 = a o9 : L```