Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/verse-lab/sisyphus
Mostly Automated Proof Repair for Verified Libraries
https://github.com/verse-lab/sisyphus
coq curry-howard-isomorphism formal-verification higher-order-functions invariant-inference ocaml pldi-artifact proof-repair separation-logic
Last synced: 3 months ago
JSON representation
Mostly Automated Proof Repair for Verified Libraries
- Host: GitHub
- URL: https://github.com/verse-lab/sisyphus
- Owner: verse-lab
- License: agpl-3.0
- Created: 2022-02-19T12:03:38.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2023-06-01T14:18:07.000Z (over 1 year ago)
- Last Synced: 2024-09-29T10:41:58.360Z (4 months ago)
- Topics: coq, curry-howard-isomorphism, formal-verification, higher-order-functions, invariant-inference, ocaml, pldi-artifact, proof-repair, separation-logic
- Language: OCaml
- Homepage: https://verse-lab.github.io/sisyphus/
- Size: 2.17 MB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 10
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
Sisyphus: Proof Repair at Scale
Idea: Repair proofs of programs after refactoring.
## Setup
Setting up the project is mostly automated by the opam file.
Simply create a new local opam switch, and opam will handle installing all the dependencies:
```
opam switch create . 4.12.0
```Note: you will need the coq-released repo installed and set as a default for fresh-switches, otherwise you will get a complaint about unknown packages cfml:
```
opam repo add coq-released https://coq.inria.fr/opam/released --all --set-default
```## Building and Running Benchmarks
Once you have installed Sisyphus, to build the project, simply call dune:
```
dune build
```Then, to run the benchmarks:
```
dune runtest
```To run a particular benchmark, simply run:
```
dune runtest ./benchmarks/
```To update the build rules (for example, when you update resources/common, or add a new example):
```
dune build @gen-build-rules --auto-promote
```Note: when running the benchmarks, you may also want to enable the
`SIS_FAST_BENCHMARK=1` in your environment, to avoid the benchmarks
building the common directory repeatedly on each test.## Project structure
```
.
|-- LICENSE
|-- readme.md
|-- dune-project
|-- benchmarks
|-- resources
|-- bin
|-- lib
| |-- dune
| |-- coq
| |-- dynamic
| |-- expr_generator
| |-- lang
| |-- plugin
| |-- proof_analysis
| |-- proof_generator
| |-- proof_parser
| |-- proof_reduction
| |-- proof_spec
| |-- proof_utils
| |-- configuration
| `-- utils
|-- scripts
`-- sisyphus.opam
```Most of the magic happens in the `./lib` directory:
| Directory | Description |
|-----------------|-----------------------------------------------------------------------|
| coq | Safe wrapper over Coq API |
| dynamic | Dynamic execution and tracing of OCaml programs |
| expr_generator | Enumerative synthesis of expressions |
| lang | Simplified OCaml AST and types |
| plugin | Coq Plugin to perform Ultimate-reduction |
| proof_analysis | Performs analysis of Coq proof terms (proof reduction etc.) |
| proof_generator | Synthesises new proof scripts for a program |
| proof_parser | Parses old proof scripts using the Coq API |
| proof_reduction | Vendored copy of Coq reduction code extended to do Ultimate-reduction |
| proof_spec | Simplified encoding of CFML specifications |
| proof_utils | Collection of utilities for manipulating Coq objects from OCaml |
| configuration | Generic configuration, preferences and logging options for the tool |
| utils | Generic utilities used throughout the project |## Requirements
| Packages | Version | Notes |
|:---------------|:---------|:------------------------------------------|
| cmdliner | 1.0.4 | important otherwise coq-serapi will crash |
| coq | 8.15.1 | |
| coq-serapi | | |
| coq-cfml | 20220112 | |
| coq-cfml-basis | 20220112 | |
| cfml | 20220112 | |
| containers | 3.7 | |
| nottui | 0.2 | |
| iter | 1.4 | |
| bos | 0.2.1 | |
| alcotest | 1.5.0 | |
| z3 | 4.8.14 | |
| sedlex | 2.5 | |
| ppx_blob | 0.7.2 | |