From newshub.ccs.yorku.ca!ists!helios.physics.utoronto.ca!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!swrinde!gatech!darwin.sura.net!Sirius.dfn.de!math.fu-berlin.de!unido!mcsun!fuug!news.funet.fi!sunic!seunet!kullmar!pkmab!ske Tue Jan 21 09:27:17 EST 1992
Article 2902 of comp.ai.philosophy:
Xref: newshub.ccs.yorku.ca comp.ai.philosophy:2902 sci.philosophy.tech:1904
Path: newshub.ccs.yorku.ca!ists!helios.physics.utoronto.ca!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!swrinde!gatech!darwin.sura.net!Sirius.dfn.de!math.fu-berlin.de!unido!mcsun!fuug!news.funet.fi!sunic!seunet!kullmar!pkmab!ske
>From: ske@pkmab.se (Kristoffer Eriksson)
Newsgroups: comp.ai.philosophy,sci.philosophy.tech
Subject: Re: Causes and Reasons
Message-ID: <6467@pkmab.se>
Date: 18 Jan 92 02:49:35 GMT
References: <5967@skye.ed.ac.uk> <1992Jan14.192736.24736@bronze.ucs.indiana.edu> <5994@skye.ed.ac.uk>
Organization: Peridot Konsult i Mellansverige AB, Oerebro, Sweden
Lines: 45

In article <5994@skye.ed.ac.uk> jeff@aiai.UUCP (Jeff Dalton) writes:
>In article <1992Jan14.192736.24736@bronze.ucs.indiana.edu> chalmers@bronze.ucs.indiana.edu (David Chalmers) writes:
>>It seems straightforward enough that there is a sense of "implement"
>>in which optimizing compilers do not strictly implement the original
>>program, as the implemented mechanisms don't follow all the steps
>>specified in the program.
>
>But what, exactly, counts as a correct implementation in your
>sense of the word?

Procedural programming languages can be read as a specification of
a specific algorithm, i.e. a number of distinct execution steps in
a certain order (in contrast to a specification only of input/output
behaviour). A specific unit of execution (execution step) can often
be found for each language: the unit might for instance be single
statements (with some provisions for what happens when a statement
calls a user defined procedure or function). Each execution step
brings the "virtual machine" of that language from one "state" to
the next.

Now, I think that the sense of "implement" David Chalmers has in mind
here, is one where each state of the "physical" system that implements
the algorithm in question, can be identified with one and only one state
of the virtual machine as specified by the language, and the transitions
from one of the states so identified to another one, exactly follow the
execution steps specified by the algorithm, just as in the finite state
machine case.

This of course eliminates all optimizations above the level of the unit
of execution of that language. Local procedure variables that map to
different stack locations from time to time should be no problem at all,
though. More than one physical state is allowed to correspond to the same
virtual state. Non-procedural languages can be hard or impossible to fit
into this model too, although a simplistic solution can often be provided
by defining a certain execution model (with a virtual machine, and a series
of execution steps) for them too.

I don't know why mere in/out-equivalence should not be sufficient for
claiming machine-intelligence, but perhaps there is some point to be made
aboute state-equivalence. I haven't followed your discussion that close.

-- 
Kristoffer Eriksson, Peridot Konsult AB, Hagagatan 6, S-703 40 Oerebro, Sweden
Phone: +46 19-13 03 60  !  e-mail: ske@pkmab.se
Fax:   +46 19-11 51 03  !  or ...!{uunet,mcsun}!mail.swip.net!kullmar!pkmab!ske


