Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Enrique Martin-Martin is active.

Publication


Featured researches published by Enrique Martin-Martin.


tools and algorithms for construction and analysis of systems | 2014

SACO: Static analyzer for concurrent objects

Puri Arenas; Antonio Flores-Montoya; Samir Genaim; Miguel Gómez-Zamalloa; Enrique Martin-Martin; Germán Puebla; Guillermo Román-Díez

We present the main concepts, usage and implementation of SACO, a static analyzer for concurrent objects. Interestingly, SACO is able to infer both liveness (namely termination and resource boundedness) and safety properties (namely deadlock freedom) of programs based on concurrent objects. The system integrates auxiliary analyses such as points-to and may-happen-in-parallel, which are essential for increasing the accuracy of the aforementioned more complex properties. SACO provides accurate information about the dependencies which may introduce deadlocks, loops whose termination is not guaranteed, and upper bounds on the resource consumption of methods.


automated technology for verification and analysis | 2013

Termination and Cost Analysis of Loops with Concurrent Interleavings

Antonio Flores-Montoya; Samir Genaim; Enrique Martin-Martin

By following a rely-guarantee style of reasoning, we present a novel termination analysis for concurrent programs that, in order to prove termination of a considered loop, makes the assumption that the “shared-data that is involved in the termination proof of the loop is modified a finite number of times”. In a subsequent step, it proves that this assumption holds in all code whose execution might interleave with such loop. At the core of the analysis, we use a may-happen-in-parallel analysis to restrict the set of program points whose execution can interleave with the considered loop. Interestingly, the same kind of reasoning can be applied to infer upper bounds on the number of iterations of loops with concurrent interleavings. To the best of our knowledge, this is the first method to automatically bound the cost of such kind of loops.


tests and proofs | 2013

A Declarative Debugger for Sequential Erlang Programs

Rafael Caballero; Enrique Martin-Martin; Adrián Riesco; Salvador Tamarit

Declarative debuggers are semi-automatic debugging tools that abstract the execution details to focus on the program semantics. Erroneous computations are represented by suitable trees, which are traversed by asking questions to the user until a bug is found. This paper applies declarative debugging to the sequential subset of the language Erlang. The debugger takes the intermediate representation generated by Erlang systems, known as Core Erlang, and an initial error detected by the user, and locates an erroneous program function responsible for the error. In order to represent the erroneous computation, a semantic calculus for sequential Core Erlang programs is proposed. The debugger uses an abbreviation of the proof trees of this calculus as debugging trees, which allows us to prove the soundness of the approach. The technique has been implemented in a debugger tool publicly available.


workshop on functional and constraint logic programming | 2009

New results on type systems for functional logic programming

Francisco Javier López-Fraguas; Enrique Martin-Martin; Juan Rodríguez-Hortalá

Type systems are widely used in programming languages as a powerful tool providing safety to programs, and forcing the programmers to write code in a clearer way. Functional logic languages have inherited Damas & Milner type system from their functional part due to its simplicity and popularity. In this paper we address a couple of aspects that can be subject of improvement. One is related to a problematic feature of functional logic languages not taken under consideration by standard systems: it is known that the use of opaque HO patterns in left-hand sides of program rules may produce undesirable effects from the point of view of types. We re-examine the problem, and propose a Damas & Milner-like type system where certain uses of HO patterns (even opaque) are permitted while preserving type safety, as proved by a subject reduction result that uses HO-let-rewriting, a recently proposed reduction mechanism for HO functional logic programs. The other aspect is the different ways in which polymorphism of local definitions can be handled. At the same time that we formalize the type system, we have made the effort of technically clarifying the overall process of type inference in a whole program.


tools and algorithms for construction and analysis of systems | 2014

EDD: A Declarative Debugger for Sequential Erlang Programs

Rafael Caballero; Enrique Martin-Martin; Adrián Riesco; Salvador Tamarit

Declarative debuggers are semi-automatic debugging tools that abstract the execution details to focus on the program semantics. This paper presents a tool implementing this approach for the sequential subset of Erlang, a functional language with dynamic typing and strict evaluation. Given an erroneous computation, it first detects an erroneous function (either a “named” function or a lambda-abstraction), and then continues the process to identify the fragment of the function responsible for the error. Among its features it includes support for exceptions, predefined and built-in functions, higher-order functions, and trusting and undo commands.


ACM Transactions on Computational Logic | 2016

May-Happen-in-Parallel Analysis for Actor-Based Concurrency

Antonio Flores-Montoya; Samir Genaim; Enrique Martin-Martin

