Pedro López-García 0001

dblp:12/1085-1 · DBLP profile ↗
← Back
45ranked-venue papers
5as first author
12since 2021 · last 2026
0000-0002-1092-2071ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 40 · 4 first-author · 12 since 2021Theory of computation · 23 · 2 first-author · 3 since 2021Artificial intelligence and machine learning · 1Systems, architecture and hardware · 1
YearPublicationVenuePosition
2026 Multi-configurable Search Rules in Prolog and Application to Testing
Daniela Ferreiro, José F. Morales 0001, Pedro López-García 0001, Manuel V. Hermenegildo
PADL3
2026 Abstractions of sequences, functions and operators
abstract
Abstract We present theoretical and practical results on the order theory of lattices of functions, focusing on Galois connections that abstract (sets of) functions – a topic known as higher-order abstract interpretation . We are motivated by the challenge of inferring closed-form bounds on functions which are defined recursively, i.e. as the fixed point of an operator or, equivalently, as the solution to a functional equation. This has multiple applications in program analysis (e.g. cost analysis, loop acceleration, declarative language analysis) and in hybrid systems governed by differential equations. Our main contribution is a new family of constraint-based abstract domains for abstracting numerical functions, $\mathfrak {B}$ B -bound domains , which abstract a function $f$ f by a conjunction of bounds from a preselected set of boundary functions. They allow inferring highly non-linear numerical invariants , which classical numerical abstract domains struggle with. We uncover a convexity property in the constraint space that simplifies, and, in some cases, fully automates , transfer function design. We also introduce domain abstraction , a functor that lifts arbitrary mappings in value space to Galois connections in function space. This supports abstraction from symbolic to numerical functions (i.e. size abstraction ), and enables dimensionality reduction of equations. We base our constructions of transfer functions on a simple operator language , starting with sequences , and extending to more general functions , including multivariate, piecewise, and non-discrete domains.
Louis Rustenholz, Pedro López-García 0001, Manuel V. Hermenegildo
Int. J. Softw. Tools Technol. Transf.2
2025 Extending the FSyntax/Hiord Approach with Imperative Notation
Paula Corral, José F. Morales 0001, Pedro López-García 0001, Manuel V. Hermenegildo
LOPSTR3
2025 Hiord $^{{\kern2pt}\sharp}$ : An Approach to the Specification and Verification of Higher-Order (C)LP Programs
abstract
Abstract Higher-order constructs enable more expressive and concise code by allowing procedures to be parameterized by other procedures. Assertions allow expressing partial program specifications, which can be verified either at compile time (statically) or run time (dynamically). In higher-order programs, assertions can also describe higher-order arguments. While in the context of (constraint) logic programming ((C)LP), run-time verification of higher-order assertions has received some attention, compile-time verification remains relatively unexplored. We propose a novel approach for statically verifying higher-order (C)LP programs with higher-order assertions. Although we use the Ciao assertion language for illustration, our approach is quite general, and we believe is applicable to similar contexts. Higher-order arguments are described using predicate properties – a special kind of property which exploits the ( Ciao ) assertion language. We refine the syntax and semantics of these properties and introduce an abstract criterion to determine conformance to a predicate property at compile time, based on a semantic order relation comparing the predicate property with the predicate assertions. We then show how to handle these properties using an abstract interpretation-based static analyzer for programs with first-order assertions by reducing predicate properties to first-order properties. Finally, we report on a prototype implementation and evaluate it through various examples within the Ciao system.
Marco Ciccalè, Daniel Jurjo-Rivas, José F. Morales 0001, Pedro López-García 0001, Manuel V. Hermenegildo
Theory Pract. Log. Program.4
2025 Checkification: A Practical Approach for Testing Static Analysis Truths
abstract
Abstract Static analysis is an essential component of many modern software development tools. Unfortunately, the ever-increasing complexity of static analyzers makes their coding error-prone. Even analysis tools based on rigorous mathematical techniques, such as abstract interpretation, are not immune to bugs. Ensuring the correctness and reliability of software analyzers is critical if they are to be inserted in production compilers and development environments. While compiler validation has seen notable success, formal validation of static analysis tools remains relatively unexplored. In this paper we present checkification , a simple, automatic method for testing static analyzers. Broadly, it consists in checking, over a suite of benchmarks, that the properties inferred statically are satisfied dynamically. The main advantage of our approach lies in its simplicity, which stems directly from framing it within the Ciao assertion-based validation framework, and its blended static/dynamic assertion checking approach. We demonstrate that in this setting, the analysis can be tested with little effort by combining the following components already present in the framework: 1) the static analyzer , which outputs its results as the original program source with assertions interspersed; 2) the assertion run-time checking mechanism, which instruments a program to ensure that no assertion is violated at run time; 3) the random test case generator , which generates random test cases satisfying the properties present in assertion preconditions; and 4) the unit-test framework , which executes those test cases. We have applied our approach to the CiaoPP static analyzer, resulting in the identification of many bugs with reasonable overhead. Most of these bugs have been either fixed or confirmed, helping us detect a range of errors not only related to analysis soundness but also within other aspects of the framework.
Daniela Ferreiro, Ignacio Casso, José F. Morales 0001, Pedro López-García 0001, Manuel V. Hermenegildo
Theory Pract. Log. Program.4
2024 An Order Theory Framework of Recurrence Equations for Static Cost Analysis - Dynamic Inference of Non-Linear Inequality Invariants
Louis Rustenholz, Pedro López-García 0001, José F. Morales 0001, Manuel V. Hermenegildo
SAS2
2024 Abstract Environment Trimming
abstract
Abstract Variable sharing is a fundamental property in the static analysis of logic programs, since it is instrumental for ensuring correctness and increasing precision while inferring many useful program properties. Such properties include modes, determinacy, non-failure, cost, etc. This has motivated significant work on developing abstract domains to improve the precision and performance of sharing analyses. Much of this work has centered around the family of set-sharing domains, because of the high precision they offer. However, this comes at a price: their scalability to a wide set of realistic programs remains challenging and this hinders their wider adoption. In this work, rather than defining new sharing abstract domains, we focus instead on developing techniques which can be incorporated in the analyzers to address aspects that are known to affect the efficiency of these domains, such as the number of variables, without affecting precision. These techniques are inspired in others used in the context of compiler optimizations, such as expression reassociation and variable trimming. We present several such techniques and provide an extensive experimental evaluation of over 1100 program modules taken from both production code and classical benchmarks. This includes the Spectector cache analyzer, the s(CASP) system, the libraries of the Ciao system, the LPdoc documenter, the PLAI analyzer itself, etc. The experimental results are quite encouraging: we have obtained significant speedups, and, more importantly, the number of modules that require a timeout was cut in half. As a result, many more programs can be analyzed precisely in reasonable times.
Daniel Jurjo-Rivas, José F. Morales 0001, Pedro López-García 0001, Manuel V. Hermenegildo
Theory Pract. Log. Program.3
2024 A Machine Learning-Based Approach for Solving Recurrence Relations and Its use in Cost Analysis of Logic Programs
abstract
Abstract Automatic static cost analysis infers information about the resources used by programs without actually running them with concrete data and presents such information as functions of input data sizes. Most of the analysis tools for logic programs (and many for other languages), as CiaoPP, are based on setting up recurrence relations representing (bounds on) the computational cost of predicates and solving them to find closed-form functions. Such recurrence solving is a bottleneck in current tools: many of the recurrences that arise during the analysis cannot be solved with state-of-the-art solvers, including computer algebra systems (CASs), so that specific methods for different classes of recurrences need to be developed. We address such a challenge by developing a novel, general approach for solving arbitrary, constrained recurrence relations, that uses machine learning (sparse-linear and symbolic) regression techniques to guess a candidate closed-form function, and a combination of an SMT-solver and a CAS to check whether such function is actually a solution of the recurrence. Our prototype implementation and its experimental evaluation within the context of the CiaoPP system show quite promising results. Overall, for the considered benchmark set, our approach outperforms state-of-the-art cost analyzers and recurrence solvers and can find closed-form solutions, in a reasonable time, for recurrences that cannot be solved by them.
Louis Rustenholz, Maximiliano Klemen, Miguel Á. Carreira-Perpiñán, Pedro López-García 0001
Theory Pract. Log. Program.4
2023 Transforming Big-Step to Small-Step Semantics Using Interpreter Specialisation
John P. Gallagher, Manuel V. Hermenegildo, José F. Morales 0001, Pedro López-García 0001
LOPSTR4
2023 A Rule-Based Approach for Designing and Composing Abstract Domains
Daniel Jurjo-Rivas, José F. Morales 0001, Pedro López-García 0001, Manuel V. Hermenegildo
LOPSTR3
2021 A general framework for static profiling of parametric resource usage - CORRIGENDUM
Pedro López-García 0001, Maximiliano Klemen, Umer Liqat, Manuel V. Hermenegildo
Theory Pract. Log. Program.1
2021 VeriFly: On-the-fly Assertion Checking via Incrementality
abstract
Abstract Assertion checking is an invaluable programmer’s tool for finding many classes of errors or verifying their absence in dynamic languages such as Prolog. For Prolog programmers, this means being able to have relevant properties, such as modes, types, determinacy, nonfailure, sharing, constraints, and cost, checked and errors flagged without having to actually run the program. Such global static analysis tools are arguably most useful the earlier they are used in the software development cycle, and fast response times are essential for interactive use. Triggering a full and precise semantic analysis of a software project every time a change is made can be prohibitively expensive. This is specially the case when complex properties need to be inferred for large, realistic code bases. In our static analysis and verification framework, this challenge is addressed through a combination of modular and incremental (context- and path-sensitive) analysis that is responsive to program edits, at different levels of granularity. In this tool paper, we present how the combination of this framework within an integrated development environment (IDE) takes advantage of such incrementality to achieve a high level of reactivity when reflecting analysis and verification results back as colorings and tooltips directly on the program text – the tool’s VeriFly mode. The concrete implementation that we describe is Emacs-based and reuses in part off-the-shelf “on-the-fly” syntax checking facilities (flycheck). We believe that similar extensions are also reproducible with low effort in other mature development environments. Our initial experience with the tool shows quite promising results, with low latency times that provide early, continuous, and precise assertion checking and other semantic feedback to programmers during the development process. The tool supports Prolog natively, as well as other languages by semantic transformation into Horn clauses.
Miguel A. Sanchez-Ordaz, Isabel Garcia-Contreras, Victor Perez 0001, José F. Morales 0001, Pedro López-García 0001, Manuel V. Hermenegildo
Theory Pract. Log. Program.5
2020 Testing Your (Static Analysis) Truths
Ignacio Casso, José F. Morales 0001, Pedro López-García 0001, Manuel V. Hermenegildo
LOPSTR3
2020 Cost Analysis of Smart Contracts Via Parametric Resource Analysis
Victor Perez 0001, Maximiliano Klemen, Pedro López-García 0001, José F. Morales 0001, Manuel V. Hermenegildo
SAS3
2020 Preface
Manuel V. Hermenegildo, Pedro López-García 0001, Alberto Pettorossi, Maurizio Proietti
Fundam. Informaticae2
2019 Computing Abstract Distances in Logic Programs
Ignacio Casso, José F. Morales 0001, Pedro López-García 0001, Roberto Giacobazzi, Manuel V. Hermenegildo
LOPSTR3
2019 An Integrated Approach to Assertion-Based Random Testing in Prolog
Ignacio Casso, José F. Morales 0001, Pedro López-García 0001, Manuel V. Hermenegildo
LOPSTR3
2019 A General Framework for Static Cost Analysis of Parallel Logic Programs
Maximiliano Klemen, Pedro López-García 0001, John P. Gallagher, José F. Morales 0001, Manuel V. Hermenegildo
LOPSTR2
2018 Static Performance Guarantees for Programs with Runtime Checks
abstract
Instrumenting programs for performing runtime checking of properties, such as regular shapes, is a common and useful technique that helps programmers detect incorrect program behaviors. This is specially true in dynamic languages such as Prolog. However, such runtime checks inevitably introduce runtime overhead (in execution time, memory, energy, etc.). Several approaches have been proposed for reducing this overhead, such as eliminating the checks that can statically be proved to always succeed, and/or optimizing the way in which the (remaining) checks are performed. However, there are cases in which it is not possible to remove all checks statically (e.g., open libraries which must check their interfaces, complex properties, unknown code, etc.) and in which, even after optimizations, these remaining checks may still introduce an unacceptable level of overhead. It is thus important for programmers to be able to determine the additional cost due to the runtime checks and compare it to some notion of admissible cost. The common practice used for estimating runtime checking overhead is profiling, which is not exhaustive by nature. Instead, we propose a method that uses static analysis to estimate such overhead, with the advantage that the estimations are functions parameterized by input data sizes. Unlike profiling, this approach can provide guarantees for all possible execution traces, and allows assessing how the overhead grows as the size of the input grows. Our method also extends an existing assertion verification framework to express "admissible" overheads, and statically and automatically checks whether the instrumented program conforms with such specifications. Finally, we present an experimental evaluation of our approach that suggests that our method is feasible and promising.
Maximiliano Klemen, Nataliia Stulova, Pedro López-García 0001, José F. Morales 0001, Manuel V. Hermenegildo
PPDP3
2018 Interval-based resource usage verification by translation into Horn clauses and an application to energy consumption
abstract
Abstract Many applications require conformance with specifications that constrain the use of resources, such as execution time, energy, bandwidth, etc. We present a configurable framework for static resource usage verification where specifications can include data size-dependent resource usage functions, expressing both lower and upper bounds. Ensuring conformance with respect to such specifications is an undecidable problem. Therefore, to statically check such specifications, our framework infers the same type of resource usage functions, which safely approximate the actual resource usage of the program, and compares them against the specification. We review how this framework supports several languages and compilation output formats by translating them to an intermediate representation based on Horn clauses and using the configurability of the framework to describe the resource semantics of the input language. We provide a detailed formalization and extend the framework so that both resource usage specification and analysis/verification output can include preconditions expressing intervals for the input data sizes for which assertions are intended to hold, proved, or disproved. Most importantly, we also extend the classes of functions that can be checked. We also report on and provide results from an implementation within the Ciao/CiaoPP framework, as well as on a practical tool built by instantiating this framework for the verification of energy consumption specifications for imperative/embedded programs. Finally, we show as an example how embedded software developers can use this tool, in particular, for determining values for program parameters that ensure meeting a given energy budget while minimizing the loss in quality of service.
Pedro López-García 0001, Luthfi Darmawan, Maximiliano Klemen, Umer Liqat, Francisco Bueno, Manuel V. Hermenegildo
Theory Pract. Log. Program.1
2017 Inferring Energy Bounds via Static Program Analysis and Evolutionary Modeling of Basic Blocks
Umer Liqat, Zorana Bankovic, Pedro López-García 0001, Manuel V. Hermenegildo
LOPSTR3
2016 A general framework for static profiling of parametric resource usage
abstract
Abstract For some applications, standard resource analyses do not provide the information required. Such analyses estimate the total resource usage of a program (without executing it) as functions on input data sizes. However, some applications require knowing how such total resource usage is distributed over selected parts of a program. We propose a novel, general, and flexible framework for setting up cost equations/relations which can be instantiated for performing a wide range of resource usage analyses, including both static profiling and the inference of the standard notion of cost. We extend and generalize standard resource analysis techniques, so that the relations generated include additional Boolean control variables for switching on or off different terms in the relations, as required by the desired resource usage profile. We also instantiate our framework to perform static profiling of accumulated cost (also parameterized by input data sizes). Such information is much more useful to the software developer than the standard notion of cost: it identifies the parts of the program that have the greatest impact on the total program cost, and which therefore should be optimized first. We also report on an implementation of our framework within the CiaoPP system, and its instantiation for accumulated cost, and provide some experimental results. In addition to generality, our new method brings important advantages over our previous approach based on a program transformation, including support for non-deterministic programs, better and easier integration in the compiler, and higher efficiency.
Pedro López-García 0001, Maximiliano Klemen, Umer Liqat, Manuel V. Hermenegildo
Theory Pract. Log. Program.1
2015 Stochastic vs. deterministic evolutionary algorithm-based allocation and scheduling for XMOS chips
Zorana Bankovic, Pedro López-García 0001
Neurocomputing2
2014 Resource Usage Analysis of Logic Programs via Abstract Interpretation Using Sized Types
abstract
Abstract We present a novel general resource analysis for logic programs based on sized types. Sized types are representations that incorporate structural (shape) information and allow expressing both lower and upper bounds on the size of a set of terms and their subterms at any position and depth. They also allow relating the sizes of terms and subterms occurring at different argument positions in logic predicates. Using these sized types, the resource analysis can infer both lower and upper bounds on the resources used by all the procedures in a program as functions on input term (and subterm) sizes, overcoming limitations of existing resource analyses and enhancing their precision. Our new resource analysis has been developed within the abstract interpretation framework, as an extension of the sized types abstract domain, and has been integrated into the Ciao preprocessor, CiaoPP. The abstract domain operations are integrated with the setting up and solving of recurrence equations for inferring both size and resource usage functions. We show that the analysis is an improvement over the previous resource analysis present in CiaoPP and compares well in power to state of the art systems.
Alejandro Serrano 0001, Pedro López-García 0001, Manuel V. Hermenegildo
Theory Pract. Log. Program.2
2013 Energy Consumption Analysis of Programs Based on XMOS ISA-Level Models
Umer Liqat, Steve Kerrison, Alejandro Serrano 0001, Kyriakos Georgiou, Pedro López-García 0001, Neville Grech, Manuel V. Hermenegildo, Kerstin Eder
LOPSTR5
2013 Sized Type Analysis for Logic Programs
Alejandro Serrano 0001, Pedro López-García 0001, Francisco Bueno, Manuel V. Hermenegildo
Theory Pract. Log. Program.2
2012 An overview of Ciao and its design philosophy
abstract
Abstract 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.4
2011 Profiling for Run-Time Checking of Computational Properties and Performance Debugging in Logic Programs
Edison Mera, Teresa Trigo, Pedro López-García 0001, Manuel V. Hermenegildo
PADL3
2011 CLP projection for constraint handling rules
abstract
This paper introduces and studies the notion of CLP projection for Constraint Handling Rules (CHR). The CLP projection consists of a naive translation of CHR programs into Constraint Logic Programs (CLP). We show that the CLP projection provides a safe operational and declarative approximation for CHR programs. We demonstrate moreover that a confluent CHR program has a least model, which is precisely equal to the least model of its CLP projection (closing hence a ten year-old conjecture by Abdennadher et al.). Finally, we illustrate how the notion of CLP projection can be used in practice to apply CLP analyzers to CHR. In particular, we show results from applying AProVE to prove termination, and CiaoPP to infer both complexity upper bounds and types for CHR programs.
Rémy Haemmerlé, Pedro López-García 0001, Manuel V. Hermenegildo
PPDP2
2009 Integrating Software Testing and Run-Time Checking in an Assertion Verification Framework
Edison Mera, Pedro López-García 0001, Manuel V. Hermenegildo
ICLP2
2008 Towards execution time estimation in abstract machine-based languages
abstract
Abstract machines provide a certain separation between platform-dependent and platform-independent concerns in compilation. Many of the differences between architectures are encapsulated in the specific abstract machine implementation and the bytecode is left largely architecture independent. Taking advantage of this fact, we present a framework for estimating upper and lower bounds on the execution times of logic programs running on a bytecode-based abstract machine. Our approach includes a one-time, program-independent profiling stage which calculates constants or functions bounding the execution time of each abstract machine instruction. Then, a compile-time cost estimation phase, using the instruction timing information, infers expressions giving platform-dependent upper and lower bounds on actual execution time as functions of input data sizes for each program. Working at the abstract machine level makes it possible to take into account low-level issues in new architectures and platforms by just reexecuting the calibration stage instead of having to tailor the analysis for each architecture and platform. Applications of such predicted execution times include debugging/verification of time properties, certification of time properties in mobile code, granularity control in parallel/distributed computing, and resource-oriented specialization
Edison Mera, Pedro López-García 0001, Manuel Carro, Manuel V. Hermenegildo
PPDP2
2007 User-Definable Resource Bounds Analysis for Logic Programs
Jorge A. Navas, Edison Mera, Pedro López-García 0001, Manuel V. Hermenegildo
ICLP3
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
PADL2
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
ICLP2
2005 Abstraction carrying code and resource-awareness
abstract
Proof-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
PPDP3
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.4
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-Par3
2004 Determinacy Analysis for Logic Programs Using Mode and Type Information
Pedro López-García 0001, Francisco Bueno, Manuel V. Hermenegildo
LOPSTR1
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
SAS4
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
ICALP4
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
ICLP4
1997 Non-Failure Analysis for Logic Programs
Saumya K. Debray, Pedro López-García 0001, Manuel V. Hermenegildo
ICLP2
1996 A Methodology for Granularity-Based Control of Parallelism in Logic Programs
Pedro López-García 0001, Manuel V. Hermenegildo, Saumya K. Debray
J. Symb. Comput.1
1995 Efficient Term Size Computation for Granularity Control
Manuel V. Hermenegildo, Pedro López-García 0001
ICLP2
1994 Estimating the Computational Cost of Logic Programs
Saumya K. Debray, Pedro López-García 0001, Manuel V. Hermenegildo, Nai-Wei Lin
SAS2