This repository contains the Agda implementation. It compiles with Agda 2.5.4.2 and works with the standard library version 0.13. The development is structured in several modules and may be read in the following order.
Typing.agda
types, session types, equivalence, subtyping, duality, along with some lemmasSyntax.agda
typed expressions (A normal form), some auxiliary lemmasGlobal.agda
session contexts, splitting, inactive, (very technical) splitting lemmasChannel.agda
valid channel references, several versions of vcr-match for different rendezvousValues.agda
values, environments, and auxiliary lemmasSession.agda
continuations, commands, interpreter for expressionsrun
, lifting, thread pools, several matchWait functionsSchedule.agda
step function and interpreter for thread poolsschedule
, main entry pointstart
Furthermore, there are some auxiliary modules.
DSyntax.agda
syntax in direct styleANF.agda
transformer from direct style DSyntax to SyntaxExamples.agda
several example programs exercising progressively difficult featuresRun.agda
running a couple of examples (very inefficient)ProcessSyntax.agda
typed syntax for process termsProcessRun.agda
definitions to run a process term + many auxiliary lemmasAsync.agda
definitions for asynchronous session types and operations thereonAexample.agda
examples using asynchronous channels