 LIB "hnoether.lib";
ring exring=0,(x,y,t),ds;
poly f=x3+2xy2+y2;
list Hne=develop(f);
list hne_extended=extdevelop(Hne,10);
// compare the HNE matrices ...
print(Hne[1]);
==> 0,x,
==> 0,1
print(hne_extended[1]);
==> 0,x, 0,0,0,0, 0,0,0,0,
==> 0,1,0,2,0,4,0,8,0,16
// ... and the resulting parametrizations:
param(Hne);
==> // ** Warning: result is exact up to order 2 in x and 3 in y !
==> _[1]=t2
==> _[2]=t3
param(hne_extended);
==> // ** Warning: result is exact up to order 10 in x and 11 in y !
==> _[1]=t2+2t44t6+8t816t10
==> _[2]=t3+2t54t7+8t916t11
param(hne_extended,0);
==> // ** Warning: result is exact up to order 10 in x and 11 in y !
==> [1]:
==> _[1]=t2+2t44t6+8t816t10
==> _[2]=t3+2t54t7+8t916t11
==> [2]:
==> 10,11
// An example with more than one branch:
list L=hnexpansion(f*(x2+y4));
==>
==> // 'hnexpansion' created a list of one ring.
==> // To see the ring and the data stored in the ring, type (if you assigned
==> // the name L to the list):
==> show(L);
==> // To display the computed HN expansion, type
==> def HNring = L[1]; setring HNring; displayHNE(hne);
def HNring = L[1]; setring HNring;
param(hne);
==> // Parametrization of branch number 1 computed.
==> // ** Warning: result is exact up to order 4 in x and 5 in y !
==> // Parametrization of branch number 2 computed.
==> // Parametrization of branch number 3 computed.
==> [1]:
==> _[1]=x2+2*x4
==> _[2]=x3+2*x5
==> [2]:
==> _[1]=(a)*x2
==> _[2]=x
==> [3]:
==> _[1]=(a)*x2
==> _[2]=x
