Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
I
Iris
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
116
Issues
116
List
Boards
Labels
Service Desk
Milestones
Merge Requests
23
Merge Requests
23
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Iris
Iris
Commits
9291076e
Commit
9291076e
authored
Sep 05, 2020
by
Ralf Jung
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
make sure we import 'options' everywhere
parent
f7b4fa56
Changes
40
Hide whitespace changes
Inline
Side-by-side
Showing
40 changed files
with
80 additions
and
20 deletions
+80
-20
Makefile.coq.local
Makefile.coq.local
+4
-0
theories/algebra/big_op.v
theories/algebra/big_op.v
+9
-9
theories/algebra/cmra_big_op.v
theories/algebra/cmra_big_op.v
+1
-1
theories/algebra/lib/excl_auth.v
theories/algebra/lib/excl_auth.v
+1
-0
theories/algebra/lib/frac_auth.v
theories/algebra/lib/frac_auth.v
+1
-0
theories/algebra/lib/ufrac_auth.v
theories/algebra/lib/ufrac_auth.v
+1
-0
theories/algebra/numbers.v
theories/algebra/numbers.v
+1
-0
theories/algebra/proofmode_classes.v
theories/algebra/proofmode_classes.v
+1
-0
theories/base_logic/bi.v
theories/base_logic/bi.v
+1
-0
theories/base_logic/bupd_alt.v
theories/base_logic/bupd_alt.v
+4
-0
theories/base_logic/lib/fancy_updates_from_vs.v
theories/base_logic/lib/fancy_updates_from_vs.v
+3
-0
theories/base_logic/proofmode.v
theories/base_logic/proofmode.v
+1
-0
theories/bi/ascii.v
theories/bi/ascii.v
+1
-0
theories/bi/derived_connectives.v
theories/bi/derived_connectives.v
+1
-0
theories/bi/derived_laws.v
theories/bi/derived_laws.v
+4
-0
theories/bi/derived_laws_later.v
theories/bi/derived_laws_later.v
+1
-0
theories/bi/embedding.v
theories/bi/embedding.v
+4
-0
theories/bi/interface.v
theories/bi/interface.v
+1
-0
theories/bi/internal_eq.v
theories/bi/internal_eq.v
+1
-0
theories/bi/lib/counterexamples.v
theories/bi/lib/counterexamples.v
+3
-0
theories/bi/lib/fixpoint.v
theories/bi/lib/fixpoint.v
+8
-8
theories/bi/lib/relations.v
theories/bi/lib/relations.v
+4
-0
theories/bi/monpred.v
theories/bi/monpred.v
+1
-1
theories/bi/notation.v
theories/bi/notation.v
+1
-0
theories/bi/plainly.v
theories/bi/plainly.v
+4
-0
theories/bi/telescopes.v
theories/bi/telescopes.v
+1
-1
theories/bi/updates.v
theories/bi/updates.v
+4
-0
theories/bi/weakestpre.v
theories/bi/weakestpre.v
+1
-0
theories/heap_lang/lib/clairvoyant_coin.v
theories/heap_lang/lib/clairvoyant_coin.v
+1
-0
theories/heap_lang/lib/lazy_coin.v
theories/heap_lang/lib/lazy_coin.v
+1
-0
theories/heap_lang/lib/nondet_bool.v
theories/heap_lang/lib/nondet_bool.v
+1
-0
theories/heap_lang/locations.v
theories/heap_lang/locations.v
+1
-0
theories/heap_lang/metatheory.v
theories/heap_lang/metatheory.v
+1
-0
theories/heap_lang/proph_erasure.v
theories/heap_lang/proph_erasure.v
+1
-0
theories/proofmode/ident_name.v
theories/proofmode/ident_name.v
+1
-0
theories/proofmode/monpred.v
theories/proofmode/monpred.v
+1
-0
theories/proofmode/reduction.v
theories/proofmode/reduction.v
+1
-0
theories/proofmode/tactics.v
theories/proofmode/tactics.v
+1
-0
theories/si_logic/bi.v
theories/si_logic/bi.v
+1
-0
theories/si_logic/siprop.v
theories/si_logic/siprop.v
+1
-0
No files found.
Makefile.coq.local
View file @
9291076e
...
@@ -12,6 +12,10 @@ TESTFILES:=$(wildcard tests/*.v)
...
@@ -12,6 +12,10 @@ TESTFILES:=$(wildcard tests/*.v)
NORMALIZER
:=
test-normalizer.sed
NORMALIZER
:=
test-normalizer.sed
test
:
$(TESTFILES:.v=.vo)
test
:
$(TESTFILES:.v=.vo)
# Make sure everything imports the options.
$(HIDE)for
FILE
in
$$(find
theories/
-name
"*.v"
|
fgrep
-v
theories/options.v);
do
\
if ! fgrep -q 'From iris Require Import options.' "$$FILE"; then echo "ERROR
:
$$FILE does not import 'options'."; exit 1; fi
\
done
.PHONY
:
test
.PHONY
:
test
COQ_TEST
=
$(COQTOP)
$(COQDEBUG)
-batch
-test-mode
COQ_TEST
=
$(COQTOP)
$(COQDEBUG)
-batch
-test-mode
...
...
theories/algebra/big_op.v
View file @
9291076e
From
stdpp
Require
Export
functions
gmap
gmultiset
.
From
stdpp
Require
Export
functions
gmap
gmultiset
.
From
iris
.
algebra
Require
Export
monoid
.
From
iris
.
algebra
Require
Export
monoid
.
Set
Default
Proof
Using
"Type*"
.
From
iris
Require
Import
options
.
Local
Existing
Instances
monoid_ne
monoid_assoc
monoid_comm
Local
Existing
Instances
monoid_ne
monoid_assoc
monoid_comm
monoid_left_id
monoid_right_id
monoid_proper
monoid_left_id
monoid_right_id
monoid_proper
monoid_homomorphism_rel_po
monoid_homomorphism_rel_proper
monoid_homomorphism_rel_po
monoid_homomorphism_rel_proper
...
@@ -619,36 +619,36 @@ Section homomorphisms.
...
@@ -619,36 +619,36 @@ Section homomorphisms.
Lemma
big_opL_commute_L
{
A
}
(
h
:
M1
→
M2
)
Lemma
big_opL_commute_L
{
A
}
(
h
:
M1
→
M2
)
`
{!
MonoidHomomorphism
o1
o2
(
≡
)
h
}
(
f
:
nat
→
A
→
M1
)
l
:
`
{!
MonoidHomomorphism
o1
o2
(
≡
)
h
}
(
f
:
nat
→
A
→
M1
)
l
:
h
([^
o1
list
]
k
↦
x
∈
l
,
f
k
x
)
=
([^
o2
list
]
k
↦
x
∈
l
,
h
(
f
k
x
)).
h
([^
o1
list
]
k
↦
x
∈
l
,
f
k
x
)
=
([^
o2
list
]
k
↦
x
∈
l
,
h
(
f
k
x
)).
Proof
.
unfold_leibniz
.
by
apply
big_opL_commute
.
Qed
.
Proof
using
Type
*
.
unfold_leibniz
.
by
apply
big_opL_commute
.
Qed
.
Lemma
big_opL_commute1_L
{
A
}
(
h
:
M1
→
M2
)
Lemma
big_opL_commute1_L
{
A
}
(
h
:
M1
→
M2
)
`
{!
WeakMonoidHomomorphism
o1
o2
(
≡
)
h
}
(
f
:
nat
→
A
→
M1
)
l
:
`
{!
WeakMonoidHomomorphism
o1
o2
(
≡
)
h
}
(
f
:
nat
→
A
→
M1
)
l
:
l
≠
[]
→
h
([^
o1
list
]
k
↦
x
∈
l
,
f
k
x
)
=
([^
o2
list
]
k
↦
x
∈
l
,
h
(
f
k
x
)).
l
≠
[]
→
h
([^
o1
list
]
k
↦
x
∈
l
,
f
k
x
)
=
([^
o2
list
]
k
↦
x
∈
l
,
h
(
f
k
x
)).
Proof
.
unfold_leibniz
.
by
apply
big_opL_commute1
.
Qed
.
Proof
using
Type
*
.
unfold_leibniz
.
by
apply
big_opL_commute1
.
Qed
.
Lemma
big_opM_commute_L
`
{
Countable
K
}
{
A
}
(
h
:
M1
→
M2
)
Lemma
big_opM_commute_L
`
{
Countable
K
}
{
A
}
(
h
:
M1
→
M2
)
`
{!
MonoidHomomorphism
o1
o2
(
≡
)
h
}
(
f
:
K
→
A
→
M1
)
m
:
`
{!
MonoidHomomorphism
o1
o2
(
≡
)
h
}
(
f
:
K
→
A
→
M1
)
m
:
h
([^
o1
map
]
k
↦
x
∈
m
,
f
k
x
)
=
([^
o2
map
]
k
↦
x
∈
m
,
h
(
f
k
x
)).
h
([^
o1
map
]
k
↦
x
∈
m
,
f
k
x
)
=
([^
o2
map
]
k
↦
x
∈
m
,
h
(
f
k
x
)).
Proof
.
unfold_leibniz
.
by
apply
big_opM_commute
.
Qed
.
Proof
using
Type
*
.
unfold_leibniz
.
by
apply
big_opM_commute
.
Qed
.
Lemma
big_opM_commute1_L
`
{
Countable
K
}
{
A
}
(
h
:
M1
→
M2
)
Lemma
big_opM_commute1_L
`
{
Countable
K
}
{
A
}
(
h
:
M1
→
M2
)
`
{!
WeakMonoidHomomorphism
o1
o2
(
≡
)
h
}
(
f
:
K
→
A
→
M1
)
m
:
`
{!
WeakMonoidHomomorphism
o1
o2
(
≡
)
h
}
(
f
:
K
→
A
→
M1
)
m
:
m
≠
∅
→
h
([^
o1
map
]
k
↦
x
∈
m
,
f
k
x
)
=
([^
o2
map
]
k
↦
x
∈
m
,
h
(
f
k
x
)).
m
≠
∅
→
h
([^
o1
map
]
k
↦
x
∈
m
,
f
k
x
)
=
([^
o2
map
]
k
↦
x
∈
m
,
h
(
f
k
x
)).
Proof
.
unfold_leibniz
.
by
apply
big_opM_commute1
.
Qed
.
Proof
using
Type
*
.
unfold_leibniz
.
by
apply
big_opM_commute1
.
Qed
.
Lemma
big_opS_commute_L
`
{
Countable
A
}
(
h
:
M1
→
M2
)
Lemma
big_opS_commute_L
`
{
Countable
A
}
(
h
:
M1
→
M2
)
`
{!
MonoidHomomorphism
o1
o2
(
≡
)
h
}
(
f
:
A
→
M1
)
X
:
`
{!
MonoidHomomorphism
o1
o2
(
≡
)
h
}
(
f
:
A
→
M1
)
X
:
h
([^
o1
set
]
x
∈
X
,
f
x
)
=
([^
o2
set
]
x
∈
X
,
h
(
f
x
)).
h
([^
o1
set
]
x
∈
X
,
f
x
)
=
([^
o2
set
]
x
∈
X
,
h
(
f
x
)).
Proof
.
unfold_leibniz
.
by
apply
big_opS_commute
.
Qed
.
Proof
using
Type
*
.
unfold_leibniz
.
by
apply
big_opS_commute
.
Qed
.
Lemma
big_opS_commute1_L
`
{
Countable
A
}
(
h
:
M1
→
M2
)
Lemma
big_opS_commute1_L
`
{
Countable
A
}
(
h
:
M1
→
M2
)
`
{!
WeakMonoidHomomorphism
o1
o2
(
≡
)
h
}
(
f
:
A
→
M1
)
X
:
`
{!
WeakMonoidHomomorphism
o1
o2
(
≡
)
h
}
(
f
:
A
→
M1
)
X
:
X
≠
∅
→
h
([^
o1
set
]
x
∈
X
,
f
x
)
=
([^
o2
set
]
x
∈
X
,
h
(
f
x
)).
X
≠
∅
→
h
([^
o1
set
]
x
∈
X
,
f
x
)
=
([^
o2
set
]
x
∈
X
,
h
(
f
x
)).
Proof
.
intros
.
rewrite
<-
leibniz_equiv_iff
.
by
apply
big_opS_commute1
.
Qed
.
Proof
using
Type
*
.
intros
.
rewrite
<-
leibniz_equiv_iff
.
by
apply
big_opS_commute1
.
Qed
.
Lemma
big_opMS_commute_L
`
{
Countable
A
}
(
h
:
M1
→
M2
)
Lemma
big_opMS_commute_L
`
{
Countable
A
}
(
h
:
M1
→
M2
)
`
{!
MonoidHomomorphism
o1
o2
(
≡
)
h
}
(
f
:
A
→
M1
)
X
:
`
{!
MonoidHomomorphism
o1
o2
(
≡
)
h
}
(
f
:
A
→
M1
)
X
:
h
([^
o1
mset
]
x
∈
X
,
f
x
)
=
([^
o2
mset
]
x
∈
X
,
h
(
f
x
)).
h
([^
o1
mset
]
x
∈
X
,
f
x
)
=
([^
o2
mset
]
x
∈
X
,
h
(
f
x
)).
Proof
.
unfold_leibniz
.
by
apply
big_opMS_commute
.
Qed
.
Proof
using
Type
*
.
unfold_leibniz
.
by
apply
big_opMS_commute
.
Qed
.
Lemma
big_opMS_commute1_L
`
{
Countable
A
}
(
h
:
M1
→
M2
)
Lemma
big_opMS_commute1_L
`
{
Countable
A
}
(
h
:
M1
→
M2
)
`
{!
WeakMonoidHomomorphism
o1
o2
(
≡
)
h
}
(
f
:
A
→
M1
)
X
:
`
{!
WeakMonoidHomomorphism
o1
o2
(
≡
)
h
}
(
f
:
A
→
M1
)
X
:
X
≠
∅
→
h
([^
o1
mset
]
x
∈
X
,
f
x
)
=
([^
o2
mset
]
x
∈
X
,
h
(
f
x
)).
X
≠
∅
→
h
([^
o1
mset
]
x
∈
X
,
f
x
)
=
([^
o2
mset
]
x
∈
X
,
h
(
f
x
)).
Proof
.
intros
.
rewrite
<-
leibniz_equiv_iff
.
by
apply
big_opMS_commute1
.
Qed
.
Proof
using
Type
*
.
intros
.
rewrite
<-
leibniz_equiv_iff
.
by
apply
big_opMS_commute1
.
Qed
.
End
homomorphisms
.
End
homomorphisms
.
theories/algebra/cmra_big_op.v
View file @
9291076e
From
stdpp
Require
Import
gmap
gmultiset
.
From
stdpp
Require
Import
gmap
gmultiset
.
From
iris
.
algebra
Require
Export
big_op
cmra
.
From
iris
.
algebra
Require
Export
big_op
cmra
.
Set
Default
Proof
Using
"Type*"
.
From
iris
Require
Import
options
.
(** Option *)
(** Option *)
Lemma
big_opL_None
{
M
:
cmraT
}
{
A
}
(
f
:
nat
→
A
→
option
M
)
l
:
Lemma
big_opL_None
{
M
:
cmraT
}
{
A
}
(
f
:
nat
→
A
→
option
M
)
l
:
...
...
theories/algebra/lib/excl_auth.v
View file @
9291076e
From
iris
.
algebra
Require
Export
auth
excl
updates
.
From
iris
.
algebra
Require
Export
auth
excl
updates
.
From
iris
.
algebra
Require
Import
local_updates
.
From
iris
.
algebra
Require
Import
local_updates
.
From
iris
.
base_logic
Require
Import
base_logic
.
From
iris
.
base_logic
Require
Import
base_logic
.
From
iris
Require
Import
options
.
(** Authoritative CMRA where the fragment is exclusively owned.
(** Authoritative CMRA where the fragment is exclusively owned.
This is effectively a single "ghost variable" with two views, the frament [◯E a]
This is effectively a single "ghost variable" with two views, the frament [◯E a]
...
...
theories/algebra/lib/frac_auth.v
View file @
9291076e
From
iris
.
algebra
Require
Export
frac
auth
updates
local_updates
.
From
iris
.
algebra
Require
Export
frac
auth
updates
local_updates
.
From
iris
.
algebra
Require
Import
proofmode_classes
.
From
iris
.
algebra
Require
Import
proofmode_classes
.
From
iris
Require
Import
options
.
(** Authoritative CMRA where the NON-authoritative parts can be fractional.
(** Authoritative CMRA where the NON-authoritative parts can be fractional.
This CMRA allows the original non-authoritative element [◯ a] to be split into
This CMRA allows the original non-authoritative element [◯ a] to be split into
...
...
theories/algebra/lib/ufrac_auth.v
View file @
9291076e
...
@@ -19,6 +19,7 @@ difference:
...
@@ -19,6 +19,7 @@ difference:
From
Coq
Require
Import
QArith
Qcanon
.
From
Coq
Require
Import
QArith
Qcanon
.
From
iris
.
algebra
Require
Export
auth
frac
updates
local_updates
.
From
iris
.
algebra
Require
Export
auth
frac
updates
local_updates
.
From
iris
.
algebra
Require
Import
ufrac
proofmode_classes
.
From
iris
.
algebra
Require
Import
ufrac
proofmode_classes
.
From
iris
Require
Import
options
.
Definition
ufrac_authR
(
A
:
cmraT
)
:
cmraT
:
=
Definition
ufrac_authR
(
A
:
cmraT
)
:
cmraT
:
=
authR
(
optionUR
(
prodR
ufracR
A
)).
authR
(
optionUR
(
prodR
ufracR
A
)).
...
...
theories/algebra/numbers.v
View file @
9291076e
From
iris
.
algebra
Require
Export
cmra
local_updates
proofmode_classes
.
From
iris
.
algebra
Require
Export
cmra
local_updates
proofmode_classes
.
From
iris
Require
Import
options
.
(** ** Natural numbers with [add] as the operation. *)
(** ** Natural numbers with [add] as the operation. *)
Section
nat
.
Section
nat
.
...
...
theories/algebra/proofmode_classes.v
View file @
9291076e
From
iris
.
algebra
Require
Export
cmra
.
From
iris
.
algebra
Require
Export
cmra
.
From
iris
.
proofmode
Require
Export
classes
.
From
iris
.
proofmode
Require
Export
classes
.
From
iris
Require
Import
options
.
(* There are various versions of [IsOp] with different modes:
(* There are various versions of [IsOp] with different modes:
...
...
theories/base_logic/bi.v
View file @
9291076e
From
iris
.
bi
Require
Export
derived_connectives
updates
internal_eq
plainly
.
From
iris
.
bi
Require
Export
derived_connectives
updates
internal_eq
plainly
.
From
iris
.
base_logic
Require
Export
upred
.
From
iris
.
base_logic
Require
Export
upred
.
From
iris
Require
Import
options
.
Import
uPred_primitive
.
Import
uPred_primitive
.
(** BI instances for [uPred], and re-stating the remaining primitive laws in
(** BI instances for [uPred], and re-stating the remaining primitive laws in
...
...
theories/base_logic/bupd_alt.v
View file @
9291076e
From
iris
.
proofmode
Require
Import
tactics
.
From
iris
.
proofmode
Require
Import
tactics
.
From
iris
.
base_logic
Require
Export
base_logic
.
From
iris
.
base_logic
Require
Export
base_logic
.
From
iris
Require
Import
options
.
(* The sections add extra BI assumptions, which is only picked up with "Type"*. *)
Set
Default
Proof
Using
"Type*"
.
(** This file contains an alternative version of basic updates, that is
(** This file contains an alternative version of basic updates, that is
expression in terms of just the plain modality [■]. *)
expression in terms of just the plain modality [■]. *)
...
...
theories/base_logic/lib/fancy_updates_from_vs.v
View file @
9291076e
...
@@ -4,6 +4,9 @@ laws of the view shift. *)
...
@@ -4,6 +4,9 @@ laws of the view shift. *)
From
stdpp
Require
Export
coPset
.
From
stdpp
Require
Export
coPset
.
From
iris
.
proofmode
Require
Import
tactics
.
From
iris
.
proofmode
Require
Import
tactics
.
From
iris
.
base_logic
Require
Export
base_logic
.
From
iris
.
base_logic
Require
Export
base_logic
.
From
iris
Require
Import
options
.
(* The sections add extra BI assumptions, which is only picked up with "Type"*. *)
Set
Default
Proof
Using
"Type*"
.
Set
Default
Proof
Using
"Type*"
.
Section
fupd
.
Section
fupd
.
...
...
theories/base_logic/proofmode.v
View file @
9291076e
From
iris
.
algebra
Require
Import
proofmode_classes
.
From
iris
.
algebra
Require
Import
proofmode_classes
.
From
iris
.
base_logic
Require
Export
derived
.
From
iris
.
base_logic
Require
Export
derived
.
From
iris
Require
Import
options
.
Import
base_logic
.
bi
.
uPred
.
Import
base_logic
.
bi
.
uPred
.
...
...
theories/bi/ascii.v
View file @
9291076e
From
iris
.
bi
Require
Import
interface
derived_connectives
updates
.
From
iris
.
bi
Require
Import
interface
derived_connectives
updates
.
From
iris
.
algebra
Require
Export
ofe
.
From
iris
.
algebra
Require
Export
ofe
.
From
iris
Require
Import
options
.
Notation
"P |- Q"
:
=
(
P
⊢
Q
)
Notation
"P |- Q"
:
=
(
P
⊢
Q
)
(
at
level
99
,
Q
at
level
200
,
right
associativity
,
only
parsing
)
:
stdpp_scope
.
(
at
level
99
,
Q
at
level
200
,
right
associativity
,
only
parsing
)
:
stdpp_scope
.
...
...
theories/bi/derived_connectives.v
View file @
9291076e
From
iris
.
bi
Require
Export
interface
.
From
iris
.
bi
Require
Export
interface
.
From
iris
.
algebra
Require
Import
monoid
.
From
iris
.
algebra
Require
Import
monoid
.
From
iris
Require
Import
options
.
Definition
bi_iff
{
PROP
:
bi
}
(
P
Q
:
PROP
)
:
PROP
:
=
((
P
→
Q
)
∧
(
Q
→
P
))%
I
.
Definition
bi_iff
{
PROP
:
bi
}
(
P
Q
:
PROP
)
:
PROP
:
=
((
P
→
Q
)
∧
(
Q
→
P
))%
I
.
Arguments
bi_iff
{
_
}
_
%
I
_
%
I
:
simpl
never
.
Arguments
bi_iff
{
_
}
_
%
I
_
%
I
:
simpl
never
.
...
...
theories/bi/derived_laws.v
View file @
9291076e
From
iris
.
bi
Require
Export
derived_connectives
.
From
iris
.
bi
Require
Export
derived_connectives
.
From
iris
.
algebra
Require
Import
monoid
.
From
iris
.
algebra
Require
Import
monoid
.
From
iris
Require
Import
options
.
(* The sections add [BiAffine] and the like, which is only picked up with "Type"*. *)
Set
Default
Proof
Using
"Type*"
.
(** Naming schema for lemmas about modalities:
(** Naming schema for lemmas about modalities:
M1_into_M2: M1 P ⊢ M2 P
M1_into_M2: M1 P ⊢ M2 P
...
...
theories/bi/derived_laws_later.v
View file @
9291076e
From
iris
.
bi
Require
Export
derived_laws
.
From
iris
.
bi
Require
Export
derived_laws
.
From
iris
.
algebra
Require
Import
monoid
.
From
iris
.
algebra
Require
Import
monoid
.
From
iris
Require
Import
options
.
Module
bi
.
Module
bi
.
Import
interface
.
bi
.
Import
interface
.
bi
.
...
...
theories/bi/embedding.v
View file @
9291076e
From
iris
.
bi
Require
Import
interface
derived_laws_later
big_op
.
From
iris
.
bi
Require
Import
interface
derived_laws_later
big_op
.
From
iris
.
bi
Require
Import
plainly
updates
internal_eq
.
From
iris
.
bi
Require
Import
plainly
updates
internal_eq
.
From
iris
.
algebra
Require
Import
monoid
.
From
iris
.
algebra
Require
Import
monoid
.
From
iris
Require
Import
options
.
(* The sections add extra BI assumptions, which is only picked up with "Type"*. *)
Set
Default
Proof
Using
"Type*"
.
Class
Embed
(
A
B
:
Type
)
:
=
embed
:
A
→
B
.
Class
Embed
(
A
B
:
Type
)
:
=
embed
:
A
→
B
.
Arguments
embed
{
_
_
_
}
_
%
I
:
simpl
never
.
Arguments
embed
{
_
_
_
}
_
%
I
:
simpl
never
.
...
...
theories/bi/interface.v
View file @
9291076e
From
iris
.
bi
Require
Export
notation
.
From
iris
.
bi
Require
Export
notation
.
From
iris
.
algebra
Require
Export
ofe
.
From
iris
.
algebra
Require
Export
ofe
.
From
iris
Require
Import
options
.
Set
Primitive
Projections
.
Set
Primitive
Projections
.
Section
bi_mixin
.
Section
bi_mixin
.
...
...
theories/bi/internal_eq.v
View file @
9291076e
From
iris
.
bi
Require
Import
derived_laws_later
big_op
.
From
iris
.
bi
Require
Import
derived_laws_later
big_op
.
From
iris
Require
Import
options
.
Import
interface
.
bi
derived_laws
.
bi
derived_laws_later
.
bi
.
Import
interface
.
bi
derived_laws
.
bi
derived_laws_later
.
bi
.
(** This file defines a type class for BIs with a notion of internal equality.
(** This file defines a type class for BIs with a notion of internal equality.
...
...
theories/bi/lib/counterexamples.v
View file @
9291076e
From
iris
.
bi
Require
Export
bi
.
From
iris
.
bi
Require
Export
bi
.
From
iris
.
proofmode
Require
Import
tactics
.
From
iris
.
proofmode
Require
Import
tactics
.
From
iris
Require
Import
options
.
(* The sections add extra BI assumptions, which is only picked up with "Type"*. *)
Set
Default
Proof
Using
"Type*"
.
Set
Default
Proof
Using
"Type*"
.
(** This proves that we need the ▷ in a "Saved Proposition" construction with
(** This proves that we need the ▷ in a "Saved Proposition" construction with
...
...
theories/bi/lib/fixpoint.v
View file @
9291076e
From
iris
.
bi
Require
Export
bi
.
From
iris
.
bi
Require
Export
bi
.
From
iris
.
proofmode
Require
Import
tactics
.
From
iris
.
proofmode
Require
Import
tactics
.
Set
Default
Proof
Using
"Type*"
.
From
iris
Require
Import
options
.
Import
bi
.
Import
bi
.
(** Least and greatest fixpoint of a monotone function, defined entirely inside
(** Least and greatest fixpoint of a monotone function, defined entirely inside
...
@@ -35,7 +35,7 @@ Section least.
...
@@ -35,7 +35,7 @@ Section least.
Context
{
PROP
:
bi
}
{
A
:
ofeT
}
(
F
:
(
A
→
PROP
)
→
(
A
→
PROP
))
`
{!
BiMonoPred
F
}.
Context
{
PROP
:
bi
}
{
A
:
ofeT
}
(
F
:
(
A
→
PROP
)
→
(
A
→
PROP
))
`
{!
BiMonoPred
F
}.
Lemma
least_fixpoint_unfold_2
x
:
F
(
bi_least_fixpoint
F
)
x
⊢
bi_least_fixpoint
F
x
.
Lemma
least_fixpoint_unfold_2
x
:
F
(
bi_least_fixpoint
F
)
x
⊢
bi_least_fixpoint
F
x
.
Proof
.
Proof
using
Type
*
.
rewrite
/
bi_least_fixpoint
/=.
iIntros
"HF"
(
Φ
)
"#Hincl"
.
rewrite
/
bi_least_fixpoint
/=.
iIntros
"HF"
(
Φ
)
"#Hincl"
.
iApply
"Hincl"
.
iApply
(
bi_mono_pred
_
Φ
with
"[#]"
)
;
last
done
.
iApply
"Hincl"
.
iApply
(
bi_mono_pred
_
Φ
with
"[#]"
)
;
last
done
.
iIntros
"!>"
(
y
)
"Hy"
.
iApply
(
"Hy"
with
"[# //]"
).
iIntros
"!>"
(
y
)
"Hy"
.
iApply
(
"Hy"
with
"[# //]"
).
...
@@ -43,7 +43,7 @@ Section least.
...
@@ -43,7 +43,7 @@ Section least.
Lemma
least_fixpoint_unfold_1
x
:
Lemma
least_fixpoint_unfold_1
x
:
bi_least_fixpoint
F
x
⊢
F
(
bi_least_fixpoint
F
)
x
.
bi_least_fixpoint
F
x
⊢
F
(
bi_least_fixpoint
F
)
x
.
Proof
.
Proof
using
Type
*
.
iIntros
"HF"
.
iApply
(
"HF"
$!
(
OfeMor
(
F
(
bi_least_fixpoint
F
)))
with
"[#]"
).
iIntros
"HF"
.
iApply
(
"HF"
$!
(
OfeMor
(
F
(
bi_least_fixpoint
F
)))
with
"[#]"
).
iIntros
"!>"
(
y
)
"Hy /="
.
iApply
(
bi_mono_pred
with
"[#]"
)
;
last
done
.
iIntros
"!>"
(
y
)
"Hy /="
.
iApply
(
bi_mono_pred
with
"[#]"
)
;
last
done
.
iIntros
"!>"
(
z
)
"?"
.
by
iApply
least_fixpoint_unfold_2
.
iIntros
"!>"
(
z
)
"?"
.
by
iApply
least_fixpoint_unfold_2
.
...
@@ -51,7 +51,7 @@ Section least.
...
@@ -51,7 +51,7 @@ Section least.
Corollary
least_fixpoint_unfold
x
:
Corollary
least_fixpoint_unfold
x
:
bi_least_fixpoint
F
x
≡
F
(
bi_least_fixpoint
F
)
x
.
bi_least_fixpoint
F
x
≡
F
(
bi_least_fixpoint
F
)
x
.
Proof
.
Proof
using
Type
*
.
apply
(
anti_symm
_
)
;
auto
using
least_fixpoint_unfold_1
,
least_fixpoint_unfold_2
.
apply
(
anti_symm
_
)
;
auto
using
least_fixpoint_unfold_1
,
least_fixpoint_unfold_2
.
Qed
.
Qed
.
...
@@ -64,7 +64,7 @@ Section least.
...
@@ -64,7 +64,7 @@ Section least.
Lemma
least_fixpoint_strong_ind
(
Φ
:
A
→
PROP
)
`
{!
NonExpansive
Φ
}
:
Lemma
least_fixpoint_strong_ind
(
Φ
:
A
→
PROP
)
`
{!
NonExpansive
Φ
}
:
□
(
∀
y
,
F
(
λ
x
,
Φ
x
∧
bi_least_fixpoint
F
x
)
y
-
∗
Φ
y
)
-
∗
□
(
∀
y
,
F
(
λ
x
,
Φ
x
∧
bi_least_fixpoint
F
x
)
y
-
∗
Φ
y
)
-
∗
∀
x
,
bi_least_fixpoint
F
x
-
∗
Φ
x
.
∀
x
,
bi_least_fixpoint
F
x
-
∗
Φ
x
.
Proof
.
Proof
using
Type
*
.
trans
(
∀
x
,
bi_least_fixpoint
F
x
-
∗
Φ
x
∧
bi_least_fixpoint
F
x
)%
I
.
trans
(
∀
x
,
bi_least_fixpoint
F
x
-
∗
Φ
x
∧
bi_least_fixpoint
F
x
)%
I
.
{
iIntros
"#HΦ"
.
iApply
(
least_fixpoint_ind
with
"[]"
)
;
first
solve_proper
.
{
iIntros
"#HΦ"
.
iApply
(
least_fixpoint_ind
with
"[]"
)
;
first
solve_proper
.
iIntros
"!>"
(
y
)
"H"
.
iSplit
;
first
by
iApply
"HΦ"
.
iIntros
"!>"
(
y
)
"H"
.
iSplit
;
first
by
iApply
"HΦ"
.
...
@@ -97,7 +97,7 @@ Section greatest.
...
@@ -97,7 +97,7 @@ Section greatest.
Lemma
greatest_fixpoint_unfold_1
x
:
Lemma
greatest_fixpoint_unfold_1
x
:
bi_greatest_fixpoint
F
x
⊢
F
(
bi_greatest_fixpoint
F
)
x
.
bi_greatest_fixpoint
F
x
⊢
F
(
bi_greatest_fixpoint
F
)
x
.
Proof
.
Proof
using
Type
*
.
iDestruct
1
as
(
Φ
)
"[#Hincl HΦ]"
.
iDestruct
1
as
(
Φ
)
"[#Hincl HΦ]"
.
iApply
(
bi_mono_pred
Φ
(
bi_greatest_fixpoint
F
)
with
"[#]"
).
iApply
(
bi_mono_pred
Φ
(
bi_greatest_fixpoint
F
)
with
"[#]"
).
-
iIntros
"!>"
(
y
)
"Hy"
.
iExists
Φ
.
auto
.
-
iIntros
"!>"
(
y
)
"Hy"
.
iExists
Φ
.
auto
.
...
@@ -106,7 +106,7 @@ Section greatest.
...
@@ -106,7 +106,7 @@ Section greatest.
Lemma
greatest_fixpoint_unfold_2
x
:
Lemma
greatest_fixpoint_unfold_2
x
:
F
(
bi_greatest_fixpoint
F
)
x
⊢
bi_greatest_fixpoint
F
x
.
F
(
bi_greatest_fixpoint
F
)
x
⊢
bi_greatest_fixpoint
F
x
.
Proof
.
Proof
using
Type
*
.
iIntros
"HF"
.
iExists
(
OfeMor
(
F
(
bi_greatest_fixpoint
F
))).
iIntros
"HF"
.
iExists
(
OfeMor
(
F
(
bi_greatest_fixpoint
F
))).
iSplit
;
last
done
.
iIntros
"!>"
(
y
)
"Hy /="
.
iApply
(
bi_mono_pred
with
"[#] Hy"
).
iSplit
;
last
done
.
iIntros
"!>"
(
y
)
"Hy /="
.
iApply
(
bi_mono_pred
with
"[#] Hy"
).
iIntros
"!>"
(
z
)
"?"
.
by
iApply
greatest_fixpoint_unfold_1
.
iIntros
"!>"
(
z
)
"?"
.
by
iApply
greatest_fixpoint_unfold_1
.
...
@@ -114,7 +114,7 @@ Section greatest.
...
@@ -114,7 +114,7 @@ Section greatest.
Corollary
greatest_fixpoint_unfold
x
:
Corollary
greatest_fixpoint_unfold
x
:
bi_greatest_fixpoint
F
x
≡
F
(
bi_greatest_fixpoint
F
)
x
.
bi_greatest_fixpoint
F
x
≡
F
(
bi_greatest_fixpoint
F
)
x
.
Proof
.
Proof
using
Type
*
.
apply
(
anti_symm
_
)
;
auto
using
greatest_fixpoint_unfold_1
,
greatest_fixpoint_unfold_2
.
apply
(
anti_symm
_
)
;
auto
using
greatest_fixpoint_unfold_1
,
greatest_fixpoint_unfold_2
.
Qed
.
Qed
.
...
...
theories/bi/lib/relations.v
View file @
9291076e
...
@@ -2,6 +2,10 @@
...
@@ -2,6 +2,10 @@
its reflexive transitive closure. *)
its reflexive transitive closure. *)
From
iris
.
bi
.
lib
Require
Export
fixpoint
.
From
iris
.
bi
.
lib
Require
Export
fixpoint
.
From
iris
.
proofmode
Require
Import
tactics
.
From
iris
.
proofmode
Require
Import
tactics
.
From
iris
Require
Import
options
.
(* The sections add extra BI assumptions, which is only picked up with "Type"*. *)
Set
Default
Proof
Using
"Type*"
.
Definition
bi_rtc_pre
`
{!
BiInternalEq
PROP
}
Definition
bi_rtc_pre
`
{!
BiInternalEq
PROP
}
{
A
:
ofeT
}
(
R
:
A
→
A
→
PROP
)
{
A
:
ofeT
}
(
R
:
A
→
A
→
PROP
)
...
...
theories/bi/monpred.v
View file @
9291076e
From
stdpp
Require
Import
coPset
.
From
stdpp
Require
Import
coPset
.
From
iris
.
bi
Require
Import
bi
.
From
iris
.
bi
Require
Import
bi
.
Set
Default
Proof
Using
"Type"
.
From
iris
Require
Import
options
.
(** Definitions. *)
(** Definitions. *)
Structure
biIndex
:
=
Structure
biIndex
:
=
...
...
theories/bi/notation.v
View file @
9291076e
From
iris
Require
Import
options
.
(** Just reserve the notation. *)
(** Just reserve the notation. *)
(** * Turnstiles *)
(** * Turnstiles *)
...
...
theories/bi/plainly.v
View file @
9291076e
From
iris
.
bi
Require
Import
derived_laws_later
big_op
internal_eq
.
From
iris
.
bi
Require
Import
derived_laws_later
big_op
internal_eq
.
From
iris
.
algebra
Require
Import
monoid
.
From
iris
.
algebra
Require
Import
monoid
.
From
iris
Require
Import
options
.
Import
interface
.
bi
derived_laws
.
bi
derived_laws_later
.
bi
.
Import
interface
.
bi
derived_laws
.
bi
derived_laws_later
.
bi
.
(* The sections add [BiAffine] and the like, which is only picked up with "Type"*. *)
Set
Default
Proof
Using
"Type*"
.
Class
Plainly
(
A
:
Type
)
:
=
plainly
:
A
→
A
.
Class
Plainly
(
A
:
Type
)
:
=
plainly
:
A
→
A
.
Arguments
plainly
{
A
}%
type_scope
{
_
}
_
%
I
.
Arguments
plainly
{
A
}%
type_scope
{
_
}
_
%
I
.
Hint
Mode
Plainly
!
:
typeclass_instances
.
Hint
Mode
Plainly
!
:
typeclass_instances
.
...
...
theories/bi/telescopes.v
View file @
9291076e
From
stdpp
Require
Export
telescopes
.
From
stdpp
Require
Export
telescopes
.
From
iris
.
bi
Require
Export
bi
.
From
iris
.
bi
Require
Export
bi
.
Set
Default
Proof
Using
"Type*"
.
From
iris
Require
Import
options
.
Import
bi
.
Import
bi
.
(* This cannot import the proofmode because it is imported by the proofmode! *)
(* This cannot import the proofmode because it is imported by the proofmode! *)
...
...
theories/bi/updates.v
View file @
9291076e
From
stdpp
Require
Import
coPset
.
From
stdpp
Require
Import
coPset
.
From
iris
.
bi
Require
Import
interface
derived_laws_later
big_op
plainly
.
From
iris
.
bi
Require
Import
interface
derived_laws_later
big_op
plainly
.
From
iris
Require
Import
options
.
Import
interface
.
bi
derived_laws
.
bi
derived_laws_later
.
bi
.
Import
interface
.
bi
derived_laws
.
bi
derived_laws_later
.
bi
.
(* The sections add extra BI assumptions, which is only picked up with "Type"*. *)
Set
Default
Proof
Using
"Type*"
.
(* We first define operational type classes for the notations, and then later
(* We first define operational type classes for the notations, and then later
bundle these operational type classes with the laws. *)
bundle these operational type classes with the laws. *)
Class
BUpd
(
PROP
:
Type
)
:
Type
:
=
bupd
:
PROP
→
PROP
.
Class
BUpd
(
PROP
:
Type
)
:
Type
:
=
bupd
:
PROP
→
PROP
.
...
...
theories/bi/weakestpre.v
View file @
9291076e
From
stdpp
Require
Export
coPset
.
From
stdpp
Require
Export
coPset
.
From
iris
.
bi
Require
Import
interface
derived_connectives
.
From
iris
.
bi
Require
Import
interface
derived_connectives
.
From
iris
.
program_logic
Require
Import
language
.
From
iris
.
program_logic
Require
Import
language
.
From
iris
Require
Import
options
.
Inductive
stuckness
:
=
NotStuck
|
MaybeStuck
.
Inductive
stuckness
:
=
NotStuck
|
MaybeStuck
.
...
...
theories/heap_lang/lib/clairvoyant_coin.v
View file @
9291076e
...
@@ -2,6 +2,7 @@ From iris.base_logic Require Export invariants.
...
@@ -2,6 +2,7 @@ From iris.base_logic Require Export invariants.
From
iris
.
program_logic
Require
Export
weakestpre
.
From
iris
.
program_logic
Require
Export
weakestpre
.
From
iris
.
heap_lang
Require
Export
lang
proofmode
notation
.
From
iris
.
heap_lang
Require
Export
lang
proofmode
notation
.
From
iris
.
heap_lang
.
lib
Require
Export
nondet_bool
.
From
iris
.
heap_lang
.
lib
Require
Export
nondet_bool
.
From
iris
Require
Import
options
.
(** The clairvoyant coin predicts all the values that it will
(** The clairvoyant coin predicts all the values that it will
*non-deterministically* choose throughout the execution of the
*non-deterministically* choose throughout the execution of the
...
...
theories/heap_lang/lib/lazy_coin.v
View file @
9291076e
...
@@ -2,6 +2,7 @@ From iris.base_logic Require Export invariants.
...
@@ -2,6 +2,7 @@ From iris.base_logic Require Export invariants.
From
iris
.
program_logic
Require
Export
weakestpre
.
From
iris
.
program_logic
Require
Export
weakestpre
.
From
iris
.
heap_lang
Require
Export
lang
proofmode
notation
.
From
iris
.
heap_lang
Require
Export
lang
proofmode
notation
.
From
iris
.
heap_lang
.
lib
Require
Export
nondet_bool
.
From
iris
.
heap_lang
.
lib
Require
Export
nondet_bool
.
From
iris
Require
Import
options
.
Definition
new_coin
:
val
:
=
λ
:
<>,
(
ref
NONE
,
NewProph
).
Definition
new_coin
:
val
:
=
λ
:
<>,
(
ref
NONE
,
NewProph
).
...
...
theories/heap_lang/lib/nondet_bool.v