Pedro B. Vasconcelos
University of Porto
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Pedro B. Vasconcelos.
implementation and application of functional languages | 2003
Pedro B. Vasconcelos; Kevin Hammond
This paper presents a type-based analysis for inferring size- and cost-equations for recursive, higher-order and polymorphic functional programs without requiring user annotations or unusual syntax. Our type reconstruction algorithm is capable of inferring first-order cost equations for a non-trivial subset of higher-order, recursive and polymorphic functions. We illustrate the approach with reference to some standard examples of recursive programs.
implementation and application of functional languages | 2002
Álvaro J. Rebón Portillo; Kevin Hammond; Hans-Wolfgang Loidl; Pedro B. Vasconcelos
Cost information can be exploited in a variety of contexts, including parallelizing compilers, autonomic GRIDs and real-time systems. In this paper, we introduce a novel type and effect system - the sized time system that is capable of determining upper bounds for both time and space costs, and which we initially intend to apply to determining good granularity for parallel tasks. The analysis is defined for a simple, strict, higher-order and polymorphic functional language, L, incorporating arbitrarily-sized list data structures. The inference algorithm implementing this analysis constructs cost- and size-terms for L- expressions, plus constraints over free size and cost variables in those terms that can be solved to produce information for higher-order functions. The paper presents both the analysis and the inference algorithm, providing examples that illustrate the primary features of the analysis.
international conference on functional programming | 2012
Hugo R. Simões; Pedro B. Vasconcelos; Mário Florido; Steffen Jost; Kevin Hammond
This paper describes the first successful attempt, of which we are aware, to define an automatic, type-based static analysis of resource bounds for lazy functional programs. Our analysis uses the automatic amortisation approach developed by Hofmann and Jost, which was previously restricted to eager evaluation. In this paper, we extend this work to a lazy setting by capturing the costs of unevaluated expressions in type annotations and by amortising the payment of these costs using a notion of lazy potential. We present our analysis as a proof system for predicting heap allocations of a minimal functional language (including higher-order functions and recursive data types) and define a formal cost model based on Launchburys natural semantics for lazy evaluation. We prove the soundness of our analysis with respect to the cost model. Our approach is illustrated by a number of representative and non-trivial examples that have been analysed using a prototype implementation of our analysis.
european symposium on programming | 2015
Pedro B. Vasconcelos; Steffen Jost; Mário Florido; Kevin Hammond
This paper presents a novel type-and-effect analysis for predicting upper-bounds on memory allocation costs for co-recursive definitions in a simple lazily-evaluated functional language. We show the soundness of this system against an instrumented variant of Launchbury’s semantics for lazy evaluation which serves as a formal cost model. Our soundness proof requires an intermediate semantics employing indirections. Our proof of correspondence between these semantics that we provide is thus a crucial part of this work.
Science of Computer Programming | 2015
Vitor Rodrigues; Benny Akesson; Mário Florido; Simão Melo de Sousa; João Pedro Pedroso; Pedro B. Vasconcelos
This article presents a semantics-based program verification framework for critical embedded real-time systems using the worst-case execution time (WCET) as the safety parameter. The verification algorithm is designed to run on devices with limited computational resources where efficient resource usage is a requirement. For this purpose, the framework of abstract-carrying code (ACC) is extended with an additional verification mechanism for linear programming (LP) by applying the certifying properties of duality theory to check the optimality of WCET estimates. Further, the WCET verification approach preserves feasibility and scalability when applied to multicore architectural models.The certifying WCET algorithm is targeted to architectural models based on the ARM instruction set and is presented as a particular instantiation of a compositional data-flow framework supported on the theoretic foundations of denotational semantics and abstract interpretation. The data-flow framework has algebraic properties that provide algorithmic transformations to increase verification efficiency, mainly in terms of verification time. The WCET analysis/verification on multicore architectures applies the formalism of latency-rate ( LR ) servers, and proves its correctness in the context of abstract interpretation, in order to ease WCET estimation of programs sharing resources. We present a verification framework for embedded real-time systems that uses the worst-case execution time as safety parameter.The verification mechanism uses the certifying properties of duality theory to check WCET estimates.The verification is performed on embedded systems that have low computational resources.We propose efficient verification of programs running on multicore architectures based on Abstract-Carrying Code.Experimental results demonstrate our claims on verification efficiency for a subset of the Malardalen WCET benchmarks.
Journal of Automated Reasoning | 2017
Steffen Jost; Pedro B. Vasconcelos; Mário Florido; Kevin Hammond
We present a static analysis for determining the execution costs of lazily evaluated functional languages, such as Haskell. Time- and space-behaviour of lazy functional languages can be hard to predict, creating a significant barrier to their broader acceptance. This paper applies a type-based analysis employing amortisation and cost effects to statically determine upper bounds on evaluation costs. While amortisation performs well with finite recursive data, we significantly improve the precision of our analysis for co-recursive programs (i.e. dealing with potentially infinite data structures) by tracking self-references. Combining these two approaches gives a fully automatic static analysis for both recursive and co-recursive definitions. The analysis is formally proven correct against an operational semantic that features an exchangeable parametric cost-model. An arbitrary measure can be assigned to all syntactic constructs, allowing to bound, for example, evaluation steps, applications, allocations, etc. Moreover, automatic inference only relies on first-order unification and standard linear programming solving. Our publicly available implementation demonstrates the practicability of our technique on editable non-trivial examples.
Archive | 2008
Pedro B. Vasconcelos
types for proofs and programs | 2006
Hugo R. Simões; Kevin Hammond; Mário Florido; Pedro B. Vasconcelos
implementation and application of functional languages | 2002
Álvaro J. Rebón Portillo; Kevin Hammond; Hans-Wolfgang Loidl; Pedro B. Vasconcelos
Archive | 2012
Pedro B. Vasconcelos