CMU Artificial Intelligence Repository
Home INFO Search FAQs Repository Root

ALF: Algebraic Logic Functional programming language

ALF (Algebraic Logic/Functional programming language) is a programming language that combines functional and logic programming techniques. ALF is based on Horn clause logic with equality. Predicates and Horn clauses are used for logic programming, and functions and equations for functional programming. Any functional expression can be used in a goal literal, and any predicate can occur in the conditions of an equation. The ALF system is implemented using a combination of resolution, narrowing, rewriting and rejection. The resolution rule is used to solve literals and narrowing to evaluate functional expressions. The number of possible narrowing steps is reduced by a leftmost-innermost basic narrowing strategy, and terms are simplified by rewriting before narrowing is applied. Equations are also rejected if the two sides have different constructors at the top. Rewriting and rejection can result in a large reduction of the search tree. Thus the operational semantics of ALF is more efficient than Prolog's resolution strategy. Like Prolog, ALF uses a backtracking strategy corresponding to a depth-first search in the derivation tree. ALF programs are compiled into instructions of an abstract machine based on the Warren Abstract Machine (WAM) with several extensions to implement narrowing and rewriting. The emulator for A-WAM programs is written in C.

Version: 23-JUN-92 (ALF preprocessor 0.7.3, FlatALF Compiler 2.13, A-WAM Bytecode Interpreter 0.5.9) Requires: Prolog, C Ports: Sun3 or Sun4. Quintus-Prolog 3.1.1, Sicstus-Prolog 2.1 (patch-level 7 or more) or SB-Prolog 3.1 Copying: Use permitted to evaluation, research, and teaching purposes. Use prohibited for commercial and military purposes. CD-ROM: Prime Time Freeware for AI, Issue 1-1 Author(s): Michael Hanus Andreas Schwab Contact: Michael Hanus Max-Planck-Institut f\"ur Informatik Im Stadtwald W-6600 Saarbruecken Germany Tel: +49-681-302-5436 Fax: +49-681-302-5401 Rudolf Opalla Fachbereich Informatik Universitaet Dortmund W-4600 Dortmund 50, Germany Keywords: ALF, Authors!Hanus, Authors!Opalla, Programming Languages!Functional Programming, Programming Languages!Logic Programming, Prolog!Implementations, WAM References: An installation guide and user's manual is included in the distribution.
Last Web update on Mon Feb 13 10:34:34 1995