Items tagged with basis

how to check the dependency of groebner basis or a set of polynomials?

I need  some examples s.t. the computation of their lexicographic Groebner basis is heavy?

Thank you so much.

Hi, I want to ask. the maple program that i have done have something wrong somewhere.

for an example changes basis

 from e_{1}e_{1}=e_{1} , e_{1}e_{2}=e_{2} maple program reading :A1 : (1,1,1)=1,B1: (1,2,2)=1

to e_{2}e_{2}=e_{2} , e_{2}e_{1}=e_{1} maple program reading :A2: (2,2,2)=1,B2: (2,1,1)=1

these changes basis above are 2 operation, left product and right product

A1 and A2 are left product, while B1 and B2 are right product,

i need to make A1 isomorphic to A2, and B1 isomorphic to B2.

by using maple program, i should get identity in matrix form 2x2

[0 1] but i get [0         1]

[1 0],            [C_{21} 0],

For isomorphism, the determinant should not be zero

here's are my maple program:

>isom := proc (A1, A2, B1, B2, n)

local i, j, k, s, r, eqns, t, TEST, BChange, sols, m, S1, S2, C;

C := matrix(n, n);

BChange := matrix(n, n);

TEST := 0; eqns := {};

for i to n do for j to n do for m to n do

S1 := sum(A1[i, j, k]*C[k, m], k = 1 .. n); S2 := sum(C[i, r]*(sum(A2[r, s, m]*C[j, s], s = 1 .. n)), r = 1 .. n);

eqns := `union`(eqns, {S1 = S2})

end do end do end do;

for i to n do for j to n do for m to n do

S1 := sum(B1[i, j, k]*C[k, m], k = 1 .. n); S2 := sum(C[i, r]*(sum(C[j, s]*B2[r, s, m], s = 1 .. n)), r = 1 .. n);

eqns := `union`(eqns, {S1 = S2})

end do end do end do;

sols := [solve(eqns)];

t := nops(sols);

for i to t do for j to n do for k to n do

BChange[k, j] := subs(sols[i], C[k, j])

end do end do;

if simplify(linalg:-det(BChange)) <> 0 then print("BChange", BChange);

print("s1", S1); print("s2", S2); print("The det is", simplify(linalg:-det(BChange)));

TEST := 1 end if end do;

if TEST = 0 then print("These two algebras are not isomorphic")

end if end proc

input maple program:

> DENDA1 := array(sparse, 1 .. 2, 1 .. 2, 1 .. 2, [(1, 1, 1) = 1]);
> DENDB1 := array(sparse, 1 .. 2, 1 .. 2, 1 .. 2, [(1, 2, 2) = 1]);
> DENDA2 := array(sparse, 1 .. 2, 1 .. 2, 1 .. 2, [(2, 2, 2) = 1]);
> DENDB2 := array(sparse, 1 .. 2, 1 .. 2, 1 .. 2, [(2, 1, 1) = 1]);
> isom(DENDA1, DENDA2, DENDB1, DENDB2, 2);

I solve a linear system of equations which is rank deficient. Naturally, when Maple solves it symbolically, it chooses some of its variables to use them as a basis to express the solution. 

In a specific problem I'm solving, the basis chosen by Maple is -very- smart, showing a good exploitation of the problem structure. 

I'm curious as to what kind of factorization is used by default, or if there's a lot of by hand "black magic" involved, what are its general characteristics. 


Best regards


I was using Maple18 for the Ideal Membership Problem. While checking it I got the following error

Error, (in F4:-GroebnerBasis) argument `[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-48,-48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]/A1[119295][119295]` is incorrect or out of order

Please tell me, how can I resolve this error ?.

Thank You.

do not know why Basis got error in this case.

how to calculate this Basis?

prej := Matrix([[diff(eq2,a),diff(eq2,b),diff(eq2,c)],[diff(eq3,a),diff(eq3,b),diff(eq3,c)],[diff(eq4,a),diff(eq4,b),diff(eq4,c)]]);
jaco := Determinant(prej);
jaco := -a*b*c^2+c^2;
g3 := [diff(jaco,a),diff(jaco,b),diff(jaco,c)];
K := [r-g3[1],u-g3[2],v-g3[3]];
G := Basis(K, 'tord', degrevlex(r,u,v));

Error, (in LinearAlgebra:-Basis) invalid input: LinearAlgebra:-Basis expects its 1st argument, V, to be of type {Vector, {list(Vector), set(Vector)}} but received [b*c^2+r, a*c^2+u, 2*a*b*c-2*c+v]


T := lexdeg([x,y,z],[e1,e2]);
intermsof1 := y;
intermsof2 := -z;
GB := Basis([e1-intermsof1, e2-intermsof2], 'tord',T);
result := NormalForm(y^2-x*z, GB,'tord', T);
result := NormalForm(y^2-x*z, GB, T);

originally Basis do not have error when without parameter 'tord'

after it has argument error, it has to be added extra parameter tord

NormalForm has the same error too.

i do not understand why it has error, how to solve?

i just want to express y^2-x*z in terms of y and -z



How to generate all basis of a set? (rather an the one basis that basis generates)

how to get maple to do linear algebra in Z_2 (integers modulo 2)

I don't want it to solve and then reduce mod 2 I want it to work over Z_2 so basis([ [1,1,1], [1,-1,1 ]) = [1,1,1]  etc

