 LIB "ratgb.lib";
ring r = (0,c),(x,y,Dx,Dy),(a(0,0,1,1),a(0,0,1,0),dp);
// this ordering is an antiblock ordering, as it must be
def S = Weyl(); setring S;
// the ideal I below annihilates parametric Appel F4 function
// where we set parameters to a=2, b=1 and d=0
ideal I =
x*Dx*(x*Dx+c1)  x*(x*Dx+y*Dy2)*(x*Dx+y*Dy1),
y*Dy*(y*Dy1)  y*(x*Dx+y*Dy2)*(x*Dx+y*Dy1);
int is = 2; // hence 1st and 2nd variables, that is x and y
// will become invertible in the localization
def A = ratstd(I,2); // main call
pGBid; // polynomial form of the basis in the localized ring
==> pGBid[1]=2*x*y*Dx*Dy+x*y*Dy^2+y^2*Dy^2y*Dy^2+(c2)*x*Dx2*y*Dy+2
==> pGBid[2]=x*Dx^2y*Dy^2+(c)*Dx
==> pGBid[3]=2*x^2*y*Dy^34*x*y^2*Dy^3+2*y^3*Dy^34*x*y*Dy^34*y^2*Dy^3+2*y*D\
y^3+(2*c)*x^2*Dx*Dy+(2*c)*x*Dx*Dy+2*x^2*Dy^2+(c2)*x*y*Dy^2+(3*c)*y^2*D\
y^24*x*Dy^2+(3*c2)*y*Dy^2+2*Dy^2+(c^2+2*c)*x*Dx+(6*c)*y*Dy+(6*c)
setring A; // A is a commutative ring used for presentation
rGBid; // "rational" or "localized" form of the basis
==> rGBid[1]=(2*x*y)*Dx*Dy+(x*y+y^2y)*Dy^2+(c*x2*x)*Dx+(2*y)*Dy+2
==> rGBid[2]=(x)*Dx^2+(y)*Dy^2+(c)*Dx
==> rGBid[3]=(2*x^2*y4*x*y^24*x*y+2*y^34*y^2+2*y)*Dy^3+(2*c*x^2+2*c*x)*Dx\
*Dy+(c*x*y3*c*y^2+3*c*y+2*x^22*x*y4*x2*y+2)*Dy^2+(c^2*x+2*c*x)*Dx+(6\
*c*y)*Dy+(6*c)
Ratgb::Ddim; // the Krulllike dimension of A/I
==> 0
Ratgb::KXdim; // the dimension of A/I as a left K(x,y)vector space
==> 4
// Now, let us compute a K(x,y) basis explicitly
print(matrix(kbase(rGBid)));
==> // ** rGBid is no standard basis
==> Dy^2,Dy,Dx,1
