The interactive examples in this post require installing Wolfram CDF player, which is free and works on most desktop computers using Firefox, Safari and Internet Explorer, but not Chrome. The source code is the Mathematica Notebook Wolfram website. The code for the demos is in the Mathematica notebook algebra2.nb, which is available for free use under a Creative Commons Attribution-ShareAlike 2.5 License. The notebook can be read by CDF Player if you cannot make the embedded versions in this post work.

## More about visible algebra

I have written about visible algebra in previous posts (see References). My ideas about the interface are constantly changing. Some new ideas are described here.

In the first place I want to make it clear that what I am showing in these posts is a *simulation *of a possible visual algebra system. I have *not constructed any part of the system*; these posts only show something about what the interface will look like. My practice in the last few years is to throw out ideas, not construct completed documents or programs. (I am* not* saying how long I will continue to do this.) All these posts, Mathematica programs and abstractmath.org are available to reuse under a Creative Commons license.

## Commutative and associative operations

**Times** and **Plus** are *commutative* and *associative* operations. They are usually defined as **binary operations**. A binary operation $*$ is said to be **commutative** if for all $x$ and $y$ in the underlying set of the operation, $x*y=y*x$, and it is **associative** if for all $x$,$y$ and $z$ in the underlying set of the operation, $(x*y)*z=x*(y*z)$.

It is far better to define a commutative and associative operation $*$ on some underlying set $S$ as* an operation on any multiset of elements of *$S$. A **multiset **is like a set, in particular elements can be rearranged in any way, but it is not like a set in that elements can be* repeated *and a different number of repetitions of an element makes a different multiset. So for any particular multiset, the number of repetitions of each element is fixed. Thus $\{a,a,b,b,c\} = \{c,b,a,b,a\}$ but $\{a,a,b,b,c\}\neq\{c,b,a,b,c\}$. This means that the function (operation) **Plus**, for example, is defined on* any multiset of numbers*, and \[\mathbf{Plus}\{a,a,b,b,c\}=\mathbf{Plus} \{c,b,a,b,a\}\] but $\mathbf{Plus}\{a,a,b,b,c\}$ might not be equal to $\mathbf{Plus} \{c,b,a,b,c\}$.

This way of defining (any) associative and commutative operation comes from the theory of monads. An operation defined on all the multisets drawn from a particular set is necessarily commutative and associative if it satisfies some basic monad identities, the main one being it commutes with union of multisets (which is defined in the way you would expect, and if this irritates you, read the Wikipedia article on multisets.). *You don't have to impose any conditions specifically referring to commutativity or associativity*. I expect to write further about monads in a later post.

*The input process for a visible algebra system should allow the full strength of this fact.* You can attach as many inputs as you want to **Times **or **Plus **and you can *move them around. *For example, you can click on any input and move it to a different place in the following demo.

Other input notations might be suitable for different purposes. The example below shows how the inputs can be placed randomly in two dimensions (but preserving multiplicity). I experimented with making it show the variables slowly moving around inside the circle the way the fish do in that screensaver (which mesmerizes small children, by the way — never mind what it does to me), but I haven't yet made it work.

A visible algebra system might well allow directly input tables to be added up (or multiplied), like the one below. Spreadsheets have such an operation In particular, the spreadsheet operation does* not *insist that you apply it only as a binary operation to columns with two entries. By far the most natural way to define addition of numbers is as an operation on multisets of numbers.

## Other operations

Operations that are associative but not commutative, such as matrix multiplication, can be defined the monad way as operations on finite **lists **(or tuples or vectors) of numbers. The operation is automatically associative if you require it to preserve concatenation of lists and some other monad requirements.

Some binary operations are neither commutative nor associative. Two such operations on numbers are **Subtract **and **Power. **Such operations are truly binary operations; there is no obvious way to apply them to other structures. They are only binary because *the two inputs have different roles. *This suggests that the inputs be given *names*, as in the examples below.

Later, I will write more about simplifying trees, solving the max area problem for rectangles surmounted by semicircles, and other things concerning this system of doing algebra.

## References

### Previous posts about visible algebra

### Other references