An abstract operational model for a functional-logic programming language
Description
All programming languages, even declarative languages, must be executed on Von Neumann architecture machines. Therefore, a declarative language needs an operational model, close enough to typical Von Neumann architecture, so that implementation on any given machine is straightforward, and executes without any unexpected inefficiencies. On the other hand, the model should be independent of any specific machine to make it as portable as possible. Therefore, its operations should correspond to operations of high level data structures (i.e., stacks, registers, etc.). An implementation model for a given programming language, L, provides a common 'abstract' operational model, or 'abstract machine' where L-programs will be executed. The model should also be verifiable, to ensure that it implements the language correctly This dissertation defines a correct implementation model (i.e. an abstract machine) for PowerFuL, an untyped higher-order functional programming language, which has been enhanced with logic programming capabilities via relative set abstraction. The abstract machine is first defined operationally and then the description is formalized, to verify its correctness. The operational model is a verified implementation model. Unlike other implementation models for functional logic languages, it deals with sets as first-class objects instead of sets of solutions and has an elegant treatment of inequality constraints