Home Online Manual
Top
Back: MinMult
Forward: classify_aeq_lib
FastBack:
FastForward:
Up: cimonom_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.15.3.3 CompInt

Procedure from library cimonom.lib (see cimonom_lib).

Usage:
CompInt(d); d intvec.

Return:
1 if the toric ideal I(d) is a complete intersection or 0 otherwise.

Assume:
d is a vector of positive integers.

Note:
If printlevel > 0, additional info is displayed in case I(d) is a complete intersection:
if printlevel >= 1, it displays a minimal set of generators of the toric ideal formed by quasihomogeneous binomials. Moreover, if printlevel >= 2 and gcd(d) = 1, it also shows the Frobenius number of the semigroup generated by the elements in d.

Example:
 
LIB "cimonom.lib";
printlevel = 0;
intvec d = 14,15,10,21;
CompInt(d);
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[n+i] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[l] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[n+i] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[l] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[n+i] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[l] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>    return(b[1]/\
   gcd(a,b[1]));<<
==> // ** int division with `/`: use `div` instead in line >>    return(b[1]/\
   gcd(a,b[1]));<<
==> 1
printlevel = 3;
d = 36,54,125,150,225;
CompInt(d);
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[n+i] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[l] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[n+i] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[l] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[n+i] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[l] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[n+i] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[l] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[n+i] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[l] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[n+i] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[l] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>    return(b[1]/\
   gcd(a,b[1]));<<
==> // ** int division with `/`: use `div` instead in line >>    return(b[1]/\
   gcd(a,b[1]));<<
==> // Toric ideal: 
==> id[1]=-x(1)^3+x(2)^2
==> id[2]=-x(4)^3+x(5)^2
==> id[3]=-x(3)^3+x(4)*x(5)
==> id[4]=-x(1)^11*x(2)+x(4)^3
==> // Frobenius number of the numerical semigroup: 
==> 793
==> 1
d = 45,70,75,98,147;
CompInt(d);
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new1 = d\
   [j]/new;<<
==> // ** int division with `/`: use `div` instead in line >>        new2 = d\
   [i]/new;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[n+i] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[l] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[n+i] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[l] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[n+i] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[l] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[n+i] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[l] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[n+i] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[l] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[n+i] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>                \
   new = d[l] / divide;<<
==> // ** int division with `/`: use `div` instead in line >>    return(b[1]/\
   gcd(a,b[1]));<<
==> // ** int division with `/`: use `div` instead in line >>    return(b[1]/\
   gcd(a,b[1]));<<
==> 0