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
iriscoq
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
Sidebyside
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