Skip to content

Commit 3b08235

Browse files
committed
add meta.yml and generate boilerplate
1 parent db3f9e4 commit 3b08235

11 files changed

Lines changed: 428 additions & 121 deletions

File tree

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: Docker CI
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
pull_request:
8+
branches:
9+
- '**'
10+
11+
jobs:
12+
build:
13+
# the OS must be GNU/Linux to be able to use the docker-coq-action
14+
runs-on: ubuntu-latest
15+
strategy:
16+
matrix:
17+
image:
18+
- 'mathcomp/mathcomp-dev:coq-dev'
19+
- 'mathcomp/mathcomp:1.15.0-coq-8.16'
20+
- 'mathcomp/mathcomp:1.15.0-coq-8.15'
21+
- 'mathcomp/mathcomp:1.14.0-coq-8.15'
22+
- 'mathcomp/mathcomp:1.14.0-coq-8.14'
23+
- 'mathcomp/mathcomp:1.13.0-coq-8.15'
24+
- 'mathcomp/mathcomp:1.13.0-coq-8.14'
25+
fail-fast: false
26+
steps:
27+
- uses: actions/checkout@v3
28+
- uses: coq-community/docker-coq-action@v1
29+
with:
30+
custom_image: ${{ matrix.image }}
31+
custom_script: |
32+
{{before_install}}
33+
startGroup "Build disel dependencies"
34+
opam pin add -n -y -k path coq-disel .
35+
opam update -y
36+
opam install -y -j $(nproc) coq-disel --deps-only
37+
endGroup
38+
startGroup "Build disel"
39+
opam install -y -v -j $(nproc) coq-disel
40+
opam list
41+
endGroup
42+
startGroup "Build disel-examples dependencies"
43+
opam pin add -n -y -k path coq-disel-examples .
44+
opam update -y
45+
opam install -y -j $(nproc) coq-disel-examples --deps-only
46+
endGroup
47+
startGroup "Build disel-examples"
48+
opam install -y -v -j $(nproc) coq-disel-examples
49+
opam list
50+
endGroup
51+
startGroup "Uninstallation test"
52+
opam remove -y coq-disel-examples
53+
opam remove -y coq-disel
54+
endGroup
55+
56+
# See also:
57+
# https://github.com/coq-community/docker-coq-action#readme
58+
# https://github.com/erikmd/docker-coq-github-action-demo

.travis.yml

Lines changed: 0 additions & 54 deletions
This file was deleted.

Core/Make

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
-arg -w -arg -local-declaration
55
-arg -w -arg -redundant-canonical-projection
66
-arg -w -arg -projection-no-head-constant
7+
-arg -w -arg -deprecated-hint-without-locality
78

89
Domain.v
910
State.v

Examples/Querying/QueryHooked.v

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,6 +1097,7 @@ split=>//; try apply: (msg_story_rely _ _ _ _ _ _ _ H3 H0).
10971097
Defined.
10981098

10991099
Next Obligation.
1100+
try rename H into o.
11001101
apply: ghC=>i0 [[reqs resp] data][G0 H0] C0; apply: step.
11011102
apply: act_rule=>i1 R1/=; split; first by case: (rely_coh R1).
11021103
case=>[[[from tg] body] i2 i3|i2 i3]; last first.

