Wednesday, 24 April 2019

Wolfram Mathworld great circle equation error

According to (19) the geodesic equation on a sphere (great circle) is given below. It is derived from a somewhat specialised equation for a geodesic on a surface ( (30)), which itself is derived by considering a minimised line integral. Wolfram's (19) is given as
a{\mathrm{cos} u\ }{\mathrm{s}\mathrm{i}\mathrm{n} v\ }{\mathrm{sin} c_2\ }+a{\mathrm{sin} u\ }{\mathrm{s}\mathrm{i}\mathrm{n} v\ }{\mathrm{cos} c_2\ }-\frac{a{\mathrm{c}\mathrm{o}\mathrm{s} v\ }}{\sqrt{{\left(\frac{a}{c_1}\right)}^2-1}}=0 & \phantom {10000}(1) \\
\end{align}where ##a## is the radius of the sphere, ##c_1,c_2## are constants of integration, ##u,v## are respectively longitude and latitude. In the next equation it recasts that in Cartesian coordinates as\begin{align}
x{\mathrm{sin} c_2\ }+y{\mathrm{cos} c_2\ }-\frac{z}{\sqrt{{\left(\frac{a}{c_1}\right)}^2-1}}=0 & \phantom {10000}(2) \\
\end{align}"which shows that the geodesic giving the shortest path between two points on the surface of the equation lies on a plane that passes through the two points in question and also through center of the sphere." (2) is indeed the equation of a plane which contains the origin, but it also implies that\begin{align}
x=a{\mathrm{cos} u\ }{\mathrm{s}\mathrm{i}\mathrm{n} v\ }\ \ ,\ y=a{\mathrm{sin} u\ }{\mathrm{s}\mathrm{i}\mathrm{n} v\ }\ \ ,\ z=\ a{\mathrm{c}\mathrm{o}\mathrm{s} v\ } & \phantom {10000}(3) \\
\end{align}This is very wrong. It would be correct if ##v## was the colatitude (angle measured from the pole). The colatitude is normally called  ##\phi ## and  ##\phi ={\pi }/{2}-v##, as they say in their #7. Alternatively one can swap all ##{\mathrm{sin} v\ },{\mathrm{cos} v\ }##. I guessed that the equation is therefore\begin{align}
a{\mathrm{cos} u\ }{\mathrm{cos} v\ }{\mathrm{sin} c_2\ }+a{\mathrm{sin} u\ }{\mathrm{cos} v\ }{\mathrm{cos} c_2\ }-\frac{a{\mathrm{sin} v\ }}{\sqrt{{\left(\frac{a}{c_1}\right)}^2-1}}=0 & \phantom {10000}(4) \\
\end{align}This is correct as I have proved by other means. (To be revealed). Numerically it can be shown with my great 3-D graph plotter (here and here). The incorrect equation is obviously not a great circle, whereas the correct one looks plausible;

The schematic shows great circles between cities. The right hand one shows the London-Peking great circle according Wolfram Mathworld. Perhaps this is what happened to the British Airways pilot who flew from London to Edinburgh instead of Düsseldorf in a month ago. (On the BBC here)

I have not been able to trace the source of the error in the Wolfram Mathworld proof. It may go as far back as their (7) where they might have intended to introduce ##\phi ##.

This error on Wolfram Mathworld caused me a lot of grief!

And another small error

There is also a typo on between equations (11) and (12). It reads "Starting with equation (##\mathrm{\Diamond }##)" which should be "Starting with equation (5)"

Sunday, 21 April 2019

3-D Graph plotter Version 2

Paul showed me how to write VBA for an Excel spreadsheet. David had also urged me to look at the Timer function in VBA to speed up production of animations on the 3-D Graph plotter. I dedicate this post to Paul and David.

Inspired by both of them I have put an animation feature in the 3-D graph plotter and here are the results.  All the movies had to be adjusted in html to make them bigger. The old method of screenshots into a .gif file is shown. It has some merits. I used the MS-Windows screen recorder to produce the .mp4 file. It is very clunky. It would be nice to be able to delineate the area of the screen one wished to record more precisely.

