"Source: Text/Commut/Ideal.text";
"Line: 2132";
"Date: Thu Sep 25 14:47:46 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Commut/Ideal.text, line: 2132
// Example: H116E14 ()
print "Example: H116E14";
ei := GetEchoInput();
SetEchoInput(true);
P<x,y> := PolynomialRing(RationalField(),2);
// we begin with a very simple example (prime ideal)
I := Ideal((x - y^2)^2 - x*y^3);
time Js := Normalisation(I); // function field method
#Js;
assert $1 eq 1;
N := Js[1][1];
N<[a]> := N;
N;
// Now try the basic function field method
time Js := Normalisation(I: FFMin:=false);
//get the same result here either way
N := Js[1][1];
N<[a]> := N;
N;
time Js := Normalisation(I:UseFF:=false); // try the general method
J := Js[1][1];
Groebner(J);
J;
// try the general method with UseMax (which applies here)
time Js := Normalisation(I:UseFF:=false,UseMax:=true); 
J := Js[1][1];
Groebner(J);
J;
// now try a harder case - a singular affine form of modular curve X1(11)
I := ideal<P | (x-y)*x*(y+x^2)^3-y^3*(x^3+x*y-y^2)>;
time Js := Normalisation(I: FFMin := false);
#Js;
assert $1 eq 1;
J := Js[1][1];
Groebner(J);
J;
time Js := Normalisation(I);
J := Js[1][1];
Groebner(J);
J;
// Minimised result is a cubic equation in K[x,y] - as good as we could get!
// This example takes MUCH longer with the general method - even setting
// UseMax := true.
SetEchoInput(ei);
