Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/verse-lab/arboreta
Mechanised Reasoning about Array-Based Trees in Separation Logic
https://github.com/verse-lab/arboreta
coq data-race-detection formal-verification generic-tree logical-clock rosetree separation-logic vector-clock
Last synced: about 1 month ago
JSON representation
Mechanised Reasoning about Array-Based Trees in Separation Logic
- Host: GitHub
- URL: https://github.com/verse-lab/arboreta
- Owner: verse-lab
- License: bsd-2-clause
- Created: 2023-11-23T08:09:47.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-01-06T10:14:20.000Z (about 1 year ago)
- Last Synced: 2024-11-06T05:43:25.399Z (3 months ago)
- Topics: coq, data-race-detection, formal-verification, generic-tree, logical-clock, rosetree, separation-logic, vector-clock
- Language: Coq
- Homepage:
- Size: 491 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🌲 Arboreta 🌲
A small library for facilitating proofs about rooted labeled trees (or rose trees/generic trees) in Coq, and helping verifying C code that involves the use of array-based trees with VST (still, in Coq).
## Building Requirements
Coq:
- 8.16.1Required Coq package(s) for compiling the files inside `utils/` and `clocks/`:
- `stdpp` 1.8.0Required Coq package(s) for compiling the files inside `vst/`:
- VST 2.11.1
- CompCert 3.11The requirements above might be satisfied by installing [this version of Coq platform](https://github.com/coq/platform/blob/main/doc/README~8.16~2022.09.md).
## Directory Organization
- `clocks`: Coq formalization of tree clock and degenerated tree clock (with no attached clock information).
- `utils`: Coq utility files.
- `extraction`: Originally for testing the Coq implementation via extraction; now for testing various things. Check [`extraction/README.md`](extraction/README.md) for details.
- `vst`: VST verification of tree clock (in C).
- `race-detector`: The data race detectors used in evaluation.The pure part of the library (including **Arboreta-P** and the loop invariant template for non-recursive traversals) is in the monolithic file `utils/rosetree.v`. For the separation logic related part, it is in `vst/verif_treeclock.v`. Currently we have only instantiated the separation logic related part for tree clock; we will later decouple it from tree clock and make it reusable for different tree data structures.
## Building Instructions
```shell
bash clightgen.sh # only if you are going to compile the files inside `vst/`
make
```