Also available as http://math.ucr.edu/home/baez/week240.html
October 22, 2006
This Week's Finds in Mathematical Physics (Week 240)
John Baez
I'm back from Shanghai, and classes are well underway now. For the
last few weeks I'd been frantically preparing a talk for Stewart
Brand's "Seminars About LongTerm Thinking", up in San Francisco.
I talked about how we need to "zoom out" of our shortterm perspective
to understand the history of the earth's climate and what we're doing
to it now:
1) John Baez, Zooming out in time, http://math.ucr.edu/home/baez/zoom/
There's a lot of tricky physics in this business. Consider,
for example, this graph of cycles governing the Earth's precession,
the obliquity of its orbit, and the eccentricity of its orbit:
2) Wikipedia, Milankovitch cycles,
http://en.wikipedia.org/wiki/Milankovitch_cycles
The yellow curve combines information from all three of these cycles
and shows the amount of solar radiation at 65 degrees north latitude.
The bottom black curve shows the amount of glaciation. As
Milankovitch's theory predicts, you can sort of see a correlation
between the yellow and black curves  but it's nothing simple or
obvious. One reason is the complex feedback mechanisms within the
Earth's climate.
Here's a great place to read about this stuff:
3) Barry Saltzman, Dynamical Paleoclimatology: Generalized Theory of
Global Climate Change, Academic Press, New York, 2002.
Anyway, now this talk is done, and I can concentrate more on teaching.
In my seminar this year, we're focusing on two topics: quantization
and cohomology, and classical versus quantum computation. I'm
trying out something new: not only are the notes available on the
web, there's also a blog entry for each class, where you can ask
questions, make comments and correct my mistakes!
4) John Baez, Fall 2006 seminars: Quantization and cohomology, and
Classical versus quantum computation. Notes by Derek Wise, homeworks
and blog entries available at http://math.ucr.edu/home/baez/qgfall2006/
I hope more people blend teaching with blogging. It's not too much
work if someone with legible handwriting takes notes and the lectures
can actually be followed from the notes. You can use blogging to
interactively teach people scattered all over the planet!
This week, James Dolan gave a talk on something he's been working on for
a long time: games and cartesian closed categories. Lately he's been
working with Todd Trimble, and they reproved some important results in
a fun new way. Let me sketch the ideas for you....
Let's play a game. I have a set X in my pocket, and I'm not telling
you what it is. Can you pick an element of X in a systematic way?
No, of course not: you don't have enough information. X could even
be empty, in which case you're clearly doomed! But even if it's nonempty,
if you don't know anything about it, you can't pick an element in a
systematic way.
So, you lose.
Okay, let's play another game. Can you pick an element of
X^X
in a systematic way? Here A^B means the set of functions from B to A.
So, I'm asking if you can pick a function from X to itself in a systematic
way.
Yes! You can pick the identity function! This sends each element
of X to itself:
x > x
You don't need to know anything about X to describe this function.
X can even be empty.
So, you win.
Are there any other ways to win? No.
Now let's play another game. Can you pick an element of
X^(X^X)
in a systematic way?
An element in here takes functions from X to itself and turns them into
elements of X. When X is the set of real numbers, people call this sort
of thing a "functional", so let's use that term. A functional eats
functions and spits out elements.
You can scratch your head for a while trying to dream up a systematic
way to pick a functional for any set X. But, there's no way.
So, you lose.
Let's play another game. Can you pick an element of
(X^X)^(X^X)
in a systematic way?
An element in here eats functions and spits out functions. When X is
the set of real numbers, people often call this sort of thing an
"operator", so let's use that term.
Given an unknown set X, can you pick an operator in a systematic
way? Sure! You can pick the identity operator. This operator
eats any function from X to itself and spits out the same function:
f > f
Anyway: you win.
Are there any other ways to win? Yes! There's an operator that
takes any function and spits out the identity function:
f > (x > x)
This is a bit funnylooking, but I hope you get what it means: you
put in any function f, and out pops the identity function x > x.
This arrow notation is very powerful. It's usually called the
"lambda calculus", since when Church invented it in the 1930s, he
wrote it using the Greek letter lambda instead of an arrow: instead of
x > y
he wrote
lambda x.y
But this just makes things more confusing, so let's not do it.
Are there more ways to win this game? Yes! There's also an operator
called "squaring", which takes any function f from X to itself and
"squares" it  in other words, does it twice. If we write the result
as f^2, this operator is
f > f^2
But, we can express this operator without using any special symbol
for squaring. The function f is the same as the function
x > f(x)
so the function f^2 is the same as
x > f(f(x))
so the operator "squaring" is
f > (x > f(f(x)))
This looks pretty complicated. But, it shows that our systematic
way of choosing an element of
(X^X)^(X^X)
can still be expressed using just the lambda calculus.
Now that you know "squaring" is a way to win this particular game,
you'll immediately guess a bunch of other ways: "cubing", and so on.
It turns out all the winning strategies are of this form! We can
list them all using the lambda calculus:
f > (x > x)
f > (x > f(x))
f > (x > f(f(x)))
f > (x > f(f(f(x))))
etc. Note that the second one is just a longer name for the
identity operator. The longer name makes the pattern clear.
So far, all these methods of picking an element of X^(X^(X^X))
for an unknown set X can be written using the lambda calculus.
There are other sneakier ways. For example, there's the operator
that sends functions with fixed points to the identity function,
and sends functions without fixed points to themselves. It's an
interesting challenge to figure out all these sneaky ways, but
it's way too hard for me. So, from now on, just to keep things
simple, let's only consider "systematic ways" that can be expressed
using the lambda calculus. To win one of my games, you need to
use the lambda calculus to pick an element of the set I write down.
So, let's play another game. Can you write down an element of
X^(X^(X^X))
using the lambda calculus?
An element in here eats functionals and spits out elements of X.
So, it's called a "functionalal" on X. At least that's what Jim
calls it.
If I have an unknown set in my pocket, can you write down a
functionalal on this set using the lambda calculus?
Yes! You just need to pick a recipe that takes functionals on X
and turns them into elements of X. Here's one recipe: take any
functional and evaluate it on the *identity* function, getting
an element of x.
In lambda calculus notation, this recipe looks like this:
f > f(x > x)
Can you think of other ways to win this game? I hope so: there are
infinitely many! Jim and Todd figured out a systematic way to list
them all.
Now let's play another game. Can you write down an element of
X^(X^(X^(X^X)))
using the lambda calculus? Such a thing eats functionalals and
spits out elements of X, so it's called a "functionalalal".
So, can you find a functionalalal on an unknown set in some
systematic way?
The answer is no: you lose.
How about writing down an element of
((X^X)^(X^X))^((X^X)^(X^X))
using the lambda calculus? Such a thing eats operators and
spits out operators, so it's called an "operatorator".
The answer is yes: there are lots of ways to win this game. The real
challenge is listing all of them! This is the sort of question Dolan
and Trimble figured out the answer to  though as we'll see, they
weren't the first.
In fact, instead of moving on to functionalators, operatorals,
operatoralatorals, and so on, let me just tell you trick for instantly
deciding which of all these games you can win.
You just take your game, like this:
((X^X)^(X^X))^((X^X)^(X^X))
and evaluate it by setting X = 0. If you get 0, there's no way to
win. If you get 1, there's at least one way to win.
To use this trick, you need to know that
0^0 = 1
This is something they don't teach in school! In analysis, X^Y
can approach anything between 0 and 1 when X and Y approach 0 from above.
So, teachers like to say 0^0 is undefined. But X^X approaches 1 when X > 0.
More importantly, in set theory, A^B stands for the set of functions
from B to A, and the number of elements in this set is
A^B = A^B
When A and B are empty, there's just one function from B to A, namely
the identity. So, for our purposes we should define 0^0 = 1.
Consider the case of functionals, which are elements of X^(X^X).
If we evaluate this at X = 0 we get
0^(0^0) = 0^1 = 0
So, there are no functionals when X is the empty set. So, you can't
pick a functional on a unknown set in *any* systematic way. That's
why you lose when your game evaluates to 0. It's more interesting to
prove that for games evaluating to 1, there's a way to win, using
the lambda calculus.
But we'd really like to understand *all* the ways to win using the
lambda calculus. And for this, Dolan and Trimble used the theory
of holodeck games.
In Star Trek, the "holodeck" is a virtual reality environment where
you can play various games. On the holodeck, if you regret a move
you made, you can back up to any earlier point in the game and make
a new move.
Actually I'm deviating from the technical specifications of the
holodeck on Star Trek, as explained here:
6) Wikipedia, Holodeck, http://en.wikipedia.org/wiki/Holodeck
So, if you're a Star Trek purist, it's better to imagine a video game
where you can save your game at any state of play, and go back to these
saved games whenever you want. And, you have to imagine being so paranoid
that you *always* save your game before making a move. This allows games
to go on forever, so we only say you have a winning strategy if you can win
in a finite number of moves, no matter what the other player does.
To make this completely precise, we consider twoplayer games where the
players take turns making moves. When a player can't make a move,
they lose. Any such game can be written as a "game tree", like this:
 \/
