Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Lennard Gäher
Iris
Commits
f6df2576
Commit
f6df2576
authored
Dec 18, 2020
by
Robbert Krebbers
Browse files
Inline dfrac notations to work around
https://github.com/coq/coq/issues/13654
parent
7499c0fa
Changes
6
Hide whitespace changes
Inline
Side-by-side
_CoqProject
View file @
f6df2576
...
...
@@ -9,9 +9,7 @@
-Q iris/program_logic iris.program_logic
-Q iris_heap_lang iris.heap_lang
# We sometimes want to locally override notation, and there is no good way to do that with scopes.
-arg -w -arg -notation-overridden
# Coq emits warnings when a custom entry is reimported, this is too noisy.
-arg -w -arg -custom-entry-overriden
-arg -w -arg -notation-overridden
# Cannot use non-canonical projections as it causes massive unification failures
# (https://github.com/coq/coq/issues/6294).
-arg -w -arg -redundant-canonical-projection
...
...
iris/algebra/dfrac.v
View file @
f6df2576
...
...
@@ -32,16 +32,6 @@ Inductive dfrac :=
|
DfracDiscarded
:
dfrac
|
DfracBoth
:
Qp
→
dfrac
.
(* This notation is intended to be used as a component in other notations that
include discardable fractions. The notation provides shorthands for the
constructors and the commonly used full fraction. For an example
demonstrating how this can be used see the notation in [gen_heap.v]. *)
Declare
Custom
Entry
dfrac
.
Notation
"{ dq }"
:
=
(
dq
)
(
in
custom
dfrac
at
level
1
,
dq
constr
).
Notation
"□"
:
=
DfracDiscarded
(
in
custom
dfrac
).
Notation
"{# q }"
:
=
(
DfracOwn
q
)
(
in
custom
dfrac
at
level
1
,
q
constr
).
Notation
""
:
=
(
DfracOwn
1
)
(
in
custom
dfrac
).
Section
dfrac
.
Canonical
Structure
dfracO
:
=
leibnizO
dfrac
.
...
...
iris/base_logic/lib/gen_heap.v
View file @
f6df2576
...
...
@@ -123,8 +123,14 @@ Section definitions.
End
definitions
.
Arguments
meta
{
L
_
_
V
Σ
_
A
_
_
}
l
N
x
.
Local
Notation
"l ↦ dq v"
:
=
(
mapsto
l
dq
v
)
(
at
level
20
,
dq
custom
dfrac
at
level
1
,
format
"l ↦ dq v"
)
:
bi_scope
.
Local
Notation
"l ↦{ dq } v"
:
=
(
mapsto
l
dq
v
)
(
at
level
20
,
format
"l ↦{ dq } v"
)
:
bi_scope
.
Local
Notation
"l ↦□ v"
:
=
(
mapsto
l
DfracDiscarded
v
)
(
at
level
20
,
format
"l ↦□ v"
)
:
bi_scope
.
Local
Notation
"l ↦{# q } v"
:
=
(
mapsto
l
(
DfracOwn
q
)
v
)
(
at
level
20
,
format
"l ↦{# q } v"
)
:
bi_scope
.
Local
Notation
"l ↦ v"
:
=
(
mapsto
l
(
DfracOwn
1
)
v
)
(
at
level
20
,
format
"l ↦ v"
)
:
bi_scope
.
Section
gen_heap
.
Context
{
L
V
}
`
{
Countable
L
,
!
gen_heapG
L
V
Σ
}.
...
...
iris_heap_lang/derived_laws.v
View file @
f6df2576
...
...
@@ -16,8 +16,14 @@ with lists of values. *)
Definition
array
`
{!
heapG
Σ
}
(
l
:
loc
)
(
dq
:
dfrac
)
(
vs
:
list
val
)
:
iProp
Σ
:
=
([
∗
list
]
i
↦
v
∈
vs
,
(
l
+
ₗ
i
)
↦
{
dq
}
v
)%
I
.
Notation
"l ↦∗ dq vs"
:
=
(
array
l
dq
vs
)
(
at
level
20
,
dq
custom
dfrac
at
level
1
,
format
"l ↦∗ dq vs"
)
:
bi_scope
.
Notation
"l ↦∗{ dq } vs"
:
=
(
array
l
dq
vs
)
(
at
level
20
,
format
"l ↦∗{ dq } vs"
)
:
bi_scope
.
Notation
"l ↦∗□ vs"
:
=
(
array
l
DfracDiscarded
vs
)
(
at
level
20
,
format
"l ↦∗□ vs"
)
:
bi_scope
.
Notation
"l ↦∗{# q } vs"
:
=
(
array
l
(
DfracOwn
q
)
vs
)
(
at
level
20
,
format
"l ↦∗{# q } vs"
)
:
bi_scope
.
Notation
"l ↦∗ vs"
:
=
(
array
l
(
DfracOwn
1
)
vs
)
(
at
level
20
,
format
"l ↦∗ vs"
)
:
bi_scope
.
(** We have [FromSep] and [IntoSep] instances to split the fraction (via the
[AsFractional] instance below), but not for splitting the list, as that would
...
...
iris_heap_lang/lib/atomic_heap.v
View file @
f6df2576
...
...
@@ -49,8 +49,14 @@ Arguments atomic_heap _ {_}.
(** Notation for heap primitives, in a module so you can import it separately. *)
Module
notation
.
Notation
"l ↦ dq v"
:
=
(
mapsto
l
dq
v
)
(
at
level
20
,
dq
custom
dfrac
at
level
1
,
format
"l ↦ dq v"
)
:
bi_scope
.
Notation
"l ↦{ dq } v"
:
=
(
mapsto
l
dq
v
)
(
at
level
20
,
format
"l ↦{ dq } v"
)
:
bi_scope
.
Notation
"l ↦□ v"
:
=
(
mapsto
l
DfracDiscarded
v
)
(
at
level
20
,
format
"l ↦□ v"
)
:
bi_scope
.
Notation
"l ↦{# q } v"
:
=
(
mapsto
l
(
DfracOwn
q
)
v
)
(
at
level
20
,
format
"l ↦{# q } v"
)
:
bi_scope
.
Notation
"l ↦ v"
:
=
(
mapsto
l
(
DfracOwn
1
)
v
)
(
at
level
20
,
format
"l ↦ v"
)
:
bi_scope
.
Notation
"'ref' e"
:
=
(
alloc
e
)
:
expr_scope
.
Notation
"! e"
:
=
(
load
e
)
:
expr_scope
.
...
...
iris_heap_lang/primitive_laws.v
View file @
f6df2576
...
...
@@ -28,8 +28,14 @@ Instance heapG_irisG `{!heapG Σ} : irisG heap_lang Σ := {
(** Since we use an [option val] instance of [gen_heap], we need to overwrite
the notations. That also helps for scopes and coercions. *)
Notation
"l ↦ dq v"
:
=
(
mapsto
(
L
:
=
loc
)
(
V
:
=
option
val
)
l
dq
(
Some
v
%
V
))
(
at
level
20
,
dq
custom
dfrac
at
level
1
,
format
"l ↦ dq v"
)
:
bi_scope
.
Notation
"l ↦{ dq } v"
:
=
(
mapsto
(
L
:
=
loc
)
(
V
:
=
option
val
)
l
dq
(
Some
v
%
V
))
(
at
level
20
,
format
"l ↦{ dq } v"
)
:
bi_scope
.
Notation
"l ↦□ v"
:
=
(
mapsto
(
L
:
=
loc
)
(
V
:
=
option
val
)
l
DfracDiscarded
(
Some
v
%
V
))
(
at
level
20
,
format
"l ↦□ v"
)
:
bi_scope
.
Notation
"l ↦{# q } v"
:
=
(
mapsto
(
L
:
=
loc
)
(
V
:
=
option
val
)
l
(
DfracOwn
q
)
(
Some
v
%
V
))
(
at
level
20
,
format
"l ↦{# q } v"
)
:
bi_scope
.
Notation
"l ↦ v"
:
=
(
mapsto
(
L
:
=
loc
)
(
V
:
=
option
val
)
l
(
DfracOwn
1
)
(
Some
v
%
V
))
(
at
level
20
,
format
"l ↦ v"
)
:
bi_scope
.
(** Same for [gen_inv_heap], except that these are higher-order notations so to
make setoid rewriting in the predicate [I] work we need actual definitions
...
...
Write
Preview
Supports
Markdown
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