🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.functional
Article #312

Re: Term rewriting and denotation

#312
From: Nico Verwer
Date: Fri, 15 Jun 1990 10:52
53 lines
3327 bytes
In article <15639@dime.cs.umass.edu> yodaiken@freal.cs.umass.edu (victor yodaiken) writes:
>Since, programming languages are usually intended
>as aids in describing computations that we desire a digital computer to
>perform, it is not clear to me why we need to be able to describe
>computations that are not feasible.
>[...] Suppose we write a program in a language which
>allows expression of unbounded algorithms and have an unbounded version of
>knuth bendix KB'(p,q). What is the formal semantics of this function?
>Is it that the algorithm will be executed until termination?
>If so, the program is not intended for any existing or proposed digital
>computer that I know of.  [...]
>But when you compute the algorithm on a real computer, you do have bounds
>on time and storage. Thus, even without a known bound, you implicitly 
>program the algorithm in a bounded way. Why is it better to use implicit
>bounds?

Theoretically, you are right, and we can do without such things as
turing machines, lambda-calculus, and languages which are modelled by
these, since these can `execute' algorithms which are unbounded in 
space and/or time.
In this view, any digital computer is just a finite state machine, the
state being represented by the contents of memory and registers (and I/O
devices). This can be coded as a natural number (take the binary number
represented by all the bits in the system).

This is, however, not a very practical way of programming your computer.
In most cases, one prefers to think of a digital computer as modelling a
turing machine, or a lambda-calculus reduction machine. This allows you
to express algorithms in a more or less concise way, and doesn't force
the algorithm designer to account for memory or time limitations.

It is `impossible' to program the Knuth-Bendix algorithm on a
digital computer, since it has finite memory. Fortunately, in many cases
(theoretically, `many' should read `almost none'...)
the program doesn't run out of memory, and our finite state machine
does a good job in pretending it has infinite storage.

It is better to use implicit bounds because, even though a computer
memory is always finite, one may always buy a faster computer with more
memory, and change those bounds.
Thus, the formal semantics of the program KB'(p,q) is:
 Choose non-deterministically between 
 - KB(p,q)
 - an "out of memory" error
 - the user gets frustrated from waiting and kills the process.
The outcome depends on your particular system, and your patience...
It's the best you can get, I'm afraid :-) .

Nico Verwer                                       |  verwer@cs.ruu.nl
Dept. of Computer Science, University of Utrecht  |  +31 30 533921
p.o. box 80.089 
3508 TB Utrecht
The Netherlands
Technical Details
Message-ID: <3458@ruuinf.cs.ruu.nl>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!samsung!uakari.primate.wisc.edu!sdd.hp.com!elroy.jpl.nasa.gov!decwrl!ucbvax!bloom-beacon!eru!luth!sunic!mcsun!hp4nl!ruuinf!verwer
References: <22132@megaron.cs.arizona.edu> <42209@cornell.UUCP> <15639@dime.cs.umass.edu>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!samsung!uakari.primate.wisc.edu!sdd.hp.com!elroy.jpl.nasa.gov!decwrl!ucbvax!bloom-beacon!eru!luth!sunic!mcsun!hp4nl!ruuinf!verwer
From: verwer@ruuinf.cs.ruu.nl (Nico Verwer)
Newsgroups: comp.lang.functional
Subject: Re: Term rewriting and denotation
Message-ID: <3458@ruuinf.cs.ruu.nl>
Date: 15 Jun 90 10:52:22 GMT
References: <22132@megaron.cs.arizona.edu> <42209@cornell.UUCP> <15639@dime.cs.umass.edu>
Organization: Utrecht University, Dept. of CS
Lines: 53