Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
I
iris
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
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
Tej Chajed
iris
Commits
5651f58e
Commit
5651f58e
authored
9 years ago
by
Robbert Krebbers
Browse files
Options
Downloads
Patches
Plain Diff
STSs with infinite sets of tokens.
parent
04f40730
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
iris/sts.v
+14
-14
14 additions, 14 deletions
iris/sts.v
with
14 additions
and
14 deletions
iris/sts.v
+
14
−
14
View file @
5651f58e
Require
Export
iris
.
ra
.
Require
Import
prelude
.
sets
prelude
.
list
set
iris
.
dra
.
Require
Import
prelude
.
sets
prelude
.
b
set
s
iris
.
dra
.
Local
Arguments
valid
_
_
!
_
/.
Local
Arguments
op
_
_
!
_
!
_
/.
Local
Arguments
unit
_
_
!
_
/.
Module
sts
.
Inductive
t
{
A
B
}
(
R
:
relation
A
)
(
tok
:
A
→
list
set
B
)
:=
|
auth
:
A
→
list
set
B
→
t
R
tok
|
frag
:
set
A
→
list
set
B
→
t
R
tok
.
Inductive
t
{
A
B
}
(
R
:
relation
A
)
(
tok
:
A
→
b
set
B
)
:=
|
auth
:
A
→
b
set
B
→
t
R
tok
|
frag
:
set
A
→
b
set
B
→
t
R
tok
.
Arguments
auth
{_
_
_
_}
_
_
.
Arguments
frag
{_
_
_
_}
_
_
.
Section
sts_core
.
Context
{
A
B
:
Type
}
`{
∀
x
y
:
B
,
Decision
(
x
=
y
)}
.
Context
(
R
:
relation
A
)
(
tok
:
A
→
list
set
B
)
.
Context
(
R
:
relation
A
)
(
tok
:
A
→
b
set
B
)
.
Inductive
sts_equiv
:
Equiv
(
t
R
tok
)
:=
|
auth_equiv
s
T1
T2
:
T1
≡
T2
→
auth
s
T1
≡
auth
s
T2
|
frag_equiv
S1
S2
T1
T2
:
T1
≡
T2
→
S1
≡
S2
→
frag
S1
T1
≡
frag
S2
T2
.
Global
Existing
Instance
sts_equiv
.
Inductive
step
:
relation
(
A
*
list
set
B
)
:=
Inductive
step
:
relation
(
A
*
b
set
B
)
:=
|
Step
s1
s2
T1
T2
:
R
s1
s2
→
tok
s1
∩
T1
≡
∅
→
tok
s2
∩
T2
≡
∅
→
tok
s1
∪
T1
≡
tok
s2
∪
T2
→
step
(
s1
,
T1
)
(
s2
,
T2
)
.
Hint
Resolve
Step
.
Inductive
frame_step
(
T
:
list
set
B
)
(
s1
s2
:
A
)
:
Prop
:=
Inductive
frame_step
(
T
:
b
set
B
)
(
s1
s2
:
A
)
:
Prop
:=
|
Frame_step
T1
T2
:
T1
∩
(
tok
s1
∪
T
)
≡
∅
→
step
(
s1
,
T1
)
(
s2
,
T2
)
→
frame_step
T
s1
s2
.
Hint
Resolve
Frame_step
.
Record
closed
(
T
:
list
set
B
)
(
S
:
set
A
)
:
Prop
:=
Closed
{
Record
closed
(
T
:
b
set
B
)
(
S
:
set
A
)
:
Prop
:=
Closed
{
closed_disjoint
s
:
s
∈
S
→
tok
s
∩
T
≡
∅
;
closed_step
s1
s2
:
s1
∈
S
→
frame_step
T
s1
s2
→
s2
∈
S
}
.
...
...
@@ -37,8 +37,8 @@ Lemma closed_steps S T s1 s2 :
Proof
.
induction
3
;
eauto
using
closed_step
.
Qed
.
Global
Instance
sts_valid
:
Valid
(
t
R
tok
)
:=
λ
x
,
match
x
with
auth
s
T
=>
tok
s
∩
T
≡
∅
|
frag
S'
T
=>
closed
T
S'
end
.
Definition
up
(
T
:
list
set
B
)
(
s
:
A
)
:
set
A
:=
mkSet
(
rtc
(
frame_step
T
)
s
)
.
Definition
up_set
(
T
:
list
set
B
)
(
S
:
set
A
)
:
set
A
:=
S
≫=
up
T
.
Definition
up
(
T
:
b
set
B
)
(
s
:
A
)
:
set
A
:=
mkSet
(
rtc
(
frame_step
T
)
s
)
.
Definition
up_set
(
T
:
b
set
B
)
(
S
:
set
A
)
:
set
A
:=
S
≫=
up
T
.
Global
Instance
sts_unit
:
Unit
(
t
R
tok
)
:=
λ
x
,
match
x
with
|
frag
S'
_
=>
frag
(
up_set
∅
S'
)
∅
|
auth
s
_
=>
frag
(
up
∅
s
)
∅
...
...
@@ -70,7 +70,7 @@ Global Instance sts_minus : Minus (t R tok) := λ x1 x2,
end
.
Hint
Extern
5
(
equiv
(
A
:=
set
_)
_
_)
=>
esolve_elem_of
:
sts
.
Hint
Extern
5
(
equiv
(
A
:=
list
set
_)
_
_)
=>
esolve_elem_of
:
sts
.
Hint
Extern
5
(
equiv
(
A
:=
b
set
_)
_
_)
=>
esolve_elem_of
:
sts
.
Hint
Extern
5
(_
∈
_)
=>
esolve_elem_of
:
sts
.
Hint
Extern
5
(_
⊆
_)
=>
esolve_elem_of
:
sts
.
Instance
:
Equivalence
((
≡
)
:
relation
(
t
R
tok
))
.
...
...
@@ -198,7 +198,7 @@ End sts.
Section
sts_ra
.
Context
{
A
B
:
Type
}
`{
∀
x
y
:
B
,
Decision
(
x
=
y
)}
.
Context
(
R
:
relation
A
)
(
tok
:
A
→
list
set
B
)
.
Context
(
R
:
relation
A
)
(
tok
:
A
→
b
set
B
)
.
Definition
sts
:=
validity
(
valid
:
sts
.
t
R
tok
→
Prop
)
.
Global
Instance
sts_unit
:
Unit
sts
:=
validity_unit
_
.
...
...
@@ -206,8 +206,8 @@ Global Instance sts_op : Op sts := validity_op _.
Global
Instance
sts_included
:
Included
sts
:=
validity_included
_
.
Global
Instance
sts_minus
:
Minus
sts
:=
validity_minus
_
.
Global
Instance
sts_ra
:
RA
sts
:=
validity_ra
_
.
Definition
sts_auth
(
s
:
A
)
(
T
:
list
set
B
)
:
sts
:=
to_validity
(
sts
.
auth
s
T
)
.
Definition
sts_frag
(
S
:
set
A
)
(
T
:
list
set
B
)
:
sts
:=
Definition
sts_auth
(
s
:
A
)
(
T
:
b
set
B
)
:
sts
:=
to_validity
(
sts
.
auth
s
T
)
.
Definition
sts_frag
(
S
:
set
A
)
(
T
:
b
set
B
)
:
sts
:=
to_validity
(
sts
.
frag
S
T
)
.
Lemma
sts_update
s1
s2
T1
T2
:
sts
.
step
R
tok
(
s1
,
T1
)
(
s2
,
T2
)
→
sts_auth
s1
T1
⇝
sts_auth
s2
T2
.
...
...
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