Catálogo de publicaciones - libros

Compartir en
redes sociales


Logic Based Program Synthesis and Transformation: 15th International Symposium, LOPSTR 2005, London, UK, September 7-9, 2005, Revised Selected Papers

Patricia M. Hill (eds.)

En conferencia: 15º International Symposium on Logic-Based Program Synthesis and Transformation (LOPSTR) . London, UK . September 7, 2005 - September 9, 2005

Resumen/Descripción – provisto por la editorial

No disponible.

Palabras clave – provistas por la editorial

Logics and Meanings of Programs; Artificial Intelligence (incl. Robotics); Programming Techniques; Mathematical Logic and Formal Languages

Disponibilidad
Institución detectada Año de publicación Navegá Descargá Solicitá
No detectada 2006 SpringerLink

Información

Tipo de recurso:

libros

ISBN impreso

978-3-540-32654-0

ISBN electrónico

978-3-540-32656-4

Editor responsable

Springer Nature

País de edición

Reino Unido

Fecha de publicación

Información sobre derechos de publicación

© Springer-Verlag Berlin Heidelberg 2006

Tabla de contenidos

Temporal Logic Constraints in the Biochemical Abstract Machine BIOCHAM

François Fages

Recent progress in Biology and data-production technologies push research toward a new interdisciplinary field, named Systems Biology, where the challenge is to break the complexity walls for reasoning about large biomolecular interaction systems. Pioneered by Regev, Silverman and Shapiro, the application of process calculi to the description of biological processes has been a source of inspiration for many researchers coming from the programming language community. In this presentation, we give an overview of the Biochemical Abstract Machine (BIOCHAM), in which biochemical systems are modeled using a simple language of reaction rules, and the biological properties of the system, known from experiments, are formalized in temporal logic. In this setting, the biological validation of a model can be done by model-checking, both qualitatively and quantitatively. Moreover, the temporal properties can be turned into specifications for learning modifications or refinements of the model, when incorporating new biological knowledge.

- Temporal Logic Constraints in the Biochemical Abstract Machine BIOCHAM | Pp. 1-5

Declarative Programming with Function Patterns

Sergio Antoy; Michael Hanus

We propose an extension of functional logic languages that allows the definition of operations with patterns containing other defined operation symbols. Such “function patterns” have many advantages over traditional constructor patterns. They allow a direct representation of specifications as declarative programs, provide better abstractions of patterns as first-class objects, and support the high-level programming of queries and transformation of complex structures. Moreover, they avoid known problems that occur in traditional programs using strict equality. We define their semantics via a transformation into standard functional logic programs. Since this transformation might introduce an infinite number of rules, we suggest an implementation that can be easily integrated with existing functional logic programming systems.

Palabras clave: Logic Program; Logic Programming; Logic Variable; Function Pattern; Constraint Logic Programming.

1. - Tools for Program Development | Pp. 6-22

Transformational Verification of Parameterized Protocols Using Array Formulas

Alberto Pettorossi; Maurizio Proietti; Valerio Senni

We propose a method for the specification and the automated verification of temporal properties of parameterized protocols. Our method is based on logic programming and program transformation. We specify the properties of parameterized protocols by using an extension of stratified logic programs. This extension allows premises of clauses to contain first order formulas over arrays of parameterized length. A property of a given protocol is proved by applying suitable unfold/fold transformations to the specification of that protocol. We demonstrate our method by proving that the parameterized Peterson’s protocol among  N processes, for any N  ≥ 2, ensures the mutual exclusion property.

Palabras clave: Model Check; Logic Program; Logic Programming; Transformation Rule; Critical Section.

1. - Tools for Program Development | Pp. 23-43

Design and Implementation of ${\mathcal A}_T$ : A Real-Time Action Description Language

Luke Simon; Ajay Mallya; Gopal Gupta

Real world applications of action description languages involve systems that have real-time constraints. The occurrence of an action is just as important as the time at which the action occurs. In order to be able to model such real-time systems, the action description language A is extended with real-time clocks and constraints. The formal syntax and semantics of the extended language are defined, and the use of logic programming as a means to an implementation of real-time A is discussed.

1. - Tools for Program Development | Pp. 44-60

An Algorithm for Local Variable Elimination in Normal Logic Programs

Javier Álvez; Paqui Lucio

A variable is local if it occurs in a clause body but not in its head. Local variables appear naturally in practical logic programming, but they complicate several aspects such as negation, compilation, memoization, static analysis, program approximation by neural networks etc. As a consequence, the absence of local variables yields better performance of several tools and is a prerequisite for many technical results. In this paper, we introduce an algorithm that eliminates local variables from a wide proper subclass of normal logic programs. The proposed transformation preserves the Clark-Kunen semantics for normal logic programs.

2. - Program Transformations | Pp. 61-79

Removing Superfluous Versions in Polyvariant Specialization of Prolog Programs

Claudio Ochoa; Germán Puebla; Manuel Hermenegildo

Polyvariant specialization allows generating multiple versions of a procedure, which can then be separately optimized for different uses. Since allowing a high degree of polyvariance often results in more optimized code, polyvariant specializers, such as most partial evaluators, can generate a large number of versions. This can produce unnecessarily large residual programs. Also, large programs can be slower due to cache miss effects. A possible solution to this problem is to introduce a minimization step which identifies sets of equivalent versions, and replace all occurrences of such versions by a single one. In this work we present a unifying view of the problem of superfluous polyvariance. It includes both partial deduction and abstract multiple specialization. As regards partial deduction, we extend existing approaches in several ways. First, previous work has dealt with pure logic programs and a very limited class of builtins. Herein we propose an extension to traditional characteristic trees which can be used in the presence of calls to external predicates. This includes all builtins, libraries, other user modules, etc. Second, we propose the possibility of collapsing versions which are not strictly equivalent. This allows trading time for space and can be useful in the context of embedded and pervasive systems. This is done by residualizing certain computations for external predicates which would otherwise be performed at specialization time. Third, we provide an experimental evaluation of the potential gains achievable using minimization which leads to interesting conclusions.

