Newsgroups: comp.lang.lisp
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!fas-news.harvard.edu!newspump.wustl.edu!gumby!newsxfer.itd.umich.edu!europa.eng.gtefsd.com!howland.reston.ans.net!usc!sdd.hp.com!saimiri.primate.wisc.edu!aplcenmp!hall
From: hall@aplcenmp.apl.jhu.edu (Marty Hall)
Subject: Re: [history question] Why was typed lambda calculus not used?
Message-ID: <Cz22KG.7A8@aplcenmp.apl.jhu.edu>
Organization: JHU/APL AI Lab, Hopkins P/T CS Faculty
References: <hbakerCyww5K.F62@netcom.com> <39m2u5$b0s@nef.ens.fr> <BHOGAN.94Nov9213621@bedlam.rahul.net>
Date: Thu, 10 Nov 1994 14:21:52 GMT
Lines: 35

In article <BHOGAN.94Nov9213621@bedlam.rahul.net> bhogan@rahul.net (Bill Hogan) writes:

>     As I understand it (or misunderstand it), to say that a Turing
>machine cam compute something is to say that it is possible to write
>down an algorithm which when appropriately encoded and presented to
>the machine will cause the machine to traverse a sequence of states
>from A to B such that (the difference between A and) B represents that
>which was to be computed.
>
>    If so, given that a Turing machine is a deterministic function of its
>input instructions and its transition function, both of which can be
>expressed (easily) in the non-typed lambda calculus, how can it be
>possible to compute something on a Turing machine that cannot be
>expressed in the *typed* lambda caclulus?

Well, the lambda calculus doesn't have a concept of global state, so
there is not a direct correspondence to Turing machines (no
tape). However,  in the untyped lambda calculus, you can implement
recursion by building Y combinators, and once you have recursion you
have all the computational power you need. According to Rosser's
"Highlights of the History of the Lambda Calculus" (Annals of the
History of Computing 6(4), Oct 1984, p 337-349), Turing proved in 1937
(!) that calculable on Turing machines was equivalent to being
definable in the untyped lambda calculus.

But how do you build a Y combinator in a simply typed calculus? The
whole point of the Y combinator is that F(Y(F)) = Y(F) which means
that Y can take any function as an argument: a tall order in a simply
typed language :-).

This doesn't prove that the simply typed lambda calculus is not Turing
Complete, just that the obvious tact doesn't work.

					- Marty
(proclaim '(inline skates))
