a field-theory motivated approach to computer algebra

## distribute

Distribute factors over sums.
Rewrite a product of sums as a sum of products, as in \begin{equation*} a\,(b+c) \rightarrow a\,b + a\,c\, . \end{equation*} This would read
ex:=a (b+c); distribute(_);
$$\displaystyle{}a \left(b+c\right)$$
$$\displaystyle{}a b+a c$$
The algorithm in fact works on all objects which carry the Distributable property,
Op{#}::Distributable; ex:=Op(A+B); distribute(_);
$$\displaystyle{}\text{Attached property Distributable to }Op\left(\#\right).$$
$$\displaystyle{}Op\left(A+B\right)$$
$$\displaystyle{}Op\left(A\right)+Op\left(B\right)$$
The primary example of a property which inherits the Distributable property is PartialDerivative. The distribute algorithm thus also automatically writes out partial derivatives of sums as sums of partial derivatives,
\partial{#}::PartialDerivative; ex:=\partial_{m}{A + B + C}; distribute(_);
$$\displaystyle{}\text{Attached property PartialDerivative to }\partial{\#}.$$
$$\displaystyle{}\partial_{m}\left(A+B+C\right)$$
$$\displaystyle{}\partial_{m}{A}+\partial_{m}{B}+\partial_{m}{C}$$