\  /
\/
In this example, the first player has three choices for her first move.
If she picks the middle branch, the second player has one choice for his
first move. Then the first player has one choice for her second move.
Then the second player has no choice for his second move  so he loses.
So, in this particular example the second player has no winning strategy.
A cool thing about such a game is that we can take its game tree and
turn it into an expression built from some variable X using products
and exponentials. To do this, just put an X at each vertex of the tree
except the root:
X X X
 \/
X X X
\  /
X X X
\/
Then blow on the tree with a strong westerly wind, so strong that the
branches blow away and only the X's are left:
X XX
X X X
X X X
This is just a way of writing an expression built from X using products and
exponentials:
X^X X^(X^X) X^(X^(XX))
Conversely, any such expression can be turned back into a tree, at least
after we simplify it using these rules:
(AB)^C = A^C B^C
(A^B)^C = A^(BC)
For example, consider the set of operators:
(X^X)^(X^X)
If we simplify this, we get
X^(X X^X)
or
X
X X
X
giving the tree
X
/
X X
\ /
X

or in other words
/
\ /

And here's a cool fact: if you take any expression built from X
using products and exponentials, and evaluate it at X = 0, you can
tell which player has a winning strategy for the game described by
the corresponding tree! If you get 1, the second player has a winning
strategy; if you get 0, they don't.
It's pretty easy to prove: try it.
But if you've been paying attention, you'll have noticed something weird.
I've told you TWO ways to get a game from any expression built from X
using products and exponentials. First, the game of defining an element
of the resulting set, using the lambda calculus. Second, the game we
get by turning this expression into a game tree, like I just did.
For *both* these games, you can decide if there's a winning
strategy by evaluating the expression at X = 0.
But are they the same game? No! One is the holodeck version of the other!
Let's look at the familiar example of operators:
(X^X)^(X^X) = X^(X X^X)
This evaluates to 1 at X = 0. So, if we turn it into a tree
/
\ /

