next up previous
Next: 1 Getting Started Up: RELFUN Guide: Programming with Previous: RELFUN Guide: Programming with


                                                                  12 June 1996

RELFUN is a logic-programming language with call-by-value (eager)
expressions of non-deterministic, non-ground functions [Boley92b].
Clauses can be `hornish', succeeding with true(s), and `footed',
returning any value(s).  This is the only remaining difference between
relations and functions, uniformly considered as operators.  RELFUN
allows (apply-reducible) higher-order notation with arbitrary terms
(constants, structures, and variables) in operator positions of clause
heads and bodies.  (Active) expressions, i.e.  "(...)"-applications of
defined operators, are explicitly distinguished from (passive)
structures, i.e.  "[...]"- applications of constructors.  PROLOG's
is-call is generalized to an equational goal unifying a term with the
value(s) of an arbitrary expression, which may become flattened via
further is-calls. All structures and expressions, not only lists, can
be "|"-unified polyadically.  Finite domains/exclusions [Boley93] and
"$"-prefixed predicates-as-sorts (builtin or user-defined [Hall95])
are first-class terms handled by unification.  RELFUN extensions
include single-cut clauses and relational-functional primitives such
as a value-returning tupof.

Operational (interpreter in pure LISP), procedural (SLV-resolution),
fixpoint, and model-theoretic semantics for pure RELFUN [Boley92c].
Interpreter for full RELFUN; WAM compiler/emulator almost identical.
Compiler system layered, from source-to-source transformers to declarative
classifier, to WAM-code generator [Boley90]/[Sintek95]/[BoleyElsbernd+96].
Translator to relational subset of RELFUN and partially to PROLOG.
Accepting freely interchangeable LISP-style and PROLOG-style syntaxes.
Module system in analogy to file system.
Spier for valued conjunctions; generalized box-model tracer. On-line help.
Interface to (used for builtins) and from LISP.
Prelude with useful relations/functions; library of declarative hypergraph
operations [Boley92a]; components for mechanical-engineering system using
declarative geometry [BoleyHanschke+91/93]; sharable knowledge base on
materials engineering/recycling [SintekStein93]/[BoleyBuhrmann+94];
agent-implementation and communication-content language for distributed
medical problem solving [CampagnoliLanzola+96].

All computers and operating systems supporting COMMON LISP
(actually, only a subset of CL is needed).
Present version developed on SUN workstations with Lucid CL
and CLISP; also runs on Allegro CL, AKCL/GCL.
Interpreter also transformable to C by CLiCC [GoerigkBoley+96].


RELFUN is currently available freely for research purposes,
preferably via the URL below (see the README under "System" there).
We can also use email for the sources and airmail for the papers and
documentation (the language can be explored just with the interpreter,
minimally ca. 200 kilobytes, and some test examples).

Dr. Harold Boley
Postfach 2080
D-67608 Kaiserslautern
Phone: +49-631-205-3459
Fax:   +49-631-205-3210

Harold Boley (