Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Iris
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Monitor
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Simcha van Collem
Iris
Commits
03863370
Commit
03863370
authored
9 years ago
by
Ralf Jung
Browse files
Options
Downloads
Patches
Plain Diff
rename own lemmas in upred to ownM, to avoid overlapping names
parent
c93d1cd0
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
algebra/upred.v
+10
-10
10 additions, 10 deletions
algebra/upred.v
program_logic/auth.v
+1
-1
1 addition, 1 deletion
program_logic/auth.v
program_logic/ownership.v
+6
-6
6 additions, 6 deletions
program_logic/ownership.v
with
17 additions
and
17 deletions
algebra/upred.v
+
10
−
10
View file @
03863370
...
@@ -784,7 +784,7 @@ Lemma always_entails_r P Q : (P ⊑ □ Q) → P ⊑ (P ★ □ Q).
...
@@ -784,7 +784,7 @@ Lemma always_entails_r P Q : (P ⊑ □ Q) → P ⊑ (P ★ □ Q).
Proof
.
intros
;
rewrite
-
always_and_sep_r
;
auto
.
Qed
.
Proof
.
intros
;
rewrite
-
always_and_sep_r
;
auto
.
Qed
.
(* Own and valid *)
(* Own and valid *)
Lemma
own_op
(
a1
a2
:
M
)
:
Lemma
own
M
_op
(
a1
a2
:
M
)
:
uPred_own
(
a1
⋅
a2
)
≡
(
uPred_own
a1
★
uPred_own
a2
)
%
I
.
uPred_own
(
a1
⋅
a2
)
≡
(
uPred_own
a1
★
uPred_own
a2
)
%
I
.
Proof
.
Proof
.
intros
x
n
?;
split
.
intros
x
n
?;
split
.
...
@@ -794,19 +794,19 @@ Proof.
...
@@ -794,19 +794,19 @@ Proof.
by
rewrite
(
associative
op
_
z1
)
-
(
commutative
op
z1
)
(
associative
op
z1
)
by
rewrite
(
associative
op
_
z1
)
-
(
commutative
op
z1
)
(
associative
op
z1
)
-
(
associative
op
_
a2
)
(
commutative
op
z1
)
-
Hy1
-
Hy2
.
-
(
associative
op
_
a2
)
(
commutative
op
z1
)
-
Hy1
-
Hy2
.
Qed
.
Qed
.
Lemma
always_own_unit
(
a
:
M
)
:
(
□
uPred_own
(
unit
a
))
%
I
≡
uPred_own
(
unit
a
)
.
Lemma
always_own
M
_unit
(
a
:
M
)
:
(
□
uPred_own
(
unit
a
))
%
I
≡
uPred_own
(
unit
a
)
.
Proof
.
Proof
.
intros
x
n
;
split
;
[
by
apply
always_elim
|
intros
[
a'
Hx
]];
simpl
.
intros
x
n
;
split
;
[
by
apply
always_elim
|
intros
[
a'
Hx
]];
simpl
.
rewrite
-
(
cmra_unit_idempotent
a
)
Hx
.
rewrite
-
(
cmra_unit_idempotent
a
)
Hx
.
apply
cmra_unit_preservingN
,
cmra_includedN_l
.
apply
cmra_unit_preservingN
,
cmra_includedN_l
.
Qed
.
Qed
.
Lemma
always_own
(
a
:
M
)
:
unit
a
≡
a
→
(
□
uPred_own
a
)
%
I
≡
uPred_own
a
.
Lemma
always_own
M
(
a
:
M
)
:
unit
a
≡
a
→
(
□
uPred_own
a
)
%
I
≡
uPred_own
a
.
Proof
.
by
intros
<-
;
rewrite
always_own_unit
.
Qed
.
Proof
.
by
intros
<-
;
rewrite
always_own
M
_unit
.
Qed
.
Lemma
own_something
:
True
⊑
∃
a
,
uPred_own
a
.
Lemma
own
M
_something
:
True
⊑
∃
a
,
uPred_own
a
.
Proof
.
intros
x
n
??
.
by
exists
x
;
simpl
.
Qed
.
Proof
.
intros
x
n
??
.
by
exists
x
;
simpl
.
Qed
.
Lemma
own_empty
`{
Empty
M
,
!
CMRAIdentity
M
}
:
True
⊑
uPred_own
∅.
Lemma
own
M
_empty
`{
Empty
M
,
!
CMRAIdentity
M
}
:
True
⊑
uPred_own
∅.
Proof
.
intros
x
n
??;
by
exists
x
;
rewrite
(
left_id
_
_)
.
Qed
.
Proof
.
intros
x
n
??;
by
exists
x
;
rewrite
(
left_id
_
_)
.
Qed
.
Lemma
own_valid
(
a
:
M
)
:
uPred_own
a
⊑
✓
a
.
Lemma
own
M
_valid
(
a
:
M
)
:
uPred_own
a
⊑
✓
a
.
Proof
.
intros
x
n
Hv
[
a'
?];
cofe_subst
;
eauto
using
cmra_validN_op_l
.
Qed
.
Proof
.
intros
x
n
Hv
[
a'
?];
cofe_subst
;
eauto
using
cmra_validN_op_l
.
Qed
.
Lemma
valid_intro
{
A
:
cmraT
}
(
a
:
A
)
:
✓
a
→
True
⊑
✓
a
.
Lemma
valid_intro
{
A
:
cmraT
}
(
a
:
A
)
:
✓
a
→
True
⊑
✓
a
.
Proof
.
by
intros
?
x
n
?
_;
simpl
;
apply
cmra_valid_validN
.
Qed
.
Proof
.
by
intros
?
x
n
?
_;
simpl
;
apply
cmra_valid_validN
.
Qed
.
...
@@ -819,8 +819,8 @@ Lemma always_valid {A : cmraT} (a : A) : (□ (✓ a))%I ≡ (✓ a : uPred M)%I
...
@@ -819,8 +819,8 @@ Lemma always_valid {A : cmraT} (a : A) : (□ (✓ a))%I ≡ (✓ a : uPred M)%I
Proof
.
done
.
Qed
.
Proof
.
done
.
Qed
.
(* Own and valid derived *)
(* Own and valid derived *)
Lemma
own_invalid
(
a
:
M
)
:
¬
✓
{
0
}
a
→
uPred_own
a
⊑
False
.
Lemma
own
M
_invalid
(
a
:
M
)
:
¬
✓
{
0
}
a
→
uPred_own
a
⊑
False
.
Proof
.
by
intros
;
rewrite
own_valid
valid_elim
.
Qed
.
Proof
.
by
intros
;
rewrite
own
M
_valid
valid_elim
.
Qed
.
(* Big ops *)
(* Big ops *)
Global
Instance
uPred_big_and_proper
:
Proper
((
≡
)
==>
(
≡
))
(
@
uPred_big_and
M
)
.
Global
Instance
uPred_big_and_proper
:
Proper
((
≡
)
==>
(
≡
))
(
@
uPred_big_and
M
)
.
...
@@ -935,7 +935,7 @@ Proof. by intros; rewrite /AlwaysStable always_valid. Qed.
...
@@ -935,7 +935,7 @@ Proof. by intros; rewrite /AlwaysStable always_valid. Qed.
Global
Instance
later_always_stable
P
:
AS
P
→
AS
(
▷
P
)
.
Global
Instance
later_always_stable
P
:
AS
P
→
AS
(
▷
P
)
.
Proof
.
by
intros
;
rewrite
/
AlwaysStable
always_later
;
apply
later_mono
.
Qed
.
Proof
.
by
intros
;
rewrite
/
AlwaysStable
always_later
;
apply
later_mono
.
Qed
.
Global
Instance
own_unit_always_stable
(
a
:
M
)
:
AS
(
uPred_own
(
unit
a
))
.
Global
Instance
own_unit_always_stable
(
a
:
M
)
:
AS
(
uPred_own
(
unit
a
))
.
Proof
.
by
rewrite
/
AlwaysStable
always_own_unit
.
Qed
.
Proof
.
by
rewrite
/
AlwaysStable
always_own
M
_unit
.
Qed
.
Global
Instance
default_always_stable
{
A
}
P
(
Q
:
A
→
uPred
M
)
(
mx
:
option
A
)
:
Global
Instance
default_always_stable
{
A
}
P
(
Q
:
A
→
uPred
M
)
(
mx
:
option
A
)
:
AS
P
→
(
∀
x
,
AS
(
Q
x
))
→
AS
(
default
P
mx
Q
)
.
AS
P
→
(
∀
x
,
AS
(
Q
x
))
→
AS
(
default
P
mx
Q
)
.
Proof
.
destruct
mx
;
apply
_
.
Qed
.
Proof
.
destruct
mx
;
apply
_
.
Qed
.
...
...
This diff is collapsed.
Click to expand it.
program_logic/auth.v
+
1
−
1
View file @
03863370
Require
Export
algebra
.
auth
algebra
.
functor
.
Require
Export
algebra
.
auth
algebra
.
functor
.
Require
Export
program_logic
.
invariants
program_logic
.
ghost_ownership
.
Require
Export
program_logic
.
invariants
program_logic
.
ghost_ownership
.
Import
uPred
ghost_ownership
.
Import
uPred
.
Section
auth
.
Section
auth
.
Context
{
A
:
cmraT
}
`{
Empty
A
,
!
CMRAIdentity
A
}
.
Context
{
A
:
cmraT
}
`{
Empty
A
,
!
CMRAIdentity
A
}
.
...
...
This diff is collapsed.
Click to expand it.
program_logic/ownership.v
+
6
−
6
View file @
03863370
...
@@ -27,7 +27,7 @@ Proof.
...
@@ -27,7 +27,7 @@ Proof.
Qed
.
Qed
.
Lemma
always_ownI
i
P
:
(
□
ownI
i
P
)
%
I
≡
ownI
i
P
.
Lemma
always_ownI
i
P
:
(
□
ownI
i
P
)
%
I
≡
ownI
i
P
.
Proof
.
Proof
.
apply
uPred
.
always_own
.
apply
uPred
.
always_own
M
.
by
rewrite
Res_unit
!
cmra_unit_empty
map_unit_singleton
.
by
rewrite
Res_unit
!
cmra_unit_empty
map_unit_singleton
.
Qed
.
Qed
.
Global
Instance
ownI_always_stable
i
P
:
AlwaysStable
(
ownI
i
P
)
.
Global
Instance
ownI_always_stable
i
P
:
AlwaysStable
(
ownI
i
P
)
.
...
@@ -38,8 +38,8 @@ Proof. apply (uPred.always_sep_dup' _). Qed.
...
@@ -38,8 +38,8 @@ Proof. apply (uPred.always_sep_dup' _). Qed.
(* physical state *)
(* physical state *)
Lemma
ownP_twice
σ1
σ2
:
(
ownP
σ1
★
ownP
σ2
:
iProp
Λ
Σ
)
⊑
False
.
Lemma
ownP_twice
σ1
σ2
:
(
ownP
σ1
★
ownP
σ2
:
iProp
Λ
Σ
)
⊑
False
.
Proof
.
Proof
.
rewrite
/
ownP
-
uPred
.
own_op
Res_op
.
rewrite
/
ownP
-
uPred
.
own
M
_op
Res_op
.
by
apply
uPred
.
own_invalid
;
intros
(_
&
?
&
_)
.
by
apply
uPred
.
own
M
_invalid
;
intros
(_
&
?
&
_)
.
Qed
.
Qed
.
Global
Instance
ownP_timeless
σ
:
TimelessP
(
@
ownP
Λ
Σ
σ
)
.
Global
Instance
ownP_timeless
σ
:
TimelessP
(
@
ownP
Λ
Σ
σ
)
.
Proof
.
rewrite
/
ownP
;
apply
_
.
Qed
.
Proof
.
rewrite
/
ownP
;
apply
_
.
Qed
.
...
@@ -49,14 +49,14 @@ Global Instance ownG_ne n : Proper (dist n ==> dist n) (@ownG Λ Σ).
...
@@ -49,14 +49,14 @@ Global Instance ownG_ne n : Proper (dist n ==> dist n) (@ownG Λ Σ).
Proof
.
by
intros
m
m'
Hm
;
unfold
ownG
;
rewrite
Hm
.
Qed
.
Proof
.
by
intros
m
m'
Hm
;
unfold
ownG
;
rewrite
Hm
.
Qed
.
Global
Instance
ownG_proper
:
Proper
((
≡
)
==>
(
≡
))
(
@
ownG
Λ
Σ
)
:=
ne_proper
_
.
Global
Instance
ownG_proper
:
Proper
((
≡
)
==>
(
≡
))
(
@
ownG
Λ
Σ
)
:=
ne_proper
_
.
Lemma
ownG_op
m1
m2
:
ownG
(
m1
⋅
m2
)
≡
(
ownG
m1
★
ownG
m2
)
%
I
.
Lemma
ownG_op
m1
m2
:
ownG
(
m1
⋅
m2
)
≡
(
ownG
m1
★
ownG
m2
)
%
I
.
Proof
.
by
rewrite
/
ownG
-
uPred
.
own_op
Res_op
!
(
left_id
_
_)
.
Qed
.
Proof
.
by
rewrite
/
ownG
-
uPred
.
own
M
_op
Res_op
!
(
left_id
_
_)
.
Qed
.
Lemma
always_ownG_unit
m
:
(
□
ownG
(
unit
m
))
%
I
≡
ownG
(
unit
m
)
.
Lemma
always_ownG_unit
m
:
(
□
ownG
(
unit
m
))
%
I
≡
ownG
(
unit
m
)
.
Proof
.
Proof
.
apply
uPred
.
always_own
.
apply
uPred
.
always_own
M
.
by
rewrite
Res_unit
!
cmra_unit_empty
-
{
2
}(
cmra_unit_idempotent
m
)
.
by
rewrite
Res_unit
!
cmra_unit_empty
-
{
2
}(
cmra_unit_idempotent
m
)
.
Qed
.
Qed
.
Lemma
ownG_valid
m
:
(
ownG
m
)
⊑
(
✓
m
)
.
Lemma
ownG_valid
m
:
(
ownG
m
)
⊑
(
✓
m
)
.
Proof
.
by
rewrite
/
ownG
uPred
.
own_valid
;
apply
uPred
.
valid_mono
=>
n
[?
[]]
.
Qed
.
Proof
.
by
rewrite
/
ownG
uPred
.
own
M
_valid
;
apply
uPred
.
valid_mono
=>
n
[?
[]]
.
Qed
.
Lemma
ownG_valid_r
m
:
(
ownG
m
)
⊑
(
ownG
m
★
✓
m
)
.
Lemma
ownG_valid_r
m
:
(
ownG
m
)
⊑
(
ownG
m
★
✓
m
)
.
Proof
.
apply
(
uPred
.
always_entails_r'
_
_),
ownG_valid
.
Qed
.
Proof
.
apply
(
uPred
.
always_entails_r'
_
_),
ownG_valid
.
Qed
.
Global
Instance
ownG_timeless
m
:
Timeless
m
→
TimelessP
(
ownG
m
)
.
Global
Instance
ownG_timeless
m
:
Timeless
m
→
TimelessP
(
ownG
m
)
.
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
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!
Save comment
Cancel
Please
register
or
sign in
to comment