Francisco Martins

dblp:12/2993 · DBLP profile ↗
← Back
11ranked-venue papers
0as first author
2since 2021 · last 2023
—ORCID · conflict

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

Software engineering, systems software and programming languages · 5 · 1 since 2021Systems, architecture and hardware · 2Theory of computation · 1

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
5 papers
Concurrent programming · 59% Programming languages and type systems · 21% Program verification · 20%
Computer architecture, parallel and distributed computing, and storage systems
4 papers
Parallel and multicore computing · 78% Distributed systems · 22%

Topics — the 23 heaviest of 25, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Concurrent programming › concurrency correctness
deadlock freedom
0.922022
A Type Discipline for Message Passing Parallel Programs · ACM Trans. Program. Lang. Syst. 2022
Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangers · Proc. ACM Program. Lang. 2017
Program verification
dynamic verification
0.622019
Dynamic Deadlock Verification for General Barrier Synchronisation · ACM Trans. Program. Lang. Syst. 2019
Dynamic deadlock verification for general barrier synchronisation · PPoPP 2015
Concurrent programming
message passing
0.612022
A Type Discipline for Message Passing Parallel Programs · ACM Trans. Program. Lang. Syst. 2022
Programming languages and type systems › type systems › behavioral type systems
session types
0.612022
A Type Discipline for Message Passing Parallel Programs · ACM Trans. Program. Lang. Syst. 2022
Programming languages and type systems › type systems
type systems for concurrency
0.612022
A Type Discipline for Message Passing Parallel Programs · ACM Trans. Program. Lang. Syst. 2022
Concurrent programming
deadlock detection
0.412019
Dynamic Deadlock Verification for General Barrier Synchronisation · ACM Trans. Program. Lang. Syst. 2019
Concurrent programming
concurrency bugs
0.312017
Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangers · Proc. ACM Program. Lang. 2017
Concurrent programming › concurrency bugs
data races
0.312017
Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangers · Proc. ACM Program. Lang. 2017
Concurrent programming › concurrency bugs
data race freedom
0.312017
Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangers · Proc. ACM Program. Lang. 2017
Concurrent programming › parallel programming models
futures
0.312017
Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangers · Proc. ACM Program. Lang. 2017
Program verification › concurrent program verification
deadlock verification
0.212015
Dynamic deadlock verification for general barrier synchronisation · PPoPP 2015
Program verification
protocol verification
0.212015
Protocol-based verification of message-passing parallel programs · OOPSLA 2015
Parallel and multicore computing › synchronization
barrier synchronization
0.212015
Dynamic deadlock verification for general barrier synchronisation · PPoPP 2015
Parallel and multicore computing
concurrent programming
0.212015
Dynamic deadlock verification for general barrier synchronisation · PPoPP 2015
Distributed systems › concurrency control
deadlock detection
0.212015
Dynamic deadlock verification for general barrier synchronisation · PPoPP 2015
Parallel and multicore computing › parallel programming models
message passing
0.212015
Protocol-based verification of message-passing parallel programs · OOPSLA 2015
Parallel and multicore computing
MPI
0.212015
Protocol-based verification of message-passing parallel programs · OOPSLA 2015
Parallel and multicore computing
parallel programming models
0.212015
Protocol-based verification of message-passing parallel programs · OOPSLA 2015
Parallel and multicore computing
parallel programming models and runtimes
0.212022
A Type Discipline for Message Passing Parallel Programs · ACM Trans. Program. Lang. Syst. 2022
Parallel and multicore computing › synchronization
distributed barrier
0.112019
Dynamic Deadlock Verification for General Barrier Synchronisation · ACM Trans. Program. Lang. Syst. 2019
Distributed systems › group communication › group membership
dynamic membership
0.112019
Dynamic Deadlock Verification for General Barrier Synchronisation · ACM Trans. Program. Lang. Syst. 2019
Program verification › proof assistants
coq
0.112017
Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangers · Proc. ACM Program. Lang. 2017
Distributed systems
fault tolerance
0.112015
Dynamic deadlock verification for general barrier synchronisation · PPoPP 2015

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

