# Singular          #### D.8.2.13 valvars

Procedure from library `presolve.lib` (see presolve_lib).

Usage:
valvars(id[,n1,p1,n2,p2,...]);
id=poly/ideal/vector/module,
p1,p2,...= polynomials (product of vars),
n1,n2,...= integers,

ni controls the ordering of vars occuring in pi: ni=0 (resp. ni!=0) means that less (resp. more) complex vars come first (default: p1=product of all vars, n1=0),
the last pi (containing the remaining vars) may be omitted

Compute:
valuation (complexity) of variables with respect to id.
ni controls the ordering of vars occuring in pi:
ni=0 (resp. ni!=0) means that less (resp. more) complex vars come first.

Return:
list with 3 entries:
 ``` : intvec, say v, describing the permutation such that the permuted ring variables are ordered with respect to their complexity in id : list of intvecs, i-th intvec, say v(i) describing permutation of vars in a(i) such that v=v(1),v(2),... : list of ideals and intmat's, say a(i) and M(i), where a(i): factors of pi, M(i): valuation matrix of a(i), such that the j-th column of M(i) is the valuation vector of j-th generator of a(i) ```

Note:
Use `sortvars` in order to actually sort the variables! We define a variable x to be more complex than y (with respect to id) if val(x) > val(y) lexicographically, where val(x) denotes the valuation vector of x:
consider id as list of polynomials in x with coefficients in the remaining variables. Then:
val(x) = (maximal occuring power of x, # of all monomials in leading coefficient, # of all monomials in coefficient of next smaller power of x,...).

Example:
 ```LIB "presolve.lib"; ring s=0,(x,y,z,a,b),dp; ideal i=ax2+ay3-b2x,abz+by2; valvars (i,0,xyz); ==> : ==> 1,2,3,4,5 ==> : ==> : ==> 3,1,2 ==> : ==> 1,2 ==> : ==> : ==> _=x ==> _=y ==> _=z ==> : ==> 2,3,1, ==> 1,1,1, ==> 1,1,0 ==> : ==> _=a ==> _=b ==> : ==> 1,2, ==> 3,1, ==> 0,2 ```

### Misc 