The Cartesian Product

The Cartesian product, named after Rene (with suitable accents) des Cartes, is orthodoxly a way of taking a list of sets and generating a set of lists; if we have ({collections}:F|n) with n natural, the cartesian product C of F is that collection for which: c in C iff i in n implies c(i) in F(i). Thus [a,b] is a member of A×B (as orthdoxy writes it), the cartesian product of [A,B], iff a is in A and b is in B. I depart from orthodoxy in not using × to denote this (it's too heavily over-loaded already); it will be Rene([A,B]).

At the same time, the theory of smooth manifolds obliges one to deal extensively with functions of form (:F|M), with M the smooth manifold, for which F(m) is a linear space, for each m; F is then a tensor rank on M and a section of F is a mapping (:f|M) for which f(m) is a member of F(m) for each m in M [subject to some continuity conditions not relevant to the present]. This clearly has the same form, with m and M replacing i and n in the above. The situation is then further complicated by the fact that each F(m) is formally constructed from a pair of equivalence relations at m (and possibly some tensor algebra), so that I'd ideally like to allow that F's outputs need not be collections - e.g. they may be equivalences. Expanding the uses of in above, we get C relates c to d iff i in n implies F(i) relates c(i) to d(i), which perfectly safely allows us arbitrary relations as the outputs of F; and allows n to be any collection (or, indeed, general relation; but only its collection of fixed points will matter).

I therefore address the theoretical construct of the cartesian product by defining the mapping

which mediates the above. If (:{mappings}|F) then F(i) relates c(i) to d(i) translates to c(i) = F(i,d(i)) so Rene(F) can be written (: (: F(i,d(i)) ←i |(:F|)) ← (:d|(:F|)) :). When (furthemore) (:{collections}|F), Rene(F) becomes {d: i in (:F|) implies d(i) in F(i)}, which is its orthodox cartesian product, at least when F is a list (i.e. (:F|) is natural).

At the same time, if F is a rank of some smooth manifold's tensor bundle, Rene(F) is the collection of sections - a.k.a. tensor fields (on the whole manifold) - of that rank. If (:F|M) is a section of the rank which describes linear maps from one rank, A, to another, W - a.k.a. a tensor field whose value at each point, m, is a linear map (W(m):|A(m)) - then Rene(F) = (Rene(W): (: F(m,a(m)) ←m |M) ←(:a|M) :Rene(A)) is a pointwise linear map from sections of A to sections of W. Indeed, the case where F was a rank is just a special case of this: a rank is the identity on itself, and trivially linear, so Rene maps it to the identity (pointwise linear) map on sections of that rank, i.e. the collection of such sections.

[Complication: for equivalences ... G(m) and T(m) are equivalences on {({scalars}:h:M): h smooth on some neighbourhood of m} and {(M:f:{scalars})←t: f(t) = m, f smooth in some neighbourhood of t}, respectively ... really want mappings from any rank to G or T to be nice about these equivalences ... but that can always be implemented by suitable composition with G or T.]

Now, if we have (:F|M) and (:H|M) as sections of two ranks describing linear maps, with H's output rank being F's input rank, we can construct (: F(m)&on;H(m) ←m |M) which is then a section on a third rank describing linear maps, from H's input rank, (: (:H(m)|) ←m |M), to F's output rank, (: (|F(m):) ←m |M). Applying Rene to the composite, we get

Rene(: F(m)&on;H(m) ←m |M)
= ({mappings}: (: F(m, H(m, v(m))) ←m |M) ← (:v|M) :{mappings})
= Rene(F)&on;Rene(H)

so that the pointwise composite of F and H can be written as unRene(Rene(F)&on;Rene(H)) with unRene = reverse(Rene). [The structure of this echoes that of star(a*b) = star(a)&on;star(b) for a binary operator, *, and its associated mapping, star = (: (: u*v ← v :) ←u :).]

Written by Eddy.
$Id: cartesian.html,v 1.2 2004/07/01 21:04:27 eddy Exp $