wait-for graph · 1.2state graph · 1.2type soundness proof · 1.1operational semantics · 1.1coq proof assistant · 0.8event-based concurrency representation · 0.4dependent type system · 0.4formal proof · 0.3cycle detection · 0.3coq · 0.3software verification · 0.2
YearPublicationVenuePosition
2023 Shelley: A Framework for Model Checking Call Ordering on Hierarchical Systems
Carlos Mão de Ferro, Tiago Cogumbreiro, Francisco Martins
COORDINATION3
2022 A Type Discipline for Message Passing Parallel Programs
abstract
We presentParTypes, a type discipline for parallel programs. The model we have in mind comprises a fixed number of processes running in parallel and communicating via collective operations or point-to-point synchronous message exchanges. A type describes a protocol to be followed by each processes in a given program. We present the type theory, a core imperative programming language and its operational semantics, and prove that type checking is decidable (up to decidability of semantic entailment) and that well-typed programs do not deadlock and always terminate. The article is accompanied by a large number of examples drawn from the literature on parallel programming.
Vasco Thudichum Vasconcelos, Francisco Martins, Hugo A. López 0001, Nobuko Yoshida
ACM Trans. Program. Lang. Syst.2
2019 Dynamic Deadlock Verification for General Barrier Synchronisation
abstract
We present Armus, a verification tool for dynamically detecting or avoiding barrier deadlocks. The core design of Armus is based on phasers, a generalisation of barriers that supports split-phase synchronisation, dynamic membership, and optional-waits. This allows Armus to handle the key barrier synchronisation patterns found in modern languages and libraries. We implement Armus for X10 and Java, giving the first sound and complete barrier deadlock verification tools in these settings. Armus introduces a novel event-based graph model of barrier concurrency constraints that distinguishes task-event and event-task dependencies. Decoupling these two kinds of dependencies facilitates the verification of distributed barriers with dynamic membership, a challenging feature of X10. Further, our base graph representation can be dynamically switched between a task-to-task model, Wait-for Graph (WFG), and an event-to-event model, State Graph (SG), to improve the scalability of the analysis. Formally, we show that the verification is sound and complete with respect to the occurrence of deadlock in our core phaser language, and that switching graph representations preserves the soundness and completeness properties. These results are machine checked with the Coq proof assistant. Practically, we evaluate the runtime overhead of our implementations using three benchmark suites in local and distributed scenarios. Regarding deadlock detection, distributed scenarios show negligible overheads and local scenarios show overheads below 1.15×. Deadlock avoidance is more demanding, and highlights the potential gains from dynamic graph selection. In one benchmark scenario, the runtime overheads vary from 1.8× for dynamic selection, 2.6× for SG-static selection, and 5.9× for WFG-static selection.
Tiago Cogumbreiro, Raymond Hu, Francisco Martins, Nobuko Yoshida
ACM Trans. Program. Lang. Syst.3
2017 Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangers
abstract
Futures are an elegant approach to expressing parallelism in functional programs. However, combining futures with imperative programming (as in C++ or in Java) can lead to pernicious bugs in the form of data races and deadlocks, as a consequence of uncontrolled data flow through mutable shared memory. In this paper we introduce the Known Joins (KJ) property for parallel programs with futures, and relate it to the Deadlock Freedom (DF) and the Data-Race Freedom (DRF) properties. Our paper offers two key theoretical results: 1) DRF implies KJ, and 2) KJ implies DF. These results show that data-race freedom is sufficient to guarantee deadlock freedom in programs with futures that only manipulate unsynchronized shared variables. To the best of our knowledge, these are the first theoretical results to establish sufficient conditions for deadlock freedom in imperative parallel programs with futures, and to characterize the subset of data races that can trigger deadlocks (those that violate the KJ property). From result 2), we developed a tool that avoids deadlocks in linear time and space when KJ holds, i.e., when there are no data races among references to futures. When KJ fails, the tool reports the data race and optionally falls back to a standard deadlock avoidance algorithm by cycle detection. Our tool verified a dataset of ∼2,300 student’s homework solutions and found one deadlocked program. The performance results obtained from our tool are very encouraging: a maximum slowdown of 1.06× on a 16-core machine, always outperforming deadlock avoidance via cycle-detection. Proofs of the two main results were formalized using the Coq proof assistant.
Tiago Cogumbreiro, Rishi Surendran, Francisco Martins, Vivek Sarkar, Vasco Thudichum Vasconcelos, Max Grossman
Proc. ACM Program. Lang.3
2016 A safe-by-design programming language for wireless sensor networks
Luís M. B. Lopes, Francisco Martins
J. Syst. Archit.2
2015 Protocol-based verification of message-passing parallel programs
abstract
We present ParTypes, a type-based methodology for the verification of Message Passing Interface (MPI) programs written in the C programming language. The aim is to statically verify programs against protocol specifications, enforcing properties such as fidelity and absence of deadlocks. We develop a protocol language based on a dependent type system for message-passing parallel programs, which includes various communication operators, such as point-to-point messages, broadcast, reduce, array scatter and gather. For the verification of a program against a given protocol, the protocol is first translated into a representation read by VCC, a software verifier for C. We successfully verified several MPI programs in a running time that is independent of the number of processes or other input parameters. This contrasts with alternative techniques, notably model checking and runtime verification, that suffer from the state-explosion problem or that otherwise depend on parameters to the program itself. We experimentally evaluated our approach against state-of-the-art tools for MPI to conclude that our approach offers a scalable solution.
Hugo A. López 0001, Eduardo R. B. Marques, Francisco Martins, Nicholas Ng, César Augusto Ribeiro dos Santos, Vasco Thudichum Vasconcelos, Nobuko Yoshida
OOPSLA3
2015 Dynamic deadlock verification for general barrier synchronisation
abstract
We present Armus, a dynamic verification tool for deadlock detection and avoidance specialised in barrier synchronisation. Barriers are used to coordinate the execution of groups of tasks, and serve as a building block of parallel computing. Our tool verifies more barrier synchronisation patterns than current state-of-the-art. To improve the scalability of verification, we introduce a novel event-based representation of concurrency constraints, and a graph-based technique for deadlock analysis. The implementation is distributed and fault-tolerant, and can verify X10 and Java programs. To formalise the notion of barrier deadlock, we introduce a core language expressive enough to represent the three most widespread barrier synchronisation patterns: group, split-phase, and dynamic membership. We propose a graph analysis technique that selects from two alternative graph representations: the Wait-For Graph, that favours programs with more tasks than barriers; and the State Graph, optimised for programs with more barriers than tasks. We prove that finding a deadlock in either representation is equivalent, and that the verification algorithm is sound and complete with respect to the notion of deadlock in our core language. Armus is evaluated with three benchmark suites in local and distributed scenarios. The benchmarks show that graph analysis with automatic graph-representation selection can record a 7-fold execution increase versus the traditional fixed graph representation. The performance measurements for distributed deadlock detection between 64 processes show negligible overheads.
Tiago Cogumbreiro, Raymond Hu, Francisco Martins, Nobuko Yoshida
PPoPP3
2014 The stream-based service-centred calculus: a foundation for service-oriented programming
abstract
Abstract We give a formal account of stream-based, service-centered calculus (SSCC), a calculus for modelling service-based systems, suitable to describe both service composition (orchestration) and the protocols that services follow when invoked (conversation). The calculus includes primitives for defining and invoking services, for isolating conversations (called sessions) among clients and servers, and for orchestrating services. The calculus is equipped with a reduction and a labelled transition semantics related by an equivalence result. SSCC provides a good trade-off between expressive power for modelling and simplicity for analysis. We assess the expressive power by modelling van der Aalst workflow patterns and an automotive case study from the European project Sensoria. For analysis, we present a simple type system ensuring compatibility of client and service protocols. We also study the behavioural theory of the calculus, highlighting some axioms that capture the behaviour of the different primitives. As a final application of the theory, we define and prove correct some program transformations. These allow to start modelling a system from a typical UML Sequence Diagram, and then transform the specification to match the service-oriented programming style, thus simplifying its implementation using web services technology.
Luís Cruz-Filipe, Ivan Lanese, Francisco Martins, António Ravara, Vasco Thudichum Vasconcelos
Formal Aspects Comput.3
2013 Coordinating Phased Activities while Maintaining Progress
Tiago Cogumbreiro, Francisco Martins, Vasco Thudichum Vasconcelos
COORDINATION2
2012 Verification of MPI Programs Using Session Types
Kohei Honda 0001, Eduardo R. B. Marques, Francisco Martins, Nicholas Ng, Vasco Thudichum Vasconcelos, Nobuko Yoshida
EuroMPI3
2007 Disciplining Orchestration and Conversation in Service-Oriented Computing
abstract
We give a formal account of a calculus for modeling service-based systems, suitable to describe both service composition (orchestration) and the protocol that services run when invoked (conversation). The calculus includes primitives for defining and invoking services, for isolating conversations between clients and servers, and for orchestrating services. The calculus is equipped with a reduction and a labeled transition semantics related by an equivalence result. To hint how the structuring mechanisms of the language can be exploited for static analysis we present a simple type system guaranteeing the compatibility between client and server protocols, an application of bisimilarity to prove equivalence among services, and we discuss deadlock-avoidance.
Ivan Lanese, Francisco Martins, Vasco Thudichum Vasconcelos, António Ravara
SEFM2