README.txt 3.43 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

DESCRIPTION

  This folder contains the Coq development for
  Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning

  by
  
  Ralf Jung <jung@mpi-sws.org>
  David Swasey <swasey@mpi-sws.org>
  Filip Sieczkowski <filips@cs.au.dk>
  Kasper Svendsen <ksvendsen@cs.au.dk>
  Aaron Turon <turon@mpi-sws.org>
  Lars Birkedal <birkedal@cs.au.dk>
  Derek Dreyer <dreyer@mpi-sws.org>


CONTENTS

Derek Dreyer's avatar
Derek Dreyer committed
20
21
  Our artifact is a Coq formalization of the model of our Iris logic,
  together with a proof of adequacy (establishing that the model is
22
  faithful wrt the operational semantics) and a proof of soundness of
Derek Dreyer's avatar
Derek Dreyer committed
23
24
  the primitive rules of the logic wrt the model.

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
  NOTE: We have just mechanized the *soundness* of the *primitive*
  rules of Iris in Coq.  We have not mechanized the proofs of derived
  rules (i.e. those derivable from the primitive rules), nor have we
  mechanized the case study or other examples that are proven within
  the logic.  Proof outlines for the latter are given in the appendix
  that accompanied the POPL submission, and will be fleshed out even
  further for the final version of the appendix.

  The reason we focused on the primitive rules is that those are the
  rules whose soundness is proven by direct appeal to the semantic
  model of Iris.  For space reasons, we did not want to present the
  semantic model of Iris in any detail in the paper, but we still
  wanted to give the reader confidence in the results of the paper.
  With our Coq mechanization in hand, the reader can safely ignore the
  semantic model and instead focus on how to *use* the primitive rules
  of the logic (to derive more sophisticated rules or prove
  interesting examples).

  Mechanizing Iris proofs is a very interesting and important
  direction for future work, but it is beyond the scope of the paper.

Derek Dreyer's avatar
Derek Dreyer committed
46

47
  The folder is organized as follows:
Derek Dreyer's avatar
Derek Dreyer committed
48

49
  * core_lang.v contains the axioms about the language
Derek Dreyer's avatar
Derek Dreyer committed
50
51
52
53

  * lang.v defines the threadpool reduction and derives some lemmas
    from core_lang.v
  
54
  * masks.v introduces some lemmas about masks
Derek Dreyer's avatar
Derek Dreyer committed
55
  
56
57
  * world_prop.v uses the ModuRes Coq library to construct the domain
    for Iris propositions
Derek Dreyer's avatar
Derek Dreyer committed
58
59
60
  
  * iris.v is the main file and contains the actual logic and the
    proof of the rules for view shifts and Hoare triples
61

Filip Sieczkowski's avatar
Filip Sieczkowski committed
62
63
64
65
  The development uses ModuRes, a Coq library by Sieczkowski et al. to
  solve the recursive domain equation (see the paper for a reference)
  and prove some of the standard separation logic rules. It is located
  in the lib/ subdirectory.
66
67
68
69
70


REQUIREMENTS

  Coq 
71
  8GB ram + 4GB swap
72

Derek Dreyer's avatar
Derek Dreyer committed
73
74
75
  We have tested the development using Coq v. 8.4pl4 on Linux and Mac
  machines with at least 8GB RAM + 4GB swap.  The entire compilation
  took around 3 hours.
76
77
78
79
80
81
82
83
84
85
  

HOW TO COMPILE

  To compile the development, run
  
  > make 

  in the folder containing this README. 

Derek Dreyer's avatar
Derek Dreyer committed
86
87
88
  Be aware that iris.v takes a long time to check and needs
  significant amounts of RAM!
  
89
90
91
92


OVERVIEW OF LEMMAS

Derek Dreyer's avatar
Derek Dreyer committed
93
94
  Below we give a mapping from proof rules in the paper to Coq lemma's
  in Iris.v.
95
96
97
98
99

  RULE         Coq lemma
  -----------------------
  VSTimeless   vsTimeless
  NewInv       vsNewInv
David Swasey's avatar
David Swasey committed
100
101
  InvOpen      vsOpen
  InvClose     vsClose
102
103
  VSTrans      vsTrans
  VSImp        vsEnt
Ralf Jung's avatar
Ralf Jung committed
104
105
  VSFrame      vsFrame
  FpUpd        vsGhostUpd
106
107
108
109

  Ret          htRet
  Bind         htBind
  Frame        htFrame
Ralf Jung's avatar
Ralf Jung committed
110
  AFrame       htAFrame
111
112
  Csq          htCons
  ACSQ         htACons
Ralf Jung's avatar
Ralf Jung committed
113
  Fork         htFork
114
115

  The main adequacy result is expressed by Theorem soundness_obs.
116