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
Environments
Terraform modules
Monitor
Incidents
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
Ike Mulder
Iris
Commits
8cf16088
Commit
8cf16088
authored
9 years ago
by
Ralf Jung
Browse files
Options
Downloads
Patches
Plain Diff
get rid of the unnecessary locking; the wand gives us enough structure in the goal
parent
ed12ea1c
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
algebra/upred.v
+0
-4
0 additions, 4 deletions
algebra/upred.v
heap_lang/wp_tactics.v
+4
-7
4 additions, 7 deletions
heap_lang/wp_tactics.v
with
4 additions
and
11 deletions
algebra/upred.v
+
0
−
4
View file @
8cf16088
...
...
@@ -217,10 +217,6 @@ Notation "✓ x" := (uPred_valid x) (at level 20) : uPred_scope.
Definition
uPred_iff
{
M
}
(
P
Q
:
uPred
M
)
:
uPred
M
:=
((
P
→
Q
)
∧
(
Q
→
P
))
%
I
.
Infix
"↔"
:=
uPred_iff
:
uPred_scope
.
Lemma
uPred_lock_conclusion
{
M
}
(
P
Q
:
uPred
M
)
:
P
⊑
locked
Q
→
P
⊑
Q
.
Proof
.
by
rewrite
-
lock
.
Qed
.
Class
TimelessP
{
M
}
(
P
:
uPred
M
)
:=
timelessP
:
▷
P
⊑
(
P
∨
▷
False
)
.
Arguments
timelessP
{_}
_
{_}
_
_
_
_
.
Class
AlwaysStable
{
M
}
(
P
:
uPred
M
)
:=
always_stable
:
P
⊑
□
P
.
...
...
This diff is collapsed.
Click to expand it.
heap_lang/wp_tactics.v
+
4
−
7
View file @
8cf16088
From
heap_lang
Require
Export
tactics
substitution
.
Import
uPred
.
(* TODO: The next
5
tactics are not wp-specific at all. They should move elsewhere. *)
(* TODO: The next
few
tactics are not wp-specific at all. They should move elsewhere. *)
Ltac
revert_intros
tac
:=
lazymatch
goal
with
...
...
@@ -47,9 +47,6 @@ Ltac u_strip_later :=
in
revert_intros
ltac
:(
etrans
;
[|
shape_Q
];
etrans
;
last
eapply
later_mono
;
first
solve
[
strip
])
.
(* ssreflect-locks the part after the ⊑ *)
Ltac
u_lock_goal
:=
revert_intros
ltac
:(
apply
uPred_lock_conclusion
)
.
(** Transforms a goal of the form ∀ ..., ?0... → ?1 ⊑ ?2
into True ⊑ ∀..., ■?0... → ?1 -★ ?2, applies tac, and
the moves all the assumptions back. *)
...
...
@@ -72,7 +69,7 @@ Ltac u_revert_all :=
applies [tac] on the goal (now of the form _ ⊑ _), and then reverts the
Coq assumption so that we end up with the same shape as where we started. *)
Ltac
u_löb
tac
:=
u_lock_goal
;
u_revert_all
;
u_revert_all
;
(* We now have a goal for the form True ⊑ P, with the "original" conclusion
being locked. *)
apply
löb_strong
;
etransitivity
;
...
...
@@ -86,8 +83,8 @@ Ltac u_löb tac :=
|
|
-
_
⊑
(
■
_
→
_)
=>
apply
impl_intro_l
,
const_elim_l
;
let
H
:=
fresh
in
intro
H
;
go
;
revert
H
(* This is the "bottom" of the goal, where we see the wand introduced
by u_revert_all
and the lock,
as well as the ▷ from löb_strong. *)
|
|
-
▷
_
⊑
(_
-★
locked
_)
=>
apply
wand_intro_l
;
unlock
;
tac
by u_revert_all as well as the ▷ from löb_strong. *)
|
|
-
▷
_
⊑
(_
-★
_)
=>
apply
wand_intro_l
;
tac
end
in
go
.
...
...
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