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
Iron
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Iris
Iron
Commits
e578423a
Commit
e578423a
authored
Jun 18, 2019
by
Robbert Krebbers
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bump Iris (C→O rename + lazy_tc).
parent
8aacd098
Pipeline
#18891
failed with stage
in 11 minutes and 36 seconds
Changes
13
Pipelines
56
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
30 additions
and
30 deletions
+30
-30
opam
opam
+1
-1
theories/bi/fracpred.v
theories/bi/fracpred.v
+5
-5
theories/heap_lang/adequacy.v
theories/heap_lang/adequacy.v
+2
-2
theories/heap_lang/heap.v
theories/heap_lang/heap.v
+4
-4
theories/heap_lang/lang.v
theories/heap_lang/lang.v
+4
-4
theories/heap_lang/lib/linked_bag.v
theories/heap_lang/lib/linked_bag.v
+1
-1
theories/heap_lang/lib/message_passing.v
theories/heap_lang/lib/message_passing.v
+1
-1
theories/heap_lang/lib/queue.v
theories/heap_lang/lib/queue.v
+4
-4
theories/heap_lang/lib/resource_transfer_sts.v
theories/heap_lang/lib/resource_transfer_sts.v
+2
-2
theories/heap_lang/lib/spin_lock.v
theories/heap_lang/lib/spin_lock.v
+2
-2
theories/heap_lang/lib/spin_lock_track.v
theories/heap_lang/lib/spin_lock_track.v
+2
-2
theories/heap_lang/proofmode.v
theories/heap_lang/proofmode.v
+1
-1
theories/iron_logic/iron.v
theories/iron_logic/iron.v
+1
-1
No files found.
opam
View file @
e578423a
...
...
@@ -9,6 +9,6 @@ build: [make "-j%{jobs}%"]
install: [make "install"]
remove: [ "sh" "-c" "rm -rf '%{lib}%/coq/user-contrib/iron" ]
depends: [
"coq-iris" { (= "dev.2019-06-1
3.0.860bd8e4
") | (= "dev") }
"coq-iris" { (= "dev.2019-06-1
8.2.e039d7c7
") | (= "dev") }
]
theories/bi/fracpred.v
View file @
e578423a
...
...
@@ -35,14 +35,14 @@ Section ofe.
Lemma
fracPred_ofe_mixin
:
OfeMixin
(
fracPred
PROP
).
Proof
.
refine
(
iso_ofe_mixin
(
λ
P
:
fracPred
PROP
,
P
:
_
-
c
>
_
)
_
_
)
;
refine
(
iso_ofe_mixin
(
λ
P
:
fracPred
PROP
,
P
:
_
-
d
>
_
)
_
_
)
;
(
split
;
[
by
destruct
1
|
by
constructor
]).
Qed
.
Canonical
Structure
fracPred
C
:
ofeT
:
=
OfeT
(
fracPred
PROP
)
fracPred_ofe_mixin
.
Canonical
Structure
fracPred
O
:
ofeT
:
=
OfeT
(
fracPred
PROP
)
fracPred_ofe_mixin
.
Global
Instance
fracPred_cofe
`
{
Cofe
PROP
}
:
Cofe
fracPred
C
.
Global
Instance
fracPred_cofe
`
{
Cofe
PROP
}
:
Cofe
fracPred
O
.
Proof
.
refine
(
iso_cofe
(
λ
P
:
_
-
c
>
_
,
@
FracPred
PROP
P
)
id
_
_
).
refine
(
iso_cofe
(
λ
P
:
_
-
d
>
_
,
@
FracPred
PROP
P
)
id
_
_
).
-
split
;
[
by
destruct
1
|
by
constructor
].
-
done
.
Qed
.
...
...
@@ -504,7 +504,7 @@ Section sbi_facts.
-
apply
bi
.
forall_intro
=>?.
apply
(
bi
.
f_equiv
(
flip
fracPred_at
_
)).
-
rewrite
{
2
}(
_
:
P
=
FracPred
P
)
;
last
by
destruct
P
.
rewrite
{
2
}(
_
:
Q
=
FracPred
Q
)
;
last
by
destruct
Q
.
by
rewrite
-(@
bi
.
f_equiv
_
_
_
(@
FracPred
PROP
:
(
_
-
c
>
_
)
→
fracPred
)
by
rewrite
-(@
bi
.
f_equiv
_
_
_
(@
FracPred
PROP
:
(
_
-
d
>
_
)
→
fracPred
)
ltac
:
(
by
constructor
))
-
bi
.
fun_ext
.
Qed
.
...
...
theories/heap_lang/adequacy.v
View file @
e578423a
...
...
@@ -13,13 +13,13 @@ Set Default Proof Using "Type".
Class
heapPreG
Σ
:
=
HeapPreG
{
heap_preG_iris
:
>
ironInvPreG
Σ
;
heap_preG_inG
:
>
inG
Σ
(
ufrac_authR
heapUR
)
;
heap_preG_fork_post_inG
:
>
inG
Σ
(
authR
(
gmapUR
positive
(
exclR
(
option
C
ufracC
))))
;
heap_preG_fork_post_inG
:
>
inG
Σ
(
authR
(
gmapUR
positive
(
exclR
(
option
O
ufracO
))))
;
}.
Definition
heap
Σ
:
gFunctors
:
=
#[
ironInv
Σ
;
GFunctor
(
ufrac_authR
heapUR
)
;
GFunctor
(
authR
(
gmapUR
positive
(
exclR
(
option
C
ufracC
))))].
GFunctor
(
authR
(
gmapUR
positive
(
exclR
(
option
O
ufracO
))))].
Instance
subG_heapPreG
{
Σ
}
:
subG
heap
Σ
Σ
→
heapPreG
Σ
.
Proof
.
solve_inG
.
Qed
.
...
...
theories/heap_lang/heap.v
View file @
e578423a
...
...
@@ -10,7 +10,7 @@ From iron.heap_lang Require Export lang.
From
iron
.
iron_logic
Require
Export
weakestpre
.
Set
Default
Proof
Using
"Type"
.
Definition
heapUR
:
ucmraT
:
=
gmapUR
loc
(
prodR
fracR
(
agreeR
val
C
)).
Definition
heapUR
:
ucmraT
:
=
gmapUR
loc
(
prodR
fracR
(
agreeR
val
O
)).
Definition
to_heap
:
gmap
loc
val
→
heapUR
:
=
fmap
(
λ
v
,
(
1
%
Qp
,
to_agree
v
)).
...
...
@@ -22,7 +22,7 @@ Class heapG Σ := HeapG {
heapG_fcinv_cinvG
:
cinvG
Σ
;
heapG_fcinv_inG
:
inG
Σ
(
frac_authR
ufracR
)
;
heapG_fork_post_name
:
gname
;
heapG_fork_postG
:
>
inG
Σ
(
authR
(
gmapUR
positive
(
exclR
(
option
C
ufracC
))))
;
heapG_fork_postG
:
>
inG
Σ
(
authR
(
gmapUR
positive
(
exclR
(
option
O
ufracO
))))
;
}.
Arguments
heapG_name
{
_
}
_
:
assert
.
Arguments
heapG_fork_post_name
{
_
}
_
:
assert
.
...
...
@@ -98,7 +98,7 @@ Section to_heap.
Lemma
to_heap_empty
:
to_heap
∅
=
∅
.
Proof
.
by
rewrite
/
to_heap
fmap_empty
.
Qed
.
Lemma
to_heap_insert
l
v
σ
:
to_heap
(<[
l
:
=
v
]>
σ
)
=
<[
l
:
=(
1
%
Qp
,
to_agree
(
v
:
leibniz
C
val
))]>
(
to_heap
σ
).
to_heap
(<[
l
:
=
v
]>
σ
)
=
<[
l
:
=(
1
%
Qp
,
to_agree
(
v
:
leibniz
O
val
))]>
(
to_heap
σ
).
Proof
.
by
rewrite
/
to_heap
fmap_insert
.
Qed
.
Lemma
to_heap_delete
l
σ
:
to_heap
(
delete
l
σ
)
=
delete
l
(
to_heap
σ
).
...
...
@@ -296,7 +296,7 @@ Section heap.
iDestruct
1
as
(
π
fs
Hsize
)
"[Hπfs Hσ]"
;
iIntros
"Hp"
.
iMod
(
own_update_2
with
"Hσ Hp"
)
as
"[Hσ Hl]"
.
{
eapply
ufrac_auth_update
,
(
alloc_singleton_local_update
_
_
(
1
%
Qp
,
to_agree
(
v
:
leibniz
C
_
)))
=>
//.
(
alloc_singleton_local_update
_
_
(
1
%
Qp
,
to_agree
(
v
:
leibniz
O
_
)))
=>
//.
by
apply
lookup_to_heap_None
.
}
iModIntro
.
iFrame
"Hl"
.
iExists
π
fs
.
rewrite
to_heap_insert
.
by
iFrame
.
Qed
.
...
...
theories/heap_lang/lang.v
View file @
e578423a
...
...
@@ -16,7 +16,7 @@ Open Scope Z_scope.
(** Expressions and vals. *)
Definition
loc
:
=
positive
.
(* Really, any countable type. *)
Canonical
Structure
loc
C
:
=
leibnizC
loc
.
(* Really, any countable type. *)
Canonical
Structure
loc
O
:
=
leibnizO
loc
.
(* Really, any countable type. *)
Inductive
base_lit
:
Set
:
=
|
LitInt
(
n
:
Z
)
|
LitBool
(
b
:
bool
)
|
LitUnit
|
LitLoc
(
l
:
loc
).
...
...
@@ -218,12 +218,12 @@ Proof. refine (inj_countable of_val to_val _); auto using to_of_val. Qed.
Instance
expr_inhabited
:
Inhabited
expr
:
=
populate
(
Lit
LitUnit
).
Instance
val_inhabited
:
Inhabited
val
:
=
populate
(
LitV
LitUnit
).
Canonical
Structure
val
C
:
=
leibnizC
val
.
Canonical
Structure
expr
C
:
=
leibnizC
expr
.
Canonical
Structure
val
O
:
=
leibnizO
val
.
Canonical
Structure
expr
O
:
=
leibnizO
expr
.
(** The state: heaps of vals. *)
Definition
state
:
=
gmap
loc
val
.
Canonical
Structure
state
C
:
=
leibnizC
state
.
Canonical
Structure
state
O
:
=
leibnizO
state
.
(** Evaluation contexts *)
Inductive
ectx_item
:
=
...
...
theories/heap_lang/lib/linked_bag.v
View file @
e578423a
...
...
@@ -45,7 +45,7 @@ Section spec.
Context
`
{!
heapG
Σ
,
!
lockG
Σ
,
!
cinvG
Σ
}
(
N
:
namespace
).
Local
Notation
iProp
:
=
(
iProp
Σ
).
Definition
isBag_pre
(
Ψ
:
val
→
iProp
)
(
Φ
:
Qp
-
c
>
loc
-
c
>
iProp
)
:
Qp
-
c
>
loc
-
c
>
iProp
:
=
λ
π
ℓ
,
Definition
isBag_pre
(
Ψ
:
val
→
iProp
)
(
Φ
:
Qp
-
d
>
loc
-
d
>
iProp
)
:
Qp
-
d
>
loc
-
d
>
iProp
:
=
λ
π
ℓ
,
(
ℓ
↦
[
π
]
NONEV
∨
∃
x
(
ℓ
'
:
loc
)
(
πℓ
π
b
:
Qp
),
⌜
(
πℓ
+
π
b
=
π
)%
Qp
⌝
∗
ℓ
↦
[
πℓ
]
SOMEV
(
x
,
#
ℓ
'
)
∗
Ψ
x
∗
▷
(
Φ
π
b
%
Qp
ℓ
'
))%
I
.
...
...
theories/heap_lang/lib/message_passing.v
View file @
e578423a
...
...
@@ -48,7 +48,7 @@ Definition receive : val := λ: "p",
Definition
close
:
val
:
=
λ
:
"p"
,
let
:
"flag"
:
=
Snd
"p"
in
"flag"
<-
#
false
.
Definition
binary_choiceR
:
=
csumR
(
exclR
unit
C
)
(
agreeR
boolC
).
Definition
binary_choiceR
:
=
csumR
(
exclR
unit
O
)
(
agreeR
boolO
).
Definition
no_choice
:
binary_choiceR
:
=
Cinl
(
Excl
()).
Definition
chose
(
n
:
bool
)
:
binary_choiceR
:
=
Cinr
(
to_agree
n
).
...
...
theories/heap_lang/lib/queue.v
View file @
e578423a
...
...
@@ -62,9 +62,9 @@ Definition delete_all : val :=
end
.
Class
queueG
Σ
:
=
{
queueG_inG
:
>
inG
Σ
(
prodR
fracR
(
agreeR
(
list
C
valC
)))
;
queueG_dequeue_inG
:
>
inG
Σ
(
exclR
unit
C
)
;
queueG_enqueue_inG
:
>
inG
Σ
(
authR
(
optionUR
(
exclR
loc
C
)))
queueG_inG
:
>
inG
Σ
(
prodR
fracR
(
agreeR
(
list
O
valO
)))
;
queueG_dequeue_inG
:
>
inG
Σ
(
exclR
unit
O
)
;
queueG_enqueue_inG
:
>
inG
Σ
(
authR
(
optionUR
(
exclR
loc
O
)))
}.
Record
queue_name
:
=
QueueName
{
...
...
@@ -75,7 +75,7 @@ Record queue_name := QueueName {
}.
(*
Definition queueΣ : gFunctors := #[GFunctor queueCmra; GFunctor fracR; GFunctor (exclR unit
C
); fcinvΣ].
Definition queueΣ : gFunctors := #[GFunctor queueCmra; GFunctor fracR; GFunctor (exclR unit
O
); fcinvΣ].
Instance subG_queueΣ {Σ} : subG queueΣ Σ → queueG Σ.
Proof. solve_inG. Qed.
...
...
theories/heap_lang/lib/resource_transfer_sts.v
View file @
e578423a
...
...
@@ -10,12 +10,12 @@ From iris.algebra Require Import excl.
Record
transfer_name
:
=
{
transfer_name
₁
:
gname
;
transfer_name
₂
:
gname
;
}.
Class
transferG
Σ
:
=
TransferG
{
transfer_tokG
:
inG
Σ
(
exclR
unit
C
)
;
transfer_tokG
:
inG
Σ
(
exclR
unit
O
)
;
transfer_fracG
:
inG
Σ
fracR
}.
Local
Existing
Instances
transfer_tokG
transfer_fracG
.
Definition
transfer
Σ
:
gFunctors
:
=
#[
GFunctor
(
exclR
unit
C
)
;
GFunctor
fracR
].
#[
GFunctor
(
exclR
unit
O
)
;
GFunctor
fracR
].
Instance
subG_transfer
Σ
{
Σ
}
:
subG
transfer
Σ
Σ
→
transferG
Σ
.
Proof
.
solve_inG
.
Qed
.
...
...
theories/heap_lang/lib/spin_lock.v
View file @
e578423a
...
...
@@ -22,8 +22,8 @@ Definition free : val :=
(** The CMRA we need. *)
(* Not bundling heapG, as it may be shared with other users. *)
Class
lockG
Σ
:
=
LockG
{
lock_tokG
:
>
inG
Σ
(
exclR
unit
C
)
}.
Definition
lock
Σ
:
gFunctors
:
=
#[
GFunctor
(
exclR
unit
C
)].
Class
lockG
Σ
:
=
LockG
{
lock_tokG
:
>
inG
Σ
(
exclR
unit
O
)
}.
Definition
lock
Σ
:
gFunctors
:
=
#[
GFunctor
(
exclR
unit
O
)].
Instance
subG_lock
Σ
{
Σ
}
:
subG
lock
Σ
Σ
→
lockG
Σ
.
Proof
.
solve_inG
.
Qed
.
...
...
theories/heap_lang/lib/spin_lock_track.v
View file @
e578423a
...
...
@@ -26,8 +26,8 @@ Definition free : val :=
(** The CMRA we need. *)
(* Not bundling heapG, as it may be shared with other users. *)
Class
lockG
Σ
:
=
LockG
{
lock_tokG
:
>
inG
Σ
(
authR
(
optionUR
(
exclR
frac
C
)))
}.
Definition
lock
Σ
:
gFunctors
:
=
#[
GFunctor
(
authR
(
optionUR
(
exclR
frac
C
)))
].
Class
lockG
Σ
:
=
LockG
{
lock_tokG
:
>
inG
Σ
(
authR
(
optionUR
(
exclR
frac
O
)))
}.
Definition
lock
Σ
:
gFunctors
:
=
#[
GFunctor
(
authR
(
optionUR
(
exclR
frac
O
)))
].
Instance
subG_lock
Σ
{
Σ
}
:
subG
lock
Σ
Σ
→
lockG
Σ
.
Proof
.
solve_inG
.
Qed
.
...
...
theories/heap_lang/proofmode.v
View file @
e578423a
...
...
@@ -212,7 +212,7 @@ Tactic Notation "wp_apply" open_constr(lem) :=
lazymatch
iTypeOf
H
with
|
Some
(
_
,
?P
)
=>
fail
"wp_apply: cannot apply"
P
end
in
iPoseProofCore
lem
as
false
true
(
fun
H
=>
iPoseProofCore
lem
as
false
(
fun
H
=>
lazymatch
goal
with
|
|-
envs_entails_wp
?e
=>
reshape_expr
e
ltac
:
(
fun
K
e'
=>
...
...
theories/iron_logic/iron.v
View file @
e578423a
...
...
@@ -42,7 +42,7 @@ Class ironInvG (Σ : gFunctors) := IronInvG {
fcinv_inG
:
>
inG
Σ
(
frac_authR
ufracR
)
;
}.
Notation
ironProp
Σ
:
=
(
fracPred
(
iProp
Σ
)).
Notation
ironPropC
Σ
:
=
(
fracPred
C
(
iProp
Σ
)).
Notation
ironPropC
Σ
:
=
(
fracPred
O
(
iProp
Σ
)).
Notation
ironPropI
Σ
:
=
(
fracPredI
(
uPredI
(
iResUR
Σ
))).
Notation
ironPropSI
Σ
:
=
(
fracPredSI
(
uPredSI
(
iResUR
Σ
))).
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment