## Operational Semantics for Functional Logic Languages (2002)

### Cached

### Download Links

- [www.dsic.upv.es]
- [www.informatik.uni-kiel.de]
- [www.informatik.uni-kiel.de]
- [users.dsic.upv.es]
- DBLP

### Other Repositories/Bibliography

Venue: | Electronic Notes in Theoretical Computer Science |

Citations: | 15 - 10 self |

### BibTeX

@INPROCEEDINGS{Albert02operationalsemantics,

author = {Elvira Albert and Michael Hanus and Frank Huch and Javier Oliver and German Vidal},

title = {Operational Semantics for Functional Logic Languages},

booktitle = {Electronic Notes in Theoretical Computer Science},

year = {2002},

pages = {200--2},

publisher = {Elsevier Science Publishers}

}

### Years of Citing Articles

### OpenURL

### Abstract

In this work we provide a semantic description of functional logic languages covering notions like laziness, sharing, and non-determinism. Such a semantic description is essential, for instance, to have appropriate language definitions in order to reason about programs and check the correctness of implementations. First, we define a "big-step" semantics in natural style to relate expressions and their evaluated results. Since this semantics is not su#cient to reason about the operational aspects of programs, we also define a "small-step" operational semantics covering the main features of functional logic languages. Finally, we demonstrate the equivalence of the "small-step" semantics and the natural semantics.

### Citations

496 |
An abstract prolog instruction set
- Warren
- 1983
(Show Context)
Citation Context ...lude the use of other circular data structures, as in let x = 1 : x in . . . It is interesting to note that circular bindings are also used in implementations of Prolog to represent logical variables =-=[23]-=-. 3 A Natural Semantics for Functional Logic Programs In this section, we introduce a natural (big-step) semantics for functional logic programs which is in the midway between a (simple) denotational ... |

182 | A natural semantics for lazy evaluation
- Launchbury
- 1993
(Show Context)
Citation Context ...h defines the intended results by relating expressions to values. This “big-step” semantics accurately models sharing which is important not only to reason about the space behavior of programs (as=-= in [17]-=-) but also for the correctness of computed results in the presence of non-confluent function definitions [10]. Then, we provide a more implementation-oriented semantics based on the definition of indi... |

141 | A Unified Computation Model for Functional and Logic Programming
- Hanus
- 1997
(Show Context)
Citation Context ... the formal reference to reason about operational aspects of programs (e.g., to develop appropriate debugging tools). It is also a basis to provide a comprehensive definition of Curry (in contrast to =-=[12,14]-=- which contain only partial definitions). Moreover, one can use it to prove the correctness of implementations by further refinements, as done in [20]. This work is organized as follows. In the next s... |

129 |
T OY : A Multiparadigm Declarative System
- López-Fraguas, Sánchez-Hernández
- 1999
(Show Context)
Citation Context ...ming, the report on the multi-paradigm language Curry [14] contains a complete operational semantics but covers sharing only informally. The operational semantics of the functional logic language Toy =-=[18]-=- is based on narrowing (with sharing) but the formal definition is based on a narrowing calculus [10] which does not consider a particular patternmatching strategy. However, the latter becomes importa... |