we get a game where the second player has a winning strategy.
This game is not very exciting, but it becomes more exciting if you
call it "The Lady or the Tiger". In this game, the first player
has only one first move: he takes the second player to a room
with two doors, corresponding to the two branches of the above tree.
Then it's the second player's turn.
If he opens the left door, a beautiful lady pops out and they instantly
get married and live happily ever after. If he opens the right door,
the first player opens a tiger cage. Then the tiger jumps out and eats
the second player.
In this game, the second player has just ONE winning strategy:
on his first move he should choose the left door.
Next look at the game of defining an element of
(X^X)^(X^X) = X^(X X^X)
using the lambda calculus. We've seen there are INFINITELY MANY
strategies for winning this:
(x > y) > (z > z)
(x > y) > (z > (x > y)(z))
(x > y) > (z > (x > y)((x > y)(z)))
(x > y) > (z > (x > y)((x > y)((x > y)(z))))
and so on. These correspond to 2ndplayer winning strategies
for the *holodeck version* of The Lady or the Tiger.
What are these strategies?
One is just to play the game and win by choosing the left door.
Another is to choose the right door  and then, just when the
tiger is about to eat you, back up and choose the left door!
Another is to choose the right door  and then, just when the
tiger is about to eat you, back up and choose... the right door!
Whoops! Then, when the tiger is about to devour you again, back
up again, and this time choose the left door.
And so on: for each n, there's a strategy where you choose the
right door n times before wising up and choosing the left door.
Now, if you want a really nice math project, ponder the pattern
relating all these strategies to the corresponding lambda calculus
expressions:
(x > y) > (z > z)
(x > y) > (z > (x > y)(z))
(x > y) > (z > (x > y)((x > y)(z)))
(x > y) > (z > (x > y)((x > y)((x > y)(z))))
etc.
Then, figure out how to prove that for *any* 2person game, say:
 \/
