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.