Palabras clave: Logic Program; Characteristic Tree; Partial Evaluation; Specialization History; Partial Evaluator.

2. - Program Transformations | Pp. 80-97

Extension of Type-Based Approach to Generation of Stream-Processing Programs by Automatic Insertion of Buffering Primitives

Kohei Suenaga; Naoki Kobayashi; Akinori Yonezawa

In our previous paper, we have proposed a framework for automatically translating tree-processing programs into stream-processing programs. However, in writing programs that require buffering of input data, a user has to explicitly use buffering primitives which copy data from input stream to memory or copy constructed trees from memory to an output stream. Such explicit insertion of buffering primitives is often cumbersome and worsens the readability of the program. We overcome the above-mentioned problems by developing an algorithm which, given any simply-typed tree-processing program, automatically inserts buffering primitives. The resulting program is guaranteed to be well-typed under our previous ordered-linear type system, so that the program can be further transformed into an equivalent stream-processing program using our previous framework.

Palabras clave: Input Stream; Input Tree; Type Environment; Output Stream; Type Judgment.

2. - Program Transformations | Pp. 98-114

Non-leftmost Unfolding in Partial Evaluation of Logic Programs with Impure Predicates

Elvira Albert; Germán Puebla; John P. Gallagher

Partial evaluation of logic programs which contain impure predicates poses non-trivial challenges. Impure predicates include those which produce side-effects, raise errors (or exceptions), and those whose truth value varies according to the degree of instantiation of arguments. In particular, non-leftmost unfolding steps can produce incorrect results since the independence of the computation rule no longer holds in the presence of impure predicates. Existing proposals allow non-leftmost unfolding steps, but at the cost of accuracy: bindings and failure are not propagated backwards to predicates which are potentially impure. In this work we propose a partial evaluation scheme which substantially reduces the situations in which such backpropagation has to be avoided. With this aim, our partial evaluator takes into account the information about purity of predicates expressed in terms of assertions . This allows some optimizations which are not feasible using existing partial evaluation techniques. We argue that our proposal goes beyond existing ones in that it is a) accurate, since the classification of pure vs impure is done at the level of atoms instead of predicates, b) extensible, as the information about purity can be added to programs using assertions without having to modify the partial evaluator itself, and c) automatic, since (backwards) analysis can be used to automatically infer the required assertions. Our approach has been implemented in the context of CiaoPP , the abstract interpretation-based preprocessor of the Ciao logic programming system.

Palabras clave: Logic Program; Partial Evaluation; Derivation Step; Computation Rule; Partial Evaluator.

2. - Program Transformations | Pp. 115-132

A Transformational Semantics of Static Embedded Implications of Normal Logic Programs

Edelmira Pasarella; Fernando Orejas; Elvira Pino; Marisa Navarro

There are mainly two approaches for structuring logic programs. The first one is based on defining some notion of program unit or module and on providing a number of composition operators. The second approach consists in enriching logic programming with a mechanism of abstraction and scoping rules that are frequently found, for instance, in procedural programming. More precisely, this approach has been advocated by Miller and others using implications embedded in the goals of the given program as a structuring mechanism. However, as Giordano, Martelli and Rossi pointed out, we can associate two different visibility rules (static and dynamic) to this kind of structuring mechanism where, obviously, the semantics of the given program depends on the chosen rule. In this paper we consider normal constraint logic programs (with constructive negation á la Drabent as operational semantics) extended with embedded implications with a static visibility rule. This class of programs combines the expressive power of normal programs with the capability to organize and to enhance dinamically their sets of clauses. In particular, first, we introduce an operational semantics based on constructive negation for this class of programs, taking into account the static visibility rule. Then, we present an alternative semantics in terms of a transformation of the given structured program into a flat one. Finally, we prove the adequacy of this transformation by showing that it preserves the computed answers of the given program. Obviously, this transformation semantics can be used as the basis for an implementation of this structuring mechanism.

Palabras clave: Logic Program; Composition Operator; Logic Programming; Operational Semantic; Intuitionistic Logic.

3. - Software Development and Program Analysis | Pp. 133-146

Converting One Type-Based Abstract Domain to Another

John P. Gallagher; Germán Puebla; Elvira Albert

The specific problem that motivates this paper is how to obtain abstract descriptions of the meanings of imported predicates (such as built-ins) that can be used when analysing a module of a logic program with respect to some abstract domain. We assume that abstract descriptions of the imported predicates are available in terms of some “standard” assertions. The first task is to define an abstract domain corresponding to the assertions for a given module and express the descriptions as objects in that domain. Following that they are automatically transformed into the analysis domain of interest. We develop a method which has been applied in order to generate call and success patterns from the CiaoPP assertions for built-ins, for any given regular type-based domain. In the paper we present the method as an instance of the more general problem of mapping elements of one abstract domain to another, with as little loss in precision as possible.

Palabras clave: Logic Program; Abstract Interpretation; Binary Decision Diagram; Type Rule; Abstract Domain.

3. - Software Development and Program Analysis | Pp. 147-162