Hi all,

I am considering a scenario in which I have, for example, four matrices, A, B, C, and D, which form a basis for all of the (numerical) calculations I am doing.  (For example, A + B = i*C, etc.)  Right now, if I add A and B, I get a matrix back whose elements are i*C, but I cannot get Maple to express it as i*C.  As a simple example, let:

A = (1 0 // 0 1 )

B = (0 1 // -1 0)

C = (i i // -i i)

Then A + B returns (1 1 // -1 1); I'd like for Maple to "intelligently" give iC. can I get Maple to expand a given matrix (A+B) in terms of a particular basis (here, simply C)?

Thank you.


g:=Groebner:-Basis([a-2.0*b,b-2], plex);

Groebner:-Reduce(a, g, plex); 

Error, (in content/polynom) general case of floats not handled

How to solve this problem simply?


i use a not good example's polynomials to illustrate the idea

T := lexdeg([a,b,c],[e1,e2, e3]);
GB := Basis([e1-u1, e2-u2, e3-u3],T);
result := NormalForm(a*b+b*c, GB, T);

now result is to express a*b+b*c in terms of e1, e2, e3 which represent u1, u2, u3.

is it possible to use preimage to find possible u1,u2,u3 if unknown u1,u2,u3 and given known eqx?

How to use preimage to find possible eqx if given known u1,u2,u3 to find eqx in NormalForm(eqx, GB, T)?


what i confused in code below is that if i know it in terms of -1*e1+2*e2+*e3

it already can be used to find eqx, it seems reasonable to put source1list as unknown to find eqx  or find unknown eq1, eq2, eq3 if given known eqx.

source1 := PolynomialRing([e1, e2, e3]);
target1 := PolynomialRing([a, b, c]);
source1list := [...];
target1list := [eq1, eq2, eq3];
cs := PolynomialMapPreimage(target1list, source1list, source1, target1);
Info(cs, source1);
[[e1-e2-e3], [1]]

follow Computing non-commutative Groebner bases and Groebner bases for modules

in maple 12

Error, (in Groebner:-Basis) the first argument must be a list or set of polynomials or a PolynomialIdeal


then i find in maple 15 help file is changed from module M := [seq(Vector(subsop(i+1 = 1, [F[i], 0, 0, 0])), i = 1 .. 3)]

to array M := [seq( s^3*F[i] + s^(3-i), i=1..3)];

though it can run, but when apply other example can not run

such as


F := [2*x^2+3*y+z^2, x^2*z^2+z+2*x, x^4*y^7+3*x];
M := [seq( s^3*F[i] + s^(3-i), i=1..3)];
A := poly_algebra(x,y,z,s);
T := MonomialOrder(A, lexdeg([s], [x,y,z]), {s});
G := Groebner[Basis](M, T);
Error, (in Groebner:-Basis) the first argument must be a list or set of polynomials or a PolynomialIdeal

G1 := select(proc(a) evalb(degree(a,s)=3) end proc, G);
[seq(Vector([seq(coeff(j,s,3-i), i=0..3)]), j=G1)];
C := Matrix([seq([seq(coeff(j,s,3-i), i=1..3)], j=G1)]);
GB := map(expand, convert(C.Vector(F), list));
Groebner[Basis](F, tdeg(x,y,z));

#page 320 and 322 of book Singular introduction to commutative algebra

it return too many recursion 


hilbertseries([a+a*c, a+a*b, a+b+c]);

eq1 := a+a*c;

eq2 := a+a*b;

eq3 := a+b+c;

eq1a := Homogenize(eq1, h);

eq2a := Homogenize(eq2, h);

eq3a := Homogenize(eq3, h);


GB := Basis([eq1a,eq2a,eq3a], T3); #a


#MonomialHilbertPoincare(LeadingMonomial(GB[1],T3), LeadingMonomial(GB[2],T3), LeadingMonomial(GB[3],T3));



MonomialHilbertPoincare := proc (I3)

#I3:=[LeadingMonomial(GB[1],T3), LeadingMonomial(GB[2],T3), LeadingMonomial(GB[3],T3)];


varj := [h,c,b,a];

I2 := InterReduce(I3, T2);

s := nops(I2);

if I2[1] = 0 then return 1 end if:

if I2[1] = 1 then return 0 end if:

if degree(I2[s]) = 1 then return (1-varj[1])^s end if:

lt := LeadingTerm(I2[s],T2);

leadexp := [degree(lt[2],h),degree(lt[2],c),degree(lt[2],b),degree(lt[2],a)];

j := 1;

for z from 1 to nops(leadexp) do

                if leadexp[j] = 0 then

                                j := j + 1;

                end if:


finallist := [];

for z from 1 to nops(GB) do

                finallist := [op(finallist), GB[z]+varj[j]];


quotientlist := Generators(Quotient(GB, varj[j]));

finallist2 := [];

for z from 1 to nops(quotientlist) do

                finallist2 := [op(finallist2), op(z,quotientlist)];


return MonomialHilbertPoincare(finallist) + varj[1]*MonomialHilbertPoincare(finallist2);

end proc;

F:=[LeadingMonomial(GB[1],T3), LeadingMonomial(GB[2],T3), LeadingMonomial(GB[3],T3)];



1 2 3 Page 1 of 3