An Automatic Translation Scheme from Prolog to the Andorra Kernel Language

The Andorra family of languages (which includes the Andorra Kernel Language -AKL) is aimed, in principie, at simultaneously supporting the programming styles of Prolog and committed choice languages. On the other hand, AKL requires a somewhat detailed specification of control by the user. This could be avoided by programming in Prolog to run on AKL. However, Prolog programs cannot be executed directly on AKL. This is due to a number of factors, from more or less trivial syntactic differences to more involved issues such as the treatment of cut and making the exploitation of certain types of parallelism possible. This paper provides basic guidelines for constructing an automatic compiler of Prolog programs into AKL, which can bridge those differences. In addition to supporting Prolog, our style of translation achieves independent and-parallel execution where possible, which is relevant since this type of parallel execution preserves, through the translation, the user-perceived "complexity" of the original Prolog program.

[1]  Dana S. Scott,et al.  Concurrent constraint programming languages , 1989 .

[2]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[3]  Francesca Rossi,et al.  Non-Strict Independent And-Parallelism , 1990, ICLP.

[4]  Manuel V. Hermenegildo,et al.  &-Prolog and its Performance: Exploiting Independent And-Parallelism , 1990, ICLP.

[5]  Ehud Shapiro,et al.  A Sequential Abstract Machine for Flat Concurrent Prolog , 1989, J. Log. Program..

[6]  Doug DeGroot Restricted And-Parallelism and Side Effects , 1987, SLP.

[7]  Seif Haridi,et al.  Kernel Andorra Prolog and its Computation Model , 1990, ICLP.

[8]  Saumya K. Debray,et al.  On the Practicality of Global Flow Analysis of Logic Programs , 1988, ICLP/SLP.

[9]  Rong Yang,et al.  The Andorra-I Preprocessor: Supporting Full Prolog on the Basic Andorra Model , 1991, ICLP.

[10]  Steven Gregory Design, application and implementation of a parallel logic programming language , 1985 .

[11]  Jim A. Crammond Scheduling and Variable Assignment in the Parallel PARLOG Implementation , 1990, NACLP.

[12]  Francesca Rossi,et al.  On the Correctness and Efficiency of Independent And-Parallelism in Logic Programs , 1989, NACLP.

[13]  Manuel V. Hermenegildo,et al.  Compile-Time Derivation of Variable Dependency Using Abstract Interpretation , 1992, J. Log. Program..

[14]  John C. Reynolds,et al.  School of Computer Science , 1992 .

[15]  Manuel V. Hermenegildo,et al.  The DCG, UDG, and MEL Methods for Automatic Compile-time Parallelization of Logic Programs for Independent And-parallelism , 1990, ICLP.

[16]  Manuel V. Hermenegildo,et al.  Combined Determination of Sharing and Freeness of Program Variables through Abstract Interpretation , 1991, ICLP.

[17]  Seif Haridi,et al.  Programming Paradigms of the Andorra Kernel Language , 1991, ISLP.

[18]  Rong Yang,et al.  Andorra I: a parallel Prolog system that transparently exploits both And-and or-parallelism , 1991, PPOPP '91.

[19]  Khayri A. M. Ali,et al.  The Muse Or-Parallel Prolog Model and its Performance , 1990, NACLP.

[20]  Kazunori Ueda Making Exhaustive Search Programs Deterministic, Part II , 1987, ICLP.

[21]  Kazunori Ueda,et al.  Guarded Horn Clauses , 1986, LP.