
D.6.1.4 semigroup
Procedure from library alexpoly.lib (see alexpoly_lib).
 Usage:
 semigroup(INPUT); INPUT poly or list
 Assume:
 INPUT is either a REDUCED bivariate polynomial defining a plane curve singularity,
or the output of
hnexpansion(f[,"ess"]) , or the list hne in
the ring created by hnexpansion(f[,"ess"]) , or the output of
develop(f) resp. of extdevelop(f,n) , or a list containing
the contact matrix and a list of integer vectors with the characteristic exponents
of the branches of a plane curve singularity, or an integer vector containing
the characteristic exponents of an irreducible plane curve singularity.
 Return:
 a list with three entries. The first and the second are lists
v_1,...,v_s
and w_1,...,w_r respectively of integer vectors such that the semigroup
of the plane curve defined by the INPUT is generated by the vectors
v_1,...,v_s,w_1+k*e_1,...,w_r+k*e_r , where e_i denotes the ith standard
basis vector and k runs through all nonnegative integers. The thrid entry is the conductor
of the plane curve singularity. Note that r is the number of branches of the plane curve
singularity and integer vectors thus have size r.
 Note:
 If the output is zero this means that the curve has one branch and is regular.
In the reducible case the set of generators may not be minimal.
If you are not sure whether the INPUT polynomial is reduced or not, use
squarefree(INPUT) as input instead.
Example:
 LIB "alexpoly.lib";
ring r=0,(x,y),ls;
// Irreducible Case
semigroup((x2y3)^24x5yx7);
==> [1]:
==> [1]:
==> 4
==> [2]:
==> 6
==> [3]:
==> 17
==> [2]:
==> empty list
==> [3]:
==> 20
// In the irreducible case, invariants() also calculates a minimal set of
// generators of the semigroup.
invariants((x2y3)^24x5yx7)[1][2];
==> 4,6,17
// Reducible Case
poly f=(y2x3)*(y2+x3)*(y42x3y24x5y+x6x7);
semigroup(f);
==> [1]:
==> [1]:
==> 2,4,2
==> [2]:
==> 3,6,3
==> [2]:
==> [1]:
==> 7,13,6
==> [2]:
==> 13,26,12
==> [3]:
==> 6,12,6
==> [3]:
==> 21,41,20
 See also:
resolutiongraph;
totalmultiplicities.
