Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
Actris
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
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
tlsomers
Actris
Commits
5c2fa2d5
Commit
5c2fa2d5
authored
5 years ago
by
Jonas Kastberg Hinrichsen
Browse files
Options
Downloads
Patches
Plain Diff
Changed st_eval into a fixpoint
parent
635d5a67
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
theories/logrel.v
+26
-23
26 additions, 23 deletions
theories/logrel.v
with
26 additions
and
23 deletions
theories/logrel.v
+
26
−
23
View file @
5c2fa2d5
...
...
@@ -34,21 +34,26 @@ Section logrel.
end
in
own
γ
(
●
to_auth_excl
st
)
%
I
.
Inductive
st_eval
:
list
val
->
stype
->
stype
->
Prop
:=
|
st_eval_nil
st
:
st_eval
[]
st
(
dual_stype
st
)
|
st_eval_cons
(
P
:
val
->
Prop
)
v
vs
st1
st2
:
P
v
->
st_eval
vs
st1
(
st2
v
)
->
st_eval
(
v
::
vs
)
st1
(
TRecv
P
st2
)
.
Hint
Constructors
st_eval
.
Fixpoint
st_eval
(
vs
:
list
val
)
(
st1
st2
:
stype
)
:
Prop
:=
match
vs
with
|
[]
=>
st1
=
dual_stype
st2
|
v
::
vs
=>
match
st2
with
|
TRecv
P
st2
=>
P
v
∧
st_eval
vs
st1
(
st2
v
)
|
_
=>
False
end
end
.
Lemma
st_eval_send
(
P
:
val
->
Prop
)
st
l
str
v
:
P
v
→
st_eval
l
(
TSend
P
st
)
str
→
st_eval
(
l
++
[
v
])
(
st
v
)
str
.
Proof
.
intro
HP
.
revert
str
.
induction
l
;
intros
str
.
-
inversion
2
;
by
constructor
.
-
inversion
2
;
subst
.
simpl
.
constructor
=>
//.
-
inversion
1
.
simpl
.
destruct
str
;
inversion
H1
;
subst
.
eauto
.
-
intros
.
simpl
.
destruct
str
;
inversion
H
.
split
=>
//.
apply
IHl
=>
//.
Qed
.
...
...
@@ -146,33 +151,31 @@ Section logrel.
-
iSplit
=>
//.
iPureIntro
.
by
eapply
st_eval_send
.
-
inversion
Heval
;
subst
.
-
destruct
r
;
inversion
Heval
;
subst
.
iSplit
=>
//.
iPureIntro
.
destruct
str
;
inversion
H2
.
apply
st_eval_cons
=>
//.
subst
.
rewrite
(
involutive
(
st
0
v
))
.
rewrite
-
(
involutive
(
dual_stype
(
st0
v
)))
.
constructor
.
}
simpl
.
rewrite
(
involutive
(
st
v
))
.
rewrite
-
(
involutive
(
dual_stype
(
st
v
))
)
.
split
=>
//
.
}
iModIntro
.
iFrame
"Hcctx ∗ Hinv"
.
-
iRename
"Hstf"
into
"Hstrf"
.
iDestruct
(
excl_eq
with
"Hstra Hstrf"
)
as
%<-.
iMod
(
excl_update
_
_
_
(
st
v
)
with
"Hstra Hstrf"
)
as
"[Hstra Hstrf]"
.
iMod
(
"Hinvstep"
with
"[-Hstrf]"
)
as
"_"
.
{
iNext
.
iExists
_,_
.
iFrame
.
iExists
_,_
.
iFrame
.
iExists
_,_,
_,
_
.
iFrame
.
iRight
.
iDestruct
"Hinv'"
as
"[[-> Heval]|[-> Heval]]"
;
iDestruct
"Heval"
as
%
Heval
.
-
inversion
Heval
;
subst
.
-
destruct
l
;
inversion
Heval
;
subst
.
iSplit
=>
//.
iPureIntro
.
destruct
stl
;
inversion
H2
.
apply
st_eval_cons
=>
//.
subst
.
rewrite
(
involutive
(
st0
v
))
.
rewrite
-
(
involutive
(
dual_stype
(
st0
v
)))
.
constructor
.
simpl
.
rewrite
(
involutive
(
st
v
))
.
rewrite
-
(
involutive
(
dual_stype
(
st
v
)))
.
split
=>
//.
-
iSplit
=>
//.
iPureIntro
.
by
eapply
st_eval_send
.
}
...
...
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