Geometric Algebra

Shamelessly abusing LtU, I want to point out Geometric Algebra (for those who haven't come across it and would find it interesting.) Some BS rationalizations for why this is appropriate for LtU are: GA is applied to aspects such as computer graphics and computer vision also there's this quote on Leo Dorst's page (which is moving to here): "It is going to be the way computer science deals with geometrical issues." More PLT specific is the design and implementation of libraries, DSLs, and/or software for GA; implementations greatly benefit from compile-time (or even runtime) specialization. For example, Jaap Suter's C++ Clifford library uses template metaprogramming to this end.

However, the real reason I'm posting this is that there are quite a few intelligent people here; I know that at least some are interested in things beyond computer science, and I genuinely think they'd benefit from and value geometric algebra.

Leo Dorst's page is more directed toward computer scientists while David Hestene's page (the first link) is more physics biased.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

WP links

Wikipedia has not one, but four articles about Clifford algebras (three of the articles there are not really about them).

I thought when I read the post I was going to read about the algebraic theory of geometric logic, which does not have a WP article.

Clifford Algebra v. Geometric Algebra

Clifford Algebra and Geometric Algebra are exactly the same thing, nevertheless there are significant differences in connotation by the different terms. The term "Clifford algbra" is often used when the structure is viewed purely formally (i.e. like a group). "Geometric Algebra" is used when you (or rather by those who) want to emphasize the physical/geometric content inherent in the formalism. This leads to Clifford Algebras being considered relatively special-purpose formalisms, while Geometric Algebra is general-purpose despite being the exact same thing! For example, I'd imagine one typically wouldn't teach "Clifford Algebra" to a high-school student, but it would make perfect sense to teach "Geometric Algebra". The geometric algebra wikipedia page briefly and unsatisfying suggests this.

More creativity!

C'mon, I was hoping to at least see a rationale for the posting which involved connecting programming languages to algebras and then noting an isomorphism from symbolic representations into the geometric domain. Where's category theory when you need it?


I should "check the literature" but I have been thinking about how much structure "typical" type systems have. With a vector structure (or maybe a module would suffice) interesting things might come. For example, there're the papers relating zippers to "derivatives" of datatypes. I don't know if that extends to a "partial derivatives" of multiparameter types. If so, what would "curvature" mean in such a context and other such impoderables.


GA is one of those subjects that make me scream like a 12 year old girl at a Backstreet Boy concert (are they still around? I'm not really up to date...) Anyway, as a first year physics undergrad, it's been a real pain to find any decent, really decent lecture courses, despite being at Cambridge, where there is an actual Clifford Algebra research group. The only lecture course available is a Part III (fourth-year, Masters-level) course, which clashes with the more mundane E&B and MSM lectures. I've got the books by Hestenes and Doran/Lasenby, but they're pretty hard going, if you're trying to to really get to grips with special-relativity and finding that geometry goes further than you ever thought, what with null vectors and other esoteric metrics. The last few chapters from Doran/Lasenby are just incomprehensible unless you're already familiar with gauge theory and general relativity.


(rant over)

A different approach

While not being GA precisely, you could always try "Gauge Fields, Knots and Gravity" by Baez, the first chapter of which should at least be easy enough. It does a good job of introducing exterior algebras and the wedge product and demonstrating how it can drastically simplify, as well as generalise, multivariate calculus and calculus on manifolds.

Don't rant against Cambridge

This is the best intro I've read yet, very accessible to myself, who has forgotten any and all college math.

(But maybe it is less advanced than what you are looking for?)

Been there...

I get the basics of the maths, and I get most of the concepts of the physics of special relativity. But what's lacking is a good section of problems, worked with GA as the basis. You'd have thought that the computational efficiencies would be an incentive... :-P Doran's thesis contains the best geometric explanation of spacetime metric I've seen to date, with nice diagrams and all that. Funnily, it's missing from the book.

Re: Thesis

For anybody else with piqued interest, I found it.

Divine Proportions

Shamelessly abusing LtU even further, my copy of Divine Proportions has just arrived from Australia.

I ordered it after being intrigued by a write-up on Slashdot, but don't let that put you off. It would certainly be useful for any computer scientist (or game programmer?) hoping to speed up and improve the accuracy of various geometric calculations.

GA as a computational calculus

Ok, you asked for wacky ideas. I've been wanting to model the lambda calculus or the pi calculus in GA, so that I can write functional programs as GA expressions and equations. This is so I can start thinking of physical processes as computations. I haven't gotten far at all, but perhaps thinking of vectors as lambda abstractions would be a start. So if a and b are vectors qua lambda abstractions, then ab is the geometric product qua function application. Not sure I can get very far with this idea, since the most obvious model for lambda's variables is basis vectors and there aren't enough of them.

If we note that every n-dim GA has a matrix representation of dim 2^n, then we can think in linear algebra, instead, where we can write lambda variables as column vectors and lambda abstractions as matrices, that is, as linear transformations in the 2^n-dim vector space of GA multivectors. So, now, we have three things floating around: GA, lambda, and linear algebra. But, for the moment, put the GA aside, and let D=2^n so we don't have to keep writing it over and over.

So, if the lambda calculus looks like this
T ::= x | \x.T | T T
then our linear-algebra version of it would look like this (I'll resist writing it in Haskell, yet)
T ::= x (of type DVector)
| M (DxD matrix, of type DVector -> DVector)
| M M (function application, matrix-to-matrix)
| M x (function application, vector-to-vector)

At this point I run out of gas because I don't have a straightforward transcription for lambda's substitution model. (EDIT (thinking out loud): M x scrambles the elements in x, it doesn't substitute x for any other vectors that are hiding in the matrix M, perhaps as columns or rows. Now, it occurs to me that M-as-function is a dead idea... there is just a finite amount of information inside a matrix. Waving my hands wildly, matrices might just be able to model classes of primitive recursive functions, so would never be Turing-complete i.e. Godellable. Ok, so now, what ... there just MUST be a way to model arbitrary computations as matrix computations, then backmodel them as GA computations)

Part of me is reminded of Ed Fredkin, who made NOR gates for billiard balls, so certainly I could just model some low-level hardware component with GA, then Church-Turing my way back into the lambda calculus, but this would be a defeat. I really want a way to do a higher-level model of the lambda in GA or LA.

EDIT: oh by the way, one application of such a thing would be as a natural, composable, functional programming language for quantum computing, since quantum mechanics fits GA like a talcum-dusted medical glove (spinors are for free!). Most QC researchers work in the Turing world since they care about performance and need to count instruction executions. I haven't seen any QC in the Church world ... doesn't mean it isn't there, I just haven't seen it.


At this point I run out of gas because I don't have a straightforward transcription for lambda's substitution model.

Maybe SK-combinators would be a better choice of computation model? It eliminates the substitution problems associated with the lambda calculus. See the Joy language for practical lanugage based on this concept.

Combinators -> Functors

I can take your meta-idea, Greg, one step further by getting rid of function application altogether, by going to categories. If I can construct a commutative diagram between the category of vector spaces (I've see this somewhere, I think) and Cartesian Closed Categories (those of the lambda), I might hit paydirt.

The Category of Vector Spaces and QC and FP

The category of vector spaces is definitely not cartesian closed. It is, however, monoidally closed so maybe a linear lambda calculus is the way to go.

For QC and FP, there was a paper (and a few others) a bit back that used monads to model quantum computation. Sticking the appropriate terms in Google should get it and it's references should lead to more. I'm not completely sure if it's the kind of thing you mean.