Logical State Threads for Prolog

Andreas Kågedal

Peter Van Roy

Bruno Dumant





What is it?

Instead of adding all those threaded state variables the Logical State Threads package provides you with a way to just declare what predicates should use what state thread and then the package adds these threaded variables for you.

Main features:

Higher abstraction level than EDCGs. The programmer will not need to be as aware of the underlying transformation since it is never necessary to access the threaded arguments directly.

Threads may be arbitrarily combined and accessed across nested scopes.

Flexible accessing/modification of the thread state. Multiple 'methods' can be defined for the same thread, which allows the thread to be modified in different ways.

Much improved consistency checking at loading time with many new warning/error messages.

Better integration with the SICStus Prolog module system. Threads with the same name defined in separate modules are kept separate.

Design based on formal semantics, rewriting accumulator clause syntax to a core language and defining a transformation from the core language to standard Horn clauses.

Where can you get it?

user:term_expansion/2

You can get the current beta release by FTP from ftp.cs.arizona.edu in directory /people/andka/:

Compressed with gzip: threads-0.1.tar.gz Not compressed: threads-0.1.tar Using HTTP instead of FTP: threads-0.1.tar.gz

Where did it come from?

The current system is mainly written by Andreas Kågedal and is based on the Aquarius Prolog EDCG preprocessor. Most of the new functionality (taken from the Wild_Life version and new ideas) has been added under constant discussions with both Peter Van Roy and Bruno Dumant. Bruno Dumant has also developed a formal semantics for Logical State Threads (not yet published). It is renamed Logical State Threads since it is not really a grammar formalism.

Where do you send comments?



Revalidate