Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Iris
transfinite
Commits
0c58544d
Commit
0c58544d
authored
Nov 24, 2020
by
Lennard Gäher
Browse files
rebase transfinite iris
parent
75a18932
Changes
153
Expand all
Hide whitespace changes
Inline
Sidebyside
.gitignore
View file @
0c58544d
*.vo
*.vo
*.vok
*.vos
*.vio
*.vio
*.v.d
*.v.d
.coqdeps.d
.coqdeps.d
...
@@ 13,6 +15,16 @@
...
@@ 13,6 +15,16 @@
.coqnative/
.coqnative/
builddep/
builddep/
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
.gitlabci.yml
deleted
100644 → 0
View file @
75a18932
image
:
ralfjung/opamci:opam2
stages
:

build
variables
:
CPU_CORES
:
"
10"
.template
:
&template
stage
:
build
tags
:

fp
script
:

git clone https://gitlab.mpisws.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
buildcoq.dev
:
<<
:
*template
variables
:
OCAML
:
"
ocamlbasecompiler.4.07.0"
OPAM_PINS
:
"
coq
version
dev"
CI_COQCHK
:
"
1"
buildcoq.8.10.dev
:
<<
:
*template
variables
:
OCAML
:
"
ocamlbasecompiler.4.07.0"
OPAM_PINS
:
"
coq
version
8.10.dev"
buildcoq.8.9.1
:
<<
:
*template
variables
:
OPAM_PINS
:
"
coq
version
8.9.1"
buildcoq.8.9.0
:
<<
:
*template
variables
:
OPAM_PINS
:
"
coq
version
8.9.0"
OPAM_PKG
:
"
coqiris"
DOC_DIR
:
"
coqdoc@center.mpisws.org:iris"
DOC_OPTS
:
"
external
https://plv.mpisws.org/coqdoc/stdpp/
stdpp"
TIMING_CONF
:
"
coq8.9.0"
tags
:

fptiming
buildcoq.8.8.2
:
<<
:
*template
variables
:
OPAM_PINS
:
"
coq
version
8.8.2"
buildcoq.8.7.2
:
<<
:
*template
variables
:
OPAM_PINS
:
"
coq
version
8.7.2"
Makefile
View file @
0c58544d
...
@@ 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 @@ builddep: builddep/opam phony
...
@@ 29,14 +29,8 @@ builddep: builddep/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 builddependencies as
@
# To achieve this, we create a fake opam package that has our builddependencies as
@
# dependencies, but does not actually install anything itself.
@
# dependencies, but does not actually install anything itself.
@
echo
"# Pinning builddep package."
&&
\
@
echo
"# Installing builddep package."
if
opam
version

