The Case Against Geometric Algebra

💥 Explore this insightful post from Hacker News 📖

📂 **Category**:

📌 **What You’ll Learn**:

_r \_s \>_ s – r \
\end🔥\]

None of any of this is necessary if you don’t use mixed-grade multivectors and the GP in the first place. And absolutely nobody wants to learn any identies involving these things. So that’s another complaint: there are way too many confusing definitions required when you base everything on the geometric product. I have to imagine that every single person who has gone to learn GA has been taken aback by this, and by the fact that the people writing about it don’t seem to have much of a problem with it. And actually I have only shown the tip of the iceberg here. Take a look, for instance, at the list of operations on the website ProjectiveGeometricAlgebra.org.

To be fair, the proliferation of operations is somewhat a problem in EA also: the Interior Product, for instance, is fairly awkward to use, and like \(\lfloor\) and \(\rfloor\) above, there kinda needs to be two versions of it if you want to apply it from either the left or right. But at least it is has a fairly elementary interpretation of a simpler operation in the algebra, as the adjoint of the wedge product under the inner product. And there are other operations that show up, like the Meet \(\vee\) which is dual to the wedge product. But GA has all of these plus its extra unnecessary stuff.

More generally I think it is better construct all of these operations directly from the tensor algebra. I suspect that the “right way” (inasmuch as that phrase means anything) to think about vector algebra is to think of the two fundamental operations as being (1) the tensor product \(\b💬 \o \b💬\) and (2) the dot product/trace \(\b🔥 \cdot \b{b}\). Everything else is really constructed from these, and despite what people will say, it is actually rather intuitive that the product of \((a_x \b{x} + a_y \b{y})(b_x \b{x} + b_y \b{y})\) would be \(a_x b_x \b{xx} + a_x b_y \b{xy} + a_y b_x \b{yx} + a_y b_y \b{yy}\). Or at least, it is certainly more intuitive than the geometric product. It is weird at first that multiplying two vectors would make a rank-\(2\) tensor, but it is not really different from the fact that multiplying two scalars with one unit each gives a scalar with two units: \(5 \text{m} \cdot 3 \text{s} = 15 \text{ m}\cdot\text{s}\). True, it is not invertible, but it shouldn’t be: it’s a very generic operation whose inverse is not a single value. If you produce a version of vector multiplication that is invertible, you have definitely erased information somewhere to make that possible, so it is certainly not the “true” meaning of vector multiplication.

Anyway, if you start with the tensor product, then your pedagogical task is to explain why anybody would then go and invent the exterior product from that, but that isn’t too bad: in some sense the dot product asks “what happens if you multiply two vectors and ignore the terms that aren’t parallel?” and then the wedge product asks “What happens if you multiply two vectors and ignore the terms that are parallel?”. Those are at least philosophical constructions, and although they’re not completely satisfying, they do pretty well.


Weird Associativity

Here’s a really basic objection: geometric product’s associativity is actually really awkward for doing basic linear algebra.

A geometric algebra is what you get when you take the tensor algebra on basis vectors \(\{\b{x}, \b{y}, \ldots \}\) and assert that \(\b{xx} = 1\) and \(\b{xy} = -\b{yx}\) everywhere (so, quotienting by relations of those forms). (Or in other metric signatures, that \(\b{xx} = Q(x,x)\) or whatever.) The geometric product itself is what the tensor product \(\o\) becomes under this mapping. Naturally it is associative because \(\o\) is:

\[(\b{ab})(\b{c}) = \b{a}(\b{bc}) = \b{abc}\]

But this definition is actually really awkward. Look what it does to the “squares”” of the multivectors:

\[\begin{aligned}
(1)(1) &= 1 \\
(\b{x})(\b{x}) &= 1 \\
(\b{xy})(\b{xy}) &= -1 \\
(\b{xyz})(\b{xyz}) &= -1 \\
(\b{wxyz})(\b{wxyz}) &= 1
\end{aligned}\]

What is going on? Well, every time you switch the position of two args, you get a minus sign, and… the pattern is weird. You know what would work way better than that? If the product operated left-to-right, like tensor contraction i.e. the dot product already does:

\[\begin{aligned}
(1) \cdot (1) &= 1 \\
(\b{x}) \cdot (\b{x}) &= 1 \\
(\b{xy}) \cdot (\b{xy}) &= 1 \\
(\b{xyz}) \cdot (\b{xyz}) &= 1 \\
(\b{wxyz}) \cdot (\b{wxyz}) &= 1
\end{aligned}\]