\  /
\/
there's a 11 correspondence between winning secondperson strategies
for the holodeck verson of this game and ways of using the lambda
calculus to define elements of the corresponding set:
X^X X^(X^X) X^(X^(XX))
Apparently this result goes back to work of Hyland and Ong in the
early 1990s. Dolan rediscovered the idea, and Trimble and he have
recently worked out a new proof.
If you get stuck proving this result yourself, first try these notes
from Dolan's talk, for some hints:
7) James Dolan, Holodeck strategies and cartesian closed categories,
lecture at UCR, notes by John Baez, Oct. 19, 2006, available at
http://math.ucr.edu/home/baez/qgfall2006/f06week03b.pdf
Then try Trimble's more rigorous, technical treatment, and the
original paper by Hyland and Ong:
8) Todd Trimble, Holodeck games and CCCs, available at
http://math.ucr.edu/home/baez/trimble/holodeck.html
9) Martin Hyland and C.H. Luke Ong, On full abstraction for PCF,
Information and Computation, 163 (2000), 285408. Also available at
ftp://ftp.comlab.ox.ac.uk/pub/Documents/techpapers/Luke.Ong/pcf.ps.gz
Dolan's talk also explains some other fun stuff, like how to multiply
and exponentiate games. So, if you read these notes, you'll learn how
to play
chess x go
and
chess^{go}
at least after chess and go have been "improved" so games never last
forever and the last player able to make a move wins.
But, if you're planning to study this stuff, I'd better admit right
now that Dolan and Trimble make heavy use of the relation between the
lambda calculus and cartesian closed categories.
A category is "cartesian" if it has finite products  or in other words,
binary products and a terminal object. It's "cartesian closed" if it
also has exponentials. All these terms are carefully defined in the
week 2 and week 3 notes of my classical versus quantum computation course,
so let me just illustrate them with an example: the category of sets.
Here the product A x B of two sets A and B is their usual Cartesian
product. The exponential A^B is the set of functions from B to A.
Any 1element set is a terminal object.
Dolan and Trimble don't really talk about an unknown set X, as I did
above. What they really study is the "free cartesian closed category
on one object x", which I like to call CCC[x]. Any object in CCC[x]
is built from the object x by means of binary products, exponentials
and the terminal object. For example, we have objects like this:
x^1 1^(x^x) (x x)^(x 1 x^(x^x))
where I've omitted the times symbols for products.
However, every object is isomorphic to one in "tree form". For example,
the above object is isomorphic to
x x^(x x^(x^x)) x^(x x^(x^x))
which we can draw as a tree:
x x
 /
