We describe here an implemented small programming language, called Alma, that augments the expressive power of imperative programming by a limited number of features inspired by the logic programming paradigm. These additions encourage declarative programming and make it a more attractive vehicle for problems that involve search. We illustrate the use of Alma by presenting solutions to a number of classical problems, including alpha-beta search, STRIPS planning, knapsack, and 8 queens. These solutions are substantially simpler than their counterparts written in the imperative or in the logic programming style and can be used for different purposes without any modification. We also discuss here the implementation of Alma and an operational, executable, semantics of a large subset of the language.

, ,
CWI. Probability, Networks and Algorithms [PNA]
Networks and Optimization

Apt, K., Brunekreef, J., Partinton, V., & Schaerf, A. (1997). Alma-0: an imperative language that supports declarative programming. CWI. Probability, Networks and Algorithms [PNA]. CWI.