But if you made the geometric product operate left-to-right, it doesn’t work, because the wedge product part actually does care about the ordering. That’s how it works in regular exterior algebra already: the dot product and wedge product are different operations that associate differently; the dot product is left-to-right while the wedge product associates. So you end up making a choice between two conventions for your algebra:

  1. Make every basis multivector have norm \(1\), so that they all work according to basic linear algebra in intuitive ways, for instance projecting components out of a bivector with \(\b{B} \cdot (\b{x} \^ \b{y}) = B_{xy}\). Then add in some operators to implement the things that have to square to \(-1\), such as rotation operators \(R_{xy}^2 = -I\). Or,
  2. Let basis multivectors square to \(\pm 1\) using the weirdy-associating geometric product, and then add more operations to the algebra that recover the idea of multivectors squaring to \(+1\) so you can do basic things like projecting bivectors onto their basis vectors \(\b{B} \cdot (\b{x} \^ \b{y}) \? -B_{xy}\) again.

To me (1) sounds way better. Let linear algebra work like it should and just add in the parts you need to make operators that compose differently. Don’t break linear algebra just to make it look more like complex numbers!

And really, some of GA’s definitions of things in terms of the GP work better if you use left-to-right contraction. For example the weird minus sign in the rotation \(e^{(\b{x \^ y} )\theta} (\b{x}) = \b{x} \cos \theta – \b{y} \sin \theta\) up above goes away if \(\b{xy}(\b{x}) = \b{y}\). The definition of the cross product in terms of wedge product becomes \(\b{a} \times \b{b} = I \cdot (\b{a} \^ \b{b})\) instead of \(-I (\b{a} \b{b})\).

The way GA recovers the standard multivector inner product is with the “reversion operator”, which looks like

\[A^{\dagger} = \< A \>_0 + \

_4 + \ldots\]

Which just means that it reverses the order of vectors in a product:

\[(\b{xyz})^{\dagger} = \b{zyx} = – \b{xyz}\]

Such that the “standard” dot product of two multivectors (the one that returns \(1\) if they are the basis element) is implemented as

\[(\b{xyz}) \cdot (\b{xyz}) = (\b{xyz})^{\dagger} (\b{xyz}) = 1\]

It seems to me that they defined their operation to associate in the wrong way and then have had to construct this operation to undo the mistake.

Incidentally, reversion is basically a generalization of complex conjugation. GA likes the way that the GP associates because it preserves the “square root of \(-1\)” behavior of complex numbers and quaternions: \(i^2 = j^2 = k^2 = -1\). Then reversion is used to construct the vector norm again, which for complex numbers and quaternions is implemented with complex conjugation: \(\| a \|^2 = \bar{a} a = (a_x – a_y i) (a_x + a_y i) = a_x^2 + a_y^2\). I find it strange. It’s hard to just say that complex conjugation is not an important operation, but it’s also hard to say why it’s so important—that is, I can’t see a great philosophical argument for it. It is not an operation we really “want” to be using if we’re trying to make geometry simple and intuitive.

I think once again the problem is the conflationg of “vectors” and “operators on vectors”. Vectors themselves, or any multivectors, ought to have have normal norms that square to \(1\). Operators on vectors, such as rotations and reflections, can square to whatever they need to square to; naturally \(R_{xy}^2 = -I\), which, fine, write as \(-1\) if you want to use a Clifford Algebra to represent it, and implement a version of complex-conjugation to extend this to your mixed-grade operators. But don’t go around telling people that for some reason bivectors that represent units of surface area also square to \(-1\), because that’s crazy.


Vector Division

One other thing that GA emphasizes from early on is the fact that most of the time you can divide by vectors and (usually) multivectors:

\[\b{v}^{-1} = \frac{\b{v}}{\|\b{v} \|^2}\]

This is another one of the properties of complex numbers and quaternions that it attempts to extend to all vectorial objects. It almost makes sense: if you are treating all multivectors as operators on other multivectors under multiplication, then naturally they have an inverse (if they are not an implementation of a projection) which is given by something that looks like division. I’m fine with that part. My objection is just that blurring the distinction between the multivectors and operators in the first place is weird, so inverting them is weird also. If you describe this as “inverting a vector”, it is mysterious and weird. If you describe it as “inverting an operator (which is implemented as a vector in this particular algebra)” it is completely intuitive. So just do that!

For instance a rotation operator \(R_{xy}: \b{v} \mapsto \b{v} \cdot (\b{x} \^ \b{y})\) has inverse \(R^{-1}_{xy}\), which is of course a rotation in the same plane with the opposite orientation, hence implemented as \(R^{-1}_{xy} = R_{yx} = R_{-xy}\). Meanwhile the inverse of \(\b{x} \^ \b{y}\) under the dot product is the object \((\b{x} \^ \b{y})/\|\b{x} \^ \b{y}\|^2\). Etc. This perspective seems a lot more orderly and sensible to me, and it makes it completely clear how each inverse object should work with no magic.

I will say that at least one type of vector division shows up all over math. It is basically part of the operation of “projection”:

\[(\b{v} \cdot \b{a}^{-1}) \b{a} = (\frac{\b{v} \cdot \b{a}}{\| \b{a} \|^2}) \b{a} = \text{proj}_{\b{a}}(\b{v})\]

