#### D.4.26.1 nonMonomials

Procedure from library `pointid.lib` (see pointid_lib).

Usage:
  nonMonomials(id); id = <list of vectors> or <list of lists> or <module> or <matrix>.
  Let A= {a1,...,as} be a set of points in K^n, ai:=(ai1,...,ain), then A can be given as
  - a list of vectors (the ai are vectors) or
  - a list of lists (the ai are lists of numbers) or
  - a module s.t. the ai are generators or
  - a matrix s.t. the ai are columns

Assume:
  basering must have ordering ip, i.e., be of the form 0,x(1..n),ip; (the first entry of a point belongs to the lex-smallest variable, etc.)

Return:
  ideal, the non-monomials of the vanishing ideal I(A) of A

Purpose:
  compute the set of non-monomials Mon(x(1),...,x(n)) \ {LM(f)|f in I(A)} of the vanishing ideal I(A) of the given set of points A in K^n, where K[x(1),...,x(n)] is equipped with the lexicographical ordering induced by x(1)<...<x(n) by using the algorithm of Cerlienco-Mureddu

Example:

    LIB "pointid.lib";
    ring R1 = 0,x(1..3),ip;
    vector a1 = [4,0,0];
    vector a2 = [2,1,4];
    vector a3 = [2,4,0];
    vector a4 = [3,0,1];
    vector a5 = [2,1,3];
    vector a6 = [1,3,4];
    vector a7 = [2,4,3];
    vector a8 = [2,4,2];
    vector a9 = [1,0,2];
    list A = a1,a2,a3,a4,a5,a6,a7,a8,a9;
    nonMonomials(A);
    ==> _[1]=1
    ==> _[2]=x(1)
    ==> _[3]=x(2)
    ==> _[4]=x(1)^2
    ==> _[5]=x(3)
    ==> _[6]=x(1)^3
    ==> _[7]=x(2)*x(3)
    ==> _[8]=x(3)^2
    ==> _[9]=x(1)*x(2)
    matrix MAT[9][3] = 4,0,0,2,1,4,2,4,0,3,0,1,2,1,3,1,3,4,2,4,3,2,4,2,1,0,2;
    MAT = transpose(MAT);
    print(MAT);
    ==> 4,2,2,3,2,1,2,2,1,
    ==> 0,1,4,0,1,3,4,4,0,
    ==> 0,4,0,1,3,4,3,2,2
    nonMonomials(MAT);
    ==> _[1]=1
    ==> _[2]=x(1)
    ==> _[3]=x(2)
    ==> _[4]=x(1)^2
    ==> _[5]=x(3)
    ==> _[6]=x(1)^3
    ==> _[7]=x(2)*x(3)
    ==> _[8]=x(3)^2
    ==> _[9]=x(1)*x(2)
    module MOD = gen(3),gen(2)-2*gen(3),2*gen(1)+2*gen(3),2*gen(2)-2*gen(3),gen(1)+3*gen(3),gen(1)+gen(2)+3*gen(3),gen(1)+gen(2)+gen(3);
    print(MOD);
    ==> 0,0, 2,0, 1,1,1,
    ==> 0,1, 0,2, 0,1,1,
    ==> 1,-2,2,-2,3,3,1
    nonMonomials(MOD);
    ==> _[1]=1
    ==> _[2]=x(2)
    ==> _[3]=x(1)
    ==> _[4]=x(2)^2
    ==> _[5]=x(1)^2
    ==> _[6]=x(1)*x(2)
    ==> _[7]=x(3)
    ring R2 = 0,x(1..2),ip;
    list l1 = 0,0;
    list l2 = 0,1;
    list l3 = 2,0;
    list l4 = 0,2;
    list l5 = 1,0;
    list l6 = 1,1;
    list L = l1,l2,l3,l4,l5,l6;
    nonMonomials(L);
    ==> _[1]=1
    ==> _[2]=x(2)
    ==> _[3]=x(1)
    ==> _[4]=x(2)^2
    ==> _[5]=x(1)^2
    ==> _[6]=x(1)*x(2)

User manual for Singular version 4.4.1, 2025, generated by texi2html.