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 Groebner 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
|