A Coq library with the formalized theory of event structures and non-interleaving concurrency.
Currently includes a theory of the following semantic domains and their relationships:
- labelled transition systems
- pomset languages
- prime event structures
Also features several applications of the theory.
-
Formalization of several basic consistency models parametrized by the abstract datatype, defined according to the paper "Causal Consistency: Beyond Memory" by Matthieu Perrin, Achour Mostefaoui, Claude Jard (PPoPP 2016)
-
Incremental construction of prime event structures build from program-order and reads-from relations.
The library is under active development. Therefore the API is unstable and might be subject to further modifications.
For a more detailed description, see the documentation in the headers of source files.
-
common
- common definitions, lemmas, and notationsutils.v
- miscellaneousseq.v
- various additions to seq theory from mathcomprel.v
- additional facts about decidable binary relationsrel_algebra.v
- variuos additions to relation-algebra packageorder.v
- various additions to porder theory from mathcompwftype.v
- interface for types with well-founded partial orderinhtype.v
- interface for inhabited type, that is a type with one distinguished inhabitantident.v
- interface for types that can be used as identifiersmonoid.v
- theory of monoids and partial monoidsrewriting_system.v
- a piece of rewriting systems theory
-
concur
- semantic domains for concurrencylts.v
- labelled transition systems and (linear) traceslposet.v
- labelled partially ordered setspomset.v
- pomsets as quotient typespomset_lts.v
- a connection between pomset languages and labelled transition systemsprime_eventstruct.v
- prime event structuresporf_eventstruct.v
- prime event structure built from program-order and reads-from relationstransitionsystem.v
- incremental construction of event structure
-
lang
- syntax and semantics of concurrent languages and systemsrelaxed.v
- relaxed memory models parametrized by an abstract datatypesharedmem.v
- shared memory abstract datatyperegmachine.v
- simple parallel register machine with shared memory