@ARTICLE{AlbertHanusHuchOliverVidal05,
author       = {Albert, E. and Hanus, M. and Huch, F. and Oliver, J. and Vidal, G.},
title        = {Operational Semantics for Declarative Multi-Paradigm Languages},
year         = {2005},
journal      = {Journal of Symbolic Computation},
number       = {1},
pages        = {795-829},
volume       = {40},
abstract = {
Declarative multi-paradigm languages combine the most important
features of functional, logic and concurrent programming. The 
computational model of such integrated languages is usually
based on a combination of two different operational
principles: narrowing and residuation. This work is motivated 
by the fact that a precise definition of an 
operational semantics including all aspects of modern multi-paradigm 
languages like laziness, sharing, non-determinism, 
equational constraints, external functions, concurrency, etc.\ does not exist.
Therefore, in this article, we present the first rigorous operational 
description covering all the aforementioned
features in a precise and understandable manner.
We develop our operational semantics in several steps. First, we
define a natural (big-step) semantics covering laziness, sharing 
and non-determinism. We also present an equivalent small-step semantics 
which additionally includes a number of practical features like equational 
constraints and external functions. Then, we introduce a deterministic 
version of the small-step semantics which makes the search strategy 
explicit; this is essential for profiling, tracing, debugging, etc.
Finally, the deterministic semantics is extended in order to cover 
the concurrent facilities of modern declarative multi-paradigm languages. The
developed semantics 
provides an appropriate foundation to model actual declarative 
multi-paradigm languages like Curry. 
The complete operational semantics has been implemented and used
for various programming tools.
}
}

