To be able to use curl in N spatial dimensions the key is to start with bivectors instead of vectors.
Curl is traditionally a vector. Its dot product with another vector is a scalar that measures vorticity. We don't have a dot here, so let | represent the dot of the dot product.
TRAD: curl | n = vorticity.
Both the curl vector and the normal vectors are pseudovectors, each used to define a plane. The curl vector defines a local plane of rotation, while the normal vector defines a locally planar surface. This works only in 3D, as this is the only space where vectors and planes are dual.
In geometric algebra(GA) each of these planes is defined by a bivector. The curl is a bivector and the plane is also a bivector. The dot product of the two bivectors yields the same scalar that measures vorticity. As we shall see, this has the advantage of scaling up to any number of dimensions. But for now we are still in 3D, where
GA 3D: curl | n* = vorticity, where the bivector n* is the dual of n.
We will start out easy. Vector i maps to bivector jk, j to ki, and k to ij. (We use ki instead of ik to get the signs to work out.)
Let
a = dF3/dy - dF2/dz
b = dF1/dz - dF3/dx
c = dF2/dx - dF1/dy
TRAD: [ai, bj, ck] = curl
curl | n = vorticity
GA: ajk + bki + cij = curl
curl | n* = vorticity
We won't be able to use symbols like a, i or dx in N dimensions, so we replace them with indexed symbols.
i=e1, j=e2, k=e3.
a1 = dF3/de2 - dF2/de3
a2 = dF1/de3 - dF3/de1
a3 = dF2/de1 - dF1/de2
Instead of using the proper eiej I'm going to use eij. It's easier to type in. Then ij= e12, ki= e31, jk= e23,
a1e23 + a2e31 + a3e12 = curl
With P any bivector,
curl | P = vorticity
Choose any N other than 3 and P doesn't describe a surface. This can't be helped. Get used to it.
The definition of curl may be found at http://www.ittc.ku.edu/~jstiles/220/handouts/The%20Curl%20of%20a%20Vector%20Field.pdf. We are not able to reproduce it on this page, so if you wish for this to make any sense you better have a good look. This definition isn't extendable. So we need to rewrite it in terms of bivectors. In N D we can't use a normal vector to define a bivector. But in N D we don't have to: just use the bivector directly. Instead of Bi and Ci, we want Bjk and Cjk. Easy. 1 maps to 23, 2 maps to 31, 3 maps to 12. Our new definition of curl is simpler than it was. But all we have done is change names. In 3D everything is functionally the same as it was, it just looks different.
With this change of point of view, coefficient ai no longer explicitly corresponds to normal vector ei.
Coefficient ai now corresponds to bivector ejk. So it makes sense to rename ai to ajk.
a23 = dF3/de2 - dF2/de3
a31 = dF1/de3 - dF3/de1
a12 = dF2/de1 - dF1/de2
Then
a23e23 + a31e31 + a12e12 = curl
Moving on, I know from experience that the e31 basis vector is going to cause us trouble. So change to e13 via e31=-e13.
a23 = dF3/de2 - dF2/de3
a31 = -(dF3/de1 - dF1/de3)
a12 = dF2/de1 - dF1/de2
(a23e23 - a31e13 + a12e12) = curl
This gives us
a23 = dF3/de2 - dF2/de3
a13 = dF3/de1 - dF1/de3
a12 = dF2/de1 - dF1/de2
a23e23 + a13e13 + a12e12 = curl
This superficial change allows a simple rule for the signs. If i < j then dFi/dej is negative, otherwise positive. Now we can add in new terms. Our definition of curl using bivectors does not depend on the number of dimensions. It even works in 1 and 0 dimensions, where the result is 0. Ready to go to 4D!
4D:
a12 = dF2/de1 - dF1/de2
a13 = dF3/de1 - dF1/de3
a14 = dF4/de1 - dF1/de4
a23 = dF3/de2 - dF2/de3
a24 = dF4/de2 - dF2/de4
a34 = dF4/de3 - dF3/de4
a12e12 + a13e13 + a14e14 + a23e23 + a24e24 + a34e34 = curl
The pattern is evident.
aij = dFj/dei - dFi/dej
curl = Sum over { i,j with 1<=i<j<=N } aijeij
vorticity = curl | P
with P any bivector.
As a final step, revert to standard GA notation.
curl = Sum over { i,j with 1<=i<j<=N } aijeiej