Results 1  10
of
47
Fundamentals Of Deductive Program Synthesis
 IEEE Transactions on Software Engineering
, 1992
"... An informal tutorial is presented for program synthesis, with an emphasis on deductive methods. According to this approach, to construct a program meeting a given specification, we prove the existence of an object meeting the specified conditions. The proof is restricted to be sufficiently construct ..."
Abstract

Cited by 65 (1 self)
 Add to MetaCart
An informal tutorial is presented for program synthesis, with an emphasis on deductive methods. According to this approach, to construct a program meeting a given specification, we prove the existence of an object meeting the specified conditions. The proof is restricted to be sufficiently constructive, in the sense that, in establishing the existence of the desired output, the proof is forced to indicate a computational method for finding it. That method becomes the basis for a program that can be extracted from the proof. The exposition is based on the deductivetableau system, a theoremproving framework particularly suitable for program synthesis. The system includes a nonclausal resolution rule, facilities for reasoning about equality, and a wellfounded induction rule. INTRODUCTION This is an introduction to program synthesis, the derivation of a program to meet a given specification. It focuses on the deductive approach, in which the derivation task is regarded as a problem of ...
Parallel Evaluation Strategies for Functional Logic Languages
 In Proc. of the Fourteenth International Conference on Logic Programming (ICLPâ€™97
, 1997
"... We introduce novel, sound, complete, and locally optimal evaluation strategies for functional logic programming languages. Our strategies combine, in a nontrivial way, two landmark techniques in this area: the computation of unifiers performed by needed narrowing in inductively sequential rewrite s ..."
Abstract

Cited by 48 (27 self)
 Add to MetaCart
We introduce novel, sound, complete, and locally optimal evaluation strategies for functional logic programming languages. Our strategies combine, in a nontrivial way, two landmark techniques in this area: the computation of unifiers performed by needed narrowing in inductively sequential rewrite systems and the simultaneous reduction of a necessary set of redexes performed by rewriting in weakly orthogonal, constructorbased rewrite systems. First, we define a sequential strategy similar in scope to other narrowing strategies used in modern lazy functional logic languages. Then, based on the sequential strategy, we define a parallel narrowing strategy that has several noteworthy characteristics: it is the first complete narrowing strategy which evaluates ground expressions in a fully deterministic, optimal way; it computes shortest derivations and minimal sets of solutions on inductively sequential rewrite systems; and when combined with term simplification, it subsumes and improves all r...
Protocol Specification and Analysis in Maude
 Proc. of Workshop on Formal Methods and Security Protocols
, 1998
"... This paper proposes rewriting logic as an executable specification formalism for security protocols that offers some novel advantages. A messagepassing objectoriented approach seems particularly natural for communication protocols and can be naturally formalized in rewriting logic. This is illustra ..."
Abstract

Cited by 45 (11 self)
 Add to MetaCart
This paper proposes rewriting logic as an executable specification formalism for security protocols that offers some novel advantages. A messagepassing objectoriented approach seems particularly natural for communication protocols and can be naturally formalized in rewriting logic. This is illustrated by using the NeedhamSchroeder PublicKey protocol as a running example. The rewriting logicbased Maude interpreter [CELM96] offers also some useful advantages. Efficient executability allows prototyping and debugging of protocol specifications. But since a concurrent system can have many different behaviors, to properly analyze the system it becomes important to explore not just the single execution provided by some default strategy, but many other executions. Maude supports userdefined execution strategies, including strategies such as breadthfirstsearch that can exhaustively explore all the executions of a system. This is very helpful in uncovering security flaws under unforeseen ...
Completeness Results for Basic Narrowing
, 1994
"... In this paper we analyze completeness results for basic narrowing. We show that basic narrowing is not complete with respect to normalizable solutions for equational theories defined by confluent term rewriting systems, contrary to what has been conjectured. By imposing syntactic restrictions on the ..."
Abstract

Cited by 44 (2 self)
 Add to MetaCart
In this paper we analyze completeness results for basic narrowing. We show that basic narrowing is not complete with respect to normalizable solutions for equational theories defined by confluent term rewriting systems, contrary to what has been conjectured. By imposing syntactic restrictions on the rewrite rules we recover completeness. We refute a result of Holldobler which states the completeness of basic conditional narrowing for complete (i.e. confluent and terminating) conditional term rewriting systems without extra variables in the conditions of the rewrite rules. In the last part of the paper we extend the completeness result of Giovannetti and Moiso for levelconfluent and terminating conditional systems with extra variables in the conditions to systems that may also have extra variables in the righthand sides of the rules. 1985 Mathematics Subject Classification: 68Q50 1987 CR Categories: F.4.1, F.4.2 Key Words and Phrases: narrowing, basic narrowing, conditional narrowin...
Lazy Narrowing: Strong Completeness and Eager Variable Elimination
 THEORETICAL COMPUTER SCIENCE
, 1995
"... Narrowing is an important method for solving unification problems in equational theories that are presented by confluent term rewriting systems. Because narrowing is a rather complicated operation, several authors studied calculi in which narrowing is replaced by more simple inference rules. Thi ..."
Abstract

Cited by 41 (12 self)
 Add to MetaCart
Narrowing is an important method for solving unification problems in equational theories that are presented by confluent term rewriting systems. Because narrowing is a rather complicated operation, several authors studied calculi in which narrowing is replaced by more simple inference rules. This paper is concerned with one such calculus. Contrary to what has been stated in the literature, we show that the calculus lacks strong completeness, so selection functions to cut down the search space are not applicable. We prove completeness of the calculus and we establish an interesting connection between its strong completeness and the completeness of basic narrowing. We also address the eager variable elimination problem. It is known that many redundant derivations can be avoided if the variable elimination rule, one of the inference rules of our calculus, is given precedence over the other inference rules. We prove the completeness of a restricted variant of eager variable e...
The Integration of Functions into Logic Programming: A Survey
, 1994
"... Functional and logic programming are the most important declarative programming paradigms, and interest in combining them has grown over the last decade. Early research concentrated on the definition and improvement of execution principles for such integrated languages, while more recently efficient ..."
Abstract

Cited by 35 (0 self)
 Add to MetaCart
Functional and logic programming are the most important declarative programming paradigms, and interest in combining them has grown over the last decade. Early research concentrated on the definition and improvement of execution principles for such integrated languages, while more recently efficient implementations of these execution principles have been developed so that these languages became relevant for practical applications. In this paper we survey the development of the operational semantics as well as
Implementation of Narrowing: The PrologBased Approach
 Logic programming languages: constraints, functions, and objects
, 1993
"... We present the problem of integrating functional languages and logic languages. We explain why the narrowingbased techniques have so far prevailed as operational mechanisms for the functional logic interpreters. We then discuss various strategies of narrowing. Finally we explain how to simulate the ..."
Abstract

Cited by 18 (0 self)
 Add to MetaCart
We present the problem of integrating functional languages and logic languages. We explain why the narrowingbased techniques have so far prevailed as operational mechanisms for the functional logic interpreters. We then discuss various strategies of narrowing. Finally we explain how to simulate these strategies of narrowing using the leftmost SLDresolution rule of Prolog, and compare some experimental results with those obtained with direct narrowing implementations. 1. Introduction There has been a flurry of research on the integration of functional programming (FP) and logic programming (LP). A natural framework would be to consider the union of a set H of Horn clauses with a set E of conditional equations as a program. The declarative semantics of a program is then given by firstorder logic with equality [26], that is, firstorder logic extended with an equality symbol and the standard equality axioms. The operational semantics of a program is usually given by a system of infere...
Combining Lazy Narrowing and Simplification
 In Proc. of the 6th International Symposium on Programming Language Implementation and Logic Programming
, 1994
"... . Languages that integrate functional and logic programming styles with a complete operational semantics are based on narrowing. In order to avoid useless computations and to deal with infinite data structures, lazy narrowing strategies have been proposed in the past. This paper presents an impo ..."
Abstract

Cited by 14 (5 self)
 Add to MetaCart
. Languages that integrate functional and logic programming styles with a complete operational semantics are based on narrowing. In order to avoid useless computations and to deal with infinite data structures, lazy narrowing strategies have been proposed in the past. This paper presents an important improvement of lazy narrowing by incorporating deterministic simplification steps into lazy narrowing derivations. These simplification steps reduce the search space so that in some cases infinite search spaces are reduced to finite ones. We show that the completeness of lazy narrowing is not destroyed by the simplification process and demonstrate the improved operational behavior by means of several examples. 1 Introduction In recent years, a lot of proposals have been made to amalgamate functional and logic programming languages [19]. Functional logic languages with a sound and complete operational semantics are based on narrowing, a combination of the reduction principle of ...