This article presents a may-happen-in-parallel (MHP) analysis for languages with actor-based concurrency. In this concurrency model, actors are the concurrency units such that, when a method is invoked on an actor a2 from a task executing on actor a1, statements of the current task in a1 may run in parallel with those of the (asynchronous) call on a2, and with those of transitively invoked methods. The goal of the MHP analysis is to identify pairs of statements in the program that may run in parallel in any execution. Our MHP analysis is formalized as a method-level (local) analysis whose information can be modularly composed to obtain application-level (global) information. The information yielded by the MHP analysis is essential to infer more complex properties of actor-based concurrent programs, for example, data race detection, deadlock freeness, termination, and resource consumption analyses can greatly benefit from the MHP relations to increase their accuracy. We report on MayPar, a prototypical implementation of an MHP static analyzer for a distributed asynchronous language.


Science of Computer Programming | 2015

A zoom-declarative debugger for sequential Erlang programs

Rafael Caballero; Enrique Martin-Martin; Adrián Riesco; Salvador Tamarit

We present a declarative debugger for sequential Erlang programs. The tool is started when a program produces some unexpected result, and proceeds asking questions to the user about the correctness of some subcomputations until an erroneous program function is found. Then, the user can refine the granularity by zooming in the function, checking the values bound to variables and the if/case/try-catch branches taken during the execution. We show by means of an extensive benchmark that the result is a usable, scalable tool that complements already existing debugging tools such as the Erlang tracer and Dialyzer. Since the technique is based on a formal calculus, we are able to prove the soundness and completeness of the approach. Present a declarative approach for debugging the sequential part of Erlang.Provide debugging granularity: it can find erroneous functions and bugs in functions code.Develop a tool and test it with real Erlang programs, obtaining promising usability results.Introduce a formalized natural semantics for sequential Core Erlang.


koli calling international conference on computing education research | 2012

FLOP, a free laboratory of programming

Luis Llana; Enrique Martin-Martin; Cristóbal Pareja-Flores

The Test Driven Design (TDD) methodology [4, 23, 8] is currently a very common approach for programming and software engineering learning. On-line judges are widely used in everyday teaching, and their use in the scope of programming contests is currently especially well known. There are good tools and collections of programming problems available for exams as well as for contests. We have developed a simple, light, and practical open laboratory. The term open is used here in two senses: It is free for students to use and free to download and distribute under the GPL license. This laboratory hosts programming problems, it allows the instructor to easily add new ones, and it also automatically assesses the solutions sent by the students. In addition to the system, we have developed a collection of programming problems for CS1/2, designed from a pedagogical point of view and covering several levels of difficulty.


partial evaluation and semantic-based program manipulation | 2011

Type classes in functional logic programming

Enrique Martin-Martin

Type classes provide a clean, modular and elegant way of writing overloaded functions. Functional logic programming languages (FLP in short) like Toy or Curry have adopted the Damas-Milner type system, so it seems natural to adopt also type classes in FLP. However, type classes has been barely introduced in FLP. A reason for this lack of success is that the usual translation of type classes using dictionaries presents some problems in FLP like the absence of expected answers due to a bad interaction of dictionaries with the call-time choice semantics for non-determinism adopted in FLP systems. In this paper we present a type-passing translation of type classes based on type-indexed functions and type witnesses that is well-typed with respect to a new liberal type system recently proposed for FLP. We argue the suitability of this translation for FLP because it improves the dictionary-based one in three aspects. First, it obtains programs which run as fast or faster---with an speedup from 1.05 to 2.30 in our experiments. Second, it solves the mentioned problem of missing answers. Finally, the proposed translation generates shorter and simpler programs.


formal methods | 2015

Resource Analysis: From Sequential to Concurrent and Distributed Programs

Puri Arenas; Jesús Correas; Samir Genaim; Miguel Gómez-Zamalloa; Enrique Martin-Martin; Germán Puebla; Guillermo Román-Díez

Resource analysis aims at automatically inferring upper/lower bounds on the worst/best-case cost of executing programs. Ideally, a resource analyzer should be parametric on the cost model, i.e., the type of cost that the user wants infer (e.g., number of steps, amount of memory allocated, amount of data transmitted, etc.). The inferred upper bounds have important applications in the fields of program optimization, verification and certification. In this talk, we will review the basic techniques used in resource analysis of sequential programs and the new extensions needed to handle concurrent and distributed systems.

Collaboration


Dive into the Enrique Martin-Martin's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar

Juan Rodríguez-Hortalá

Complutense University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Adrián Riesco

Complutense University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Samir Genaim

Complutense University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Rafael Caballero

Complutense University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Salvador Tamarit

Polytechnic University of Valencia

View shared research outputs
Top Co-Authors

Avatar

Antonio Flores-Montoya

Technische Universität Darmstadt

View shared research outputs
Top Co-Authors

Avatar

Guillermo Román-Díez

Technical University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Juan Rodr

Complutense University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Cristóbal Pareja-Flores

Complutense University of Madrid

View shared research outputs
Researchain Logo
Decentralizing Knowledge