Examples/TwoPhaseCommit/TwoPhaseParticipant.v

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ Program Definition receive_prep_req_loop (e : nat):
140140
Next Obligation. by apply: with_spec x. Defined.
141141
Next Obligation. by move:H; rewrite /rp_prep_req_inv (rely_loc' _ H0). Qed.
142142
Next Obligation.
143+
try rename H into o.
143144
apply:ghC=>i1 lg[/eqP->{o}/=E1]C1; apply: step.
144145
apply: act_rule=>i2/=R1; split; first by case: (rely_coh R1).
145146
case=>[[[from e']d i3 i4]|i3 i4]; last first.
@@ -277,6 +278,7 @@ Program Definition receive_commabrt_loop (e : nat) (c : bool):
277278
Next Obligation. by apply: (with_spec x). Defined.
278279
Next Obligation. by move:H; rewrite /rp_commabrt_inv (rely_loc' _ H0). Qed.
279280
Next Obligation.
281+
try rename H into o.
280282
apply:ghC=>i1 [lg d][/eqP->{o}/=E1]C1; apply: step.
281283
apply: act_rule=>i2/=R1; split; first by case: (rely_coh R1).
282284
case=>[[[from e']v i3 i4]|i3 i4]; last first.

README.md

Lines changed: 41 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,70 @@
1+
<!---
2+
This file was generated from `meta.yml`, please do not edit manually.
3+
Follow the instructions on https://github.com/coq-community/templates to regenerate.
4+
--->
15
# Disel: Distributed Separation Logic
26

3-
Implementation and case studies of Disel, a separation-style logic for
4-
compositional verification of distributed systems.
7+
[![Docker CI][docker-action-shield]][docker-action-link]
58

6-
This code accompanies the paper entitled [Programming and Proving with Distributed Protocols](http://homes.cs.washington.edu/~jrw12/disel.pdf)
7-
by Ilya Sergey, James R. Wilcox, and Zachary Tatlock, in the POPL 2018 proceedings.
9+
[docker-action-shield]: https://github.com/DistributedComponents/disel/workflows/Docker%20CI/badge.svg?branch=master
10+
[docker-action-link]: https://github.com/DistributedComponents/disel/actions?query=workflow:"Docker%20CI"
811

9-
## Building the Project
1012

11-
### Requirements
1213

13-
* [Coq 8.11 or later](https://coq.inria.fr)
14-
* [Mathematical Components 1.10.0 or later](http://math-comp.github.io/math-comp/) (`ssreflect` suffices)
15-
* [FCSL PCM library 1.3.0 or later](https://github.com/imdea-software/fcsl-pcm)
16-
* [OCaml 4.05.0 or later](https://ocaml.org) (to compile and run the extracted applications)
1714

18-
### Building Manually
15+
Disel is a framework for implementation and compositional verification of
16+
distributed systems and their clients in Coq. In Disel, users implement
17+
distributed systems using a domain specific language shallowly embedded in Coq
18+
which provides both high-level programming constructs as well as low-level
19+
communication primitives. Components of composite systems are specified in Disel
20+
as protocols, which capture system-specific logic and disentangle system definitions
21+
from implementation details.
1922

20-
If Coq is not installed such that its binaries like `coqc` and
21-
`coq_makefile` are in the `PATH`, then the `COQBIN` environment variable
22-
must be set to point to the directory containing such binaries. For
23-
example:
24-
```
25-
export COQBIN=/home/user/coq/bin/
26-
```
27-
28-
To build the whole project, including examples, simply run `make`
29-
in the root directory of the repository. For a faster build, use
30-
several parallel make jobs, e.g., `make -j 4`.
23+
## Meta
3124

32-
### Installation via OPAM
25+
- Author(s):
26+
- Ilya Sergey (initial)
27+
- James R. Wilcox (initial)
28+
- License: [BSD 2-Clause "Simplified" license](LICENSE)
29+
- Compatible Coq versions: 8.14 or later
30+
- Additional dependencies:
31+
- [MathComp](https://math-comp.github.io) 1.13.0 or later (`ssreflect` suffices)
32+
- [FCSL PCM](https://github.com/imdea-software/fcsl-pcm) 1.7.0 or later
33+
- Coq namespace: `DiSeL`
34+
- Related publication(s):
35+
- [Programming and Proving with Distributed Protocols](http://jamesrwilcox.com/disel.pdf) doi:[10.1145/3158116](https://doi.org/10.1145/3158116)
3336

34-
The latest release of the framework components of the project may be installed into Coq's
35-
`user-contrib` directory via [OPAM](https://opam.ocaml.org/doc/Install.html)
36-
for easy use in other developments; this will automatically install all
37-
requirements.
37+
## Building and installation instructions
3838

39-
Make sure OPAM is installed and use the following commands:
39+
The easiest way to install the latest released version of Disel: Distributed Separation Logic
40+
is via [OPAM](https://opam.ocaml.org/doc/Install.html):
4041

41-
```
42+
```shell
4243
opam repo add coq-released https://coq.inria.fr/opam/released
4344
opam install coq-disel
4445
```
4546

46-
As an alternative, a VM for a previous version has been provided for
47-
your convenience and is described below.
47+
To instead build and install manually, do:
4848

49-
## Project Structure
49+
``` shell
50+
git clone https://github.com/DistributedComponents/disel.git
51+
cd disel
52+
make # or make -j <number-of-cores-on-your-machine>
53+
make install
54+
```
5055

51-
* `Core` -- Disel implementation, metatheory and inference rules;
5256

53-
* `Examples` -- Case studies implemented in Disel
57+
## Project Structure
5458

59+
- `Core` -- Disel implementation, metatheory and inference rules;
60+
- `Examples` -- Case studies implemented in Disel
5561
- `Calculator` -- the calculator system;
56-
5762
- `Greeter` -- a toy "Hello World"-like protocol, where
5863
participants can only exchange greetings with each other;
59-
6064
- `TwoPhaseCommit` -- Two Phase Commit protocol implementation;
61-
6265
- `Query` -- querying protocol and its composition with Two Phase
6366
Commit via hooks;
64-
65-
* `shims` -- DiSeL runtime system
67+
- `shims` -- DiSeL runtime system
6668

6769
## VM Instructions
6870

coq-disel-calculator.opam

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,12 @@ synopsis: "Calculator implemented in Disel, a separation-style logic for composi
1111
build: [make "-j%{jobs}%" "calculator"]
1212
depends: [
1313
"ocaml" {>= "4.05.0"}
14-
"coq" {(>= "8.11" & < "8.13~") | (= "dev")}
15-
"coq-mathcomp-ssreflect" {(>= "1.10.0" & < "1.12~") | (= "dev")}
16-
"coq-fcsl-pcm" {(>= "1.3.0" & < "1.4.0") | (= "dev")}
14+
"coq" {>= "8.14"}
15+
"coq-mathcomp-ssreflect" {>= "1.13"}
16+
"coq-fcsl-pcm" {>= "1.7.0"}
1717
"ocamlbuild" {build}
1818
]
1919

20-
tags: [
21-
"category:Computer Science/Concurrent Systems and Protocols/Theory of concurrent systems"
22-
"keyword:program verification"
23-
"keyword:separation logic"
24-
"keyword:distributed algorithms"
25-
]
2620
authors: [
2721
"Ilya Sergey"
2822
"James R. Wilcox"

coq-disel-examples.opam

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,9 @@ synopsis: "Example systems for Disel, a separation-style logic for compositional
1111
build: [make "-j%{jobs}%" "-C" "Examples"]
1212
install: [make "-C" "Examples" "install"]
1313
depends: [
14-
"ocaml"
15-
"coq" {(>= "8.11" & < "8.13~") | (= "dev")}
16-
"coq-mathcomp-ssreflect" {(>= "1.10.0" & < "1.12~") | (= "dev")}
17-
"coq-fcsl-pcm" {(>= "1.3.0" & < "1.4.0") | (= "dev")}
14+
"coq" {>= "8.14"}
15+
"coq-mathcomp-ssreflect" {>= "1.13"}
16+
"coq-fcsl-pcm" {>= "1.7.0"}
1817
"coq-disel" {= version}
1918
]
2019

coq-disel-tpc.opam

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,12 @@ synopsis: "Two-phase commit implemented in Disel, a separation-style logic for c
1111
build: [make "-j%{jobs}%" "tpc"]
1212
depends: [
1313
"ocaml" {>= "4.05.0"}
14-
"coq" {(>= "8.11" & < "8.13~") | (= "dev")}
15-
"coq-mathcomp-ssreflect" {(>= "1.10.0" & < "1.12~") | (= "dev")}
16-
"coq-fcsl-pcm" {(>= "1.3.0" & < "1.4.0") | (= "dev")}
14+
"coq" {>= "8.14"}
15+
"coq-mathcomp-ssreflect" {>= "1.13"}
16+
"coq-fcsl-pcm" {>= "1.7.0"}
1717
"ocamlbuild" {build}
1818
]
1919

20-
tags: [
21-
"category:Computer Science/Concurrent Systems and Protocols/Theory of concurrent systems"
22-
"keyword:program verification"
23-
"keyword:separation logic"
24-
"keyword:distributed algorithms"
25-
]
2620
authors: [
2721
"Ilya Sergey"
2822
"James R. Wilcox"

coq-disel.opam

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ homepage: "https://github.com/DistributedComponents/disel"
66
dev-repo: "git+https://github.com/DistributedComponents/disel.git"
77
bug-reports: "https://github.com/DistributedComponents/disel/issues"
88
license: "BSD-2-Clause"
9+
910
synopsis: "Core framework files for Disel, a separation-style logic for compositional verification of distributed systems in Coq"
1011
description: """
1112
Disel is a framework for implementation and compositional verification of
@@ -14,16 +15,14 @@ distributed systems using a domain specific language shallowly embedded in Coq
1415
which provides both high-level programming constructs as well as low-level
1516
communication primitives. Components of composite systems are specified in Disel
1617
as protocols, which capture system-specific logic and disentangle system definitions
17-
from implementation details.
18-
"""
18+
from implementation details."""
1919

2020
build: [make "-j%{jobs}%" "-C" "Core"]
2121
install: [make "-C" "Core" "install"]
2222
depends: [
23-
"ocaml"
24-
"coq" {(>= "8.11" & < "8.13~") | (= "dev")}
25-
"coq-mathcomp-ssreflect" {(>= "1.10.0" & < "1.12~") | (= "dev")}
26-
"coq-fcsl-pcm" {(>= "1.3.0" & < "1.4.0") | (= "dev")}
23+
"coq" {>= "8.14"}
24+
"coq-mathcomp-ssreflect" {>= "1.13"}
25+
"coq-fcsl-pcm" {>= "1.7.0"}
2726
]
2827

2928
tags: [

0 commit comments

Comments
 (0)