Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Iris
Iris
Commits
a6921bfd
Commit
a6921bfd
authored
Oct 28, 2016
by
Jacques-Henri Jourdan
Browse files
Lemmas for updates that take a step.
parent
ed3b7e73
Pipeline
#2919
passed with stage
in 9 minutes and 57 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
base_logic/lib/fancy_updates.v
View file @
a6921bfd
...
...
@@ -34,19 +34,6 @@ Notation "P ={ E }=★ Q" := (P -★ |={E}=> Q)%I
Notation
"P ={ E }=★ Q"
:
=
(
P
⊢
|={
E
}=>
Q
)
(
at
level
99
,
E
at
level
50
,
Q
at
level
200
,
only
parsing
)
:
C_scope
.
Notation
"|={ E1 , E2 }▷=> Q"
:
=
(|={
E1
,
E2
}=>
(
▷
|={
E2
,
E1
}=>
Q
))%
I
(
at
level
99
,
E1
,
E2
at
level
50
,
Q
at
level
200
,
format
"|={ E1 , E2 }▷=> Q"
)
:
uPred_scope
.
Notation
"P ={ E1 , E2 }▷=★ Q"
:
=
(
P
-
★
|={
E1
,
E2
}
▷
=>
Q
)%
I
(
at
level
99
,
E1
,
E2
at
level
50
,
Q
at
level
200
,
format
"P ={ E1 , E2 }▷=★ Q"
)
:
uPred_scope
.
Notation
"|={ E }▷=> Q"
:
=
(|={
E
,
E
}
▷
=>
Q
)%
I
(
at
level
99
,
E
at
level
50
,
Q
at
level
200
,
format
"|={ E }▷=> Q"
)
:
uPred_scope
.
Notation
"P ={ E }▷=★ Q"
:
=
(
P
={
E
,
E
}
▷
=
★
Q
)%
I
(
at
level
99
,
E
at
level
50
,
Q
at
level
200
,
format
"P ={ E }▷=★ Q"
)
:
uPred_scope
.
Section
fupd
.
Context
`
{
invG
Σ
}.
Implicit
Types
P
Q
:
iProp
Σ
.
...
...
@@ -200,3 +187,41 @@ End proofmode_classes.
Hint
Extern
2
(
coq_tactics
.
of_envs
_
⊢
_
)
=>
match
goal
with
|-
_
⊢
|={
_
}=>
_
=>
iModIntro
end
.
(** Fancy updates that take a step. *)
Notation
"|={ E1 , E2 }▷=> Q"
:
=
(|={
E1
,
E2
}=>
(
▷
|={
E2
,
E1
}=>
Q
))%
I
(
at
level
99
,
E1
,
E2
at
level
50
,
Q
at
level
200
,
format
"|={ E1 , E2 }▷=> Q"
)
:
uPred_scope
.
Notation
"P ={ E1 , E2 }▷=★ Q"
:
=
(
P
-
★
|={
E1
,
E2
}
▷
=>
Q
)%
I
(
at
level
99
,
E1
,
E2
at
level
50
,
Q
at
level
200
,
format
"P ={ E1 , E2 }▷=★ Q"
)
:
uPred_scope
.
Notation
"|={ E }▷=> Q"
:
=
(|={
E
,
E
}
▷
=>
Q
)%
I
(
at
level
99
,
E
at
level
50
,
Q
at
level
200
,
format
"|={ E }▷=> Q"
)
:
uPred_scope
.
Notation
"P ={ E }▷=★ Q"
:
=
(
P
={
E
,
E
}
▷
=
★
Q
)%
I
(
at
level
99
,
E
at
level
50
,
Q
at
level
200
,
format
"P ={ E }▷=★ Q"
)
:
uPred_scope
.
Section
step_fupd
.
Context
`
{
invG
Σ
}.
Lemma
step_fupd_mask_frame_r
E1
E2
Ef
P
:
E1
⊥
Ef
→
E2
⊥
Ef
→
(|={
E1
,
E2
}
▷
=>
P
)
⊢
|={
E1
∪
Ef
,
E2
∪
Ef
}
▷
=>
P
.
Proof
.
iIntros
(??)
"HP"
.
iApply
fupd_mask_frame_r
.
done
.
iMod
"HP"
.
iModIntro
.
iNext
.
by
iApply
fupd_mask_frame_r
.
Qed
.
Lemma
step_fupd_mask_mono
E1
E2
F1
F2
P
:
F1
⊆
F2
→
E1
⊆
E2
→
(|={
E1
,
F2
}
▷
=>
P
)
⊢
|={
E2
,
F1
}
▷
=>
P
.
Proof
.
iIntros
(??)
"HP"
.
iAssert
(|={
E2
,
E1
}
▷
=>
True
)%
I
as
"HE"
.
{
iApply
fupd_mono
.
apply
later_intro
.
by
iApply
fupd_intro_mask
.
}
iAssert
(|={
F2
,
F1
}
▷
=>
True
)%
I
as
"HF"
.
{
iApply
fupd_mono
.
apply
later_intro
.
by
iApply
fupd_intro_mask
.
}
iMod
"HE"
.
iMod
"HP"
.
iMod
"HF"
.
iModIntro
.
iNext
.
iMod
"HF"
.
iMod
"HP"
.
by
iMod
"HE"
.
Qed
.
End
step_fupd
.
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