From 67cb64b58d0629692c33cfd5be8bb8028841b521 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Brandenburg?= <bbb@mpi-sws.org> Date: Wed, 16 Feb 2022 09:31:53 +0100 Subject: [PATCH] update documentation to mention the mczify dependency --- README.md | 28 ++++++++++++++++++++++++---- doc/tactics.md | 11 ++++++----- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e65132a05..0f3c9e36a 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Up-to-date documentation for all branches of the main Prosa repository is availa ## Publications -Please see the [list of publications](http://prosa.mpi-sws.org/documentation.html#publications) on the Prosa project's homepage. +Please see the [list of publications](https://prosa.mpi-sws.org/publications.html) on the Prosa project's homepage. ## Directory and Module Structure @@ -37,7 +37,7 @@ All results published prior to 2020 build on this "classic" version of Prosa. ### With OPAM -Prosa can be installed using the [OPAM package manager](https://opam.ocaml.org/) (>= 2.0) +Prosa can be installed using the [OPAM package manager](https://opam.ocaml.org/) (>= 2.0). ``` opam repo add coq-released https://coq.inria.fr/opam/released @@ -46,6 +46,17 @@ opam update opam install coq-prosa ``` +### From Sources with `opam` + +OPAM can also be used to install a local checkout. For example, this is done in the CI setup (see `.gitlab-ci.yaml`). + +``` +opam repo add coq-released https://coq.inria.fr/opam/released +opam update +opam pin add -n -y -k path coq-prosa . +opam install coq-prosa +``` + ### From Sources With `esy` Prosa can be installed using [esy](https://esy.sh/). @@ -74,13 +85,22 @@ Alternatively, `esy shell` opens a shell within its environment. #### Dependencies -Besides Coq itself, Prosa's only external dependency is the ssreflect library of the [Mathematical Components project](https://math-comp.github.io). +Besides on Coq itself, Prosa depends on + +1. the `ssreflect` library of the [Mathematical Components project](https://math-comp.github.io) and +2. the [Micromega support for the Mathematical Components library](https://github.com/math-comp/mczify) provided by `mczify`. + +These dependencies can be easily installed with OPAM. + +``` +opam install -y coq-mathcomp-ssreflect coq-mathcomp-zify +``` Prosa always tracks the latest stable versions of Coq and ssreflect. We do not maintain compatibility with older versions of either Coq or ssreflect. #### Compiling Prosa -Assuming ssreflect is available (either via OPAM or compiled from source, see the [Prosa setup instructions](http://prosa.mpi-sws.org/setup-instructions.html)), compiling Prosa consists of only two steps. +Assuming all dependencies are available (either via OPAM or compiled from source, see the [Prosa setup instructions](http://prosa.mpi-sws.org/setup-instructions.html)), compiling Prosa consists of only two steps. First, create an appropriate `Makefile`. diff --git a/doc/tactics.md b/doc/tactics.md index 126173ba1..58d10dc9a 100644 --- a/doc/tactics.md +++ b/doc/tactics.md @@ -24,11 +24,15 @@ Tactics taken from the standard library of Viktor Vafeiadis. - `have y := f x1 x2 x3`: creates an alias to `f x1 x2 x3` called `y` (in the local context). Note that `f` can be a function or a proposition/lemma. It's usually easier to read than `move: (f x1 x2 x3) => y`. -*To be written… please feel free to start.* +*To be continued… please help out.* ## Standard Coq Tactics -*To be written… please feel free to start.* +Generally speaking, in new code, prefer `ssreflect` tactics over standard Coq tactics whenever possible. While the current code base is a mix of classic Coq tactics and `ssreflect` tactics, that's only a historical accident not worth emulating. + +- `lia`: Solves arithmetic goals, including ones with `ssreflect`'s definitions (thanks to the `coq-mathcomp-zify` dependency). + +*To be continued… please help out.* ## PROSA Tactics @@ -37,7 +41,4 @@ Tactics taken from the standard library of Viktor Vafeiadis. - `interval_to_duration t1 t2 k`: any interval `[t1, t2]` can be represented as `[t1, t1 + k]` for some natural number `k`. This tactic searches for inequality `t1 <= t2` (or `t1 < t2`) in the context and replaces `t2` with `t1 + k`. Note: `k` is the name of a newly created natural number. -## Miscellaneous - -- `lia`: Solves arithmetic goals, including ones with `ssreflect`'s definitions. -- GitLab