Singular
https://www.singular.uni-kl.de/forum/

solving multivariate equations over finite field
https://www.singular.uni-kl.de/forum/viewtopic.php?f=10&t=1949
Page 1 of 1

Author:  borisz [ Sat Jul 30, 2011 2:10 pm ]
Post subject:  solving multivariate equations over finite field

As part of my master's thesis I started to write a solver for systems of multivariate polynomial equations over finite fields.

I am curious if there is any work in progress in this field or in finding roots of univariate polynomials with coefficients in GF(p^n)?

Author:  gorzel [ Mon Aug 01, 2011 3:20 pm ]
Post subject:  Re: solving multivariate equations over finite field

See the discussion in the forum:

Solving systems of polynomials over GF(2)
viewtopic.php?f=10&t=1908

combined with

...declaration of ring or galois field
viewtopic.php?f=10&t=1823

Author:  gorzel [ Mon Aug 01, 2011 3:41 pm ]
Post subject:  Re: solving multivariate equations over finite field

http://www.singular.uni-kl.de/Manual/la ... htm#SEC766

Edit: see the Note

http://www.singular.uni-kl.de/Manual/la ... htm#SEC256

Singular can (at the moment) not factorize over GF(p^n) for baserings
defined as ring r =(p^n,a),....

So you have to choose the fir st form by setting the minpoly yourself.
Code:
> ring ra5 = (25,a),(x,y,z),dp;
> poly f = (x+y)*(z-x);
> factorize(f);
   ? not implemented
   ? error occurred in or before STDIN line 9: `factorize(f);`
> basering;
//   # ground field : 25
//   primitive element : a
//   minpoly        : 1*a^2+4*a^1+2*a^0
//   number of vars : 3
//        block   1 : ordering dp
//                  : names    x y z
//        block   2 : ordering C
> ring ra25 = (5,a),(x,y,z),lp;
> minpoly = 1*a^2+4*a^1+2*a^0;
> poly f = (x+y)*(z-x);
> factorize(f);
[1]:
   _[1]=1
   _[2]=x+y
   _[3]=-x+z
[2]:
   1,1,1


Code:
> LIB "general.lib";
> cyclic(3);
_[1]=x+y+z
_[2]=xy+xz+yz
_[3]=xyz-1
> ideal I = _;
> option(redSB);
> facstd(I);
[1]:
   _[1]=z+(-2a-1)
   _[2]=y+(2a+2)
   _[3]=x-1
[2]:
   _[1]=z-1
   _[2]=y+(-2a-1)
   _[3]=x+(2a+2)
[3]:
   _[1]=z+(2a+2)
   _[2]=y-1
   _[3]=x+(-2a-1)
[4]:
   _[1]=z-1
   _[2]=y+(2a+2)
   _[3]=x+(-2a-1)
[5]:
   _[1]=z+(2a+2)
   _[2]=y+(-2a-1)
   _[3]=x-1
[6]:
   _[1]=z+(-2a-1)
   _[2]=y-1
   _[3]=x+(2a+2)

Then check also
triang.lib
http://www.singular.uni-kl.de/Manual/la ... tm#SEC1556

Code:
> triangLfak(std(I));
[1]:
   _[1]=z-1
   _[2]=y+(-2a-1)
   _[3]=x+(2a+2)
[2]:
   _[1]=z-1
   _[2]=y+(2a+2)
   _[3]=x+(-2a-1)
[3]:
   _[1]=z+(-2a-1)
   _[2]=y-1
   _[3]=x+(2a+2)
[4]:
   _[1]=z+(-2a-1)
   _[2]=y+(2a+2)
   _[3]=x-1
[5]:
   _[1]=z+(2a+2)
   _[2]=y+(-2a-1)
   _[3]=x-1
[6]:
   _[1]=z+(2a+2)
   _[2]=y-1
   _[3]=x+(-2a-1)

Page 1 of 1 All times are UTC + 1 hour [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/