VLDB 2026 Research / reviewers in the wild / expert
Germán Puebla
dblp:p/GPuebla · also German Puebla
· DBLP profile ↗
69ranked-venue papers
11as first author
0since 2021 · last 2016
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 57 · 11 first-authorTheory of computation · 30 · 4 first-authorArtificial intelligence and machine learning · 6 · 1 first-authorSystems, architecture and hardware · 2Databases, data management, data science and information retrieval · 1
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
4 papers |
Program analysis · 96% Debugging and program repair · 4% | |
| Theoretical computer science
1 paper |
Distributed computing theory · 100% |
Topics — the 9 heaviest of 10, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program analysis
cost analysis |
0.2 | 1 | 2015 | Resource Analysis: From Sequential to Concurrent and Distributed Programs · FM 2015 |
Program analysis
resource analysis |
0.2 | 1 | 2015 | Resource Analysis: From Sequential to Concurrent and Distributed Programs · FM 2015 |
Program analysis
static analysis |
0.1 | 3 | 2009 | Field-Sensitive Value Analysis by Field-Insensitive Analysis · FM 2009 Incremental analysis of constraint logic programs · ACM Trans. Program. Lang. Syst. 2000 Program Debugging and Validation Using Semantic Approximations and Partial Specifications · ICALP 2002 |
Program analysis › data flow analysis
field-sensitive analysis |
0.1 | 1 | 2009 | Field-Sensitive Value Analysis by Field-Insensitive Analysis · FM 2009 |
Program analysis › data flow analysis
value analysis |
0.1 | 1 | 2009 | Field-Sensitive Value Analysis by Field-Insensitive Analysis · FM 2009 |
Program analysis
concurrent program analysis |
0.1 | 1 | 2015 | Resource Analysis: From Sequential to Concurrent and Distributed Programs · FM 2015 |
Debugging and program repair
software debugging |
0.0 | 1 | 2002 | Program Debugging and Validation Using Semantic Approximations and Partial Specifications · ICALP 2002 |
Program analysis › static analysis
abstract interpretation |
0.0 | 1 | 2000 | Incremental analysis of constraint logic programs · ACM Trans. Program. Lang. Syst. 2000 |
Program analysis › static analysis
incremental analysis |
0.0 | 1 | 2000 | Incremental analysis of constraint logic programs · ACM Trans. Program. Lang. Syst. 2000 |
Methods — techniques the papers use, named apart from their topics
semantic approximation · 0.0partial specifications · 0.0fixed-point algorithm · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2016 | A formal verification framework for static analysis - As well as its instantiation to the resource analyzer COSTA and formal verification tool KeY
Elvira Albert, Richard Bubel, Samir Genaim, Reiner Hähnle, Germán Puebla, Guillermo Román-Díez |
Softw. Syst. Model. | 5 |
| 2015 | Resource Analysis: From Sequential to Concurrent and Distributed Programs
Elvira Albert, Puri Arenas, Jesús Correas Fernández, Samir Genaim, Miguel Gómez-Zamalloa, Enrique Martin-Martin, Germán Puebla, Guillermo Román-Díez |
FM | 7 |
| 2015 | Quantified abstract configurations of distributed systemsabstractAbstract When reasoning about distributed systems, it is essential to have information about the different kinds of nodes that compose the system, how many instances of each kind exist, and how nodes communicate with other nodes. In this paper we present a static-analysis-based approach which is able to provide information about the questions above. In order to cope with an unbounded number of nodes and an unbounded number of calls among them, the analysis performs an abstraction of the system producing a graph whose nodes may represent (infinitely) many concrete nodes and arcs represent any number of (infinitely) many calls among nodes. The crux of our approach is that the abstraction is enriched with upper bounds inferred by resource analysis that limit the number of concrete instances that the nodes and arcs represent and their resource consumption. The information available in our quantified abstract configurations allows us to define performance indicators which measure the quality of the system. In particular, we present several indicators that assess the level of distribution in the system, the amount of communication among distributed nodes that it requires, and how balanced the load of the distributed nodes that compose the system is. Our performance indicators are given as functions on the input data sizes, and they can be used to automate the comparison of different distributed settings and guide towards finding the optimal configuration. Elvira Albert, Jesús Correas Fernández, Germán Puebla, Guillermo Román-Díez |
Formal Aspects Comput. | 3 |
| 2015 | A practical comparator of cost functions and its applications
Elvira Albert, Puri Arenas, Samir Genaim, Germán Puebla |
Sci. Comput. Program. | 4 |
| 2015 | Object-sensitive cost analysis for concurrent objectsabstractSummary This article presents a novel cost analysis framework for concurrent objects. Concurrent objects form a well‐established model for distributed concurrent systems. In this model, objects are the concurrency units that communicate among them via asynchronous method calls. Cost analysis aims at automatically approximating the resource consumption of executing a program in terms of its input parameters. While cost analysis for sequential programming languages has received considerable attention, concurrency and distribution have been notably less studied. The main challenges of cost analysis in a concurrent setting are as follows. First, inferring precise size abstractions for data in the program in the presence of shared memory. This information is essential for bounding the number of iterations of loops. Second, distribution suggests that analysis must infer the cost of the diverse distributed components separately. We handle this by means of a novel form of object‐sensitive recurrence equations that use cost centres in order to keep the resource usage assigned to the different components separate. We have implemented our analysis and evaluated it on several small applications that are classical examples of concurrent and distributed programming. Copyright © 2015 John Wiley & Sons, Ltd. Elvira Albert, Puri Arenas, Jesús Correas Fernández, Samir Genaim, Miguel Gómez-Zamalloa, Germán Puebla, Guillermo Román-Díez |
Softw. Test. Verification Reliab. | 6 |
| 2015 | A multi-domain incremental analysis engine and its application to incremental resource analysis
Elvira Albert, Jesús Correas Fernández, Germán Puebla, Guillermo Román-Díez |
Theor. Comput. Sci. | 3 |
| 2014 | SACO: Static Analyzer for Concurrent Objects
Elvira Albert, Puri Arenas, Antonio Flores-Montoya, Samir Genaim, Miguel Gómez-Zamalloa, Enrique Martin-Martin, Germán Puebla, Guillermo Román-Díez |
TACAS | 7 |
| 2014 | Conditional termination of loops over heap-allocated data
Elvira Albert, Puri Arenas, Samir Genaim, Germán Puebla, Guillermo Román-Díez |
Sci. Comput. Program. | 4 |
| 2014 | Selected and extended papers from Bytecode 2013
Miguel Gómez-Zamalloa, Germán Puebla |
Sci. Comput. Program. | 2 |
| 2013 | Quantified Abstractions of Distributed Systems
Elvira Albert, Jesús Correas Fernández, Germán Puebla, Guillermo Román-Díez |
IFM | 3 |
| 2012 | Automatic Inference of Resource Consumption Bounds
Elvira Albert, Puri Arenas, Samir Genaim, Miguel Gómez-Zamalloa, Germán Puebla |
LPAR | 5 |
| 2012 | COSTABS: a cost and termination analyzer for ABSabstractABS is an abstract behavioural specification language to model distributed concurrent systems. Characteristic features of ABS are that: (1) it allows abstracting from implementation details while remaining executable: a functional sub-language over abstract data types is used to specify internal, sequential computations; and (2) the imperative sub-language provides flexible concurrency and synchronization mechanisms by means of asynchronous method calls, release points in method definitions, and cooperative scheduling of method activations. This paper presents COSTABS, a COSt and Termination analyzer for ABS, which is able to prove termination and obtain resource usage bounds for both the imperative and functional fragments of programs. The resources that COSTABS can infer include termination, number of execution steps, memory consumption, number of asynchronous calls, among others. The analysis bounds provide formal guarantees that the execution of the program will never exceed the inferred amount of resources. The system can be downloaded as free software from its web site, where a repository of examples and a web interface are also provided. To the best of our knowledge, COSTABS is the first system able to perform resource analysis for a concurrent language. Elvira Albert, Puri Arenas, Samir Genaim, Miguel Gómez-Zamalloa, Germán Puebla |
PEPM | 5 |
| 2012 | Incremental resource usage analysisabstractThe aim of incremental global analysis is, given a program, its analysis results and a series of changes to the program, to obtain the new analysis results as efficiently as possible and, ideally, without having to (re-)analyze fragments of code which are not affected by the changes. incremental analysis can significantly reduce both the time and the memory requirements of analysis. This paper presents an incremental resource usage analysis for a sequential Java-like language. Our main contributions are (1) a multi-domain incremental fixed-point algorithm which can be used by all global pre-analyses required to infer the cost (including class, sharing, cyclicity, constancy, and size analyses), and which takes care of propagating dependencies among such domains, and (2) a novel form of cost summaries which allows us to incrementally reconstruct only those components of cost functions affected by the change. Experimental results in the COSTA system show that the proposed incremental analysis performs very efficiently in practice. Elvira Albert, Jesús Correas Fernández, Germán Puebla, Guillermo Román-Díez |
PEPM | 3 |
| 2012 | Cost analysis of object-oriented bytecode programs
Elvira Albert, Puri Arenas, Samir Genaim, Germán Puebla, Damiano Zanardini |
Theor. Comput. Sci. | 4 |
| 2012 | Certificate size reduction in abstraction-carrying codeabstractAbstract Abstraction-Carrying Code (ACC) has recently been proposed as a framework for mobile code safety in which the code supplier provides a program together with an abstraction (or abstract model of the program) whose validity entails compliance with a predefined safety policy. The abstraction plays thus the role of safety certificate and its generation is carried out automatically by a fixpoint analyzer. The advantage of providing a (fixpoint) abstraction to the code consumer is that its validity is checked in a single pass (i.e., one iteration) of an abstract interpretation-based checker. A main challenge to make ACC useful in practice is to reduce the size of certificates as much as possible while at the same time not increasing checking time. The intuitive idea is to only include in the certificate information that the checker is unable to reproduce without iterating. We introduce the notion of reduced certificate which characterizes the subset of the abstraction which a checker needs in order to validate (and re-construct) the full certificate in a single pass. Based on this notion, we instrument a generic analysis algorithm with the necessary extensions in order to identify the information relevant to the checker. Interestingly, the fact that the reduced certificate omits (parts of) the abstraction has implications in the design of the checker. We provide the sufficient conditions which allow us to ensure that (1) if the checker succeeds in validating the certificate, then the certificate is valid for the program (correctness) and (2) the checker will succeed for any reduced certificate which is valid (completeness). Our approach has been implemented and benchmarked within the CiaoPP system. The experimental results show that our proposal is able to greatly reduce the size of certificates in practice. Elvira Albert, Puri Arenas, Germán Puebla, Manuel V. Hermenegildo |
Theory Pract. Log. Program. | 3 |
| 2012 | An overview of Ciao and its design philosophyabstractAbstract We provide an overall description of the Ciao multiparadigm programming system emphasizing some of the novel aspects and motivations behind its design and implementation. An important aspect of Ciao is that, in addition to supporting logic programming (and, in particular, Prolog), it provides the programmer with a large number of useful features from different programming paradigms and styles and that the use of each of these features (including those of Prolog) can be turned on and off at will for each program module. Thus, a given module may be using, e.g., higher order functions and constraints, while another module may be using assignment, predicates, Prolog meta-programming, and concurrency. Furthermore, the language is designed to be extensible in a simple and modular way. Another important aspect of Ciao is its programming environment, which provides a powerful preprocessor (with an associated assertion language) capable of statically finding non-trivial bugs, verifying that programs comply with specifications, and performing many types of optimizations (including automatic parallelization). Such optimizations produce code that is highly competitive with other dynamic languages or, with the (experimental) optimizing compiler, even that of static languages, all while retaining the flexibility and interactive development of a dynamic language. This compilation architecture supports modularity and separate compilation throughout. The environment also includes a powerful autodocumenter and a unit testing framework, both closely integrated with the assertion system. The paper provides an informal overview of the language and program development environment. It aims at illustrating the design philosophy rather than at being exhaustive, which would be impossible in a single journal paper, pointing instead to previous Ciao literature. Manuel V. Hermenegildo, Francisco Bueno, Manuel Carro, Pedro López-García 0001, Edison Mera, José F. Morales 0001, Germán Puebla |
Theory Pract. Log. Program. | 7 |
| 2011 | Cost Analysis of Concurrent OO Programs
Elvira Albert, Puri Arenas, Samir Genaim, Miguel Gómez-Zamalloa, Germán Puebla |
APLAS | 5 |
| 2011 | Verified resource guarantees using COSTA and KeYabstractResource guarantees allow being certain that programs will run within the indicated amount of resources, which may refer to memory consumption, number of instructions executed, etc. This information can be very useful, especially in real-time and safety-critical applications. Nowadays, a number of automatic tools exist, often based on type systems or static analysis, which produce such resource guarantees. In spite of being based on theoretically sound techniques, the implemented tools may contain bugs which render the resource guarantees thus obtained not completely trustworthy. Performing full-blown verification of such tools is a daunting task, since they are large and complex. In this work we investigate an alternative approach whereby, instead of the tools, we formally verify the results of the tools. We have implemented this idea using COSTA, a state-of-the-art static analysis system, for producing resource guarantees and KeY, a state-of-the-art verification tool, for formally verifying the correctness of such resource guarantees. Our preliminary results show that the proposed tool cooperation can be used for automatically producing verified resource guarantees. Elvira Albert, Richard Bubel, Samir Genaim, Reiner Hähnle, Germán Puebla, Guillermo Román-Díez |
PEPM | 5 |
| 2011 | Closed-Form Upper Bounds in Static Cost Analysis
Elvira Albert, Puri Arenas, Samir Genaim, Germán Puebla |
J. Autom. Reason. | 4 |
| 2011 | Efficient local unfolding with ancestor stacksabstractAbstract The most successful unfolding rules used nowadays in the partial evaluation of logic programs are based on well quasi orders (wqo) applied over (covering) ancestors, i.e., a subsequence of the atoms selected during a derivation. Ancestor (sub)sequences are used to increase the specialization power of unfolding while still guaranteeing termination and also to reduce the number of atoms for which the wqo has to be checked. Unfortunately, maintaining the structure of the ancestor relation during unfolding introduces significant overhead. We propose an efficient, practical local unfolding rule based on the notion of covering ancestors which can be used in combination with a wqo and allows a stack-based implementation without losing any opportunities for specialization. Using our technique, certain nonleftmost unfoldings are allowed as long as local unfolding is performed, i.e., we cover depth-first strategies. To deal with practical programs, we propose assertion-based techniques which allow our approach to treat programs that include (Prolog) built-ins and external predicates in a very extensible manner, for the case of leftmost unfolding. Finally, we report on our implementation of these techniques embedded in a practical partial evaluator, which shows that our techniques, in addition to dealing with practical programs, are also significantly more efficient in time and somewhat more efficient in memory than traditional tree-based implementations. Germán Puebla, Elvira Albert, Manuel V. Hermenegildo |
Theory Pract. Log. Program. | 1 |
| 2010 | Compositional CLP-Based Test Data Generation for Imperative Languages
Elvira Albert, Miguel Gómez-Zamalloa, José Miguel Rojas, Germán Puebla |
LOPSTR | 4 |
| 2010 | PET: a partial evaluation-based test case generation tool for Java bytecodeabstractPET is a prototype Partial Evaluation-based Test case generation tool for a subset of Java bytecode programs. It performs white-box test generation by means of two consecutive Partial Evaluations (PE). The first PE decompiles the Java bytecode program into an equivalent CLP (Constraint Logic Programming) counterpart. The second PE generates a test-case generator from the CLP program. This generator captures interesting test coverage criteria and it is able to generate further test cases on demand. For the first PE, PET incorporates an existing tool which decompiles bytecode to CLP. The main contribution of this work is the implementation of the second PE and the proof of concept of the approach. This has required the development of a partial evaluator for CLP with appropriate control strategies to ensure the required coverage criteria and to generate test-case generators. PET can be downloaded as free software from its web site, where a repository of examples and a web interface are also provided. Though PET has to be extended to be applicable to larger programs, we argue that it provides some evidence that the approach can be of practical interest. Elvira Albert, Miguel Gómez-Zamalloa, Germán Puebla |
PEPM | 3 |
| 2010 | From Object Fields to Local Variables: A Practical Approach to Field-Sensitive Analysis
Elvira Albert, Puri Arenas, Samir Genaim, Germán Puebla, Diana V. Ramírez-Deantes |
SAS | 4 |
| 2010 | Test case generation for object-oriented imperative languages in CLPabstractAbstract Testing is a vital part of the software development process. Test Case Generation (TCG) is the process of automatically generating a collection of test-cases which are applied to a system under test. White-box TCG is usually performed by means of symbolic execution, i.e., instead of executing the program on normal values (e.g., numbers), the program is executed on symbolic values representing arbitrary values. When dealing with an object-oriented (OO) imperative language, symbolic execution becomes challenging as, among other things, it must be able to backtrack, complex heap-allocated data structures should be created during the TCG process and features like inheritance, virtual invocations and exceptions have to be taken into account. Due to its inherent symbolic execution mechanism, we pursue in this paper that Constraint Logic Programming (CLP) has a promising application field in tcg. We will support our claim by developing a fully CLP-based framework to TCG of an OO imperative language, and by assessing it on a corresponding implementation on a set of challenging Java programs. Miguel Gómez-Zamalloa, Elvira Albert, Germán Puebla |
Theory Pract. Log. Program. | 3 |
| 2009 | Asymptotic Resource Usage Bounds
Elvira Albert, Diego Esteban Alonso-Blas, Puri Arenas, Samir Genaim, Germán Puebla |
APLAS | 5 |
| 2009 | Field-Sensitive Value Analysis by Field-Insensitive Analysis
Elvira Albert, Puri Arenas, Samir Genaim, Germán Puebla |
FM | 4 |
| 2009 | Decompilation of Java bytecode to Prolog by partial evaluation
Miguel Gómez-Zamalloa, Elvira Albert, Germán Puebla |
Inf. Softw. Technol. | 3 |
| 2009 | Type-based homeomorphic embedding for online termination
Elvira Albert, John P. Gallagher, Miguel Gómez-Zamalloa, Germán Puebla |
Inf. Process. Lett. | 4 |
| 2008 | Test Data Generation of Bytecode by CLP Partial Evaluation
Elvira Albert, Miguel Gómez-Zamalloa, Germán Puebla |
LOPSTR | 3 |
| 2008 | A practical type analysis for verification of modular prolog programsabstractRegular types are a powerful tool for computing very precise descriptive types for logic programs. However, in the context of real-life, modular Prolog programs, the accurate results obtained by regular types often come at the price of efficiency. In this paper we propose a combination of techniques aimed at improving analysis efficiency in this context. As a first technique we allow optionally reducing the accuracy of inferred types by using only the types defined by the user or present in the libraries. We claim that, for the purpose of verifying type signatures given in the form of assertions the precision obtained using this approach is sufficient, and show that analysis times can be reduced significantly. Our second technique is aimed at dealing with situations where we would like to limit the amount of reanalysis performed, especially for library modules. Borrowing some ideas from polymorphic type systems, we show how to solve the problem by admitting parameters in type specifications. This allows us to compose new call patterns with some precomputed analysis info without losing any information. We argue that together these two techniques contribute to the practical and scalable analysis and verification of types in Prolog programs. Pawel Pietrzak, Jesús Correas Fernández, Germán Puebla, Manuel V. Hermenegildo |
PEPM | 3 |
| 2008 | Automatic Inference of Upper Bounds for Recurrence Relations in Cost Analysis
Elvira Albert, Puri Arenas, Samir Genaim, Germán Puebla |
SAS | 4 |
| 2008 | Modular Decompilation of Low-Level Code by Partial EvaluationabstractDecompiling low-level code to a high-level intermediate representation facilitates the development of analyzers, model checkers, etc. which reason about properties of the low-level code (e.g., bytecode, .NET). Interpretive decompilation consists in partially evaluating an interpreter for the low-level language (written in the high-level language) w.r.t. the code to be decompiled. There have been proofs-of-concept that interpretive decompilation is feasible, butt here remain important open issues when it comes to decompile a real language: does the approach scale up? is the quality of decompiled programs comparable to that obtained by ad-hoc decompilers? do decompiled programs preserve the structure of the original programs? This paper addresses these issues by presenting, to the best of our knowledge, the first modular scheme to enable interpretive decompilation of low-level code to a high-level representation, namely, we decompile bytecode into Prolog. We introduce two notions of optimality. The first one requires that each method/block is decompiled just once. The second one requires that each program point is traversed at most once during decompilation. We demonstrate the impact of our modular approach and optimality issues on a series of realistic benchmarks. Decompilation times and decompiled program sizes are linear with the size of the input bytecode program. This demostrates empirically the scalability of modular decompilation of low-level code by partial evaluation. Miguel Gómez-Zamalloa, Elvira Albert, Germán Puebla |
SCAM | 3 |
| 2007 | Cost Analysis of Java Bytecode
Elvira Albert, Puri Arenas, Samir Genaim, Germán Puebla, Damiano Zanardini |
ESOP | 4 |
| 2007 | Type-Based Homeomorphic Embedding and Its Applications to Online Partial Evaluation
Elvira Albert, John P. Gallagher, Miguel Gómez-Zamalloa, Germán Puebla |
LOPSTR | 4 |
| 2007 | Verification of Java Bytecode Using Analysis and Transformation of Logic Programs
Elvira Albert, Miguel Gómez-Zamalloa, Laurent Hubert, Germán Puebla |
PADL | 4 |
| 2007 | Combining Static Analysis and Profiling for Estimating Execution Times
Edison Mera, Pedro López-García 0001, Germán Puebla, Manuel Carro, Manuel V. Hermenegildo |
PADL | 3 |
| 2007 | Poly-controlled partial evaluation in practiceabstractPoly-Controlled Partial Evaluation (PCPE) is a powerful approach to partial evaluation, which has recently been proposed. PCPE takes into account sets of control strategies instead of a single one. Thus, different control strategies can be assigned to different call patterns, possibly obtaining results that cannot be obtained using a single control strategy. PCPE can be implemented as a searchbased algorithm, producing sets of candidate optimized programs. The quality of each of these programs is assessed through the use of a fitness function, which can be resource aware, in the sense that it can take multiple factors into account, such as run-time and code size. Unfortunately, PCPE suffers from an inherent blowup of its search space when implemented as an all-solutions, searchbased algorithm. Thus, in order to use it in practice we must be able to prune its search space without losing the (most) interesting solutions. In this work we explore several techniques for pruning the search space of PCPE. Some of these techniques are based on heuristics, while others are based on branch and bound and are guaranteed to obtain an optimal solution. Our experimental results show that, when combined with the proposed pruning techniques, PCPE can cope with realistic programs. Also, that the solutions obtained by PCPE outperform the solutions found by PE under similar conditions. Claudio Ochoa, Germán Puebla |
PEPM | 2 |
| 2006 | High-level languages for small devices: a case studyabstractIn this paper we study, through a concrete case, the feasibility of using a high-level, general-purpose logic language in the design and implementation of applications targeting wearable computers. The case study is a "sound spatializer" which, given real-time signals for monaural audio and heading, generates stereo sound which appears to come from a position in space. The use of advanced compile-time transformations and optimizations made it possible to execute code written in a clear style without efficiency or architectural concerns on the target device, while meeting strict existing time and memory constraints. The final executable compares favorably with a similar implementation written in C. We believe that this case is representative of a wider class of common pervasive computing applications, and that the techniques we show here can be put to good use in a range of scenarios. This points to the possibility of applying high-level languages, with their associated exibility, conciseness, ability to be automatically parallelized, sophisticated compile-time tools for analysis and verification, etc., to the embedded systems eld without paying an unnecessary performance penalty. Manuel Carro, José F. Morales 0001, Henk L. Muller, Germán Puebla, Manuel V. Hermenegildo |
CASES | 4 |
| 2006 | Reduced Certificates for Abstraction-Carrying Code
Elvira Albert, Puri Arenas, Germán Puebla, Manuel V. Hermenegildo |
ICLP | 3 |
| 2006 | Using Combined Static Analysis and Profiling for Logic Program Execution Time Estimation
Edison Mera, Pedro López-García 0001, Germán Puebla, Manuel Carro, Manuel V. Hermenegildo |
ICLP | 3 |
| 2006 | An Incremental Approach to Abstraction-Carrying Code
Elvira Albert, Puri Arenas, Germán Puebla |
LPAR | 3 |
| 2006 | Context-Sensitive Multivariant Assertion Checking in Modular Programs
Pawel Pietrzak, Jesús Correas Fernández, Germán Puebla, Manuel V. Hermenegildo |
LPAR | 3 |
| 2006 | Poly-controlled partial evaluationabstractExisting algorithms for on-line partial evaluation of logic programs, given an initial program and a description of run-time queries, deterministically produce a specialized program. In this work we propose a novel framework for partial evaluation of logic programs which is poly-controlled in that it can take into account repertoires of global control and local control rules instead of a single, predetermined combination. This approach is more flexible than existing ones since it allows assigning different global and local control rules to different call patterns, thus obtaining results that cannot be obtained using traditional partial evaluation. This modification transforms partial evaluation from a greedy algorithm into a search-based algorithm and, as a result, sets of candidate specialized programs can be achieved, instead of a single one. In order to make the algorithm fully automatic, it requires the use of self-tuning techniques which allow automatically measuring the quality of the different candidate specialized programs. Our approach is resource aware in that it uses fitness functions which consider multiple factors such as run-time and code size for the specialized programs. The framework has been implemented in the CiaoPP system, and tested on some benchmarks. The preliminary experimental results we present show that our proposal obtains better specializations than those achieved using traditional partial evaluation Germán Puebla, Claudio Ochoa |
PPDP | 1 |
| 2006 | Abstract Interpretation with Specialized Definitions
Germán Puebla, Elvira Albert, Manuel V. Hermenegildo |
SAS | 1 |
| 2005 | A Generator of Efficient Abstract Machine Implementations and Its Application to Emulator Minimization
José F. Morales 0001, Manuel Carro, Germán Puebla, Manuel V. Hermenegildo |
ICLP | 3 |
| 2005 | A Generic Framework for the Analysis and Specialization of Logic Programs
Germán Puebla, Elvira Albert, Manuel V. Hermenegildo |
ICLP | 1 |
| 2005 | Non-leftmost Unfolding in Partial Evaluation of Logic Programs with Impure Predicates
Elvira Albert, Germán Puebla, John P. Gallagher |
LOPSTR | 2 |
| 2005 | Experiments in Context-Sensitive Analysis of Modular Programs
Jesús Correas Fernández, Germán Puebla, Manuel V. Hermenegildo, Francisco Bueno |
LOPSTR | 2 |
| 2005 | Converting One Type-Based Abstract Domain to Another
John P. Gallagher, Germán Puebla, Elvira Albert |
LOPSTR | 2 |
| 2005 | Removing Superfluous Versions in Polyvariant Specialization of Prolog Programs
Claudio Ochoa, Germán Puebla, Manuel V. Hermenegildo |
LOPSTR | 2 |
| 2005 | Abstraction carrying code and resource-awarenessabstractProof-Carrying Code (PCC) is a general approach to mobile code safety in which the code supplier augments the program with a certificate (or proof). The intended benefit is that the program consumer can locally validate the certificate w.r.t. the "untrusted" program by means of a certificate checker---a process which should be much simpler, efficient, and automatic than generating the original proof. Abstraction Carrying Code (ACC) is an enabling technology for PCC in which an abstract model of the program plays the role of certificate. The generation of the certificate, i.e., the abstraction, is automatically carried out by an abstract interpretation-based analysis engine, which is parametric w.r.t. different abstract domains. While the analyzer on the producer side typically has to compute a semantic fixpoint in a complex, iterative process, on the receiver it is only necessary to check that the certificate is indeed a fixpoint of the abstract semantics equations representing the program. This is done in a single pass in a much more efficient process. ACC addresses the fundamental issues in PCC and opens the door to the applicability of the large body of frameworks and domains based on abstract interpretation as enabling technology for PCC. We present an overview of ACC and we describe in a tutorial fashion an application to the problem of resource-aware security in mobile code. Essentially the information computed by a cost analyzer is used to generate cost certificates which attest a safe and efficient use of a mobile code. A receiving side can then reject code which brings cost certificates (which it cannot validate or) which have too large cost requirements in terms of computing resources (in time and/or space) and accept mobile code which meets the established requirements. Manuel V. Hermenegildo, Elvira Albert, Pedro López-García 0001, Germán Puebla |
PPDP | 4 |
| 2005 | Integrated program debugging, verification, and optimization using abstract interpretation (and the Ciao system preprocessor)
Manuel V. Hermenegildo, Germán Puebla, Francisco Bueno, Pedro López-García 0001 |
Sci. Comput. Program. | 2 |
| 2004 | Some Techniques for Automated, Resource-Aware Distributed and Mobile Computing in a Multi-paradigm Programming System
Manuel V. Hermenegildo, Elvira Albert, Pedro López-García 0001, Germán Puebla |
Euro-Par | 4 |
| 2004 | Abstract Interpretation-Based Mobile Code Certification
Elvira Albert, Germán Puebla, Manuel V. Hermenegildo |
ICLP | 2 |
| 2004 | Efficient Local Unfolding with Ancestor Stacks for Full Prolog
Germán Puebla, Elvira Albert, Manuel V. Hermenegildo |
LOPSTR | 1 |
| 2004 | Abstraction-Carrying Code
Elvira Albert, Germán Puebla, Manuel V. Hermenegildo |
LPAR | 2 |
| 2003 | Abstract specialization and its applicationsabstractThe aim of program specialization is to optimize programs by exploiting certain knowledge about the context in which the program will execute. There exist many program manipulation techniques which allow specializing the program in different ways. Among them, one of the best known techniques is partial evaluation, often referred to simply as program specialization, which optimizes programs by specializing them for (partially) known input data. In this work we describe abstract specialization, a technique whose main features are: (1) specialization is performed with respect to "abstract" values rather than "concrete" ones, and (2) abstract interpretation rather than standard interpretation of the program is used in order to propagate information about execution states. The concept of abstract specialization is at the heart of the specialization system in CiaoPP, the Ciao system preprocessor. In this paper we present a unifying view of the different specialization techniques used in CiaoPP and discuss their potential applications by means of examples. The applications discussed include program parallelization, optimization of dynamic scheduling (concurrency), and integration of partial evaluation techniques. Germán Puebla, Manuel V. Hermenegildo |
PEPM | 1 |
| 2003 | Program Development Using Abstract Interpretation (And The Ciao System Preprocessor)
Manuel V. Hermenegildo, Germán Puebla, Francisco Bueno, Pedro López-García 0001 |
SAS | 2 |
| 2002 | Program Debugging and Validation Using Semantic Approximations and Partial Specifications
Manuel V. Hermenegildo, Germán Puebla, Francisco Bueno, Pedro López-García 0001 |
ICALP | 2 |
| 2002 | Abstract Interpretation over Non-deterministic Finite Tree Automata for Set-Based Analysis of Logic Programs
John P. Gallagher, Germán Puebla |
PADL | 2 |
| 2000 | Incremental analysis of constraint logic programsabstractGlobal analyzers traditionally read and analyze the entire program at once, in a nonincremental way. However, there are many situations which are not well suited to this simple model and which instead require reanalysis of certain parts of a program which has already been analyzed. In these cases, it appears inefficient to perform the analysis of the program again from scratch, as needs to be done with current systems. We describe how the fixed-point algorithms used in current generic analysis engines for (constraint) logic programming languages can be extended to support incremental analysis. The possible changes to a program are classified into three types: addition, deletion, and arbitrary change. For each one of these, we provide one or more algorithms for identifying the parts of the analysis that must be recomputed and for performing the actual recomputation. The potential benefits and drawbacks of these algorithms are discussed. Finally, we present some experimental results obtained with an implementation of the algorithms in the PLAI generic abstract interpretation framework. The results show significant benefits when using the proposed incremental analysis algorithms. Manuel V. Hermenegildo, Germán Puebla, Kim Marriott, Peter J. Stuckey |
ACM Trans. Program. Lang. Syst. | 2 |
| 1999 | Program Analysis, Debugging, and Optimization Using the Ciao System Preprocessor
Manuel V. Hermenegildo, Francisco Bueno, Germán Puebla, Pedro López-García 0001 |
ICLP | 3 |
| 1999 | An Integration of Partial Evaluation in a Generic Abstract Interpretation Framework
Germán Puebla, Manuel V. Hermenegildo, John P. Gallagher |
PEPM | 1 |
| 1998 | A Framework for Assertion-Based Debugging in Constraint Logic Programming
Germán Puebla, Francisco Bueno, Manuel V. Hermenegildo |
CP | 1 |
| 1997 | Optimization of Logic Programs with Dynamic Scheduling
Germán Puebla, Maria Garcia de la Banda, Kim Marriott, Peter J. Stuckey |
ICLP | 1 |
| 1996 | Global Analysis of Standard Prolog Programs
Francisco Bueno, Daniel Cabeza, Manuel V. Hermenegildo, Germán Puebla |
ESOP | 4 |
| 1996 | Optimized Algorithms for Incremental Analysis of Logic Programs
Germán Puebla, Manuel V. Hermenegildo |
SAS | 1 |
| 1995 | Incremental Analysis of Logic Programs
Manuel V. Hermenegildo, Germán Puebla, Kim Marriott, Peter J. Stuckey |
ICLP | 2 |
| 1995 | Implementation of Multiple Specialization in Logic ProgramsabstractWe study the multiple specialization of logic programs based on abstract interpretation.This involves in general generating several versions of a program predicate for different uses of such predicate, making use of information obtained from global analysis performed by an abstract interpreter, and finally producing a new, '~multiply specialized" program.While the topic of multiple specialization of logic programs has received considerable theoretical attention, it has never been actually incorporated in a compiler and its effects quantified.We perform such a study in the context of a parallelizing compiler and show that it is indeed a relevant technique in practice.Also, we propose an implementation technique which has the same power as the strongest of the previously proposed techniques but requires little or no modification of an existing abstract interpreter. Germán Puebla, Manuel V. Hermenegildo |
PEPM | 1 |