It seems to me that since "a" is not binary, a^2 is transformed to a^2.
Then tellsimp is called again on a^2, indefinitely.
Maybe tellsimpafter would be better than tellsimp.
I think though that you should not do it this way, but introduce a
function, say, binpower, and use it instead of "^" for binary variables.
> -----Original Message-----
> From: maxima-bounces at math.utexas.edu
> [mailto:maxima-bounces at math.utexas.edu] On Behalf Of laurent couraud
> Sent: Sunday, October 08, 2006 8:14 AM
> To: maxima at math.utexas.edu
> Subject: probleme with rule
>
> Hello with all,
>
> I try to solve a system of equations including binary
> variables and non binary variables. To this end I wish to say
> to Maxima that:
> For all binary variable b and for any integer n > 0 b^n = b I
> test this following but that causes the Bind stack overflow error.
>
> put(a, Binary, true);
> matchdeclare(b, atom, n, integerp);
> BinaryPowerRule(b, n):=if ((n > 0) and get(b, Binary)) then b
> else b^n; tellsimp(b^n, BinaryPowerRule(b, n));
>
> a^2 => Bind stack overflow
>
> Is it possible to circumvent the problem?
>
> PS: i noticed that the documentation for the function "get"
> is under "list" subject while the one for function "put" is
> under "Miscellaneous Options" subject.
>
> Laurent.
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
>