Singular

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 ```