Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

Ricardo Peña-Marí

dblp:p/RicardoPenaMari · also Ricardo Pena, Ricardo Peña · DBLP profile ↗
← Back
22ranked-venue papers
3as first author
0since 2021 · last 2020
0000-0001-5387-8931ORCID · verified

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

Software engineering, systems software and programming languages · 18 · 2 first-authorTheory of computation · 10 · 1 first-authorArtificial intelligence and machine learning · 1 · 1 first-author

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
2 papers
Programming languages and type systems · 64% Program analysis · 18% Program verification · 18%

Topics — the 3 heaviest of 5, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems › language implementation
abstract machines
0.212014
A resource semantics and abstract machine for Safe: A functional language with regions and explicit deallocation · Inf. Comput. 2014
Program analysis
resource analysis
0.112011
Certification of Safe Polynomial Memory Bounds · FM 2011
Programming languages and type systems
functional language
0.112014
A resource semantics and abstract machine for Safe: A functional language with regions and explicit deallocation · Inf. Comput. 2014

Methods — techniques the papers use, named apart from their topics

polynomial memory bounds · 0.1
YearPublicationVenuePosition
2020 An Assertional Proof of Red-Black Trees Using Dafny
Ricardo Peña-Marí
J. Autom. Reason.1
2020 Extending Liquid Types to Arrays
abstract
A liquid type is an ordinary Hindley-Milner type annotated with a logical predicate that states the properties satisfied by the elements of that type. Liquid types are a powerful tool for program verification, as programmers can use them to specify pre- and post conditions of their programs, whereas the predicates of intermediate variables and auxiliary functions are inferred automatically. Type inference is feasible in this context, as the logical predicates within liquid types are constrained to a quantifier-free logic to maintain decidability. In this article, we extend liquid types by allowing them to contain quantified properties on arrays so that they can be used to infer invariants on array-related programs (e.g., implementations of sorting algorithms). Although quantified logic is, in general, undecidable, we restrict properties on arrays to a decidable subset introduced by Bradley et al. We describe in detail the extended type system, the verification condition generator, and the iterative weakening algorithm for inferring invariants. After proving the correctness and completeness of these two algorithms, we apply them to find invariants on a set of algorithms involving array manipulations.
Manuel Montenegro, Susana Nieva, Ricardo Peña-Marí, Clara Segura
ACM Trans. Comput. Log.3
2017 Liquid Types for Array Invariant Synthesis
Manuel Montenegro, Susana Nieva, Ricardo Peña-Marí, Clara Segura
ATVA3
2015 A Generic Intermediate Representation for Verification Condition Generation
Manuel Montenegro, Ricardo Peña-Marí, Jaime Sánchez-Hernández
LOPSTR2
2015 Editorial of Special Issue Trends in Functional Programming 2011/12
Hans-Wolfgang Loidl, Ricardo Peña-Marí
Comput. Lang. Syst. Struct.2
2015 Shape analysis in a functional language by using regular languages
Manuel Montenegro, Ricardo Peña-Marí, Clara Segura
Sci. Comput. Program.2
2015 Space consumption analysis by abstract interpretation: Inference of recursive functions
Manuel Montenegro, Ricardo Peña-Marí, Clara Segura
Sci. Comput. Program.2
2015 Space consumption analysis by abstract interpretation: Reductivity properties
Manuel Montenegro, Ricardo Peña-Marí, Clara Segura
Sci. Comput. Program.2
2014 A resource semantics and abstract machine for Safe: A functional language with regions and explicit deallocation
Manuel Montenegro, Ricardo Peña-Marí, Clara Segura
Inf. Comput.2
2013 Shape analysis in a functional language by using regular languages
abstract
Shape analysis is concerned with the compile-time determination of the 'shape' the heap may take at runtime, meaning by this the pointer chains that may happen within, and between, the data structures built by the program. This includes detecting alias and sharing between the program variables.
Manuel Montenegro, Ricardo Peña-Marí, Clara Segura
PPDP2
2011 Certification of Safe Polynomial Memory Bounds
Javier de Dios, Ricardo Peña-Marí
FM2
2010 Certified Absence of Dangling Pointers in a Language with Explicit Deallocation
Javier de Dios, Manuel Montenegro, Ricardo Peña-Marí
IFM3
2009 A Certified Implementation on Top of the Java Virtual Machine
Javier de Dios, Ricardo Peña-Marí
FMICS2
2009 From natural semantics to C: A formal derivation of two STG machines
abstract
Abstract The Spineless Tag-less G-machine (STG machine) was defined as the target abstract machine for compiling the lazy functional language Haskell. It is at the heart of the Glasgow Haskell Compiler (GHC) which is claimed to be the Haskell compiler that generates the most efficient code. A high-level description of the STG machine can be found in Peyton Jones (In Journal of Functional programming, 2(2), 127–202, 1992), Marlow & Peyton Jones (In Sigplan Not., 39(9), 4–5, 2004), and Marlow & Peyton Jones (In Journal of Functional Programming, 16(4–5), 415–449, 2006). Should the reader be interested in a more detailed view, then the only additional information available is the Haskell code of GHC and the C code of its runtime system. It is hard to prove that this machine correctly implements the lazy semantics of Haskell. Part of the problem lies in the fact that the STG machine executes a bare-bones functional language, called STGL, much lower level than Haskell. Therefore, part of the correctness should be—and it is—established by showing that the translation from Haskell to STGL preserves Haskell's semantics. The other part involves showing that the STG machine correctly implements the lazy semantics of STGL. In this paper we provide a step-by-step formal derivation of the STG machine and of its compilation to C, starting from a natural semantics of STGL. Thus, our starting point is higher level than the descriptions found Peyton Jones (In Journal of Functional programming, 2(2), 127–202, 1992) and Marlow & Peyton Jones (In Sigplan Not., 39(9), 4–5, 2004), and our arrival point is lower level than those works. Additionally, there has been substantial changes between the so-called push/enter model of the STG machine described in Peyton Jones (In Journal of Functional programming, 2(2), 127–202, 1992), and the eval/apply model of the STG machine described in Marlow & Peyton Jones (In Sigplan Not., 39(9), 4–5, 2004). So, in fact, we derive two machines instead of one, starting from the same initial semantics. At each step we provide enough intuitions and explanations in order to understand the refinement, and then the formal definitions and statements proving that the derivation step is sound and complete. The main contribution of the paper is to show that an efficient machine such as the STG can be presented, understood, and formally reasoned about at different levels of abstraction.
Alberto de la Encina, Ricardo Peña-Marí
J. Funct. Program.2
2008 An Inference Algorithm for Guaranteeing Safe Destruction
Manuel Montenegro, Ricardo Peña-Marí, Clara Segura
LOPSTR2
2008 A type system for safe memory management and its proof of correctness
abstract
We present a destruction-aware type system for the functional language Safe, which is a first-order eager language with facilities for programmer controlled destruction and copying of data structures. It provides also regions, i.e. disjoint parts of the heap, where the program allocates data structures. The runtime system does not need a garbage collector and all allocation/deallocation actions are done in constant time.
Manuel Montenegro, Ricardo Peña-Marí, Clara Segura
PPDP2
2005 Parallel functional programming in Eden
abstract
Eden extends the non-strict functional language Haskell with constructs to control parallel evaluation of processes. Although processes are defined explicitly, communication and synchronisation issues are handled in a way transparent to the programmer. In order to offer effective support for parallel evaluation, Eden's coordination constructs override the inherently sequential demand-driven (lazy) evaluation strategy of its computation language Haskell. Eden is a general-purpose parallel functional language suitable for developing sophisticated skeletons – which simplify parallel programming immensely – as well as for exploiting more irregular parallelism that cannot easily be captured by a predefined skeleton. The paper gives a comprehensive description of Eden, its semantics, its skeleton-based programming methodology – which is applied in three case studies – its implementation and performance. Furthermore it points at many additional results that have been achieved in the context of the Eden project.
Rita Loogen, Yolanda Ortega-Mallén, Ricardo Peña-Marí
J. Funct. Program.3
2005 Non-determinism analyses in a parallel-functional language
abstract
The parallel-functional language Eden has a non-deterministic construct, the process abstraction merge, which interleaves a set of input lists to produce a single non-deterministic list. Its non-deterministic behaviour is a consequence of its reactivity: it immediately copies to the output list any value appearing at any of the input lists. This feature is essential in reactive systems and very useful in some deterministic parallel algorithms. The presence of non-determinism creates some problems such that some internal transformations in the compiler must be disallowed. The paper describes several non-determinism analyses developed for Eden aimed at detecting the parts of the program that, even in the presence of a process merge, still exhibit a deterministic behaviour. A polynomial cost algorithm which annotates Eden expressions is described in detail. A denotational semantics is described for Eden and the correctness of all the analyses is proved with respect to this semantics.
Ricardo Peña-Marí, Clara Segura
J. Funct. Program.1
2003 Formally deriving an STG machine
abstract
Starting from P. Sestoft semantics for lazy evaluation, we define a new semantics in which normal forms consist of variables pointing to lambdas or constructions. This is in accordance with the more recent changes in the Spineless Tagless G-machine (STG) machine, where constructions only appear in closures (lambdas only appeared in closures already in previous versions). We prove the equivalence between the new semantics and Sestoft's. Then, a sequence of STG machines are derived, formally proving the correctness of each derivation. The last machine consists of a few imperative instructions and its distance to a conventional language is minimal.The paper also discusses the differences between the final machine and the actual STG machine implemented in the Glasgow Haskell Compiler.
Alberto de la Encina, Ricardo Peña-Marí
PPDP2
2001 Parallel Functional Programming at Two Levels of Abstraction
abstract
The parallel functional language Eden extends Haskell with expressions to define and instantiate process systems. These extensions allow also the easy definition of skeletons as higherorder functions. P arallel programming is possible in Eden at two levels: Recursive programming and higher-order programming. At the lower level, processes are explicitly created by using recursive definitions. In this way, skeletons can be defined. This is very un usual, as most skeleton-based languages use an imperative language to create new skeletons. At the higher level, available sk eletons are used to create applications or to define new skeletons on top of the other ones. In this paper, we present five skeletons, most of them wellkno wn, covering a wide range of parallel structures. F or each one, sev eral Eden implementations are given, together with their corresponding cost models. Finally, some examples of application programming are shown, including predicted and actual results on a Beowulf cluster.
Ricardo Peña-Marí, Fernando Rubio 0001
PPDP1
1997 The Eden Coordination Model for Distributed Memory Systems
abstract
Eden is a concurrent declarative language that aims at both the programming of reactive systems and parallel algorithms on distributed memory systems. In this paper, we explain the computation and coordination model of Eden. We show how lazy evaluation in the computation language is fruitfully combined with the coordination language that is specifically designed for multicomputers and that aims at maximum parallelism.
Silvia Breitinger, Rita Loogen, Yolanda Ortega-Mallén, Ricardo Peña-Marí
HIPS4
1996 A New Look to Pattern Matching in Abstract Data Types
abstract
In this paper we present a construction smoothly integrating pattern matching with abstract data types. We review some previous proposals [19, 23, 20, 6, 1] and their drawbacks, and show how our proposal can solve them. In particular we pay attention to equational reasoning about programs containing this new facility. We also give its formal syntax and semantics, as well as some guidelines in order to compile the construction efficiently.
Pedro Palao-Gostanza, Ricardo Peña-Marí, Manuel Núñez 0001
ICFP2