https://github.com/input-output-hk/thorn-calculus
A general-purpose process calculus with support for arbitrary data
https://github.com/input-output-hk/thorn-calculus
concurrency distributed-systems process-calculus
Last synced: 3 months ago
JSON representation
A general-purpose process calculus with support for arbitrary data
- Host: GitHub
- URL: https://github.com/input-output-hk/thorn-calculus
- Owner: input-output-hk
- License: apache-2.0
- Created: 2022-01-21T19:06:14.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-01-23T18:08:22.000Z (over 2 years ago)
- Last Synced: 2025-03-12T06:02:28.265Z (about 1 year ago)
- Topics: concurrency, distributed-systems, process-calculus
- Language: Isabelle
- Homepage:
- Size: 262 KB
- Stars: 2
- Watchers: 7
- Forks: 2
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
Overview
========
The `thorn-calculus` library contains the Þ-calculus, which is a
general-purpose process calculus. The Þ-calculus is embedded in
Isabelle/HOL, using higher-order abstract syntax (HOAS). The use of HOAS
allows us to have the object language (the Þ-calculus) only deal with
the key features of process calculi, which are concurrency and
communication, and leave the treatment of local names, data,
computation, conditional execution, and repetition to the meta-language
(Isabelle/HOL).
The Þ-calculus strongly resembles the asynchronous π-calculus. Processes
communicate via asynchronous channels, which can be global or created
locally. Channels are first-class and can therefore be transmitted
through other channels, thus making them visible outside their original
scopes. This is the mobility feature pioneered by the (synchronous)
π-calculus.
Requirements
============
You need Isabelle2022 to use this Isabelle library. You can obtain
Isabelle2022 from the [Isabelle website][isabelle].
[isabelle]:
https://isabelle.in.tum.de/
"Isabelle"
In addition, you need the following Isabelle sessions:
* [`ZFC_in_HOL`](https://www.isa-afp.org/entries/ZFC_in_HOL.html)
* [`Equivalence_Reasoner`](https://github.com/input-output-hk/equivalence-reasoner)
* [`Transition_Systems`](https://github.com/input-output-hk/transition-systems)
Setup
=====
To make this Isabelle library available to your Isabelle installation,
add the path of the `src` directory to the file
`$ISABELLE_HOME_USER/ROOTS`. You can find out the value of
`$ISABELLE_HOME_USER` by running the following command:
isabelle getenv ISABELLE_HOME_USER
Building
========
Running `make` builds the PDF file that includes the documentation and
the code and places it in `$ISABELLE_BROWSER_INFO/IOG`. You can find out
the value of `$ISABELLE_BROWSER_INFO` by running the following command:
isabelle getenv ISABELLE_BROWSER_INFO
The makefile specifies two targets: `properly`, which is the default,
and `qnd`. With `properly`, fake proofs (`sorry`) are not accepted; with
`qnd`, quick-and-dirty mode is used and thus fake proofs are accepted.