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
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Rodolphe Lepigre
Iris
Commits
df9d11bf
Commit
df9d11bf
authored
Feb 21, 2018
by
Robbert Krebbers
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move namespaces to stdpp.
parent
d43ba2b1
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
4 additions
and
107 deletions
+4
-107
CHANGELOG.md
CHANGELOG.md
+1
-0
_CoqProject
_CoqProject
+0
-1
opam
opam
+1
-1
theories/base_logic/lib/invariants.v
theories/base_logic/lib/invariants.v
+2
-1
theories/base_logic/lib/namespaces.v
theories/base_logic/lib/namespaces.v
+0
-104
No files found.
CHANGELOG.md
View file @
df9d11bf
...
...
@@ -22,6 +22,7 @@ Changes in Coq:
-
`IntoLaterN'`
→
`IntoLaterN`
(this one _should_ strip a later)
-
`IntoLaterNEnv`
→
`MaybeIntoLaterNEnv`
-
`IntoLaterNEnvs`
→
`MaybeIntoLaterNEnvs`
*
`namespaces`
has been moved to std++.
## Iris 3.1.0 (released 2017-12-19)
...
...
_CoqProject
View file @
df9d11bf
...
...
@@ -38,7 +38,6 @@ theories/base_logic/fixpoint.v
theories/base_logic/lib/iprop.v
theories/base_logic/lib/own.v
theories/base_logic/lib/saved_prop.v
theories/base_logic/lib/namespaces.v
theories/base_logic/lib/wsat.v
theories/base_logic/lib/invariants.v
theories/base_logic/lib/fancy_updates.v
...
...
opam
View file @
df9d11bf
...
...
@@ -12,5 +12,5 @@ remove: ["rm" "-rf" "%{lib}%/coq/user-contrib/iris"]
depends: [
"coq" { (>= "8.6.1" & < "8.8~") | (= "dev") }
"coq-mathcomp-ssreflect" { (>= "1.6.1" & < "1.7~") | (= "dev") }
"coq-stdpp" { (= "dev.2018-02-
19.1
") | (= "dev") }
"coq-stdpp" { (= "dev.2018-02-
21.0
") | (= "dev") }
]
theories/base_logic/lib/invariants.v
View file @
df9d11bf
From
iris
.
base_logic
.
lib
Require
Export
fancy_updates
namespaces
.
From
iris
.
base_logic
.
lib
Require
Export
fancy_updates
.
From
stdpp
Require
Export
namespaces
.
From
iris
.
base_logic
.
lib
Require
Import
wsat
.
From
iris
.
algebra
Require
Import
gmap
.
From
iris
.
proofmode
Require
Import
tactics
coq_tactics
intro_patterns
.
...
...
theories/base_logic/lib/namespaces.v
deleted
100644 → 0
View file @
d43ba2b1
From
stdpp
Require
Export
countable
coPset
.
From
iris
.
algebra
Require
Export
base
.
Set
Default
Proof
Using
"Type"
.
Definition
namespace
:
=
list
positive
.
Instance
namespace_eq_dec
:
EqDecision
namespace
:
=
_
.
Instance
namespace_countable
:
Countable
namespace
:
=
_
.
Typeclasses
Opaque
namespace
.
Definition
nroot
:
namespace
:
=
nil
.
Definition
ndot_def
`
{
Countable
A
}
(
N
:
namespace
)
(
x
:
A
)
:
namespace
:
=
encode
x
::
N
.
Definition
ndot_aux
:
seal
(@
ndot_def
).
by
eexists
.
Qed
.
Definition
ndot
{
A
A_dec
A_count
}
:
=
unseal
ndot_aux
A
A_dec
A_count
.
Definition
ndot_eq
:
@
ndot
=
@
ndot_def
:
=
seal_eq
ndot_aux
.
Definition
nclose_def
(
N
:
namespace
)
:
coPset
:
=
coPset_suffixes
(
encode
N
).
Definition
nclose_aux
:
seal
(@
nclose_def
).
by
eexists
.
Qed
.
Instance
nclose
:
UpClose
namespace
coPset
:
=
unseal
nclose_aux
.
Definition
nclose_eq
:
@
nclose
=
@
nclose_def
:
=
seal_eq
nclose_aux
.
Notation
"N .@ x"
:
=
(
ndot
N
x
)
(
at
level
19
,
left
associativity
,
format
"N .@ x"
)
:
stdpp_scope
.
Notation
"(.@)"
:
=
ndot
(
only
parsing
)
:
stdpp_scope
.
Instance
ndisjoint
:
Disjoint
namespace
:
=
λ
N1
N2
,
nclose
N1
##
nclose
N2
.
Section
namespace
.
Context
`
{
Countable
A
}.
Implicit
Types
x
y
:
A
.
Implicit
Types
N
:
namespace
.
Implicit
Types
E
:
coPset
.
Global
Instance
ndot_inj
:
Inj2
(=)
(=)
(=)
(@
ndot
A
_
_
).
Proof
.
intros
N1
x1
N2
x2
;
rewrite
!
ndot_eq
=>
?
;
by
simplify_eq
.
Qed
.
Lemma
nclose_nroot
:
↑
nroot
=
(
⊤:
coPset
).
Proof
.
rewrite
nclose_eq
.
by
apply
(
sig_eq_pi
_
).
Qed
.
Lemma
encode_nclose
N
:
encode
N
∈
(
↑
N
:
coPset
).
Proof
.
rewrite
nclose_eq
.
by
apply
elem_coPset_suffixes
;
exists
xH
;
rewrite
(
left_id_L
_
_
).
Qed
.
Lemma
nclose_subseteq
N
x
:
↑
N
.@
x
⊆
(
↑
N
:
coPset
).
Proof
.
intros
p
;
rewrite
nclose_eq
/
nclose
!
ndot_eq
!
elem_coPset_suffixes
.
intros
[
q
->].
destruct
(
list_encode_suffix
N
(
ndot_def
N
x
))
as
[
q'
?].
{
by
exists
[
encode
x
].
}
by
exists
(
q
++
q'
)%
positive
;
rewrite
<-(
assoc_L
_
)
;
f_equal
.
Qed
.
Lemma
nclose_subseteq'
E
N
x
:
↑
N
⊆
E
→
↑
N
.@
x
⊆
E
.
Proof
.
intros
.
etrans
;
eauto
using
nclose_subseteq
.
Qed
.
Lemma
ndot_nclose
N
x
:
encode
(
N
.@
x
)
∈
(
↑
N
:
coPset
).
Proof
.
apply
nclose_subseteq
with
x
,
encode_nclose
.
Qed
.
Lemma
nclose_infinite
N
:
¬
set_finite
(
↑
N
:
coPset
).
Proof
.
rewrite
nclose_eq
.
apply
coPset_suffixes_infinite
.
Qed
.
Lemma
ndot_ne_disjoint
N
x
y
:
x
≠
y
→
N
.@
x
##
N
.@
y
.
Proof
.
intros
Hxy
a
.
rewrite
!
nclose_eq
!
elem_coPset_suffixes
!
ndot_eq
.
intros
[
qx
->]
[
qy
Hqy
].
revert
Hqy
.
by
intros
[=
?%
encode_inj
]%
list_encode_suffix_eq
.
Qed
.
Lemma
ndot_preserve_disjoint_l
N
E
x
:
↑
N
##
E
→
↑
N
.@
x
##
E
.
Proof
.
intros
.
pose
proof
(
nclose_subseteq
N
x
).
set_solver
.
Qed
.
Lemma
ndot_preserve_disjoint_r
N
E
x
:
E
##
↑
N
→
E
##
↑
N
.@
x
.
Proof
.
intros
.
by
apply
symmetry
,
ndot_preserve_disjoint_l
.
Qed
.
Lemma
ndisj_subseteq_difference
N
E
F
:
E
##
↑
N
→
E
⊆
F
→
E
⊆
F
∖
↑
N
.
Proof
.
set_solver
.
Qed
.
Lemma
namespace_subseteq_difference_l
E1
E2
E3
:
E1
⊆
E3
→
E1
∖
E2
⊆
E3
.
Proof
.
set_solver
.
Qed
.
Lemma
ndisj_difference_l
E
N1
N2
:
↑
N2
⊆
(
↑
N1
:
coPset
)
→
E
∖
↑
N1
##
↑
N2
.
Proof
.
set_solver
.
Qed
.
End
namespace
.
(* The hope is that registering these will suffice to solve most goals
of the forms:
- [N1 ## N2]
- [↑N1 ⊆ E ∖ ↑N2 ∖ .. ∖ ↑Nn]
- [E1 ∖ ↑N1 ⊆ E2 ∖ ↑N2 ∖ .. ∖ ↑Nn] *)
Create
HintDb
ndisj
.
Hint
Resolve
ndisj_subseteq_difference
:
ndisj
.
Hint
Extern
0
(
_
##
_
)
=>
apply
ndot_ne_disjoint
;
congruence
:
ndisj
.
Hint
Resolve
ndot_preserve_disjoint_l
ndot_preserve_disjoint_r
:
ndisj
.
Hint
Resolve
nclose_subseteq'
ndisj_difference_l
:
ndisj
.
Hint
Resolve
namespace_subseteq_difference_l
|
100
:
ndisj
.
Hint
Resolve
(
empty_subseteq
(
A
:
=
positive
)
(
C
:
=
coPset
))
:
ndisj
.
Hint
Resolve
(
union_least
(
A
:
=
positive
)
(
C
:
=
coPset
))
:
ndisj
.
Ltac
solve_ndisj
:
=
repeat
match
goal
with
|
H
:
_
∪
_
⊆
_
|-
_
=>
apply
union_subseteq
in
H
as
[??]
end
;
solve
[
eauto
with
ndisj
].
Hint
Extern
1000
=>
solve_ndisj
:
solve_ndisj
.
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