You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Run `make` to produce `build/tutorial.html` and its dependencies: especially, `build/exercises/*.c` and `build/solutions/*c`.
36
+
## Tutorial examples
37
+
38
+
The tutorial examples live in [src/examples](./src/examples).
39
+
40
+
As part of building the tutorial, the examples are lightly preprocessed to
41
+
produce solutions and exercises (solutions with the CN specifications removed).
42
+
43
+
Run `make exercises` to produce the exercises and solutions in the `docs`
44
+
directory.
45
+
46
+
### Testing the tutorial examples
10
47
11
-
Run `make check-tutorial` to check that all examples in the tutorial have working solutions (except tests with names `*.broken.c`, which are expected to fail). Note that this step will not work until after you have installed CN, which is the first part of the tutorial.
48
+
Follow these steps `make check-tutorial` to check that all examples in the tutorial have working solutions (except tests with names `*.broken.c`, which are expected to fail).
12
49
13
-
Run `make check` to checks both the tutorial and archive examples (see below).
50
+
1. Install CN (follow steps in [the tutorial](https://rems-project.github.io/cn-tutorial/
51
+
))
52
+
2. Run `make check-tutorial`
14
53
15
-
## CN Example Archive
54
+
## CN example archive
16
55
17
56
The subdirectory `src/example-archive` includes many more examples of CN proofs, both working and broken. See [the README](./src/example-archive/README.md) for a description how these examples are organized.
18
57
19
-
Run`make check-archive` to check all examples in the example archive.
58
+
Install CN and run`make check-archive` to check all examples in the example archive.
[:octicons-arrow-right-24: Language reference](reference/README.md)
51
+
52
+
</div>
53
+
54
+
## Origins
55
+
CN was first described in [CN: Verifying Systems C Code with Separation-Logic Refinement Types](https://dl.acm.org/doi/10.1145/3571194) by Christopher Pulte, Dhruv C. Makwana, Thomas Sewell, Kayvan Memarian, Peter Sewell, and Neel Krishnaswami.
56
+
To accurately handle the complex semantics of C, CN builds on the [Cerberus semantics for C](https://github.com/rems-project/cerberus/).
57
+
Some of the examples in this tutorial are adapted from Arthur Charguéraud’s excellent
58
+
[Separation Logic Foundations](https://softwarefoundations.cis.upenn.edu) textbook, and one of the case studies is based on an
59
+
extended exercise due to Bryan Parno.
60
+
61
+
## Acknowledgment of Support and Disclaimer
62
+
This material is based upon work supported by the Air Force Research Laboratory (AFRL) and Defense Advanced Research Projects Agencies (DARPA) under Contract No. FA8750-24-C-B044, a European Research Council (ERC) Advanced Grant “ELVER” under the European Union’s Horizon 2020 research and innovation programme (grant agreement no. 789108), and additional funding from Google. The opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the Air Force Research Laboratory (AFRL).
63
+
64
+
## Building these docs
65
+
66
+
These docs are built with [Material for
67
+
MkDocs](https://squidfunk.github.io/mkdocs-material/). To build and serve them
68
+
locally on http://localhost:8000:
69
+
70
+
```bash
71
+
# Install Material for MkDocs
72
+
pip install mkdocs-material
73
+
74
+
# In the cn-tutorial root directory, run
75
+
mkdocs serve
76
+
```
77
+
78
+
## Docs layout
79
+
80
+
mkdocs.yml # The configuration file.
81
+
docs/
82
+
README.md # The documentation homepage.
83
+
... # Other markdown pages, images and other files.
0 commit comments