Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Jonas Kastberg
iris
Commits
658e90f3
Commit
658e90f3
authored
May 31, 2016
by
Jacques-Henri Jourdan
Browse files
Simplify the definition of Exclusive. Use it for gmap.
parent
b672285b
Changes
4
Hide whitespace changes
Inline
Side-by-side
algebra/cmra.v
View file @
658e90f3
...
...
@@ -123,9 +123,8 @@ Class Persistent {A : cmraT} (x : A) := persistent : pcore x ≡ Some x.
Arguments
persistent
{
_
}
_
{
_
}.
(** * Exclusive elements (i.e., elements that cannot have a frame). *)
Class
Exclusive
{
A
:
cmraT
}
(
x
:
A
)
:
=
exclusiveN_r
:
∀
n
y
,
✓
{
n
}
(
x
⋅
y
)
→
False
.
Arguments
exclusiveN_r
{
_
}
_
{
_
}
_
_
_
.
Class
Exclusive
{
A
:
cmraT
}
(
x
:
A
)
:
=
exclusive0_r
:
∀
y
,
✓
{
0
}
(
x
⋅
y
)
→
False
.
Arguments
exclusive0_r
{
_
}
_
{
_
}
_
_
.
(** * CMRAs whose core is total *)
(** The function [core] may return a dummy when used on CMRAs without total
...
...
@@ -343,6 +342,9 @@ Lemma persistent_dup x `{!Persistent x} : x ≡ x ⋅ x.
Proof
.
by
apply
cmra_pcore_dup'
with
x
.
Qed
.
(** ** Exclusive elements *)
Lemma
exclusiveN_r
x
`
{!
Exclusive
x
}
:
∀
(
n
:
nat
)
(
y
:
A
),
✓
{
n
}
(
x
⋅
y
)
→
False
.
Proof
.
intros
???%
cmra_validN_le
%
exclusive0_r
;
auto
with
arith
.
Qed
.
Lemma
exclusiveN_l
x
`
{!
Exclusive
x
}
:
∀
(
n
:
nat
)
(
y
:
A
),
✓
{
n
}
(
y
⋅
x
)
→
False
.
Proof
.
intros
??.
rewrite
comm
.
by
apply
exclusiveN_r
.
Qed
.
...
...
@@ -534,7 +536,7 @@ Proof. split; auto with typeclass_instances. Qed.
Global
Instance
exclusive_local_update
y
:
LocalUpdate
Exclusive
(
λ
_
,
y
)
|
1000
.
Proof
.
split
.
apply
_
.
by
intros
???
H
?%
H
.
Qed
.
Proof
.
split
.
apply
_
.
by
intros
???
??%
exclusiveN_r
.
Qed
.
(** ** Updates *)
Lemma
cmra_update_updateP
x
y
:
x
~~>
y
↔
x
~~>
:
(
y
=).
...
...
@@ -964,10 +966,10 @@ Section prod.
Global
Instance
pair_exclusive_l
x
y
:
Exclusive
x
→
Exclusive
(
x
,
y
).
Proof
.
by
intros
?
?[][?%
exclusive
N
_r
].
Qed
.
Proof
.
by
intros
?[][?%
exclusive
0
_r
].
Qed
.
Global
Instance
pair_exclusive_r
x
y
:
Exclusive
y
→
Exclusive
(
x
,
y
).
Proof
.
by
intros
?
?[][??%
exclusive
N
_r
].
Qed
.
Proof
.
by
intros
?[][??%
exclusive
0
_r
].
Qed
.
Lemma
prod_updateP
P1
P2
(
Q
:
A
*
B
→
Prop
)
x
:
x
.
1
~~>
:
P1
→
x
.
2
~~>
:
P2
→
(
∀
a
b
,
P1
a
→
P2
b
→
Q
(
a
,
b
))
→
x
~~>
:
Q
.
...
...
algebra/csum.v
View file @
658e90f3
...
...
@@ -235,9 +235,9 @@ Global Instance Cinr_persistent b : Persistent b → Persistent (Cinr b).
Proof
.
rewrite
/
Persistent
/=.
inversion_clear
1
;
by
repeat
constructor
.
Qed
.
Global
Instance
Cinl_exclusive
a
:
Exclusive
a
→
Exclusive
(
Cinl
a
).
Proof
.
by
move
=>
H
n
[]?
=>[/
H
||].
Qed
.
Proof
.
by
move
=>
H
[]?
=>[/
H
||].
Qed
.
Global
Instance
Cinr_exclusive
b
:
Exclusive
b
→
Exclusive
(
Cinr
b
).
Proof
.
by
move
=>
H
n
[]?
=>[|/
H
|].
Qed
.
Proof
.
by
move
=>
H
[]?
=>[|/
H
|].
Qed
.
(** Internalized properties *)
Lemma
csum_equivI
{
M
}
(
x
y
:
csum
A
B
)
:
...
...
algebra/frac.v
View file @
658e90f3
...
...
@@ -154,7 +154,7 @@ Proof. by uPred.unseal. Qed.
(** Exclusive *)
Global
Instance
frac_full_exclusive
a
:
Exclusive
(
Frac
1
a
).
Proof
.
move
=>
?
[[??]?][/
Qcle_not_lt
[]]
;
simpl
in
*.
move
=>
[[??]?][/
Qcle_not_lt
[]]
;
simpl
in
*.
by
rewrite
-{
1
}(
Qcplus_0_r
1
)
-
Qcplus_lt_mono_l
.
Qed
.
...
...
algebra/gmap.v
View file @
658e90f3
...
...
@@ -336,7 +336,7 @@ End freshness.
(* Allocation is a local update: Just use composition with a singleton map. *)
Global
Instance
gmap_delete_update
:
LocalUpdate
(
λ
m
,
∃
x
,
m
!!
i
=
Some
x
∧
∀
y
,
¬
✓
{
0
}
(
x
⋅
y
)
)
(
delete
i
).
LocalUpdate
(
λ
m
,
∃
x
,
m
!!
i
=
Some
x
∧
Exclusive
x
)
(
delete
i
).
Proof
.
split
;
first
apply
_
.
intros
n
m1
m2
(
x
&
Hix
&
Hv
)
Hm
j
;
destruct
(
decide
(
i
=
j
))
as
[<-|].
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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