From newshub.ccs.yorku.ca!ists!helios.physics.utoronto.ca!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!sol.ctr.columbia.edu!bronze!chalmers Thu Jan 16 17:21:37 EST 1992
Article 2707 of comp.ai.philosophy:
Xref: newshub.ccs.yorku.ca comp.ai.philosophy:2707 sci.philosophy.tech:1842
Newsgroups: comp.ai.philosophy,sci.philosophy.tech
Path: newshub.ccs.yorku.ca!ists!helios.physics.utoronto.ca!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!sol.ctr.columbia.edu!bronze!chalmers
>From: chalmers@bronze.ucs.indiana.edu (David Chalmers)
Subject: Re: Causes and Reasons
Message-ID: <1992Jan14.192736.24736@bronze.ucs.indiana.edu>
Organization: Indiana University
References: <5943@skye.ed.ac.uk> <1992Jan12.211951.20547@bronze.ucs.indiana.edu> <5967@skye.ed.ac.uk>
Date: Tue, 14 Jan 92 19:27:36 GMT
Lines: 36

In article <5967@skye.ed.ac.uk> jeff@aiai.UUCP (Jeff Dalton) writes:

>But I'm not sure what your sense of "implement" is.  I'm not
>sure how it connects with actual practice at all.

It seems straightforward enough that there is a sense of "implement"
in which optimizing compilers do not strictly implement atthe original
program, as the implemented mechanisms don't follow all the steps
specified in the program.  I don't want to spell it out, because the
details are complicated for variables, conditionals, data structures,
loops, and so on; and furthermore the details of the story for e.g. C
aren't necessary for my argument -- it goes through just as well
for Turing Machines.

>Well, real compiers do in fact peform such "optimizations" as
>eliminating code that doesn't have any effects outside of a loop.

Right, so compilers that do this don't "implement" in the sense I'm
using, as they're only concerned with I/O equivalence.

>When considering equivalence of algorithms one commonly regards
>the the relationship between the arguments and results of a procedure
>(or function) as the "I/O behavior" that must be preserved.  But the
>same sorts of optimizations can stil be applied.

There's far more to the equivalence of algorithms than just I/O
behaviour!  Otherwise e.g. every sorting algorithm would be equivalent.
(This suggests the thought of a very smart optimizing compiler that
detects that a given procedure is performing bubblesort, and so
produces quicksort in the compiled version.  I/O equivalent and very
useful, but not strictly an implementation.)

-- 
Dave Chalmers                            (dave@cogsci.indiana.edu)      
Center for Research on Concepts and Cognition, Indiana University.
"It is not the least charm of a theory that it is refutable."