99 |
An approach to declarative programming based on a rewriting logic
- González-Moreno, Hortalá-González, et al.
- 1999
(Show Context)
Citation Context ...a HU2001-0019, by Acc. Int. Hispano-Italiana HI2000-0161, and by the DFG under grant Ha 2457/1-2. c○2002 Published by Elsevier Science B. V.sAlbert, Hanus, Huch, Oliver, Vidal on a narrowing calculu=-=s [10]-=- which does not include a particular patternmatching strategy. However, the latter becomes important, e.g., if one wants to reason about costs of computations (see [4] for a discussion about narrowing... |

90 |
Higher-order extensions to PROLOG: are they Needed
- Warren
- 1982
(Show Context)
Citation Context ...o head normal form computations (see [13]). Similarly, the higher-order features of current functional languages can be reduced to first-order definitions by introducing an auxiliary “apply” funct=-=ion [22]-=-. Therefore, we base the definition of our operational semantics on the flat form described above. This is also consistent with current implementations which use the same intermediate language [5]. In... |

76 | Higher-Order Narrowing with Definitional Trees
- Hanus, Prehofer
- 1999
(Show Context)
Citation Context ...t representation of the pattern matching strategy by the use of case expressions which is important for the operational reading. Moreover, source programs can easily be translated into this flat form =-=[13]-=-. The syntax for flat programs is as follows: P ::= D1 . . . Dm D ::= f(x1, . . . , xn) = e e ::= x (variable) | c(e1, . . . , en) (constructor call) | f(e1, . . . , en) (function call) | case e of {p... |

68 | Deriving a lazy abstract machine
- Sestoft
- 1997
(Show Context)
Citation Context ...prehensive definition of Curry (in contrast to [12,14] which contain only partial definitions). Moreover, one can use it to prove the correctness of implementations by further refinements, as done in =-=[20]-=-. This work is organized as follows. In the next section we introduce some foundations for understanding the subsequent development. Section 3 introduces a semantics for functional logic programs in n... |

57 | Denotational and Operational Semantics for Prolog
- Debray, Mishra
- 1988
(Show Context)
Citation Context ...omputation steps may be shared by more than one derivation. Thus, the definition of a deterministic version of the small-step semantics becomes essential (see [2]). As for logic programming, [16] and =-=[8] con-=-tain operational and denotational descriptions of Prolog with the main emphasis on specifying the backtracking strategy and the “cut” operator. However, laziness and sharing are not covered. The s... |

55 | Compiling Multi-Paradigm Declarative Programs into Prolog
- Antoy, Hanus
- 2000
(Show Context)
Citation Context ...on [22]. Therefore, we base the definition of our operational semantics on the flat form described above. This is also consistent with current implementations which use the same intermediate language =-=[5]-=-. Indeed, the flat representation for programs constitutes the kernel of modern declarative multi-paradigm languages like Curry [12,14] or Toy [18]. Extra variables are those variables in a rule which... |

54 | Constructor-based conditional narrowing
- Antoy
(Show Context)
Citation Context ..., Vidal on a narrowing calculus [10] which does not include a particular patternmatching strategy. However, the latter becomes important, e.g., if one wants to reason about costs of computations (see =-=[4]-=- for a discussion about narrowing strategies and calculi). In order to define an appropriate basis for reasoning about programs, correctness of implementations, optimizations, or costs of computations... |

53 |
Stepwise Development of Operational and Denotational Semantics for Prolog
- Jones, Mycroft
- 1984
(Show Context)
Citation Context ...ce some computation steps may be shared by more than one derivation. Thus, the definition of a deterministic version of the small-step semantics becomes essential (see [2]). As for logic programming, =-=[16] and-=- [8] contain operational and denotational descriptions of Prolog with the main emphasis on specifying the backtracking strategy and the “cut” operator. However, laziness and sharing are not covere... |

31 |
A Logical Operational Semantics for Full Prolog. Part I: Selection Core and Control
- Borger
- 1990
(Show Context)
Citation Context ...phasis on specifying the backtracking strategy and the “cut” operator. However, laziness and sharing are not covered. The same holds for Börger’s descriptions of Prolog’s operational semantic=-=s (e.g., [6,7]-=-) which consist of various small-step semantics for the different language constructs. As for functional logic programming, the report on the multi-paradigm language Curry [14] contains a complete ope... |

30 |
A Logical Operational Semantics for Full Prolog. Part II: Built-in Predicates for Database Manipulations
- Borger
(Show Context)
Citation Context ...phasis on specifying the backtracking strategy and the “cut” operator. However, laziness and sharing are not covered. The same holds for Börger’s descriptions of Prolog’s operational semantic=-=s (e.g., [6,7]-=-) which consist of various small-step semantics for the different language constructs. As for functional logic programming, the report on the multi-paradigm language Curry [14] contains a complete ope... |

30 | Formally based profiling for higher-order functional languages
- Sansom, Jones
- 1997
(Show Context)
Citation Context .... Our small-step semantics can be seen as an extension of Sestoft’s abstract machine to consider also logical variables and non-determinism. Starting from Sestoft’s semantics, Samsom and Peyton Jo=-=nes [19]-=- developed the first source-level profiler for a compiled, non-strict, higher-order, purely functional language capable of measuring time and space usage. We could extend our operational semantics wit... |

29 | Admissible Graph Rewriting and Narrowing
- Echahed, Janodet
- 1998
(Show Context)
Citation Context ... the appropriate branch. Let bindings are in principle not required for translating source programs but they are convenient to express sharing without the use of complex graph structures (like, e.g., =-=[9,11]-=-). Operationally, let bindings introduce new structures in memory that are updated after evaluation, which is essential for lazy computations. As an example of the flat representation, we show the tra... |

21 |
An Abstract Machine Based System for a Lazy Narrowing Calculus
- Hortalá-González, Ullán
(Show Context)
Citation Context ...narrowing calculus [10] which does not consider a particular patternmatching strategy. However, the latter becomes important, e.g., if one wants to reason about costs of computations. The approach of =-=[15]-=-, the closest to our work, contains an operational semantics for a lazy narrowing strategy which considers sharing, non-deterministic functions, and allows partial applications in patterns. However, t... |

20 | Measuring the effectiveness of partial evaluation in functional logic languages - Albert, Antoy, et al. - 2001 |

12 | Term Graph Narrowing
- Habel, Plump
- 1996
(Show Context)
Citation Context ... the appropriate branch. Let bindings are in principle not required for translating source programs but they are convenient to express sharing without the use of complex graph structures (like, e.g., =-=[9,11]-=-). Operationally, let bindings introduce new structures in memory that are updated after evaluation, which is essential for lazy computations. As an example of the flat representation, we show the tra... |

12 | Cost-Augmented Narrowing-Driven Specialization - Vidal - 2002 |

9 | Symbolic Profiling of Multi-Paradigm Declarative Languages - Albert, Vidal - 2002 |

2 | Operational Semantics for Lazy Functional Logic Programs
- Albert, Hanus, et al.
- 2002
(Show Context)
Citation Context ...rivation in the search tree, since some computation steps may be shared by more than one derivation. Thus, the definition of a deterministic version of the small-step semantics becomes essential (see =-=[2]). A-=-s for logic programming, [16] and [8] contain operational and denotational descriptions of Prolog with the main emphasis on specifying the backtracking strategy and the “cut” operator. However, la... |