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 CoqMakeFile
Compiling using the above will also generate a tests.exe
which can be run:
_build/default/test/tests.exe
make .merlin clean; dune build; coq_makefile -f _CoqProject -o CoqMakeFile; make -f CoqMakeFile; _build/default/test/tests.exe
Use 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 ajson
file.
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
step
relation with typeStep : Term -> Label -> Term -> Prop'
that captures state transitions in a LTS semantics. -
Reading terms
t : Term
. -
Building a state machine using
Step
for 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-map
helper 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