Commit 0c58544d authored by Lennard Gäher's avatar Lennard Gäher
Browse files

rebase transfinite iris

parent 75a18932
*.vo *.vo
*.vok
*.vos
*.vio *.vio
*.v.d *.v.d
.coqdeps.d .coqdeps.d
...@@ -13,6 +15,16 @@ ...@@ -13,6 +15,16 @@
.coq-native/ .coq-native/
build-dep/ build-dep/
Makefile.coq Makefile.coq
.Makefile.coq.d
Makefile.coq.conf Makefile.coq.conf
*.crashcoqide *.crashcoqide
.env .env
_opam
*.fdb_latexmk
*.fls
**/auto/*
*.pygtex
*.pygstyle
\ No newline at end of file
image: ralfjung/opam-ci:opam2
stages:
- build
variables:
CPU_CORES: "10"
.template: &template
stage: build
tags:
- fp
script:
- git clone https://gitlab.mpi-sws.org/iris/ci.git ci -b opam2
- ci/buildjob
cache:
key: "$CI_JOB_NAME"
paths:
- opamroot/
only:
- master
- /^ci/
except:
- triggers
- schedules
- api
## Build jobs
build-coq.dev:
<<: *template
variables:
OCAML: "ocaml-base-compiler.4.07.0"
OPAM_PINS: "coq version dev"
CI_COQCHK: "1"
build-coq.8.10.dev:
<<: *template
variables:
OCAML: "ocaml-base-compiler.4.07.0"
OPAM_PINS: "coq version 8.10.dev"
build-coq.8.9.1:
<<: *template
variables:
OPAM_PINS: "coq version 8.9.1"
build-coq.8.9.0:
<<: *template
variables:
OPAM_PINS: "coq version 8.9.0"
OPAM_PKG: "coq-iris"
DOC_DIR: "coqdoc@center.mpi-sws.org:iris"
DOC_OPTS: "--external https://plv.mpi-sws.org/coqdoc/stdpp/ stdpp"
TIMING_CONF: "coq-8.9.0"
tags:
- fp-timing
build-coq.8.8.2:
<<: *template
variables:
OPAM_PINS: "coq version 8.8.2"
build-coq.8.7.2:
<<: *template
variables:
OPAM_PINS: "coq version 8.7.2"
...@@ -9,7 +9,7 @@ all: Makefile.coq ...@@ -9,7 +9,7 @@ all: Makefile.coq
clean: Makefile.coq clean: Makefile.coq
+@make -f Makefile.coq clean +@make -f Makefile.coq clean
find theories tests \( -name "*.d" -o -name "*.vo" -o -name "*.aux" -o -name "*.cache" -o -name "*.glob" -o -name "*.vio" \) -print -delete || true find theories tests \( -name "*.d" -o -name "*.vo" -o -name "*.aux" -o -name "*.cache" -o -name "*.glob" -o -name "*.vio" \) -print -delete || true
rm -f Makefile.coq rm -f Makefile.coq .lia.cache
.PHONY: clean .PHONY: clean
# Create Coq Makefile. # Create Coq Makefile.
...@@ -29,14 +29,8 @@ build-dep: build-dep/opam phony ...@@ -29,14 +29,8 @@ build-dep: build-dep/opam phony
@# that are incompatible with our build requirements. @# that are incompatible with our build requirements.
@# To achieve this, we create a fake opam package that has our build-dependencies as @# To achieve this, we create a fake opam package that has our build-dependencies as
@# dependencies, but does not actually install anything itself. @# dependencies, but does not actually install anything itself.
@echo "# Pinning build-dep package." && \ @echo "# Installing build-dep package."
if opam --version | grep "^1\." -q; then \ @opam install $(OPAMFLAGS) build-dep/
BUILD_DEP_PACKAGE="$$(egrep "^name:" build-dep/opam | sed 's/^name: *"\(.*\)" */\1/')" && \
opam pin add -k path $(OPAMFLAGS) "$$BUILD_DEP_PACKAGE".dev build-dep && \
opam reinstall $(OPAMFLAGS) "$$BUILD_DEP_PACKAGE"; \
else \
opam install $(OPAMFLAGS) build-dep/; \
fi
# Some files that do *not* need to be forwarded to Makefile.coq # Some files that do *not* need to be forwarded to Makefile.coq
Makefile: ; Makefile: ;
......
# Run tests interleaved with main build. They have to be in the same target for this.
real-all: $(if $(NO_TEST),,test)
# the test suite
TESTFILES=$(wildcard tests/*.v)
NORMALIZER=test-normalizer.sed
test: $(TESTFILES:.v=.vo)
.PHONY: test
COQ_TEST=$(COQTOP) $(COQDEBUG) -batch -test-mode
COQ_OLD=$(shell echo "$(COQ_VERSION)" | egrep "^8\.7\b" -q && echo 1)
COQ_MINOR_VERSION=$(shell echo "$(COQ_VERSION)" | egrep '^[0-9]+\.[0-9]+\b' -o)
tests/.coqdeps.d: $(TESTFILES)
$(SHOW)'COQDEP TESTFILES'
$(HIDE)$(COQDEP) -dyndep var $(COQMF_COQLIBS_NOML) $^ $(redir_if_ok)
-include tests/.coqdeps.d
# Main test script (comments out-of-line because macOS otherwise barfs?!?)
# - Determine reference file (`REF`).
# - Print user-visible status line.
# - Dump Coq output into a temporary file.
# - Run `sed -i` on that file in a way that works on macOS.
# - Either compare the result with the reference file, or move it over the reference file.
# - Cleanup, and mark as done for make.
$(TESTFILES:.v=.vo): %.vo: %.v $(if $(MAKE_REF),,%.ref) $(NORMALIZER)
$(HIDE)TEST="$$(basename -s .v $<)" && \
if test -f "tests/$$TEST.$(COQ_MINOR_VERSION).ref"; then \
REF="tests/$$TEST.$(COQ_MINOR_VERSION).ref"; \
else \
REF="tests/$$TEST.ref"; \
fi && \
echo "COQTEST$(if $(COQ_OLD), [no ref],$(if $(MAKE_REF), [make ref],)) $<$(if $(COQ_OLD),, (ref: $$REF))" && \
TMPFILE="$$(mktemp)" && \
$(TIMER) $(COQ_TEST) $(COQFLAGS) $(COQLIBS) -load-vernac-source $< > "$$TMPFILE" && \
sed -f $(NORMALIZER) "$$TMPFILE" > "$$TMPFILE".new && \
mv "$$TMPFILE".new "$$TMPFILE" && \
$(if $(COQ_OLD),true, \
$(if $(MAKE_REF),mv "$$TMPFILE" "$$REF",diff -u "$$REF" "$$TMPFILE") \
) && \
rm -f "$$TMPFILE" && \
touch $@
# IRIS COQ DEVELOPMENT [[coqdoc]](https://plv.mpi-sws.org/coqdoc/iris/) # TRANSFINITE IRIS COQ DEVELOPMENT
This is the Coq development of the [Iris Project](http://iris-project.org), This is the Coq development of the Transfinite Iris project.
It is based on the Coq development of the [Iris Project](http://iris-project.org),
which includes [MoSeL](http://iris-project.org/mosel/), a general proof mode which includes [MoSeL](http://iris-project.org/mosel/), a general proof mode
for carrying out separation logic proofs in Coq. for carrying out separation logic proofs in Coq.
For using the Coq library, check out the For understanding the theory of Transfinite Iris, a supplementary appendix PDF has been submitted alongside this artifact.
[API documentation](https://plv.mpi-sws.org/coqdoc/iris/).
For understanding the theory of Iris, a LaTeX version of the core logic For using Transfinite Iris and inspecting the development interactively, it needs to be compiled.
definitions and some derived forms is available in
[docs/iris.tex](docs/iris.tex). A compiled PDF version of this document is
[available online](http://plv.mpi-sws.org/iris/appendix-3.1.pdf).
## Building Iris ## Building Transfinite Iris
### Prerequisites ### Prerequisites
This version is known to compile with: This version is known to compile with:
- Coq 8.7.2 / 8.8.2 / 8.9.0 / 8.9.1 - Coq 8.10.2
- A development version of [std++](https://gitlab.mpi-sws.org/iris/stdpp) - Iris-stdpp 1.3.0 ([std++](https://gitlab.mpi-sws.org/iris/stdpp))
For a version compatible with Coq 8.6, have a look at the We assume that you have opam (2.0 or newer; tested with 2.0.7) available for the following instructions.
[iris-3.1 branch](https://gitlab.mpi-sws.org/iris/iris/tree/iris-3.1).
If you need to work with Coq 8.5, please check out the
[iris-3.0 branch](https://gitlab.mpi-sws.org/iris/iris/tree/iris-3.0).
### Working *with* Iris ### Installation
To use Iris in your own proofs, we recommend you install Iris via opam (1.2.2 or 1. Setup a new opam switch and switch to it:
newer). To obtain the latest stable release, you have to add the Coq opam ```
repository: opam update
opam switch create iris-transfinite 4.07.1+flambda
eval $(opam env)
```
opam repo add coq-released https://coq.inria.fr/opam/released 2. Add the Coq opam repository:
```
opam repo add coq-released https://coq.inria.fr/opam/released
```
3. Run `make build-dep` to install the right versions of the dependencies,
in particular Coq 8.10.2 and coq-stdpp 1.3.0.
To obtain a development version, also add the Iris opam repository: 4. Run `make -jN` to build the full development, where `N` is the number of threads
to use for the build process.
opam repo add iris-dev https://gitlab.mpi-sws.org/iris/opam.git
Either way, you can now do `opam install coq-iris`. To fetch updates later, run
`opam update && opam upgrade`. However, notice that we do not guarnatee
backwards-compatibility, so upgrading Iris may break your Iris-using
developments.
### Working *on* Iris
To work on Iris itself, you need to install its build-dependencies. Again we
recommend you do that with opam (1.2.2 or newer). This requires the following
two repositories:
opam repo add coq-released https://coq.inria.fr/opam/released
opam repo add iris-dev https://gitlab.mpi-sws.org/iris/opam.git
Once you got opam set up, run `make build-dep` to install the right versions
of the dependencies.
Run `make -jN` to build the full development, where `N` is the number of your
CPU cores.
To update Iris, do `git pull`. After an update, the development may fail to
compile because of outdated dependencies. To fix that, please run `opam update`
followed by `make build-dep`.
## Directory Structure ## Directory Structure
* The folder [algebra](theories/algebra) contains the COFE and CMRA * The folder [ordinals](theories/algebra/ordinals) contains a formalisation of
constructions as well as the solver for recursive domain equations. von Neumann ordinals and basic ordinal arithmetic.
* The folder [algebra](theories/algebra) contains step-index types,
the COFE and CMRA constructions as well as the solver for recursive domain equations.
* The folder [base_logic](theories/base_logic) defines the Iris base logic and * The folder [base_logic](theories/base_logic) defines the Iris base logic and
the primitive connectives. It also contains derived constructions that are the primitive connectives. It also contains derived constructions that are
entirely independent of the choice of resources. entirely independent of the choice of resources.
...@@ -74,9 +53,11 @@ followed by `make build-dep`. ...@@ -74,9 +53,11 @@ followed by `make build-dep`.
dynamic resources and ownership of them; the other constructions depend dynamic resources and ownership of them; the other constructions depend
on this setup. on this setup.
* The folder [program_logic](theories/program_logic) specializes the base logic * The folder [program_logic](theories/program_logic) specializes the base logic
to build Iris, the program logic. This includes weakest preconditions that to build Iris, the program logic. This includes weakest preconditions that
are defined for any language satisfying some generic axioms, and some derived are defined for any language satisfying some generic axioms, and some derived
constructions that work for any such language. constructions that work for any such language.
* The folder [refinement](theories/program_logic/refinement) contains the definition
of a program logic for termination-preserving refinement and termination.
* The folder [bi](theories/bi) contains the BI++ laws, as well as derived * The folder [bi](theories/bi) contains the BI++ laws, as well as derived
connectives, laws and constructions that are applicable for general BIS. connectives, laws and constructions that are applicable for general BIS.
* The folder [proofmode](theories/proofmode) contains * The folder [proofmode](theories/proofmode) contains
...@@ -85,59 +66,64 @@ followed by `make build-dep`. ...@@ -85,59 +66,64 @@ followed by `make build-dep`.
interactive proofs. Documentation can be found in interactive proofs. Documentation can be found in
[ProofMode.md](ProofMode.md). [ProofMode.md](ProofMode.md).
* The folder [heap_lang](theories/heap_lang) defines the ML-like concurrent heap * The folder [heap_lang](theories/heap_lang) defines the ML-like concurrent heap
language language.
* The subfolder [lib](theories/heap_lang/lib) contains a few derived * The folder [examples](theories/examples) contains examples executed in
constructions within this language, e.g., parallel composition. Transfinite Iris. See below for a detailed summary.
For more examples of using Iris and heap_lang, have a look at the
[Iris Examples](https://gitlab.mpi-sws.org/iris/examples). ## Examples
* The folder [tests](theories/tests) contains modules we use to test our
infrastructure. Users of the Iris Coq library should *not* depend on these The following is a list of examples we have done in Transfinite Iris.
modules; they may change or disappear without any notice. * The key notions of simulations and generalized simulations used for the
key ideas section of the paper are formalized in [keyideas](theories/examples/keyideas).
## Case Studies * Counterexamples for some negative statements in the paper are formalized in
[counterexamples.v](theories/examples/counterexamples.v)
The following is a (probably incomplete) list of case studies that use Iris, and * [safety](theories/examples/safety) contains examples for safety reasoning taken
that should be compatible with this version: from existing work that we have ported to Transfinite Iris.
* [termination](theories/examples/termination) contains proofs of termination:
* [Iris Examples](https://gitlab.mpi-sws.org/iris/examples) is where we * [eventloop](theories/examples/termination/eventloop.v) contains the verification
collect miscellaneous case studies that do not have their own repository. of the eventloop example from the paper.
* [LambdaRust](https://gitlab.mpi-sws.org/iris/lambda-rust) is a Coq * [thunk](theories/examples/termination/thunk.v) contains the verification of a thunk example.
formalization of the core Rust type system. * [logrel](theories/examples/termination/logrel.v) formalizes and extends the
* [GPFSL](https://gitlab.mpi-sws.org/iris/gpfsl) is a logic for release-acquire logical relation for termination by Spies et al, "Transfinite Step-Indexing for Termination"
and relaxed memory. * [refinements](theories/examples/refinements) contains the termination-preserving refinement
* [Iron](https://gitlab.mpi-sws.org/iris/iron) is a linear separation logic examples from the paper.
built on top of Iris for precise reasoning about resources (such as making * [derived] (theories/examples/refinements/derived.v) contains the derived Hoare triples shown in the paper.
sure there are no memory leaks). * [refinement](theories/examples/refinements/refinement.v) contains the HeapLang source language.
* [memoization](theories/examples/refinement/memoization.v) provides memoization functions and
## Further Resources the following examples:
* Fibonacci function
Getting along with Iris in Coq: * Levenshtein distance
* Iris proof patterns are documented in the [proof guide](ProofGuide.md).
* Syntactic conventions are described in the [style guide](StyleGuide.md). ## Theorems referenced in the paper
* The Iris tactics are described in the
[the Iris Proof Mode (IPM) / MoSeL documentation](ProofMode.md) as well as the We have fully mechanized the soundness of Iris and the examples in §3.4 and §4.2.
[HeapLang documentation](HeapLang.md). The following table references the corresponding theorems as well as some additional mechanized lemmas.
* The generated coqdoc is [available online](https://plv.mpi-sws.org/coqdoc/iris/).
| Paper | Coq |
Contacting the developers: | ------ | ------ |
| Lemma 2.1 | [simulations/sim_is_rpr](theories/examples/keyideas/simulations.v) |
* Discussion about the Iris Coq development happens on the mailing list | Lemma 2.2 | [simulations/sim_is_tpr](theories/examples/keyideas/simulations.v) |
[iris-club@lists.mpi-sws.org](https://lists.mpi-sws.org/listinfo/iris-club) | Hoare Proof Rules of Figure 1 | [derived](theories/examples/refinements/derived.v) |
and in the [Iris Chat](https://mattermost.mpi-sws.org/iris). This is also the | Theorem 3.3 (Refinement Adequacy) | [heap_lang_ref_adequacy](theories/examples/refinements/refinement.v) |
right place to ask questions. The chat requires an account at the | Definition of memo_rec | [mem_rec](theories/examples/refinements/memoization.v) |
[MPI-SWS GitLab](https://gitlab.mpi-sws.org/users/sign_in) (use the "Register" | PureMemoRec (simpl) | [natfun_mem_rec_spec](theories/examples/refinements/memoization.v) |
tab). If you have trouble joining the chat, please contact | Levenshtein and Fibonacci | [memoization](theories/examples/refinements/memoization.v) |
[Ralf](https://gitlab.mpi-sws.org/jung). | Theorem 4.1 (Time Credits Adequacy) | [heap_lang_ref_adequacy](theories/examples/termination/adequacy.v) |
* If you want to report a bug, please use the | Reentrant Event Loop | [event_loop](theories/examples/termination/eventloop.v) |
[issue tracker](https://gitlab.mpi-sws.org/iris/iris/issues), which also | Logical Relation for Termination | [logrel_adequacy](theories/examples/termination/logrel.v) |
requires an MPI-SWS GitLab account. | Ordinals validate the existential property | [set_model_large_index](theories/algebra/ordinals/ord_stepindex.v) |
* To contribute to Iris itself, see the [contribution guide](CONTRIBUTING.md). | Theorem 5.3 | [fixpoint](theories/algebra/ofe.v) |
| Model Construction (Theorem 5.4) | [iprop](theories/base_logic/lib/iprop.v) |
Miscellaneous: | Theorem 5.5 | [no_later_existential_commuting](theories/examples/counterexamples.v) |
* Information on how to set up your editor for unicode input and output is ## Acknowledgements
collected in [Editor.md](Editor.md).
* If you are writing a paper that uses Iris in one way or another, you could use The mechanization of set-theoretic ordinals and the underlying ZF model construction
the [Iris LaTeX macros](docs/iris.sty) for typesetting the various Iris has been based on Coq code by Dominik Kirst and Gert Smolka, available at:
connectives.
* "Large Model Constructions for Second-Order ZF in Dependent Type Theory"
by Dominik Kirst and Gert Smolka, CPP 2018
See https://www.ps.uni-saarland.de/Publications/details/KirstSmolka:2017:Large-Model.html.
* "Formalised Set Theory: Well-Orderings and the Axiom of Choice", Dominik Kirst.
See https://www.ps.uni-saarland.de/~kirst/bachelor.php
...@@ -11,17 +11,34 @@ ...@@ -11,17 +11,34 @@
# We have ambiguous paths and so far it is not even clear what they are (https://gitlab.mpi-sws.org/iris/iris/issues/240). # We have ambiguous paths and so far it is not even clear what they are (https://gitlab.mpi-sws.org/iris/iris/issues/240).
-arg -w -arg -ambiguous-paths -arg -w -arg -ambiguous-paths
theories/algebra/ordinals/set_model.v
theories/algebra/ordinals/set_sets.v
theories/algebra/ordinals/set_functions.v
theories/algebra/ordinals/set_ordinals.v
theories/algebra/ordinals/ord_stepindex.v
theories/algebra/ordinals/arithmetic.v
theories/algebra/base.v
theories/algebra/stepindex.v
theories/algebra/monoid.v theories/algebra/monoid.v
theories/algebra/ofe.v
theories/algebra/cmra.v theories/algebra/cmra.v
theories/algebra/updates.v
theories/base_logic/base_logic.v
theories/program_logic/language.v
theories/bi/notation.v
theories/bi/interface.v
theories/bi/derived_connectives.v
theories/bi/derived_laws_bi.v
theories/bi/derived_laws_sbi.v
theories/bi/satisfiable.v
theories/algebra/big_op.v theories/algebra/big_op.v
theories/algebra/cmra_big_op.v
theories/algebra/sts.v
theories/algebra/auth.v theories/algebra/auth.v
theories/algebra/frac_auth.v theories/algebra/frac_auth.v
theories/algebra/gmap.v theories/algebra/gmap.v
theories/algebra/ofe.v theories/algebra/wf_IR.v
theories/algebra/base.v
theories/algebra/dra.v
theories/algebra/cofe_solver.v theories/algebra/cofe_solver.v
theories/algebra/agree.v theories/algebra/agree.v
theories/algebra/excl.v theories/algebra/excl.v
...@@ -30,71 +47,59 @@ theories/algebra/frac.v ...@@ -30,71 +47,59 @@ theories/algebra/frac.v
theories/algebra/csum.v theories/algebra/csum.v
theories/algebra/list.v theories/algebra/list.v
theories/algebra/vector.v theories/algebra/vector.v
theories/algebra/updates.v
theories/algebra/local_updates.v theories/algebra/local_updates.v
theories/algebra/gset.v theories/algebra/gset.v
theories/algebra/gmultiset.v theories/algebra/gmultiset.v
theories/algebra/coPset.v theories/algebra/coPset.v
theories/algebra/deprecated.v
theories/algebra/proofmode_classes.v theories/algebra/proofmode_classes.v
theories/algebra/ufrac.v theories/algebra/ufrac.v
theories/algebra/namespace_map.v theories/algebra/namespace_map.v
theories/algebra/ufrac_auth.v theories/algebra/ufrac_auth.v
theories/bi/notation.v theories/algebra/dfrac.v
theories/bi/interface.v theories/algebra/auth_map.v
theories/bi/derived_connectives.v theories/algebra/auth_frac.v
theories/bi/derived_laws_bi.v theories/algebra/mlist.v
theories/bi/derived_laws_sbi.v
theories/bi/plainly.v theories/bi/plainly.v
theories/bi/big_op.v theories/bi/big_op.v
theories/bi/updates.v theories/bi/updates.v
theories/bi/bi.v theories/bi/bi.v
theories/bi/tactics.v theories/bi/tactics.v
theories/bi/monpred.v
theories/bi/embedding.v theories/bi/embedding.v
theories/bi/weakestpre.v theories/bi/weakestpre.v
theories/bi/telescopes.v theories/bi/telescopes.v
theories/bi/lib/counterexamples.v
theories/bi/lib/fixpoint.v theories/bi/lib/fixpoint.v
theories/bi/lib/fractional.v theories/bi/lib/fractional.v
theories/bi/lib/laterable.v
theories/bi/lib/atomic.v
theories/bi/lib/core.v
theories/base_logic/upred.v theories/base_logic/upred.v
theories/base_logic/bi.v theories/base_logic/bi.v
theories/base_logic/derived.v theories/base_logic/derived.v
theories/base_logic/proofmode.v theories/base_logic/proofmode.v
theories/base_logic/base_logic.v theories/base_logic/satisfiable.v
theories/base_logic/bupd_alt.v
theories/base_logic/lib/iprop.v theories/base_logic/lib/iprop.v
theories/base_logic/lib/own.v theories/base_logic/lib/own.v
theories/base_logic/lib/saved_prop.v theories/base_logic/lib/saved_prop.v
theories/base_logic/lib/wsat.v theories/base_logic/lib/wsat.v
theories/base_logic/lib/invariants.v theories/base_logic/lib/invariants.v
theories/base_logic/lib/fancy_updates.v theories/base_logic/lib/fancy_updates.v
theories/base_logic/lib/logical_step.v
theories/base_logic/lib/viewshifts.v theories/base_logic/lib/viewshifts.v
theories/base_logic/lib/auth.v
theories/base_logic/lib/sts.v
theories/base_logic/lib/boxes.v
theories/base_logic/lib/na_invariants.v theories/base_logic/lib/na_invariants.v
theories/base_logic/lib/cancelable_invariants.v theories/base_logic/lib/cancelable_invariants.v
theories/base_logic/lib/gen_heap.v theories/base_logic/lib/gen_heap.v
theories/base_logic/lib/fancy_updates_from_vs.v
theories/base_logic/lib/proph_map.v theories/base_logic/lib/proph_map.v
theories/program_logic/adequacy.v
theories/program_logic/lifting.v
theories/program_logic/weakestpre.v theories/program_logic/weakestpre.v
theories/program_logic/total_weakestpre.v theories/program_logic/lifting.v
theories/program_logic/total_adequacy.v theories/program_logic/adequacy.v
theories/program_logic/hoare.v theories/program_logic/hoare.v
theories/program_logic/language.v
theories/program_logic/ectx_language.v theories/program_logic/ectx_language.v
theories/program_logic/ectxi_language.v theories/program_logic/ectxi_language.v
theories/program_logic/ectx_lifting.v theories/program_logic/ectx_lifting.v
theories/program_logic/ownp.v theories/program_logic/refinement/ref_source.v
theories/program_logic/total_lifting.v theories/program_logic/refinement/ref_weakestpre.v
theories/program_logic/total_ectx_lifting.v theories/program_logic/refinement/ref_adequacy.v
theories/program_logic/atomic.v theories/program_logic/refinement/tc_weakestpre.v
theories/program_logic/refinement/seq_weakestpre.v
theories/program_logic/refinement/ref_lifting.v
theories/program_logic/refinement/ref_ectx_lifting.v
theories/heap_lang/locations.v theories/heap_lang/locations.v
theories/heap_lang/lang.v theories/heap_lang/lang.v
theories/heap_lang/metatheory.v theories/heap_lang/metatheory.v
...@@ -103,19 +108,6 @@ theories/heap_lang/lifting.v ...@@ -103,19 +108,6 @@ theories/heap_lang/lifting.v
theories/heap_lang/notation.v theories/heap_lang/notation.v
theories/heap_lang/proofmode.v theories/heap_lang/proofmode.v
theories/heap_lang/adequacy.v theories/heap_lang/adequacy.v
theories/heap_lang/total_adequacy.v
theories/heap_lang/lib/spawn.v
theories/heap_lang/lib/par.v
theories/heap_lang/lib/assert.v
theories/heap_lang/lib/lock.v
theories/heap_lang/lib/spin_lock.v
theories/heap_lang/lib/ticket_lock.v
theories/heap_lang/lib/nondet_bool.v
theories/heap_lang/lib/lazy_coin.v
theories/heap_lang/lib/clairvoyant_coin.v
theories/heap_lang/lib/counter.v
theories/heap_lang/lib/atomic_heap.v
theories/heap_lang/lib/increment.v
theories/proofmode/base.v theories/proofmode/base.v
theories/proofmode/tokens.v theories/proofmode/tokens.v
theories/proofmode/coq_tactics.v theories/proofmode/coq_tactics.v
...@@ -131,6 +123,49 @@ theories/proofmode/classes.v ...@@ -131,6 +123,49 @@ theories/proofmode/classes.v
theories/proofmode/class_instances_bi.v theories/proofmode/class_instances_bi.v
theories/proofmode/class_instances_sbi.v theories/proofmode/class_instances_sbi.v
theories/proofmode/frame_instances.v theories/proofmode/frame_instances.v
theories/proofmode/monpred.v
theories/proofmode/modalities.v theories/proofmode/modalities.v
theories/proofmode/modality_instances.v theories/proofmode/modality_instances.v
#################
### Examples
#################
# General Transfinite Iris
theories/examples/transfinite.v
# derived Hoare triples
theories/examples/refinements/derived.v
# key ideas
theories/examples/keyideas/simulations.v
theories/examples/keyideas/generalized_simulations.v
# Existing Safety Examples
theories/examples/safety/spawn.v
theories/examples/safety/par.v
theories/examples/safety/assert.v
theories/examples/safety/lock.v
theories/examples/safety/spin_lock.v
theories/examples/safety/ticket_lock.v