#### 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.4.1, 2025, generated by texi2html.