# [Numpy-discussion] matrix multiply

Charles R Harris charlesr.harris@gmail....
Sun Apr 6 17:10:28 CDT 2008

```On Sun, Apr 6, 2008 at 2:34 PM, Alan G Isaac <aisaac@american.edu> wrote:

> On Sun, 6 Apr 2008, Charles R Harris wrote:
> > The boolean  algebra is a field and the correct addition is xor, which
> is
> > the same as addition modulo 2. This makes all matrices with determinant
> 1
> > invertible. This isn't the current convention, however, as it was when
> > Caratheodory was writing on measures and rings of sets were actually
> rings
> > and the symmetric difference was used instead of union.
>
> I am not sure what you are suggesting for matrix behavior,
> nor what "correct" means here.
>
> Comment:
> Standard *boolean algebra* axioms include distributivity, but
> 1 xor (0 and 0) = 1 xor 0 = 1
> (1 xor 0) and (1 xor 0) = 1 and 1 = 1
>
> So I guess (?) what you are saying is something like:
> if we have a boolen algebra with operators 'and' and 'or',
> we can generate a boolean ring with operations 'xor' and 'and'.
> When we do so, the '+' is traditionally used for the 'xor' operation.
>
> But where in the modern literature on boolean matrices is
> '+' given this interpretation?
>

It's generally not. It used to be that \Sigma and + were used for set union,
probably because that was what the printers had on hand and what the
mathematicians were used to. Then there was the alternate desire to make
boolean algebra conform to the standad ring structure which led to using the
symmetric difference, \Delta. For instance, if + is 'or', then 1 has no
additive inverse, whereas 1 xor 1 = 0. I'm just pointing to some of the
history here that I've noticed in old papers. I prefer the modern usage
myself as it is closer to the accepted logic operations, but applying
algebraic manipulations like powers and matrix inverses in that context