Catálogo de publicaciones - libros
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
2006
Información sobre derechos de publicación
© Springer-Verlag Berlin Heidelberg 2006
Tabla de contenidos
doi: 10.1007/11680093_1
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
doi: 10.1007/11680093_2
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
doi: 10.1007/11680093_3
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
doi: 10.1007/11680093_4
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
doi: 10.1007/11680093_5
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
doi: 10.1007/11680093_6
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
doi: 10.1007/11680093_7
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
doi: 10.1007/11680093_8
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
doi: 10.1007/11680093_9
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
doi: 10.1007/11680093_10
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