grep
"^1
\.
"
q
;
then
\
@
opam
install
$(OPAMFLAGS)
builddep/
BUILD_DEP_PACKAGE
=
"
$$
(egrep "
^name:
" builddep/opam  sed 's/^name: *"
\(
.
*
\)
" */
\1
/')"
&&
\
opam pin add
k
path
$(OPAMFLAGS)
"
$$
BUILD_DEP_PACKAGE"
.dev builddep
&&
\
opam reinstall
$(OPAMFLAGS)
"
$$
BUILD_DEP_PACKAGE"
;
\
else
\
opam
install
$(OPAMFLAGS)
builddep/
;
\
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
:
;
...
...
Makefile.coq.local
deleted
100644 → 0
View file @
75a18932
# Run tests interleaved with main build. They have to be in the same target for this.
realall
:
$(if $(NO_TEST)
,,
test)
# the test suite
TESTFILES
=
$(
wildcard
tests/
*
.v
)
NORMALIZER
=
testnormalizer.sed
test
:
$(TESTFILES:.v=.vo)
.PHONY
:
test
COQ_TEST
=
$(COQTOP)
$(COQDEBUG)
batch
testmode
COQ_OLD
=
$(
shell
echo
"
$(COQ_VERSION)
"
 egrep
"^8
\.
7
\b
"
q
&&
echo
1
)
COQ_MINOR_VERSION
=
$(
shell
echo
"
$(COQ_VERSION)
"
 egrep
'^[09]+\.[09]+\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 outofline because macOS otherwise barfs?!?)
#  Determine reference file (`REF`).
#  Print uservisible 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)
loadvernacsource
$<
>
"
$$
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
$@
README.md
View file @
0c58544d
# IRIS COQ DEVELOPMENT
[[coqdoc]](https://plv.mpisws.org/coqdoc/iris/)
#
TRANSFINITE
IRIS COQ DEVELOPMENT
This is the Coq development of the
[
Iris Project
](
http://irisproject.org
)
,
This is the Coq development of the Transfinite Iris project.
It is based on the Coq development of the
[
Iris Project
](
http://irisproject.org
)
,
which includes
[
MoSeL
](
http://irisproject.org/mosel/
)
, a general proof mode
which includes
[
MoSeL
](
http://irisproject.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.mpisws.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.mpisws.org/iris/appendix3.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.mpisws.org/iris/stdpp
)

Irisstdpp 1.3.0 (
[
std++
](
https://gitlab.mpisws.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.
[
iris3.1 branch
](
https://gitlab.mpisws.org/iris/iris/tree/iris3.1
)
.
If you need to work with Coq 8.5, please check out the
[
iris3.0 branch
](
https://gitlab.mpisws.org/iris/iris/tree/iris3.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 iristransfinite 4.07.1+flambda
eval $(opam env)
```
opam repo add coqreleased https://coq.inria.fr/opam/released
2.
Add the Coq opam repository:
```
opam repo add coqreleased https://coq.inria.fr/opam/released
```
3.
Run
`make builddep`
to install the right versions of the dependencies,
in particular Coq 8.10.2 and coqstdpp 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 irisdev https://gitlab.mpisws.org/iris/opam.git
Either way, you can now do
`opam install coqiris`
. To fetch updates later, run
`opam update && opam upgrade`
. However, notice that we do not guarnatee
backwardscompatibility, so upgrading Iris may break your Irisusing
developments.
### Working *on* Iris
To work on Iris itself, you need to install its builddependencies. Again we
recommend you do that with opam (1.2.2 or newer). This requires the following
two repositories:
opam repo add coqreleased https://coq.inria.fr/opam/released
opam repo add irisdev https://gitlab.mpisws.org/iris/opam.git
Once you got opam set up, run
`make builddep`
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 builddep`
.
## 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 stepindex 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 builddep`.
...
@@ 74,9 +53,11 @@ followed by `make builddep`.
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 terminationpreserving 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 builddep`.
...
@@ 85,59 +66,64 @@ followed by `make builddep`.
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 MLlike concurrent heap
*
The folder
[
heap_lang
](
theories/heap_lang
)
defines the MLlike 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.mpisws.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.mpisws.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.mpisws.org/iris/lambdarust
)
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.mpisws.org/iris/gpfsl
)
is a logic for releaseacquire
logical relation for termination by Spies et al, "Transfinite StepIndexing for Termination"
and relaxed memory.
*
[
refinements
](
theories/examples/refinements
)
contains the terminationpreserving refinement
*
[
Iron
](
https://gitlab.mpisws.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.mpisws.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
)

[
irisclub@lists.mpisws.org
](
https://lists.mpisws.org/listinfo/irisclub
)
 Hoare Proof Rules of Figure 1 
[
derived
](
theories/examples/refinements/derived.v
)

and in the
[
Iris Chat
](
https://mattermost.mpisws.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
)

[
MPISWS GitLab
](
https://gitlab.mpisws.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.mpisws.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.mpisws.org/iris/iris/issues
)
, which also
 Logical Relation for Termination 
[
logrel_adequacy
](
theories/examples/termination/logrel.v
)

requires an MPISWS 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 settheoretic 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 SecondOrder ZF in Dependent Type Theory"
by Dominik Kirst and Gert Smolka, CPP 2018
See https://www.ps.unisaarland.de/Publications/details/KirstSmolka:2017:LargeModel.html.
*
"Formalised Set Theory: WellOrderings and the Axiom of Choice", Dominik Kirst.
See https://www.ps.unisaarland.de/~kirst/bachelor.php
_CoqProject
View file @
0c58544d
...
@@ 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.mpisws.org/iris/iris/issues/240).
# We have ambiguous paths and so far it is not even clear what they are (https://gitlab.mpisws.org/iris/iris/issues/240).
arg w arg ambiguouspaths
arg w arg ambiguouspaths
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