$Id: README,v 1.16 1993/10/20 19:18:23 sverker Exp $



		 AKL Programming System (version 0.9)
		 ====================================

	     The Concurrent Constraint Programming Group
	       Swedish Instititute of Computer Science
		   Box 1263, S-164 28 KISTA, Sweden



1 INTRODUCTION

The AKL Programming System (AKL/PS) is an implementation of AKL as
defined in "Programming Paradigms of the Andorra Kernel Language", by
Sverker Janson and Seif Haridi (in Proceedings of ILPS'91, MIT Press,
1991).  It also provides ports as defined in "Ports for Objects in
Concurrent Logic Programs", by Sverker Janson, Johan Montelius, and
Seif Haridi (in Research Directions in Concurrent Object-Oriented
Programming, MIT Press, 1993).

Experimental version 0.9 consists of a compiler from AKL to PAM, a
Prototype Abstract Machine for AKL, and an emulator for PAM, which is
written in C.  Some builtin predicates are provided.  Included are a
few example programs that demonstrate the capabilities of AKL.

AKL is a new and rapidly evolving language.  There are obviously many
things that need to be added to this programming environment, and many
other things that need to be refined.  Please send us your comments or
suggestions!

Correspondance on AKL should be sent to Sverker Janson (E-mail:
sverker@sics.se, Tel: +46 (0)8 752 15 72, Fax: +46 (0)8 751 72 30,
Mail: Swedish Institute of Computer Science, Box 1263, S-164 28 KISTA,
Sweden).


2 INSTALLATION PROCEDURE

The AKL directory should contain (at least):
	
	akl.1		A short man page
	akl.el		An Emacs mode for AKL
	aklscript	A prototype for the akl script
	compiler/	An alpha version of the next compiler
	configure	A configuration script that creates Makefile
	demos/		Some demo programs in AKL
	documentation/	A first attempt
	emulator/	The source code in C of the emulator
	environment/	The AKL environment in AKL
	gmp/		The GNU MP library
	library/	Some basic libraries in AKL
	oldcompiler/	The current compiler in AKL for AKL programs

Do

	% ./configure <full pathname of AKL directory>

to create the files Makefile and version.pam.  Then do

	% make all

to build the system, including libraries and demos.

The make procedure uses "gcc" as default for CC, "gmake" as default
for MAKE, "flex" as default for LEX, and "bison" as default for YACC.
"cc" may be used instead of "gcc" on the machines we have tried (Sun3,
Sun4, DEC 5000/240, Sequent Symmetry, IBM/RS6000, Tadpole (88K),
Apollo DN4500).  Standard "make" is also fine, but "flex" and "bison"
have to be used.  For this reason, the output of flex and bison is
included.

Good luck!


3 RUNNING AKL

Once in the AKL top-loop, things are slightly Prolog look-alike.
There is a user's manual in documentation/manual.  You can also look
at the demo-programs or the source-code for hints about what is
available.

There is a fairly useful debugger.  It is started by "trace" and is
similar to a four-port Prolog tracer.  Extra ports are added for guard
entry, retry et c.  The tracer is stopped by typing "n" at trace
promter.  Calls to an undefined goal are trapped and control is given
to the tracer.  Observe that the tracer is only available if the
system was compiled with the TRACE-flag turned on (which is the
default).

The file "~/aklini.pam" will be loaded on start-up.


4 COMPILING AND LOADING PROGRAMS

To compile programs do

	?- compilef(program).

This expects a file "program.akl" and produces a file "program.pam".

Compiled programs are then loaded into AKL by

	?- load(program).

A program can be both compiled and loaded by

	?- compile(program).

in which case the file "program.pam" is not produced.


5 ACKNOWLEDGEMENTS

A first version of the emulator was written by Johan Bevemyr.  The
first compiler was originally written in Prolog by Peter Olin, and
then adapted for compiling AKL by Johan Bevemyr.

Subsequent work has been done by Johan Montelius, Sverker Janson,
Per Brand, Bjorn Danielsson, Kent Boortz, and Bjorn Carlson.

The C++ part of the Graphics Manager was taken from the SICStus
distribution without modification. It was mainly written by Claes
Frisk and Jan Sundberg. The Graphics Manager uses the InterViews
system (Copyright 1987, 1988, 1989 Stanford University).

The GNU arbitrary precision arithmetic library was written for
the GNU project by Torbjorn Granlund.

Ports of some librarys from SICStus Prolog to AKL were done by Dan
Sahlin and Thomas Sjoland.


7 BUGS

No doubt quite a few.
