Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Joshua Yanovski
iris-coq
Commits
37305156
Commit
37305156
authored
Feb 24, 2016
by
Robbert Krebbers
Browse files
Merge branch 'master' of gitlab.mpi-sws.org:FP/iris-coq
parents
c9ea799b
21419737
Changes
4
Hide whitespace changes
Inline
Side-by-side
heap_lang/heap.v
View file @
37305156
...
...
@@ -25,14 +25,11 @@ matching it against other forms of ownership. *)
Definition
heap_mapsto_def
`
{
heapG
Σ
}
(
l
:
loc
)
(
v
:
val
)
:
iPropG
heap_lang
Σ
:=
auth_own
heap_name
{
[
l
:=
Excl
v
]
}
.
(
*
Perform
sealing
*
)
Module
Type
HeapMapstoSig
.
Parameter
heap_mapsto
:
∀
`
{
heapG
Σ
}
(
l
:
loc
)
(
v
:
val
),
iPropG
heap_lang
Σ
.
Axiom
heap_mapsto_eq
:
@
heap_mapsto
=
@
heap_mapsto_def
.
End
HeapMapstoSig
.
Module
Export
HeapMapsto
:
HeapMapstoSig
.
Definition
heap_mapsto
:=
@
heap_mapsto_def
.
Definition
heap_mapsto_eq
:=
Logic
.
eq_refl
(
@
heap_mapsto
).
End
HeapMapsto
.
Definition
heap_mapsto_aux
:
{
x
:
_
&
x
=
@
heap_mapsto_def
}
.
exact
(
existT
_
Logic
.
eq_refl
).
Qed
.
Definition
heap_mapsto
:=
projT1
heap_mapsto_aux
.
Definition
heap_mapsto_eq
:
@
heap_mapsto
=
@
heap_mapsto_def
:=
projT2
heap_mapsto_aux
.
Arguments
heap_mapsto
{
_
_
}
_
_.
Definition
heap_inv
`
{
i
:
heapG
Σ
}
(
h
:
heapRA
)
:
iPropG
heap_lang
Σ
:=
ownP
(
of_heap
h
).
...
...
program_logic/auth.v
View file @
37305156
...
...
@@ -16,14 +16,11 @@ Proof. split; try apply _. apply: inGF_inG. Qed.
Definition
auth_own_def
`
{
authG
Λ
Σ
A
}
(
γ
:
gname
)
(
a
:
A
)
:
iPropG
Λ
Σ
:=
own
γ
(
◯
a
).
(
*
Perform
sealing
*
)
Module
Type
AuthOwnSig
.
Parameter
auth_own
:
∀
`
{
authG
Λ
Σ
A
}
(
γ
:
gname
)
(
a
:
A
),
iPropG
Λ
Σ
.
Axiom
auth_own_eq
:
@
auth_own
=
@
auth_own_def
.
End
AuthOwnSig
.
Module
Export
AuthOwn
:
AuthOwnSig
.
Definition
auth_own
:=
@
auth_own_def
.
Definition
auth_own_eq
:=
Logic
.
eq_refl
(
@
auth_own
).
End
AuthOwn
.
Definition
auth_own_aux
:
{
x
:
_
&
x
=
@
auth_own_def
}
.
exact
(
existT
_
Logic
.
eq_refl
).
Qed
.
Definition
auth_own
:=
projT1
auth_own_aux
.
Definition
auth_own_eq
:
@
auth_own
=
@
auth_own_def
:=
projT2
auth_own_aux
.
Arguments
auth_own
{
_
_
_
_
_
}
_
_.
Definition
auth_inv
`
{
authG
Λ
Σ
A
}
(
γ
:
gname
)
(
φ
:
A
→
iPropG
Λ
Σ
)
:
iPropG
Λ
Σ
:=
...
...
program_logic/saved_prop.v
View file @
37305156
...
...
@@ -11,16 +11,12 @@ Proof. apply: inGF_inG. Qed.
Definition
saved_prop_own_def
`
{
savedPropG
Λ
Σ
}
(
γ
:
gname
)
(
P
:
iPropG
Λ
Σ
)
:
iPropG
Λ
Σ
:=
own
γ
(
to_agree
(
Next
(
iProp_unfold
P
))).
(
*
Perform
sealing
.
*
)
Module
Type
SavedPropOwnSig
.
Parameter
saved_prop_own
:
∀
`
{
savedPropG
Λ
Σ
}
(
γ
:
gname
)
(
P
:
iPropG
Λ
Σ
),
iPropG
Λ
Σ
.
Axiom
saved_prop_own_eq
:
@
saved_prop_own
=
@
saved_prop_own_def
.
End
SavedPropOwnSig
.
Module
Export
SavedPropOwn
:
SavedPropOwnSig
.
Definition
saved_prop_own
:=
@
saved_prop_own_def
.
Definition
saved_prop_own_eq
:=
Logic
.
eq_refl
(
@
saved_prop_own
).
End
SavedPropOwn
.
(
*
Perform
sealing
*
)
Definition
saved_prop_own_aux
:
{
x
:
_
&
x
=
@
saved_prop_own_def
}
.
exact
(
existT
_
Logic
.
eq_refl
).
Qed
.
Definition
saved_prop_own
:=
projT1
saved_prop_own_aux
.
Definition
saved_prop_own_eq
:
@
saved_prop_own
=
@
saved_prop_own_def
:=
projT2
saved_prop_own_aux
.
Arguments
saved_prop_own
{
_
_
_
}
_
_.
Instance:
Params
(
@
saved_prop_own
)
4.
Section
saved_prop
.
...
...
program_logic/sts.v
View file @
37305156
...
...
@@ -16,24 +16,22 @@ Proof. split; try apply _. apply: inGF_inG. Qed.
Definition
sts_ownS_def
`
{
i
:
stsG
Λ
Σ
sts
}
(
γ
:
gname
)
(
S
:
sts
.
states
sts
)
(
T
:
sts
.
tokens
sts
)
:
iPropG
Λ
Σ
:=
own
γ
(
sts_frag
S
T
).
(
*
Perform
sealing
.
*
)
Definition
sts_ownS_aux
:
{
x
:
_
&
x
=
@
sts_ownS_def
}
.
exact
(
existT
_
Logic
.
eq_refl
).
Qed
.
Definition
sts_ownS
:=
projT1
sts_ownS_aux
.
Definition
sts_ownS_eq
:
@
sts_ownS
=
@
sts_ownS_def
:=
projT2
sts_ownS_aux
.
Arguments
sts_ownS
{
_
_
_
_
}
_
_
_.
Definition
sts_own_def
`
{
i
:
stsG
Λ
Σ
sts
}
(
γ
:
gname
)
(
s
:
sts
.
state
sts
)
(
T
:
sts
.
tokens
sts
)
:
iPropG
Λ
Σ
:=
own
γ
(
sts_frag_up
s
T
).
(
*
Perform
sealing
.
*
)
Module
Type
StsOwnSig
.
Parameter
sts_ownS
:
∀
`
{
i
:
stsG
Λ
Σ
sts
}
(
γ
:
gname
)
(
S
:
sts
.
states
sts
)
(
T
:
sts
.
tokens
sts
),
iPropG
Λ
Σ
.
Parameter
sts_own
:
∀
`
{
i
:
stsG
Λ
Σ
sts
}
(
γ
:
gname
)
(
s
:
sts
.
state
sts
)
(
T
:
sts
.
tokens
sts
),
iPropG
Λ
Σ
.
Axiom
sts_ownS_eq
:
@
sts_ownS
=
@
sts_ownS_def
.
Axiom
sts_own_eq
:
@
sts_own
=
@
sts_own_def
.
End
StsOwnSig
.
Module
Export
StsOwn
:
StsOwnSig
.
Definition
sts_ownS
:=
@
sts_ownS_def
.
Definition
sts_own
:=
@
sts_own_def
.
Definition
sts_ownS_eq
:=
Logic
.
eq_refl
(
@
sts_ownS_def
).
Definition
sts_own_eq
:=
Logic
.
eq_refl
(
@
sts_own_def
).
End
StsOwn
.
Definition
sts_own_aux
:
{
x
:
_
&
x
=
@
sts_own_def
}
.
exact
(
existT
_
Logic
.
eq_refl
).
Qed
.
Definition
sts_own
:=
projT1
sts_own_aux
.
Definition
sts_own_eq
:
@
sts_own
=
@
sts_own_def
:=
projT2
sts_own_aux
.
Arguments
sts_own
{
_
_
_
_
}
_
_
_.
Definition
sts_inv
`
{
i
:
stsG
Λ
Σ
sts
}
(
γ
:
gname
)
(
φ
:
sts
.
state
sts
→
iPropG
Λ
Σ
)
:
iPropG
Λ
Σ
:=
...
...
Write
Preview
Supports
Markdown
0%
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!
Cancel
Please
register
or
sign in
to comment