Logic algebra



On 4/10/08, Alexey Beshenov <al at beshenov.ru> wrote:

>  Now it accepts any atom. Of course, it shouldn't be so; I think there should
>  be a feature which marks symbols as "logic":
>
>  (%o1) declare (logic, feature)$
>  (%o2) declare (x, logic)$
>  (%o3) declare ("AND", logic)$

I think "boolean" is a better name here.

>  It performs a kind of expand(...) for Zhegalkin polynomials and it relies on
>  pattern-matching (also, it seems that it does redundant things). I know, it's
>  a very bad idea.

Well, I think it's OK to work out the list of objects, operators,
and identities first, before worrying too much about efficiency.

>  By the way, it would be nice to have ability to tell simplifier that op1 is
>  distributive wrt op2 and expand expressions involving op1 and op2.

I have often thought so myself. I think a notation such as

declare ("FOO", distributes_over ("BAR"));

would be useful. Dunno how hard Maxima should try to
apply such declarations.

>  0 and 1 are used for shorter I/O.

I think those have to be changed to false and true.
It's going to be disconcerting to users to find out that

if x OR y then foo;

integerp(x) AND floatnump(y);

can't work.

Thanks for working on this topic --

Robert Dodier