Research

Session Types for safe concurrent programming — from object-oriented protocols to lattice theory.

Publications

Session Type State Spaces Form Lattices

Alexandre Zua Caldeira — ICE — International Workshop on Interaction and Concurrency Experience, 2026

We prove that the state space of every well-formed session type, quotiented by strongly connected components, forms a bounded lattice; n-ary parallel composition yields product lattices. Two consequences follow: duality preserves the lattice up to isomorphism, and Gay–Hole width subtyping corresponds to lattice embedding for non-recursive types. We validate this on 108 benchmark protocols across networking, databases, distributed systems, AI, and fault tolerance: all form lattices, 93 distributive, 15 non-distributive. Mechanised in Lean 4 with two independently developed tool implementations.

Paper

Modular Session Types for Distributed Object-Oriented Programming

Simon J. Gay, Vasco T. Vasconcelos, António Ravara, Nils Gesbert, Alexandre Z. Caldeira — POPL — ACM SIGPLAN Symposium on Principles of Programming Languages, 2010

Session types allow communication protocols to be specified type-theoretically so that protocol implementations can be verified by static type-checking. We extend previous work on session types for distributed object-oriented languages in three ways. (1) We attach a session type to a class definition, to specify the possible sequences of method calls. (2) We allow a session type (protocol) implementation to be modularized, i.e. partitioned into separately-callable methods. (3) We treat session-typed communication channels as objects, integrating their session types with the session types of classes.

DOI

Dynamic Interfaces

Vasco T. Vasconcelos, Simon J. Gay, António Ravara, Nils Gesbert, Alexandre Z. Caldeira — FOOL — International Workshop on Foundations of Object-Oriented Languages, 2009

We define a small class-based object-oriented language in which the availability of methods depends on an object's abstract state: objects' interfaces are dynamic. Each class has a session type which provides a global specification of the availability of methods in each state. A key feature is that the abstract state of an object may depend on the result of a method whose return type is an enumeration. Static typing guarantees that methods are only called when they are available.

Paper

ConGu, Checking Java Classes Against Property-Driven Algebraic Specifications

João Abreu, Alexandre Caldeira, Antónia Lopes, Isabel Nunes, Luís S. Reis, Vasco T. Vasconcelos — Technical Report DI/FCUL TR-07-7 — Department of Informatics, University of Lisbon, 2007

ConGu is a tool that supports the checking of Java classes against property-driven algebraic specifications. This document presents the specification languages, the tool usage, and its implementation, version 1.32.

Paper