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.agdatypes, session types, equivalence, subtyping, duality, along with some lemmasSyntax.agdatyped expressions (A normal form), some auxiliary lemmasGlobal.agdasession contexts, splitting, inactive, (very technical) splitting lemmasChannel.agdavalid channel references, several versions of vcr-match for different rendezvousValues.agdavalues, environments, and auxiliary lemmasSession.agdacontinuations, commands, interpreter for expressionsrun, lifting, thread pools, several matchWait functionsSchedule.agdastep function and interpreter for thread poolsschedule, main entry pointstart
Furthermore, there are some auxiliary modules.
DSyntax.agdasyntax in direct styleANF.agdatransformer from direct style DSyntax to SyntaxExamples.agdaseveral example programs exercising progressively difficult featuresRun.agdarunning a couple of examples (very inefficient)ProcessSyntax.agdatyped syntax for process termsProcessRun.agdadefinitions to run a process term + many auxiliary lemmasAsync.agdadefinitions for asynchronous session types and operations thereonAexample.agdaexamples using asynchronous channels