# frac -- construct a fraction field

## Synopsis

• Usage:
frac R
• Inputs:
• R, a ring, an integral domain
• Outputs:
• , the field of fractions of R

## Description

 ```i1 : F = frac ZZ o1 = QQ o1 : Ring``` ```i2 : F = frac (ZZ[a,b]) o2 = F o2 : FractionField```
After invoking the frac command, the elements of the ring are treated as elements of the fraction field:
 `i3 : R = ZZ/101[x,y];` ```i4 : gens gb ideal(x^2*y - y^3) o4 = | x2y-y3 | 1 1 o4 : Matrix R <--- R``` `i5 : K = frac R;` ```i6 : gens gb ideal(x^2*y - y^3) o6 = | 1 | 1 1 o6 : Matrix K <--- K```
Another way to obtain frac R is with x/y where x, y are elements of R:
 ```i7 : a*b/b^4 a o7 = -- 3 b o7 : F```
Fractions are reduced to the extent possible.
 ```i8 : f = (x-y)/(x^6-y^6) 1 o8 = ---------------------------------- 5 4 3 2 2 3 4 5 x + x y + x y + x y + x*y + y o8 : K``` ```i9 : (x^3 - y^3) * f x - y o9 = ------- 3 3 x + y o9 : K```
The parts of a fraction may be extracted.
 ```i10 : numerator f o10 = 1 o10 : R``` ```i11 : denominator f 5 4 3 2 2 3 4 5 o11 = x + x y + x y + x y + x*y + y o11 : R```
Alternatively, the functions lift and liftable can be used.
 ```i12 : liftable(1/f,R) o12 = true``` ```i13 : liftable(f,R) o13 = false``` ```i14 : lift(1/f,R) 5 4 3 2 2 3 4 5 o14 = x + x y + x y + x y + x*y + y o14 : R```
One can form resolutions and Gröbner bases of ideals in polynomial rings over fraction fields, as in the following example. Note that computations over fraction fields can be quite slow.
 `i15 : S = K[u,v];` ```i16 : I = ideal(y^2*u^3 + x*v^3, u^2*v, u^4); o16 : Ideal of S``` ```i17 : gens gb I o17 = | u2v u3+x/y2v3 v4 uv3 | 1 4 o17 : Matrix S <--- S``` ```i18 : Ires = res I 1 3 2 o18 = S <-- S <-- S <-- 0 0 1 2 3 o18 : ChainComplex``` ```i19 : Ires.dd_2 o19 = {3} | 0 y2/xuv | {3} | -v2 (-y2)/xu2 | {4} | u -v | 3 2 o19 : Matrix S <--- S```
One way to compute a blowup of an ideal I in R, is to compute the kernel of a map of a new polynomial ring into a fraction field of R, as shown below.
 `i20 : A = ZZ/101[a,b,c];` ```i21 : f = map(K, A, {x^3/y^4, x^2/y^2, (x^2+y^2)/y^4}); o21 : RingMap K <--- A``` ```i22 : kernel f 3 2 2 3 2 3 3 o22 = ideal (b c - a b - a , a*b c - a b*c - a c) o22 : Ideal of A```

## Caveat

The input ring should be an integral domain.

Currently, for S as above, one cannot define frac S or fractions u/v. One can get around that by defining B = ZZ/101[x,y,u,v] and identify frac S with frac B.

Note that expressions such as frac QQ[x] are parsed as (frac QQ)[x]. To obtain the fraction field of QQ[x] use instead frac (QQ[x]).