#### D.15.4.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

User manual for Singular version 4-0-3, 2016, generated by texi2html.