| #### D.8.1.2 PEsolve Procedure from library `ffsolve.lib` (see ffsolve_lib). Usage: PEsolve(I[, i]); I ideal, i optional integer solve I (system of multivariate equations) over a finite field using an equvalence property when i is not given or set to 2, otherwise if i is set to 0 then check whether common roots exists Return: list if optional parameter is not given or set to 2, integer if optional is set to 0 Assume: basering is a finite field of type (p^n,a) Note: When the optional parameter is set to 0, speoff only checks if I has common roots, then return 1, otherwise return 0. Example:
    LIB "ffsolve.lib";
    ring R = (2,a),x(1..3),lp;
    minpoly=a2+a+1;
    ideal I;
    I[1]=x(1)^2*x(2)+(a)*x(1)*x(2)^2+(a+1);
    I[2]=x(1)^2*x(2)*x(3)^2+(a)*x(1);
    I[3]=(a+1)*x(1)*x(3)+(a+1)*x(1);
    PEsolve(I);
    ==> // ** redefining I (  ideal I = defaultIdeal();) ffsolve.lib::productOfEq\
       s:1001
    ==> // ** redefining new (      list new = increment(start,i);) ffsolve.lib::\
       melyseg:969
    ==> // ** redefining l (int l=1;) ffsolve.lib::melyseg:970
    ==> // ** redefining new (      list new = increment(start,i);) ffsolve.lib::\
       melyseg:969
    ==> // ** redefining l (int l=1;) ffsolve.lib::melyseg:970
    ==> // ** redefining new (      list new = increment(start,i);) ffsolve.lib::\
       melyseg:969
    ==> // ** redefining l (int l=1;) ffsolve.lib::melyseg:970
    ==> // ** redefining new (      list new = increment(start,i);) ffsolve.lib::\
       melyseg:969
    ==> // ** redefining l (int l=1;) ffsolve.lib::melyseg:970
    ==> // ** redefining new (      list new = increment(start,i);) ffsolve.lib::\
       melyseg:969
    ==> // ** redefining l (int l=1;) ffsolve.lib::melyseg:970
    ==> // ** redefining new (      list new = increment(start,i);) ffsolve.lib::\
       melyseg:969
    ==> // ** redefining l (int l=1;) ffsolve.lib::melyseg:970
    ==> // ** redefining new (      list new = increment(start,i);) ffsolve.lib::\
       melyseg:969
    ==> // ** redefining l (int l=1;) ffsolve.lib::melyseg:970
    ==> // ** redefining new (      list new = increment(start,i);) ffsolve.lib::\
       melyseg:969
    ==> // ** redefining l (int l=1;) ffsolve.lib::melyseg:970
    ==> // ** redefining new (      list new = increment(start,i);) ffsolve.lib::\
       melyseg:969
    ==> // ** redefining l (int l=1;) ffsolve.lib::melyseg:970
    ==> // ** redefining new (      list new = increment(start,i);) ffsolve.lib::\
       melyseg:969
    ==> // ** redefining l (int l=1;) ffsolve.lib::melyseg:970
    ==> // ** redefining res (          ideal res;) ffsolve.lib::PEsolve:273
    ==> // ** redefining new (      list new = increment(start,i);) ffsolve.lib::\
       melyseg:969
    ==> // ** redefining l (int l=1;) ffsolve.lib::melyseg:970
    ==> [1]:
    ==>    _[1]=x(3)+1
    ==>    _[2]=x(2)+(a)
    ==>    _[3]=x(1)+1
    ==> [2]:
    ==>    _[1]=x(3)+1
    ==>    _[2]=x(2)+(a+1)
    ==>    _[3]=x(1)+(a+1)

User manual for Singular version 4.3.2, 2023, generated by texi2html.