Jesús Correas Fernández

dblp:82/4900 · also Jesús Correas · DBLP profile ↗
← Back
25ranked-venue papers
4as first author
4since 2021 · last 2025
0000-0002-3219-0799ORCID · corroborated

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

Software engineering, systems software and programming languages · 20 · 3 first-author · 4 since 2021Theory of computation · 8 · 2 first-authorArtificial intelligence and machine learning · 2 · 1 first-author
YearPublicationVenuePosition
2025 Harnessing heap analysis for the synthesis of superoptimized bytecode
Elvira Albert, Jesús Correas Fernández, Pablo Gordillo, Guillermo Román-Díez, Albert Rubio
J. Syst. Softw.2
2024 Synthesis of Sound and Precise Storage Cost Bounds via Unsound Resource Analysis and Max-SMT
abstract
A storage is a persistent memory whose contents are kept across different program executions. In the blockchain technology, storage contents are replicated and incur the largest costs of a program’s execution (a.k.a. gas fees). Storage costs are dynamically calculated using a rather complex model which assigns a much larger cost to the first access made in an execution to a storage key, and besides assigns different costs to write accesses depending on whether they change the values w.r.t. the initial and previous contents. Safely assuming the largest cost for all situations, as done in existing gas analyzers, is an overly-pessimistic approach that might render useless bounds because of being too loose. The challenge is to soundly, and yet accurately, synthesize storage bounds which take into account the dynamicity implicit to the cost model. Our solution consists in using an off-the-shelf static resource analysis —but do not always assuming a worst-case cost— and hence yielding unsound bounds; and then, in a posterior stage, computing corrections to recover soundness in the bounds by using a new Max-SMT based approach. We have implemented our approach and used it to improve the precision of two gas analyzers for Ethereum, gastap and asparagus. Experimental results on more than 400,000 functions show that we achieve great accuracy gains, up to 75%, on the storage bounds, being the most frequent gains between 10-20%.
Elvira Albert, Jesús Correas Fernández, Pablo Gordillo, Guillermo Román-Díez, Albert Rubio
ISSTA2
2023 Inferring Needless Write Memory Accesses on Ethereum Bytecode
abstract
Abstract Efficiency is a fundamental property of any type of program, but it is even more so in the context of the programs executing on the blockchain (known as smart contracts ). This is because optimizing smart contracts has direct consequences on reducing the costs of deploying and executing the contracts, as there are fees to pay related to their bytes-size and to their resource consumption (called gas ). Optimizing memory usage is considered a challenging problem that, among other things, requires a precise inference of the memory locations being accessed. This is also the case for the Ethereum Virtual Machine (EVM) bytecode generated by the most-widely used compiler, , whose rather unconventional and low-level memory usage challenges automated reasoning. This paper presents a static analysis, developed at the level of the EVM bytecode generated by , that infers write memory accesses that are needless and thus can be safely removed. The application of our implementation on more than 19,000 real smart contracts has detected about 6,200 needless write accesses in less than 4 hours. Interestingly, many of these writes were involved in memory usage patterns generated by that can be greatly optimized by removing entire blocks of bytecodes. To the best of our knowledge, existing optimization tools cannot infer such needless write accesses, and hence cannot detect these inefficiencies that affect both the deployment and the execution costs of Ethereum smart contracts.
Elvira Albert, Jesús Correas Fernández, Pablo Gordillo, Guillermo Román-Díez, Albert Rubio
TACAS (1)2
2021 Don't run on fumes - Parametric gas bounds for smart contracts
Elvira Albert, Jesús Correas Fernández, Pablo Gordillo, Guillermo Román-Díez, Albert Rubio
J. Syst. Softw.2
2020 Smart, and also Reliable and Gas-Efficient, Contracts
abstract
A smart contract is a software program that runs on top of a blockchain. It contains a collection of public functions that can be invoked within the transactions launched over the contract by parties interacting with it. Being computer programs, well-studied formal verification techniques can be applied to them. Indeed, smart contracts are a very interesting application domain for validation, verification and optimization techniques since (1) they are relatively small in size, hence the application of these techniques scales better than when applied to larger industrial code, (2) they are valuable (in the corresponding blockchain cryptocurrency), hence software bugs or inefficiencies can cause economical losses and there is much interest in formally proving their safety and security, and (3) they require proving new specific properties to ensure their reliability and efficiency.
Elvira Albert, Jesús Correas Fernández, Pablo Gordillo, Guillermo Román-Díez, Albert Rubio
ICST2
2020 GASOL: Gas Analysis and Optimization for Ethereum Smart Contracts
abstract
Abstract We present the main concepts, components, and usage of G asol , a Gas AnalysiS and Optimization tooL for Ethereum smart contracts. G asol offers a wide variety of cost models that allow inferring the gas consumption associated to selected types of EVM instructions and/or inferring the number of times that such types of bytecode instructions are executed. Among others, we have cost models to measure only storage opcodes, to measure a selected family of gas-consumption opcodes following the Ethereum’s classification, to estimate the cost of a selected program line, etc. After choosing the desired cost model and the function of interest, G asol returns to the user an upper bound of the cost for this function. As the gas consumption is often dominated by the instructions that access the storage, G asol uses the gas analysis to detect under-optimized storage patterns, and includes an (optional) automatic optimization of the selected function. Our tool can be used within an Eclipse plugin for which displays the gas and instructions bounds and, when applicable, the gas-optimized function.
Elvira Albert, Jesús Correas Fernández, Pablo Gordillo, Guillermo Román-Díez, Albert Rubio
TACAS (2)2
2019 SAFEVM: a safety verifier for Ethereum smart contracts
abstract
Ethereum smart contracts are public, immutable and distributed and, as such, they are prone to vulnerabilities sourcing from programming mistakes of developers. This paper presents SAFEVM, a verification tool for Ethereum smart contracts that makes use of state-of-the-art verification engines for C programs. SAFEVM takes as input an Ethereum smart contract (provided either in Solidity source code, or in compiled EVM bytecode), optionally with assert and require verification annotations, and produces in the output a report with the verification results. Besides general safety annotations, SAFEVM handles the verification of array accesses: it automatically generates SV-COMP verification assertions such that C verification engines can prove safety of array accesses. Our experimental evaluation has been undertaken on all contracts pulled from etherscan.io (more than 24,000) by using as back-end verifiers CPAchecker, SeaHorn and VeryMax.
Elvira Albert, Jesús Correas Fernández, Pablo Gordillo, Guillermo Román-Díez, Albert Rubio
ISSTA2
2019 Peak resource analysis of concurrent distributed systems
Elvira Albert, Jesús Correas Fernández, Guillermo Román-Díez
J. Syst. Softw.2
2018 Enhancing set constraint solvers with bound consistency
Jesús Correas Fernández, Sonia Estévez Martín, Fernando Sáenz-Pérez
Expert Syst. Appl.1
2018 Parallel Cost Analysis
abstract
This article presents parallel cost analysis , a static cost analysis targeting to over-approximate the cost of parallel execution in distributed systems. In contrast to the standard notion of serial cost , parallel cost captures the cost of synchronized tasks executing in parallel by exploiting the true concurrency available in the execution model of distributed processing. True concurrency is challenging for static cost analysis, because the parallelism between tasks needs to be soundly inferred, and the waiting and idle processor times at the different locations need to be accounted for. Parallel cost analysis works in three phases: (1) it performs a block-level analysis to estimate the serial costs of the blocks between synchronization points in the program; (2) it then constructs a distributed flow graph (DFG) to capture the parallelism, the waiting, and idle times at the locations of the distributed system; and (3) the parallel cost can finally be obtained as the path of maximal cost in the DFG. We prove the correctness of the proposed parallel cost analysis, and provide a prototype implementation to perform an experimental evaluation of the accuracy and feasibility of the proposed analysis.
Elvira Albert, Jesús Correas Fernández, Einar Broch Johnsen, Violet Ka I Pun, Guillermo Román-Díez
ACM Trans. Comput. Log.2
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
FM3
2015 Parallel Cost Analysis of Distributed Systems
Elvira Albert, Jesús Correas Fernández, Einar Broch Johnsen, Guillermo Román-Díez
SAS2
2015 Non-cumulative Resource Analysis
Elvira Albert, Jesús Correas Fernández, Guillermo Román-Díez
TACAS2
2015 Quantified abstract configurations of distributed systems
abstract
Abstract 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.2
2015 Object-sensitive cost analysis for concurrent objects
abstract
Summary 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.3
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.2
2014 Static Inference of Transmission Data Sizes in Distributed Systems
Elvira Albert, Jesús Correas Fernández, Enrique Martin-Martin, Guillermo Román-Díez
ISoLA (2)2
2014 Peak Cost Analysis of Distributed Systems
Elvira Albert, Jesús Correas Fernández, Guillermo Román-Díez
SAS2
2013 Quantified Abstractions of Distributed Systems
Elvira Albert, Jesús Correas Fernández, Germán Puebla, Guillermo Román-Díez
IFM2
2012 Incremental resource usage analysis
abstract
The 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
PEPM2
2008 A practical type analysis for verification of modular prolog programs
abstract
Regular 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
PEPM2
2006 Context-Sensitive Multivariant Assertion Checking in Modular Programs
Pawel Pietrzak, Jesús Correas Fernández, Germán Puebla, Manuel V. Hermenegildo
LPAR2
2005 Experiments in Context-Sensitive Analysis of Modular Programs
Jesús Correas Fernández, Germán Puebla, Manuel V. Hermenegildo, Francisco Bueno
LOPSTR1
2004 A Generic Persistence Model for (C)LP Systems (and Two Useful Implementations)
Jesús Correas Fernández, José M. Gómez, Manuel Carro, Daniel Cabeza, Manuel V. Hermenegildo
PADL1
2003 A Generic Persistence Model for (C)LP Systems
Jesús Correas Fernández, José M. Gómez, Manuel Carro, Daniel Cabeza, Manuel V. Hermenegildo
ICLP1