Jump to content

Algebraic Logic Functional programming language

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 68.23.18.151 (talk) at 14:59, 5 October 2005 (External links). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

ALF is a programming language which combines functional and logic programming techniques. Its foundation is Horn clause logic with equality which consists of predicates and Horn clauses for logic programming, and functions and equations for functional programming.

ALF was designed to be genuine integration of both programming paradigms, and thus any functional expression can be used in a goal literal and arbitrary predicates can occur in conditions of equations. ALF's operational semantics is based on the resolution rule to solve literals and narrowing to evaluate functional expressions. In order to reduce the number of possible narrowing steps, a leftmost-innermost basic narrowing strategy is used which, it is claimed, can be efficiently implemented. Terms are simplified by rewriting before a narrowing step is applied and equations are rejected if the two sides have different constructors at the top. Rewriting and rejection are supposed to result in a large reduction of the search tree and produce an operational semantics that is more efficient than Prolog's resolution strategy. Similarly to Prolog, ALF uses a backtracking strategy corresponding to a depth-first search in the derivation tree.

The ALF system was designed to be an efficient implementation of the combination of resolution, narrowing, rewriting, and rejection. ALF programs are compiled into instructions of an abstract machine. The abstract machine is based on the Warren Abstract Machine (WAM) with several extensions to implement narrowing and rewriting. In the current ALF implementation programs of this abstract machine are executed by an emulator written in C.

A user manual describing the language and the use of the system ALF is available. The ALF System is free.

References

  • ALF User's Manual DVI
  • Compiling Logic Programs with Equality

2nd International Workshop on Programming Language Implementation and Logic Programming (PLILP'90), Springer LNCS 456, pp. 387-401, 1990 DVI

  • Efficient Implementation of Narrowing and Rewriting

International Workshop on Processing Declarative Knowledge (PDK'91), Springer LNAI 567, pp. 344-365, 1991 DVI

  • Improving Control of Logic Programs by Using Functional Logic Languages

4th International Symposium on Programming Language Implementation and Logic Programming (PLILP'92), Springer LNCS 631, pp. 1-23, 1992 DVI

  • Incremental Rewriting in Narrowing Derivations

3rd International Conference on Algebraic and Logic Programming (ALP'92), Springer LNCS 632, pp. 228-243, 1992 DVI

  • A Debugging Model for Functional Logic Programs

5th International Symposium on Programming Language Implementation and Logic Programming (PLILP'93), Springer LNCS 714, pp. 28-43, 1993 DVI

  • Towards the Global Optimization of Functional Logic Programs

5th International Conference on Compiler Construction (CC'94), Springer LNCS 786, pp. 68-82, 1994 DVI

  • Mode Analysis of Functional Logic Programs

1st International Static Analysis Symposium (SAS'94), Springer LNCS 864, pp. 26-42, 1994 DVI