[net.ai] Response to <1031@eagle.ukc.ac.uk> <994@umn-cs.UUCP>

Unknown@hplabs.UUCP (04/24/86)

This message is empty.

jkm%security@security.UUCP (04/25/86)

------
     If you are interested in an applicative Lisp-like language
based on string substitution and reduction, you might want to look
at "TRAC, A Procedure-Describing Language for the Reactive Typewriter",
by Calvin N. Mooers, Comm ACM, Vol. 9, No. 3, March, 1966.

Jon Millen

ptb%eagle@eagle.UUCP (04/25/86)

In article <1031@eagle.ukc.ac.uk> sjl@ukc.ac.uk (S.J.Leviseur) writes:
>Does anybody have any references to articles on string reduction
>as a reduction technique for applicative languages (or anything
>else)? They seem to be almost impossible to find! Anything welcome.

John Horton Conway (the Prince of Games, memorably Life) of Cambridge
University (UK) Pure Maths. Dept. some years ago invented a computing
language that seems to me to proceed by Markovian string reduction.
 It is extremely sneaky at recognising substrings for substitution -
obviously the major cost in any such approach - and does this task
efficiently.  The trick is to make up your strings as the product of
integer primes instead of by alphanumeric concatenation. The production
rules of a program script consist of single fractions. To apply the
rules to an incoming 'string' you choose the first fraction in the script
that gives an integer result on multiplication with the integer 'string'
and take the result as the outgoing string, then go to the top of the
script with the new string and start again. The indices of prime powers
in the string serve as memory cells 'x'. The denominator of the fractions
serve as 'if x> ..' statements, with the numerators as 'then x=x+-..'
components. J.H.C.'s (the middle initial is to help him remain incognito)
interest was in the fact that the Godel numbers of programs written in this
language are easily calculable. Conway has written out on a single sheet of
paper the Godel number of the program that simulates any given program from its
Godel number. The G-No. of the prime number program is relatively short.
   I will intervene with J.C. to obtain more info, if requested.
           U.No.Hoo advises generic statement here.

doug%terak@terak.UUCP (04/25/86)

> TRAC is pretty easy to implement; I have an incomplete version written in
> C that I did some years back.  I also have a paper on TRAC which is probably
> long out of print by now.

If anyone cares, TRAC stands for Text Reckoner And Compiler, and is
trademarked.

It is discussed at some length in Peter Wegner's book, "Data Structures,
Information Processing and Machine Organization" (the title may be off
a bit, the book is at home and it's hard to remember such a lengthy
title :-)

Stanford used to have a version they called WYMPI.  The main differences
were the use of "*" instead of "#" and -- more significantly -- they
permitted string (macro) names to be specified as the operator, rather
than requiring as TRAC does that strings be specifically called with
the "cl" operator.  In other words, you could say *(macro,...) instead
of #(cl,macro,...).  Wegner leaves it as an exercise to the reader to
show why the "cl" was an important architectural feature of TRAC which
shouldn't have been tampered with.  Something about trying to make
#(cl,macro,...) == #(macro,...)   and at the same time making
##(cl,macro,...) == ##(macro,...)
-- 
Doug Pardee -- CalComp -- {elrond,seismo,decvax,ihnp4}!terak!doug

molson%apollo@apollo.UUCP (05/03/86)

>requiring as TRAC does that strings be specifically called with
>the "cl" operator.  In other words, you could say *(macro,...) instead
>of #(cl,macro,...).  Wegner leaves it as an exercise to the reader to

In the version of TRAC that I worked with in 1983, you could say
#(macro) and ##(macro).  As I recall, these two cases were treated
exactly like #(cl,macro) and ##(cl,macro).  This version had a considerably
larger set of primitives than those discussed in all the TRAC papers and
documentation that I ever saw.
               
String reduction has been used to solve real problems.  A company called 
Data Concepts used TRAC to write an applications generator.  The applications 
generator was used by insurance raters to write rating systems.  Rating systems 
are hard because insurance rating rules change all the time (like every day as 
far as I could tell).  Anyway, TRAC was used for a real product.  I think that 
Allstate is still using this stuff for some kinds of commercial policies.  

TRAC trivia: It was developed and originally owned by Calvin Mooers, and then
sold to Data Concepts Inc.  Data Concepts has since gone bankrupt, so I beleive 
that TRAC is now owned by some type of bankruptcy court entity.  It is (presumably)
for sale.

Margaret Olson.
molson@apollo