Is this a terminologic issue?

Jerzy Karczmarczuk karczma at
Fri Sep 19 11:44:24 EDT 2003

[[Sent to Haskell-café, and to]]

If you look at some Web sites (Mathworld, the site of John Baez - a known
spec. in algebraic methods in physics), or into some books on differential
geometry, you might easily find something which is called pullback or

Actually, it is the construction of a dual, whose meaning can be distilled
and implemented in Haskell as follows. The stuff is very old, and very well

Suppose you have two domains X and Y. A function F : X -> Y. The form (F x)
gives some y.

You have also a functor which constructs the dual spaces, X* and Y* - spaces
of functionals over X or Y. A function g belongs to Y* if g : Y -> Z (some
Z, let's keep one space like this).

Now, I can easily construct a dual to F, the function F* : Y* -> X* by

(F* g) x = g (F x)

and this mapping is called pullback...

While there is nothing wrong with that, and in Haskell one may easily
write the 'star' generator

(star f) g x = g (f x)


star = flip (.)

... I have absolutely no clue why this is called a pullback. Moreover, in
the incriminated diff. geom. books, its inverse is *not* called pushout,
but push-forward. Anyway, I cannot draw any pullback diagram from that.

The closest thing I found is the construction in Asperti & Longo,
where a F in C[A,B]  induces F* : C!B -> C!A where the exclam.
sign is \downarrow, the "category over ...".

The diagram is there, a 9-edge prism, but - in my eyes - is quite
different from what one can get from this "contravariant composition"
above. But my eyes are not much better than my ears, so...

I sent this question to a few gurus, and the answers are not conclusive,
although it seems that this *is* a terminologic confusion.

Vincent Danos <Vincent.Danos at> wrote:

 > it really doesn't look like a categorical pullback
 > and it might well be a "pull-back" only in the sense
 > that if if F:A->B is a linear map say and f is a linear form on B, then F*(f)
 > is a linear form on A
 > defined as F*(f)(a)=f(b=F(a)) so one can "pull back" (linearly of course!)
 > linear forms on B to linear forms on A
 > "back" refers to the direction of F, i'd say.


Does anybody have a different (or any!) idea about that?

Thank you in advance for helping me to solve my homework.

Jerzy Karczmarczuk
Caen, France

More information about the Haskell-Cafe mailing list