probleme with rule



Laurent,

> 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

An interesting problem, thanks for suggesting it. Here is a possible solution.

declare (binary, feature);
matchdeclare (b, atom, n, integerp);
binary_power (b, n) := if n > 0 and featurep (b, binary) then b else b ^ n;
tellsimpafter (b ^ n, binary_power (b, n));

declare (a1, binary);
a1 ^ 2;
 => a1
a1 ^ 3 + a2 ^ 3;
 => a2^3 + a1

I didn't try other examples.

Notes:
(1) Use declare/featurep instead of put/get here.
(2) write_long_names_with_underscores. CamelCaseIsMoreDifficultToRead.
  Minuscule letters + underscore is customary in the existing Maxima scripts.
(3) Probably the right way to solve this problem is to define a
  group with elements 0 and 1 and then declare a to be an element
  of that group. I hope Maxima will be able to handle that in the
  future (to the best of my knowledge, it is not possible now).

> 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.

Agreed, the documentation is disorganized. I want to organize it
by introducing a category system. I will propose an implementation
in the near future.

All the best
Robert Dodier