x x x x
\ /
x x x
\/
Dolan and Trimble consider the set of elements of any object in CCC[x],
where an "element" is a morphism from the terminal object, e.g.
f: 1 > x x^(x x^(x^x)) x^(x x^(x^x))
And, they show these elements are in 11 correspondence with secondplayer
winning strategies for the holodeck version of the game whose tree is
constructed as above.
If we pick any set X, the universal property of CCC[x] gives a functor
F: CCC[x] > Set
This maps elements of any object in CCC[x] to elements of the corresponding
object in Set:
F(f): 1 > X X^(X X^(X^X)) X^(X X^(X^X))
So, the element f gives a "systematic way of picking elements" of
any set built from any arbitrary set X using finite products and
exponentials. There might be *other* things that deserve to be
called "systematic ways of picking elements", but while that's an
interesting question, it's not really the point here.
By the way, in a cartesian closed category, there's a 11 correspondence
between morphisms
f: B > A
and elements
f: 1 > A^B
So, one can use games to describe *all* the objects and morphisms in
the free cartesian closed category on one object! One can also
describe *composition* of morphisms using games. In short, there's a
complete description of CCC[x] in terms of games.
Now let me give you some references on cartesian closed categories, the
lambda calculus, categorical semantics, and games. It's an interesting
network of subjects.
Categorical semantics was born in Lawvere's celebrated 1963 thesis on
algebraic theories:
10) F. William Lawvere, Functorial Semantics of Algebraic Theories,
Dissertation, Columbia University, 1963. Also available at
available at http://www.tac.mta.ca/tac/reprints/articles/5/tr5abs.html
Semantics deals with theories and their models. Dual to the concept of
semantics is the concept of "syntax", which deals with proofs. In the
case of algebraic theories, the syntax was studied before Lawvere in
the subject called "universal algebra":
11) Stanley Burris and H.P. Sankappanavar, A Course in Universal
Algebra, available at http://www.math.uwaterloo.ca/~snburris/htdocs/ualg.html
Lawvere modernized universal algebra by realizing that an algebraic
theory is just a cartesian category, and a model is a productpreserving
functor from this theory into Set or some other cartesian category 
hence his thesis title, "Functorial Semantics". I explained this in
much more detail back in "week200".
The relevance of all this to computer science becomes visible when we
note that a proof in universal algebra can be seen as a rudimentary form
of computation. The "input" of the computation is a set of assumptions,
while the "output" is the equation to be proved.
Treating proofs as computations may seem strained, but it becomes less
so when we move to richer formalisms which allow for more complex logical
reasoning. One of bestknown of these is the lambda calculus, invented
by Church and Kleene in the 1930s as a model of computation. Any function
computable by the lambda calculus is also computable by a Turing machine,
and according to the ChurchTuring thesis these are all the functions
computable by any sort of systematic process. Moreover, computations in
the lambda calculus can actually be seen as proofs.
The usefulness of this way of thinking was brought out in Landin's
classic paper:
12) P. Landin, A correspondence between ALGOL 60 and Church's
lambdanotation, Comm. ACM 8 (1965), 89101, 158165.
This began a long and fruitful line of research  see for example this:
13) H. Barendregt, The Lambda Calculus, its Syntax and Semantics,
NorthHolland, 1984.
The power of the lambda calculus is evident in the textbook developed for
MIT's introductory course in computer science, which is available online:
14) H. Abelson, G. J. Sussman and J. Sussman, Structure
and Interpretation of Computer Programs, available at
http://wwwmitpress.mit.edu/sicp/
It cites pioneers like Haskell Curry, and it even has a big "lambda"
on the cover!
Students call it "the wizard book", because the cover also features a
picture of a wizard. It's used at over 100 colleges and universities,
and it has spawned a semimythical secret society called The Knights
of the Lambda Calculus, whose selfreferential emblem celebrates the
ability of the lambda calculus to do recursion.
In 1980, Lambek made a great discovery:
15) Joachim Lambek, From lambda calculus to Cartesian closed categories,
in To H. B. Curry: Essays on Combinatory Logic, Lambda Calculus
and Formalism, eds. J. P. Seldin and J. Hindley, Academic Press, 1980,
pp. 376402.
He showed that just as algebraic theories can be regarded as cartesian
categories, theories formulated in the lambda calculus can be regarded
as cartesian closed categories (or CCCs, for short).
Lambek's discovery introduced a semantics for the lambda calculus,
since it lets us to speak of "models" of theories formulated
in the lambda calculus, just as we could for algebraic theories. In
computer programming, the importance of a model is that it gives a
picture of what a program actually accomplishes. A model in the
category of Sets, for example, sends any program to an actual function
between sets.
There's no way to list all the interesting references to CCCs and the
lambdacalculus, but here are some online places to get going on them,
starting out easy and working up to the harder ones. This Wikipedia
article is quite good:
16) Wikipedia, Lambda calculus, available at
http://en.wikipedia.org/wiki/Lambda_calculus
These blog entries by Mark ChuCarroll are *lots* of fun  just
the kind of readable, informal exposition I aspire to:
17) Mark ChuCarroll, Lambda calculus, available at
http://goodmath.blogspot.com/2006/06/lamdacalculusindex.html
Mark ChuCarroll, Category theory, available at
http://scienceblogs.com/goodmath/goodmath/category_theory/
These go deeper:
18) Peter Selinger, Lecture notes on the lambda calculus, available
at http://www.mscs.dal.ca/~selinger/papers.html#lambdanotes
and deeper:
19) Phil Scott, Some aspects of categories in computer science,
available at http://www.site.uottawa.ca/~phil/papers/handbook.ps
and here's a classic:
20) Joachim Lambek and Phil Scott, Introduction to Higher Order
Categorical Logic, volume 7 of Cambridge Studies in Advanced Mathematics,
Cambridge U. Press, 1986.
Dolan and Trimble are far from the first to study the relation between
games and categories. In the 1970s, Conway invented a wonderful theory
of games and surreal numbers:
21) John H. Conway, On Numbers and Games, Academic Press, New York, 1976.
Second edition: A. K. Peters, Wellesley, Massachusetts, 2001.
22) Elwyn Berlekamp, John H. Conway, Richard Guy, Winning Ways, vols. 12,
Aadmic Press, New York, 1982. Second edition, vols. 14, A. K. Peters,
Wellelsey, Massachusetts, 20012004.
23) Dierk Schleicher and Michael Stoll, An introduction to Conway's games
and numbers, available as math.CO/0410026.
In 1977, Joyal modified Conway's work a bit and related it explicitly
to category theory:
24) Andre Joyal, Remarques sur la theorie des jeux a deux personnes,
Gazette des Sciences Mathematiques du Quebec, Vol I no 4 (1977), 4652.
For an online version in English, try:
25) Andre Joyal, trans. Robin Houston, Remarks on the theory of
twoperson games, 2003. Available at
http://www.ma.man.ac.uk/~rhouston/Joyalgames.ps
I don't know the subsequent history very well  I'm no expert on any
of this stuff!  but by 1990 Martin Hyland was giving lectures on
Conway games and logic. In 1992, Andreas Blass published an
influential paper on "game semantics" for logic, where propositions
are interpreted as games and winning strategies are proofs:
26) Andreas R. Blass, Game semantics and linear logic, Annals of Pure
and Applied Logic 56 (1992), 183220.
Then came these important papers:
27) Samson Abramsky and Radha Jagadeesan, Games and full completeness
for multiplicative linear logic, Journal of Symbolic Logic, 59 (1994),
543  574. Also available at http://citeseer.ist.psu.edu/564168.html
28) Martin Hyland and C.H. Luke Ong, Fair games and full completeness
for multiplicative linear logic without the MIXrule, available at
http://citeseer.ist.psu.edu/hyland93fair.html
According to Samson Abramsky,
After these results, it was clear that the most notorious issue
in programming language semantics, the `full abstraction problem
for PCF', was in range. Remarkably enough, two different teams:
 Abramsky, Jagadeesan and Malacaria
 Hyland and Ong
produced really quite different constructions which yielded in
the end the same result: a synthetic construction of the fully
abstract model. (The technical issue in both cases was how to
accomodate the linear exponentials, i.e. the possibility to copy and
delete inputs to functions. It turned out there are two very
different approaches which can be taken. The HO approach (also
independently found by Hanno Nickau, incidentally) is quite related
to the ideas of the Lorenzen school, but, crucially, done
compositionally. The AJM approach is related to the Geometry of
Interaction  but takes the quite demanding step of making an
honest CCC out of it.)
After that, the next key step was to see that the whole space of
programming languages and computational features opened up to a game
theoretic analysis in a very systematic way, by varying the conditions
on strategies. This step was taken by myself and my students, and has
led to a substantial further development. More recently, Luke
Ong, Dan Ghica, Andrzej Murawski and myself have developed algorithmic
game semantics, as a basis for compositional program analysis and
verification, and  in Luke and Andrzej's hands  as a beautiful
meeting point between semantics and algorithmics.
There have of course been many other developments too, and many
people have contributed. There have been recent workshops on these
topics, e.g. in Seattle as part of the Federated Logic Conference
in August.
"PCF" is a soupedup version of the typed lambda calculus that allows one
to do arithmetic and fullfledged computation. Here are the papers on PCF
mentioned above:
29) Samson Abramsky, R. Jagadeesan, and P. Malacaria, Full abstraction
for PCF, Information and Computation, 163 (2000), 409470. Available at
http://web.comlab.ox.ac.uk/oucl/work/samson.abramsky/pubs.html
30) Martin Hyland and C.H. Luke Ong, On full abstraction for PCF, In
Information and Computation 163 (2000), 285408.
Here are two papers by Luke Ong using game theory to study the lambda
calculus:
31) A. D. Ker, H. Nickau, and C.H. Luke Ong, A universal innocent
game model for the Boehm tree lambda theory, in Computer Science
Logic: Proceedings of the 8th Annual Conference on the EACSL Madrid,
Spain, September 1999, LNCS Volume 1683, SpringerVerlag, 1999,
pp. 405419.
32) A. D. Ker, H. Nickau, and C.H. Luke Ong, Innocent game models of
untyped lambdacalculus, Theoretical Computer Science, 272 (2002),
247292.
For a good introduction to all this work, try these:
33) Robin Houston, Categories of Games, M.Sc. thesis, U. Manchester, 2003.
Available at http://www.cs.man.ac.uk/~houstorx/msc.pdf
Robin Houston, Mathematics of Games, continuation report, U. Manchester,
2004. Available at http://www.cs.man.ac.uk/~houstorx/continuation.pdf
Finally, for more on categories, intuitionistic logic, and linear logic,
see "week227".

Quote of the Week:
Unlike chess or astrology, mathematics has the curious property of
being an intellectual game that really matters.  Rudy Rucker

Addenda: I thank Samson Abramsky, James Dolan, Dominic Hughes, Tom
Payne, Esa Peuha and Vaughn Pratt for helpful corrections. When I
wrote the first version of this Week's Finds, I was ignorant of work
before Dolan and Trimble's that also described the free cartesian
closed category on one object in terms of games. In addition to
Abramsky's corrections (some of which are above), I was gently set
straight by Dominic Hughes, who has permitted me to attach this post
of his from the category theory mailing list:
This "backtracking game" characterisation has been known since around
'93'94, in the work of Hyland and Ong:
M. Hyland and L. Ong. On full abstraction for PCF. Information and
Computation, Volume 163, pp. 285408, December 2000. [Under review for
6 years!]
ftp://ftp.comlab.ox.ac.uk/pub/Documents/techpapers/Luke.Ong/pcf.ps.gz
(PCF is an extension of typed lambda calculus.) My D.Phil. thesis
extended the lambda calculus (free CCC) characterisation to secondorder,
published in:
Games and Definability for System F. Logic in Computer Science, 1997
http://boole.stanford.edu/~dominic/papers/
To characterise the free CCC on an *arbitrary* set {Z,Y,X,...} of
generators (rather than a single generator, as you discuss), one simply
adds the following Copycat Condition:
(*) Whenever first player plays an occurrence of X, the second player
must play an occurrence of X.
[Try it: see how X > Y > X has just one winning strategy.] Although the
LICS'97 paper cited above appears to be the first place the Copycat
Condition appears in print, I like to think it was already understood at
the time by people working in the area. Technically speaking, winning
strategies correspond to etaexpanded betanormal forms. See pages 57 of
my thesis for an informal description of the correspondence.
It sounds like you've reached the point of trying to figure out how
composition should work. Proving associativity is fiddly. Hyland and Ong
give a very elegant treatment, via a larger CCC of games in which *both*
players can backtrack. The free CCC subcategory is carved out as the
socalled *innocent* strategies. This composition is almost identical to
that presented by Coquand in:
A semantics of evidence for classical arithmetic. Thierry Coquand.
Proceedings of the CLICS workshop, Aarhus, 1992.
Dominic
PS A gametheoretic characterisation with an entirely different flavour
(winning strategies less "obviously" corresponding to etalong betanormal
forms) is:
Abramsky, S., Jagadeesan, R. and Malacaria, P., Full Abstraction for
PCF. Info. & Comp. 163 (2000), 409470.
http://web.comlab.ox.ac.uk/oucl/work/samson.abramsky/pcf.pdf
[Announced concurrently with HylandOng, around '93'94.]
On a different subject, James Dolan had this to say:
you describe holodeck strategies for "lady or tiger" where you take
back "just when the tiger is about to eat you", but that's not the
way it works. you take back just _after_ the tiger has eaten you.
(i guess that this is partially because of your lack of experience
with computer games with a "saved game" feature. typically you die
in the game and the computer plays some sort of funeral or at least
funereal music; then you're taken to the reincarnation gallery where
you select one to return to from your catalog of previous lives.
or something like that.)
In the first version of this Week's Finds I claimed that all systematic
ways of picking an element of (X^X)^(X^X) could be defined using the
lambda calculus. I was disabused of this notion by Vaughan Pratt, who
wrote:
Hi, John,
In "week240", you said
The moral of this game is that all systematic methods for picking
an element of (X^X)^(X^X) for an unknown set X can be written
using the lambda calculus.
What is unsystematic about the contagiousfixpoint functional?
This is the functional that maps those functions that have any
fixpoints to the identity function (the function that makes
every element a fixpoint) and functions without fixpoints to
themselves (thus preserving the absence of fixpoints). It's a
perfectly good functional that is equally well defined for all
sets X, its statement in no way depends on X, and conceptually
the concept of contagious fixpoints is even intuitively natural,
but how do you write it using the lambda calculus?
Many more examples in this vein at JPAA 128, 3392 (Pare and Roman,
Dinatural numbers, 1998). The above is the case K = {0} of Freyd's
(proper) class of examples.
Vaughan
Here Pratt uses "functional" to mean what I was calling an "operator".
For more discussion, go to the nCategory Cafe:
http://golem.ph.utexas.edu/category/2006/10/this_weeks_finds_in_mathematic_1.html

Previous issues of "This Week's Finds" and other expository articles on
mathematics and physics, as well as some of my research papers, can be
obtained at
http://math.ucr.edu/home/baez/
For a table of contents of all the issues of This Week's Finds, try
http://math.ucr.edu/home/baez/twfcontents.html
A simple jumpingoff point to the old issues is available at
http://math.ucr.edu/home/baez/twfshort.html
If you just want the latest issue, go to
http://math.ucr.edu/home/baez/this.week.html