Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
I
Iris
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
116
Issues
116
List
Boards
Labels
Service Desk
Milestones
Merge Requests
23
Merge Requests
23
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Iris
Iris
Commits
f00f21a8
Commit
f00f21a8
authored
Mar 07, 2016
by
Ralf Jung
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add some notation for writing cFunctors
parent
0a279595
Pipeline
#278
passed with stage
Changes
5
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
15 additions
and
4 deletions
+15
-4
algebra/cofe.v
algebra/cofe.v
+11
-0
heap_lang/lang.v
heap_lang/lang.v
+1
-1
program_logic/model.v
program_logic/model.v
+1
-1
program_logic/saved_prop.v
program_logic/saved_prop.v
+1
-1
program_logic/tests.v
program_logic/tests.v
+1
-1
No files found.
algebra/cofe.v
View file @
f00f21a8
...
...
@@ -347,6 +347,9 @@ Structure cFunctor := CFunctor {
Existing
Instance
cFunctor_ne
.
Instance
:
Params
(@
cFunctor_map
)
5
.
Delimit
Scope
cFunctor_scope
with
CF
.
Bind
Scope
cFunctor_scope
with
cFunctor
.
Class
cFunctorContractive
(
F
:
cFunctor
)
:
=
cFunctor_contractive
A1
A2
B1
B2
:
>
Contractive
(@
cFunctor_map
F
A1
A2
B1
B2
).
...
...
@@ -412,6 +415,7 @@ Proof.
apply
cofe_morC_map_ne
;
apply
cFunctor_contractive
=>
i
?
;
split
;
by
apply
Hfg
.
Qed
.
(** Discrete cofe *)
Section
discrete_cofe
.
Context
`
{
Equiv
A
,
@
Equivalence
A
(
≡
)}.
...
...
@@ -518,3 +522,10 @@ Proof.
intros
A1
A2
B1
B2
n
fg
fg'
Hfg
.
apply
laterC_map_contractive
=>
i
?.
by
apply
cFunctor_ne
,
Hfg
.
Qed
.
(** Notation for writing functors *)
Notation
"∙"
:
=
idCF
:
cFunctor_scope
.
Notation
"F1 -n> F2"
:
=
(
cofe_morCF
F1
%
CF
F2
%
CF
)
:
cFunctor_scope
.
Notation
"( F1 , F2 , .. , Fn )"
:
=
(
prodCF
..
(
prodCF
F1
%
CF
F2
%
CF
)
..
Fn
%
CF
)
:
cFunctor_scope
.
Notation
"▶ F"
:
=
(
laterCF
F
%
CF
)
(
at
level
20
,
right
associativity
)
:
cFunctor_scope
.
Coercion
constCF
:
cofeT
>->
cFunctor
.
heap_lang/lang.v
View file @
f00f21a8
...
...
@@ -20,7 +20,7 @@ Inductive binder := BAnon | BNamed : string → binder.
Definition
cons_binder
(
mx
:
binder
)
(
X
:
list
string
)
:
list
string
:
=
match
mx
with
BAnon
=>
X
|
BNamed
x
=>
x
::
X
end
.
Infix
":b:"
:
=
cons_binder
(
at
level
60
,
right
associativity
).
Delimit
Scope
binder_scope
with
bind
er
.
Delimit
Scope
binder_scope
with
bind
.
Bind
Scope
binder_scope
with
binder
.
Instance
binder_dec_eq
(
x1
x2
:
binder
)
:
Decision
(
x1
=
x2
).
Proof
.
solve_decision
.
Defined
.
...
...
program_logic/model.v
View file @
f00f21a8
...
...
@@ -34,7 +34,7 @@ End iProp_solution_sig.
Module
Export
iProp_solution
:
iProp_solution_sig
.
Definition
iProp_result
(
Λ
:
language
)
(
Σ
:
iFunctor
)
:
solution
(
uPredCF
(
resRF
Λ
(
laterCF
idCF
)
Σ
))
:
=
solver
.
result
_
.
solution
(
uPredCF
(
resRF
Λ
(
▶
∙
)
Σ
))
:
=
solver
.
result
_
.
Definition
iPreProp
(
Λ
:
language
)
(
Σ
:
iFunctor
)
:
cofeT
:
=
iProp_result
Λ
Σ
.
Definition
iGst
(
Λ
:
language
)
(
Σ
:
iFunctor
)
:
cmraT
:
=
Σ
(
iPreProp
Λ
Σ
).
...
...
program_logic/saved_prop.v
View file @
f00f21a8
...
...
@@ -5,7 +5,7 @@ Import uPred.
Class
savedPropG
(
Λ
:
language
)
(
Σ
:
gFunctors
)
(
F
:
cFunctor
)
:
=
saved_prop_inG
:
>
inG
Λ
Σ
(
agreeR
(
laterC
(
F
(
iPreProp
Λ
(
globalF
Σ
))))).
Definition
savedPropGF
(
F
:
cFunctor
)
:
gFunctor
:
=
GFunctor
(
agreeRF
(
laterCF
F
)).
GFunctor
(
agreeRF
(
▶
F
)).
Instance
inGF_savedPropG
`
{
inGF
Λ
Σ
(
savedPropGF
F
)}
:
savedPropG
Λ
Σ
F
.
Proof
.
apply
:
inGF_inG
.
Qed
.
...
...
program_logic/tests.v
View file @
f00f21a8
...
...
@@ -9,7 +9,7 @@ End ModelTest.
Module
SavedPropTest
.
(* Test if we can really go "crazy higher order" *)
Section
sec
.
Definition
F
:
=
(
cofe_morCF
idCF
idCF
).
Definition
F
:
cFunctor
:
=
(
∙
-
n
>
∙
).
Definition
Σ
:
gFunctors
:
=
#[
savedPropGF
F
].
Context
{
Λ
:
language
}.
Notation
iProp
:
=
(
iPropG
Λ
Σ
).
...
...
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