Synthetic differential geometry is an attempt to reformulate differential geometry to allow infinitesimals. Unlike nonstandard analysis, these infinitesimals are nilpotent, and the operation of taking the derivative of a function at a point becomes just evaluating the function at a nilpotent infinitesimal near that point. The idea was used heuristically in the nineteenth century, but the inspiration from the modern reformulation comes from commutative algebra, where the idea is unproblematic.

Anders Kock has made his book on the subject, *Synthetic Differential Geometry*, available for download on his website. The book is being reprinted, so he asks readers not to circulate printed copies.

I first came across Kock’s book several years ago. It is a very nice treatment.

I suppose I should just read the book, but how are the infintesimals contructed? An Ultrapower contruction or something a little less concrete?

The flavor is much closer to that of algebraic geometry. At the root of their construction, they define a category of rings of differentiable functions, and take the opposite category. So for example, they define a ring with a nilpotent element by taking the ring of differential functions from R to R, and modding out by all functions whose derivatives are zero at zero. (This just turns out to be the ring R[e], where e^2 = 0.)

The method lends itself to an elegant approach to computing derivatives numerically. I write a little about it here. You end up with surprisingly simple code. As far as I can see, almost everyone who needs to compute derivatives of complicated functions in software ends up using some form of finite differences or else working with gigantic and inefficient expressions generated by Mathematica or Maple. But computers are just as happy to work over R[e]/(e^2) as over R and the latter approach works very well in practice.

One thing I haven’t seen in publications anywhere is that they also give a nice way to work, computationally, with tangents spaces of varieties. For example, if you’ve written software to multiply elements of a Lie group (eg. rotations represented as 3×3 matrics), and then reimplement the same code to work over R[e]/(e^2) instead of R, then code to compute the Lie bracket “drops out” for free. It gives a nice way to unify and simplify some geometric algorithms.

Pingback: Ars Mathematica » Blog Archive »