Home Online Manual
Top
Back: ffsolve
Forward: simplesolver
FastBack:
FastForward:
Up: ffsolve_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

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)