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
Marianna Rapoport
iris-coq
Commits
b23c9e94
Commit
b23c9e94
authored
Feb 17, 2016
by
Ralf Jung
Browse files
add some automation related to disjointness of namespaces
parent
adf3a991
Changes
1
Hide whitespace changes
Inline
Side-by-side
program_logic/namespaces.v
View file @
b23c9e94
...
...
@@ -53,4 +53,27 @@ Section ndisjoint.
rewrite
!
list_encode_app
!
assoc
in
Hq
.
by
eapply
Hne
,
list_encode_suffix_eq
.
Qed
.
End
ndisjoint
.
\ No newline at end of file
End
ndisjoint
.
(* This tactic solves goals about inclusion and disjointness
of masks (i.e., coPsets) with solve_elem_of, taking
disjointness of namespaces into account. *)
(* TODO: This tactic is by far now yet as powerful as it should be.
For example, given N1 ⊥ N2, it should be able to solve
nclose (ndot N1 x) ∩ N2 ≡ ∅. It should also solve
(ndot N x) ∩ (ndot N y) ≡ ∅ if x ≠ y is in the context or
follows from [discriminate]. *)
Ltac
solve_elem_of_ndisj
:
=
repeat
match
goal
with
(* TODO: Restrict these to have type namespace *)
|
[
H
:
(
?N1
⊥
?N2
)
|-
_
]
=>
apply
ndisj_disjoint
in
H
end
;
solve_elem_of
.
(* TODO: restrict this to match only if this is ⊆ of coPset *)
Hint
Extern
500
(
_
⊆
_
)
=>
solve_elem_of_ndisj
:
ndisj
.
(* The hope is that registering these will suffice to solve most goals
of the form N1 ⊥ N2.
TODO: Can this prove x ≠ y if discriminate can? *)
Hint
Resolve
ndot_ne_disjoint
:
ndisj
.
Hint
Resolve
ndot_preserve_disjoint_l
:
ndisj
.
Hint
Resolve
ndot_preserve_disjoint_r
:
ndisj
.
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