A mechanisation of the linear π-calculus that uses leftover typing and is based on a set of partial commutative monoids. The related paper can be found here.
This project has been tested with Agda 2.6.2 and Agda-Stdlib 1.7. You can typecheck the entire project as follows:
agda -i . --safe Everything.agda
The untyped syntax and semantics are defined in PiCalculus.Syntax and PiCalculus.Semantics, respectively.
The type system is based on a set of multiplicity algebras, for which the interface is defined in PiCalculus.LinearTypeSystem.Algebras.
Examples of such algebras are found in PiCalculus.LinearTypeSystem.Algebras.*.
The type system defined on top of them is in PiCalculus.LinearTypeSystem.
Example derivations can be found in PiCalculus.Examples.
Subject reduction is proven in PiCalculus.LinearTypeSystem.SubjectReduction.