This repository contains a Coq plugin for automating bisimilarity proofs (which are currently taken from the methods detailed in "Advanced Topics in Bisimulation and Coinduction", Section 3.2.2).
Work in progress
Using coq 8.20.0, below is the "fool-poof" method:
make .merlin clean; dune build; coq_makefile -f _CoqProject -o CoqMakeFile; make -f CoqMakeFileCompiling using the above will also generate a tests.exe which can be run:
_build/default/test/tests.exemake .merlin clean; dune build; coq_makefile -f _CoqProject -o CoqMakeFile; make -f CoqMakeFile; _build/default/test/tests.exeUse the vscoq extension and build as shown above. Afterwards, you have to reload vscode. (This extension is helpful for this.)
Try adding this to your workspace settings .json file, under the "settings" field:
"vscoq.path": "/home/user/.opam/mebi/bin/vscoqtop"E.g.:
{ "settings": {
"vscoq.path": "/home/user/.opam/mebi/bin/vscoqtop"
} }Access this file by pressing
ctrl+,and then clicking the file icon button in the top right corner, which will open the settings as ajsonfile.
MeBi LTS <ident>.
<ident>should be the identifier of a relation with typeTerm -> Action -> Term -> Prop.
So far, this is essentially
coq/doc/plugins_tutorial/tuto1
but renamed. Here is the current TODO list.
-
Reading
steprelation with typeStep : Term -> Label -> Term -> Prop'that captures state transitions in a LTS semantics. -
Reading terms
t : Term. -
Building a state machine using
Stepfor termt -
Implementing one of the algoriths for deciding bisimilarity in Sangiorgi's book.
Questions:
- We need to build a proof in Coq that two terms are bisimilar.
We need the statement in terms of
Step, and turn the result of our algorithm into sequences of Coq tactics. - Tau transitions/weak bisimilarity?
- Open terms/use of existing lemmas?
-
evar-maphelper functions in coq-plugin-lib (recommended by tlringer)
- Popescu, A., Gunter, E.L. (2010). Incremental Pattern-Based Coinduction for Process Algebra and Its Isabelle Formalization
- Rodrigues, N., Sebe, M.O., Chen, X., Roşu, G. (2024). A Logical Treatment of Finite Automata.
- Stefanescu, A., Ciobaca, S., Moore, B., Serbanuta, T.F., Rosu, G. (2013). Reachability Logic in K