I want to be able to compute with explicit exterior algebras of vector spaces. For example, given a real vector space $V$ of $3 \times 3$ matrices, I want to consider expressions of the form $v\wedge w\in \Lambda^2 V$ and would like Mathematica to understand that $v\wedge w=-w\wedge v$, and $v\wedge w+v\wedge t=v\wedge (w+t)$ etc. In particular, I want to be able to define linear operators on $\Lambda^2 V$ on a basis of decomposable elements and extend it by linearity to all elements. As an example, I would like to define an inner product $$B(x\wedge y,z\wedge w)=\langle x,y\rangle \langle z,w\rangle-\langle x,w\rangle\langle y,z\rangle$$ and have Mathematica understand that $$B(e_1\wedge e_2+e_3\wedge e_4,e_1\wedge e_2-e_3\wedge e_4)=0,$$ where $e_1,e_2,e_3,e_4\in V$ are orthonormal.
So far, my attempts were tricking Mathematica into thinking that $v\wedge w$ is the ordered pair {v,w}
, but the problem is that this only makes computations work for decomposable vectors, since it thinks that $e_1\wedge e_2+e_3\wedge e_4=(e_1+e_3)\wedge (e_2+ e_4)$, i.e., {e1,e2}+{e3,e4}={e1+e3,e2+e4}
, but I want to rule this out.
The command \wedge
in Mathematica does not have a meaning (only makes for a nice display), and I tried using TensorWedge[,]
but I can't get it to answer back results of expressions explicitly. I also gave a couple Packages a try, like "Grassmann" and "Ricci", but I feel there should be an easier way of doing this... Any thoughts?
Normal
and declaring your symbols to be vectors using$Assumptions
may be what you need. Check out the example forTensorWedge
here. What do you think? $\endgroup$Plus
will play havoc with any attempt to represent the operation as an orderedList
. Also, might try some ideas from the nb available here, in the section "Some noncommutative algebraic manipulation". $\endgroup$