Daniel,
GroebnerBasis
by default treats all indeterminates as "variables". To get the ones not listed to be seen as "parameters", use CoefficientDomain->RationalFunctions
.
eq2a = {z1 - u1, z2 - u2, z3 - 1 - u3, a1 u1 + a2 u2 + a3 (1 + u3),
b1 u1 + b2 u2 + b3 (1 + u3)};
vars = {z1, z2, z3, u1, u2, u3};
gb = GroebnerBasis[eq2a, vars, CoefficientDomain -> RationalFunctions]
(* Out[1198]= {a3 b1 -
a1 b3 + (a2 b1 - a1 b2) u2 + (a3 b1 - a1 b3) u3, -a3 b2 +
a2 b3 + (a2 b1 - a1 b2) u1 + (-a3 b2 + a2 b3) u3, -1 - u3 + z3,
a3 b1 - a1 b3 + (a3 b1 - a1 b3) u3 + (a2 b1 - a1 b2) z2, -a3 b2 +
a2 b3 + (-a3 b2 + a2 b3) u3 + (a2 b1 - a1 b2) z1} *)
Here we show that no lead term divides another in Q(a,b).
leadterms =
GroebnerBasis`DistributedTermsList[gb, vars,
CoefficientDomain -> RationalFunctions][[1, All, 1]]
(* Out[1199]= {{{0, 0, 0, 0, 1, 0}, a2 b1 - a1 b2}, {{0, 0, 0, 1, 0, 0},
a2 b1 - a1 b2}, {{0, 0, 1, 0, 0, 0}, 1}, {{0, 1, 0, 0, 0, 0},
a2 b1 - a1 b2}, {{1, 0, 0, 0, 0, 0}, a2 b1 - a1 b2}} *)
There are a couple of important things to keep in mind. One is that Eliminate
is based on ancient design and code. It has no concept of "parameters" and every indeterminate is either a variable to be eliminated or one to be retained (I made a comment to this effect a few days ago in this thread). The other, as noted above, is that GroebnerBasis
has a default setting and it might not be the one that is what you implicitly have in mind.