It might seem weird to call this “division” since it does not exactly invert a particular multiplication operation. But I think it is a good generalization of division. In particular it has the correct behavior if the vectors are parallel, because \((a \b{x}) \cdot (b \b{x})^{-1} = a/b\), and in other cases its behavior is fairly easy to interpret: basically it divides the parallel parts and drops the non-parallel parts. (In other metrics there are also some concerns about zero-divisors, but whatever, just don’t try to invert those.)

Of course anything you might do with the \(\b{a}^{-1}\) notation you can also do without it,, but I think it’s rather elegant how it takes care of handling the factors of \(\| \b{a} \|\) for you. For instance it gives a neat way to factor a vector \(\b{v}\) into components along an orthogonal set of vectors \(\{\b{a}, \b{b}, \b{c}\}\) even if they are not unit vectors:

\[\b{v} = (\b{v} \cdot \b{a}^{-1}) \b{a} + (\b{v} \cdot \b{b}^{-1}) \b{b} + (\b{v} \cdot \b{c}^{-1}) \b{c}\]

Which may as well be written as

\[\b{v} = v_a \b{a} + v_b \b{b} + v_c \b{c}\]

By using this “vector division” instead of just a regular dot product, we cancel out the magnitude of the \(\{ \b{a}, \b{b}, \b{c} \}\) elegantly. In a way this is treating \(\{ \b{a}, \b{b}, \b{c} \}\) as a matrix \(\text{diag}(a,b,c)\) in a certain basis, then inverting it to get \(\text{diag}(a^{-1}, b^{-1}, c^{-1})\) in the same basis. (Of course, this only works due to the fact that the three vectors are orthogonal; otherwise you would get cross terms.)

Anyway, I am just trying to make the case that GA’s notion of vector division is not on its own necessarily a bad idea. The baisc construction shows up a lot in vector algebra, and if you are writing your operators as multivectors of course it is meaningful to invert them. But it gets confusing when you start conflating operators nad primitives and doing a bunch of algebra on the primitives.”Inverting a vector” is basically not meaningful, while “inverting a translation” is, and pretending like they are the same is pedagogically and philosophically unsound. But it seems to me like a perfectly sound interpretation is waiting just a few steps away.


I have given a lot of reasons why I think GA is problematic: the Geometric Product is a bad operation for most purposes. It really implements operator composition and is not a very fundamental or intuitive thing. Using a Clifford Algebra to implement geometry is an implementation detail, appropriate for some problems but not for general understandings of vector algebra and all of geometry. Giving it first-class status and then bizarrely acting like that is not weird is weird and alienating to people who can see through this trick.

Nor should we be trying to make everything look more like complex numbers and quaternions. Those are already weird and confusing; we should be moving away from them! Don’t call the geometric product “the” way to multiply vectors. Stop fixating on the geometric product or on some particular \(Cl_{p,q,r}\) that solves everything with a bunch of funky formula for basic stuff. Just teach wedge products and operators and keep it simple; stick to the good parts! Treat the Clifford Algebras as what they are: implementations of the compositions of particular operations in a particular notation. Not a replacement for the rest of geometry.

So for the time being I have to reject GA as a thing that I identify with. Fortunately, it is a philosophy, not a mathematical theory, so it’s easy to reject. That’s why when I write blog posts about the same basic ideas, and which align with the same basic philosophy of recasting mathematics in a more geometric and multivectorial form, I use the phrase “Exterior Algebra” instead.

That I said, I really do think there’s a lot more to discover here. I’m convinced that there’s some unifying theory of vector algebra that will tie this all together with a bow, and I’m hoping someone finds it, preferably soon. Among other things it will explain exactly why the geometric product does work, when it does, and also why so many other formulas end up looking suggestive and interesting and imply that for instance we can sometimes divide and multiply vectors like they’re numbers in a bunch of cases. When it does come along maybe we can call it “Geometric Algebra” again; it’s a good name. Or maybe “Geometric Algebra 2.0”, or “New Geometric Algebra”, or “Geometrical Algebra”. Or maybe we drag the name “Clifford Algebra” down out of the clouds and make it accessible to everyone. Whatever you want! But in the meantime, I’m not interested in using the name GA, because I think that name is attached to a bunch of bad ideas. The geometric product, its associated ontology, and the culture around it… are just mucking everything up. Thanks.

(If you want to read more criticisms of GA literature, also check out Eric Lengyel’s Poor Foundations in Geometric Algebra. I can’t vouch for its accuracy but it sounds about right. He’s much more of an expert in this stuff, anyway, than I am. I only got involved because I was tired of there not being any vocal criticism out there.)

{💬|⚡|🔥} **What’s your take?**
Share your thoughts in the comments below!

#️⃣ **#Case #Geometric #Algebra**

🕒 **Posted on**: 1782044470

🌟 **Want more?** Click here for more info! 🌟

By

Leave a Reply

Your email address will not be published. Required fields are marked *