The geodesic plotter, I am still working on the equations :-(
On youtube here which is bigger 
Original mp4 here which is bigger and clearer.
Excel file here.

The same sphere produced painstakingly from 36 screenshots each 10° apart.

The cube from an .mp4 file loaded directly onto Blogger. Excel file here.

The cube from the.mp4 file first uploaded to Youtube. On Youtube here.
A similar cube produced painstakingly from 44 screenshots.

Saturday, 30 March 2019

Here we meet the covariant divergence and prove a thing or two about it. (Carroll said it was 'easy'.) We also have the curved-space version of Stokes's theorem using the covariant derivative and finally the exterior derivative and commutator, where Carroll seems to have made a very peculiar typo. Sir George Gabriel Stokes, 1st Baronet was a very clever but he did not discover the theorem. He popularised it.

Here's the very impressive Stokes's theorem, which applies to the diagram
$$\int^{\ }_{\mathrm{\Sigma }}{{\mathrm{\nabla }}_{\mu }V^{\mu }\sqrt{\left|g\right|}}d^nx=\int^{\ }_{\mathrm{\partial }\mathrm{\Sigma }}{n_{\mu }V^{\mu }\sqrt{\left|\gamma \right|}}d^{n-1}x
At Carroll's (3.36) he says "if ##\mathrm{\nabla }## is the Christoffel symbol, ##{\omega }_{\mu }## is a one-form, and ##X^{\mu }## and ##Y^{\mu }## are vector fields, we can write
$${\left(\mathrm{d}\omega \right)}_{\mu \nu }=2{\partial }_{[\mu }{\omega }_{\nu ]}=2{\mathrm{\nabla }}_{[\mu }{\omega }_{\nu ]}
$$The phrase "if ##\mathrm{\nabla }## is the Christoffel symbol" is bizarre and it is easy to prove the equation without it, assuming the Christoffel connection is torsion-free (##{\mathrm{\Gamma }}^{\lambda }_{\mu \nu }={\mathrm{\Gamma }}^{\lambda }_{\nu \mu }##). I think our author meant "if the connection is torsion-free".

Read more at Commentary 3.2 Properties of covariant derivative.pdf (7 pages)

Monday, 25 March 2019


I have sent this list of eight corrections I have found to date to the author, Sean Carroll. There is one extra (p.148) which I only found by peeking at a reprint of the question.

Chapter 1
p.24 just before equation (1.68) it reads "There is also the Levi-Civita symbol a (0,4) tensor." Surely it is not a tensor.

Chapter 2

p.81 Figure 2.26 fig 2.26 shows a singularity at a point p and the text discusses a point p that is in the future of the singularity. ( part 2)

Possible error
p. 82 Equation (2.66) could be much simpler if μ'1 μ'2 ...μ'n = 01...(n-1). (It's more streamlined.)
This is trued but if the simplified for was given, the next equation would not work! (GK)

Chapter 3
p.96 equation (3.10) for the connection transformation law. The + sign should be -. (

Possible error
p.99 definition of torsion-free (connection symmetric in lower indices) given as Γλμν = Γλ(μν). Surely Γλμν = Γλνμ. would be clearer? (

Exercise 6(a) should end "Which clock ticks faster?" I picked this up from

p. 427 equation (A.11) ϕ is used to mean two different things: a map and a polar coordinate. (

The Christoffel Symbol

At last we move on to chapter three on curvature and immediately we find the Christoffel symbol Γ which is upper case γ. Elwin Bruno Christoffel was a mathematician, born in Prussia in 1829, and he studied at the University of Berlin. "He introduced fundamental concepts of differential geometry, opening the way for the development of tensor calculus, which would later provide the mathematical basis for general relativity."

I followed equations (3.5)-(3.10) carefully because I fell into the same tramp as I had before on one step and found an error of a sign in Carroll's  (3.10) which is the important equation for the transformation of the connection. This is fairly obvious because it comes from (3.9) and a + term has gone to the other side of the equation without changing sign. It was also confirmed by notes I found at  Physics 171 and the proof about Carroll's (3.26), see  below. I struggled with that proof (and part 2 of exercise 1) for too long. Eventually I found it after I found another erroneous proof on another website which nevertheless gave me a great new indexing trick (note d). I have corrected the error here.

I still do not understand Carroll's third rule for covariant derivatives that they commute with contractions  but he never seems to use it. Its meaning  provoked a discussion on physics forums which did not help me. In another discussion my false assumption about commuting partial derivatives was exposed.

The three most important equations here are$$
{\mathrm{\Gamma }}^{\nu '}_{\mu '\lambda '}=\frac{\partial x^{\mu }}{\partial x^{\mu '}}\frac{\partial x^{\lambda }}{\partial x^{\lambda '}}\frac{\partial x^{\nu '}}{\partial x^{\nu }}{\mathrm{\Gamma }}^{\nu }_{\mu \lambda }-\frac{\partial x^{\mu }}{\partial x^{\mu '}}\frac{\partial x^{\lambda }}{\partial x^{\lambda '}}\frac{{\partial }^2x^{\nu '}}{\partial x^{\mu }\partial x^{\lambda }}
$$ and $$
{\mathrm{\Gamma }}^{\nu '}_{\mu '\lambda '}=\frac{\partial x^{\mu }}{\partial x^{\mu '}}\frac{\partial x^{\lambda }}{\partial x^{\lambda '}}\frac{\partial x^{\nu '}}{\partial x^{\nu }}{\mathrm{\Gamma }}^{\nu }_{\mu \lambda }+\frac{\partial x^{\nu '}}{\partial x^{\lambda }}\frac{{\partial }^2x^{\lambda }}{\partial x^{\mu '}\partial x^{\lambda '}}
$$ which are alternatives for the transformation of a connection. The first one was Carroll's (3.10) (corrected.)

The third is Carroll's (3.27). He writes it is "one of the most important equations in this subject; commit it to memory." It is for a torsion-free (##{\mathrm{\Gamma }}^{\lambda }_{\mu \nu }={\mathrm{\Gamma }}^{\lambda }_{\nu \mu }##) metric-compatible (##{\mathrm{\nabla }}_{\rho }g_{\mu \nu }=0##) connection and is$$
{\mathrm{\Gamma }}^{\sigma }_{\mu \nu }=\frac{1}{2}g^{\sigma \rho }\left({\partial }_{\mu }g_{\nu \rho }+{\partial }_{\nu }g_{\rho \mu }-{\partial }_{\rho }g_{\mu \nu }\right)
$$For some reason Carroll writes ##{\mathrm{\Gamma }}^{\lambda }_{\mu \nu }={\mathrm{\Gamma }}^{\lambda }_{\nu \mu }## as ##{\mathrm{\Gamma }}^{\lambda }_{\mu \nu }={\mathrm{\Gamma }}^{\lambda }_{(\mu \nu )}## which is the same but more complicated. The brackets are the symmetrisation operator.

Sunday, 24 March 2019

Transformation of Christoffel symbol

Correction to Physics Simplified

There is a derivation of the coordinate transformation for the Christoffel symbol ##\mathrm{\Gamma }## (or the connection) on Physics Simplified (here:
It is very wrong! One obvious clue is that it twists the indices giving ##{\mathrm{\Gamma }}^{\lambda {'}}_{\mu {'}\nu {'}}## in terms of ##{\mathrm{\Gamma }}^{\mu }_{\nu \lambda }##.
It is also assuming that the connection is torsion free and metric compatible. That is that
{\mathrm{\Gamma }}^{\lambda }_{\mu \nu }={\mathrm{\Gamma }}^{\lambda }_{\nu \mu } & \phantom {10000}(1) \\
\mathrm{\nabla }g_{\mu \nu }=0 & \phantom {10000}(2) \\
\end{align}These are not necessary and I will show why in my next post (I hope.)

Here is the correct derivation.

We have the (torsion free , metric compatible) equation for the connection, which can be written with or without primes\begin{align}
{\mathrm{\Gamma }}^{\lambda {'}}_{\mu {'}\nu {'}}=\frac{1}{2}g^{\lambda {'}\rho {'}}\left({\partial }_{\mu {'}}g_{\nu {'}\rho {'}}+{\partial }_{\nu {'}}g_{\rho {'}\mu {'}}-{\partial }_{\rho {'}}g_{\mu {'}\nu {'}}\right) & \phantom {10000}(3) \\
\end{align}If we take the first term in the brackets and use the tensor transformation law we get\begin{align}
{\partial }_{\mu {'}}g_{\nu {'}\rho {'}} & =\frac{\partial }{\partial x^{\mu {'}}}\left(\frac{\partial x^{\nu {'}}}{\partial x^{\nu }}\frac{\partial x^{\rho {'}}}{\partial x^{\rho }}g_{\nu \rho }\right) & \phantom {10000}(4) \\
 & =\frac{\partial x^{\mu }}{\partial x^{\mu {'}}}\frac{\partial }{\partial x^{\mu }}\left(\frac{\partial x^{\nu }}{\partial x^{\nu {'}}}\frac{\partial x^{\rho }}{\partial x^{\rho {'}}}g_{\nu \rho }\right) & \phantom {10000}(5) \\
 & =\frac{\partial x^{\mu }}{\partial x^{\mu {'}}}\frac{\partial x^{\nu }}{\partial x^{\nu {'}}}\frac{\partial x^{\rho }}{\partial x^{\rho {'}}}{\partial }_{\mu }g_{\nu \rho }+g_{\nu \rho }\left(\frac{\partial x^{\mu }}{\partial x^{\mu {'}}}\frac{\partial x^{\rho }}{\partial x^{\rho {'}}}\frac{{\partial }^2x^{\nu }}{\partial x^{\mu }\partial x^{\nu {'}}}+\frac{\partial x^{\mu }}{\partial x^{\mu {'}}}\frac{\partial x^{\nu }}{\partial x^{\nu {'}}}\frac{{\partial }^2x^{\rho }}{\partial x^{\mu }\partial x^{\rho {'}}}\right) & \phantom {10000}(6) \\
\therefore {\partial }_{\mu {'}}g_{\nu {'}\rho {'}} & =\frac{\partial x^{\mu }}{\partial x^{\mu {'}}}\frac{\partial x^{\nu }}{\partial x^{\nu {'}}}\frac{\partial x^{\rho }}{\partial x^{\rho {'}}}{\partial }_{\mu }g_{\nu \rho }+g_{\nu \rho }\left(\frac{\partial x^{\rho }}{\partial x^{\rho {'}}}\frac{{\partial }^2x^{\nu }}{\partial x^{\mu {'}}\partial x^{\nu {'}}}+\frac{\partial x^{\nu }}{\partial x^{\nu {'}}}\frac{{\partial }^2x^{\rho }}{\partial x^{\mu {'}}\partial x^{\rho {'}}}\right) & \phantom {10000}(7) \\
\end{align}That was the first error in Physics Simplified. The indices ##\mu ,\nu ## in the denominator of its last term of its fourth equation were the wrong way round. That would be like swapping ##\nu ,\rho ## in the last term of (7).

We can use (7) to get the other two terms in (3). We start with the first part, ##{\partial }_{\mu }g_{\nu \rho }##, of (7):

Second term (3), change first term of (7) with ##\mu \to \nu ,\ \ \nu \to \rho ,\ \ \rho \to \mu ## \begin{align}
T21=\frac{\partial x^{\nu }}{\partial x^{\nu {'}}}\frac{\partial x^{\rho }}{\partial x^{\rho {'}}}\frac{\partial x^{\mu }}{\partial x^{\mu {'}}}{\partial }_{\nu }g_{\rho \mu } & \phantom {10000}(8) \\
\end{align}Third term (3), change first term of (7) with ##\mu \to \rho ,\ \ \nu \to \mu ,\ \ \rho \to \nu ## and negate
T31=-\frac{\partial x^{\rho }}{\partial x^{\rho {'}}}\frac{\partial x^{\mu }}{\partial x^{\mu {'}}}\frac{\partial x^{\nu }}{\partial x^{\nu {'}}}{\partial }_{\rho }g_{\mu \nu } & \phantom {10000}(9) \\
\end{align}If we added up those three we get the first part of the fifth equation in Physics Simplified with ##\mu \to \lambda ##

In the above we had really substituted the primed ##\mu ,\nu ,\rho ## (which are the free indices) and then changed the dummy variables ##\mu ,\nu ,\rho##. For the next step we will have to be more careful. Following the same procedure only on the primed indices we get
T22=g_{\nu \rho }\left(\frac{\partial x^{\rho }}{\partial x^{\mu {'}}}\frac{{\partial }^2x^{\nu }}{\partial x^{\nu {'}}\partial x^{\rho {'}}}+\frac{\partial x^{\nu }}{\partial x^{\rho {'}}}\frac{{\partial }^2x^{\rho }}{\partial x^{\nu {'}}\partial x^{\mu {'}}}\right) & \phantom {10000}(10) \\
T32=-g_{\nu \rho }\left(\frac{\partial x^{\rho }}{\partial x^{\nu {'}}}\frac{{\partial }^2x^{\nu }}{\partial x^{\rho {'}}\partial x^{\mu {'}}}+\frac{\partial x^{\nu }}{\partial x^{\mu {'}}}\frac{{\partial }^2x^{\rho }}{\partial x^{\rho {'}}\partial x^{\nu {'}}}\right) & \phantom {10000}(11) \\
\end{align}We now swap the dummy variables ##\nu ,\rho ## in (11) and because of the symmetry of ##g_{\nu \rho }## we can swap them again on that and it becomes\begin{align}
T32=-g_{\nu \rho }\left(\frac{\partial x^{\nu }}{\partial x^{\nu {'}}}\frac{{\partial }^2x^{\rho }}{\partial x^{\rho {'}}\partial x^{\mu {'}}}+\frac{\partial x^{\rho }}{\partial x^{\mu {'}}}\frac{{\partial }^2x^{\nu }}{\partial x^{\rho {'}}\partial x^{\nu {'}}}\right) & \phantom {10000}(12) \\
\end{align}exploiting the rule that partial derivatives commute we can see that the first term of (12) cancels the last term of (7). Likewise the second term of (12) cancels the first of (10). After swapping dummy variables ##\mu,\rho## again the second term of (10) is the same as its equivalent in (7). So adding up (7), (8), (9) (10) and (12) and putting them into (3) we get
{\mathrm{\Gamma }}^{\lambda {'}}_{\mu {'}\nu {'}}=\frac{1}{2}g^{\lambda {'}\rho {'}}\left(\frac{\partial x^{\mu }}{\partial x^{\mu {'}}}\frac{\partial x^{\nu }}{\partial x^{\nu {'}}}\frac{\partial x^{\rho }}{\partial x^{\rho {'}}}\left({\partial }_{\mu }g_{\nu \rho }+{\partial }_{\nu }g_{\rho \mu }-{\partial }_{\rho }g_{\mu \nu }\right)+2g_{\nu \rho }\frac{\partial x^{\nu }}{\partial x^{\rho {'}}}\frac{{\partial }^2x^{\rho }}{\partial x^{\nu {'}}\partial x^{\mu {'}}}\right) & \phantom {10000}(13) \\
\end{align}If we now apply the tensor transformation law to the ##g^{\lambda {'}\rho {'}}## at the front of that we get
{\mathrm{\Gamma }}^{\lambda {'}}_{\mu {'}\nu {'}}=\frac{1}{2}\frac{\partial x^{\lambda {'}}}{\partial x^{\lambda }}\frac{\partial x^{\rho {'}}}{\partial x^{\rho }}g^{\lambda \rho }\left(\frac{\partial x^{\mu }}{\partial x^{\mu {'}}}\frac{\partial x^{\nu }}{\partial x^{\nu {'}}}\frac{\partial x^{\rho }}{\partial x^{\rho {'}}}\left({\partial }_{\mu }g_{\nu \rho }+{\partial }_{\nu }g_{\rho \mu }-{\partial }_{\rho }g_{\mu \nu }\right)+2g_{\nu \rho }\frac{\partial x^{\nu }}{\partial x^{\rho{'}}}\frac{{\partial }^2x^{\rho }}{\partial x^{\nu {'}}\partial x^{\mu {'}}}\right) & \phantom {10000}(14) \\
which is similar to, but not I think the same as the seventh equation in Physics Simplified. Nevertheless simplifying:
{\mathrm{\Gamma }}^{\lambda {'}}_{\mu {'}\nu {'}}=\frac{\partial x^{\lambda {'}}}{\partial x^{\lambda }}\frac{\partial x^{\mu }}{\partial x^{\mu {'}}}\frac{\partial x^{\nu }}{\partial x^{\nu {'}}}\frac{1}{2}g^{\lambda \rho }\left({\partial }_{\mu }g_{\nu \rho }+{\partial }_{\nu }g_{\rho \mu }-{\partial }_{\rho }g_{\mu \nu }\right)+\frac{\partial x^{\lambda {'}}}{\partial x^{\lambda }}{\delta }^{\lambda }_{\nu }{\delta }^{\nu }_{\rho }\frac{{\partial }^2x^{\rho }}{\partial x^{\nu {'}}\partial x^{\mu {'}}} & \phantom {10000}(15) \\
\end{align}The ##g^{\lambda \rho }\left(\dots \right)/2## part of that is of course ##{\mathrm{\Gamma }}^{\lambda }_{\mu \nu }##, so we get
{\mathrm{\Gamma }}^{\lambda {'}}_{\mu {'}\nu {'}}=\frac{\partial x^{\lambda {'}}}{\partial x^{\lambda }}\frac{\partial x^{\mu }}{\partial x^{\mu {'}}}\frac{\partial x^{\nu }}{\partial x^{\nu {'}}}{\mathrm{\Gamma }}^{\lambda }_{\mu \nu }+\frac{\partial x^{\lambda {'}}}{\partial x^{\nu }}\frac{{\partial }^2x^{\nu }}{\partial x^{\nu {'}}\partial x^{\mu {'}}} & \phantom {10000}(16) \\
This is a correct transformation for the connection.

It is definitely not the same as the one given Physics Simplified which was\begin{align}
{\mathrm{\Gamma }}^{\lambda {'}}_{\mu {'}\nu {'}}=\frac{\partial x^{\mu {'}}}{\partial x^{\mu }}\frac{\partial x^{\lambda }}{\partial x^{\lambda {'}}}\frac{\partial x^{\nu }}{\partial x^{\nu {'}}}{\mathrm{\Gamma }}^{\mu }_{\nu \lambda }+\frac{\partial x^{\mu {'}}}{\partial x^{\mu }}\frac{{\partial }^2x^{\mu }}{\partial x^{\lambda {'}}\partial x^{\nu {'}}} & \phantom {10000}(17) \\
Pdf and docx files at Commentary 3.2 Correction to Physics Simplified.pdf

Saturday, 23 March 2019

Exercise 3.01 Consequences of metric compatibility

Christoffel Symbol
At last I am on to chapter 3 on curvature. It has taken me three weeks to do the first four pages and exercise 3.01 was done on the way. I learned or relearned many things and had two interesting discussions on Physics forums (here and here). The question asked us to prove that the covariant derivative of the inverse metric and and that the covariant derivative of the Levi-Civita tensor both vanished if the covariant derivative of the metric vanishes and the Christoffel Symbol is symmetric in its lower indices. These conditions are known as metric compatibility and torsion freedom(?) respectively. One would say 'a connection on a manifold is torsion free and metric compatible'.

In maths that is


Verify the consequences of metric compatibility: If
{\mathrm{\nabla }}_{\sigma}g_{\mu \nu }=0 & \phantom {10000}(1) \\
\end{align}then (a)\begin{align}
{\mathrm{\nabla }}_{\sigma}g^{\mu \nu }=0 & \phantom {10000}(2) \\
\end{align}and (b)\begin{align}
{\mathrm{\nabla }}_{\lambda}{\varepsilon }_{\mu \nu \sigma \rho }=0 & \phantom {10000}(3) \\
\end{align} I am not sure if we are assuming ##{\mathrm{\Gamma }}^{\tau }_{\lambda \mu }={\mathrm{\Gamma }}^{\tau }_{ \mu \lambda }## or not.


Part (a) was quite simple but I struggled with the part (b) until 23 March and had to give up. Along the way I had lots of practice at index manipulation, I reacquainted myself with Cramer's rule for solving simultaneous equations, proved (b) on the surface of a sphere, found the 'dynamite' version of Carroll's streamlined matrix determinant equation (2.66) and added some equation shortcut keys to my keyboard. The time was not wasted.

We make frequent use here of  the fact that ##g_{\mu \nu }g^{\mu \rho }\mathrm{=}{\delta}^{\rho }_{\nu }## and the indexing effect of the Kronecker delta: ##{\delta}^{\lambda }_{\beta }\mathrm{\Gamma }^{\mu }_{\sigma \lambda }={\mathrm{\Gamma }}^{\mu }_{\sigma \beta }## because we are summing over ##\lambda ## and the only non-zero term is when ##\beta =\lambda ##. In this case ##\mathrm{\Gamma }## can be replaced by any symbol or tensor of any rank.

Here is the full effort Ex 3.01 Consequences of metric compatibility.pdf (7 pages of which 4 might be worth looking at).