Net-Clause Language (NCL)
=========================
NCL is aimed at describing distributed computation models using term
unification as a basic processing and control mechanism. NCL is embedded in
standard Prolog and comprises two parts, which can communicate each to other
and to standard Prolog programs through the unified representation of terms,
the unification procedure and the database mechanism provided by Prolog.

1. Net-Clauses
--------------
A net-clause is a special domain in the database defining a network of nodes
and links. The nodes are represented by Prolog compound terms. The variables
occurring within the nodes are global logical variables, which can be shared
within the scope of the net-clause thus playing the role of network links.
The net-clause nodes define local conditions for unification of terms or 
execution of Prolog goals. Thus two basic mechanisms are implemented:
 - Spreading activation. This is a distributed computation scheme similar to
   the connectionist spreading activation or to the marker passing mechanism 
   in SN's. In the framework of logic programming it is seen as a restricted
   (without recursion) forward chaining computation.
 - Default mechanism similar to the Reiter's default assignment to variables.
   The basic idea is to use variables to propagate terms without being bound
   to them, thus implementing the non-monotonicity of default reasoning.

2. Data-driven Rules (DD-rules)
-------------------------------
DD-rules implement a full scale forward chaining for logic programs. They also
simulate a data-driven parallel computation, where each DD-rule is a process
(in contrast to the traditional parallel logic programming, such as PARLOG for
example, where each goal is a process).


NCL/Prolog Interpreter
======================
NCL/Prolog interpreter is supplied in C-code for UNIX along with a reference
manual and a set of annotated examples. The following files are included:

README  - this file
NCL.MAN - Reference manual for NCL/Prolog and how to install it
NCL.C   - NCL/Prolog C-code
NCL.LIB - library file required to run NCL/Prolog

The rest are example programs, each one containing detailed comments:

NLP     - Natural language parsing and semantic analysis
DEFAULT - NL parsing by using NCL default mechanism
GRAMMAR - Grammar rules by DD-rules
MP      - Marker passing in semantic nets
CIRCUIT - Model-based diagnosis of a binary adder
QUEENS  - 4-queens problem as a network of communicating agents
FIG     - Recognition of geometric figures
XOR     - Connectionist-like implementation of XOR
PIXEL   - Connectionist-like feature detection in a binary image
FLATTEN - Stream AND-parallelism in DD-rules
DDIL    - Data-driven inductive learning in a network of relations
FAMILY  - Set of training examples for DDIL


Address for further information
===============================
Zdravko Markov
Institute of Informatics, Bulgarian Academy of Sciences
Acad.G.Bonchev Street, Block 29A, 1113 Sofia, Bulgaria
Tel: +359-2-707586
Fax: +359-2-720166
Email: markov@iinf.bg 
