Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Iris
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Monitor
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Yixuan Chen
Iris
Commits
b23c9e94
Commit
b23c9e94
authored
9 years ago
by
Ralf Jung
Browse files
Options
Downloads
Patches
Plain Diff
add some automation related to disjointness of namespaces
parent
adf3a991
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
program_logic/namespaces.v
+24
-1
24 additions, 1 deletion
program_logic/namespaces.v
with
24 additions
and
1 deletion
program_logic/namespaces.v
+
24
−
1
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
.
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
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!
Save comment
Cancel
Please
register
or
sign in
to comment