Skip to content
Snippets Groups Projects
Commit 3b184486 authored by Robbert Krebbers's avatar Robbert Krebbers
Browse files

Add basic support for `gset_disj` to `set_solver`.

parent 51278834
No related branches found
No related tags found
No related merge requests found
...@@ -237,6 +237,20 @@ Section gset_disj. ...@@ -237,6 +237,20 @@ Section gset_disj.
intros. rewrite -{2}(right_id_L _ union Z). intros. rewrite -{2}(right_id_L _ union Z).
apply gset_disj_alloc_local_update; set_solver. apply gset_disj_alloc_local_update; set_solver.
Qed. Qed.
(** Add some basic support for [GSet X = GSet Y], [GSet X ≼ GSet Y], and
[✓ (GSet X ⋅ GSet Y)] to [set_solver]. There are probably more cases we could
cover (e.g., involving [GSetBot], or nesting of [⋅]), but it is not clear
these are useful in practice, nor how to handle them effectively. *)
Global Instance set_unfold_gset_eq (X Y : gset K) Q :
SetUnfold (X = Y) Q SetUnfold (GSet X = GSet Y) Q.
Proof. intros [?]; constructor. by rewrite (inj_iff _). Qed.
Global Instance set_unfold_gset_disj_included (X Y : gset K) Q :
SetUnfold (X Y) Q SetUnfold (GSet X GSet Y) Q.
Proof. intros [?]; constructor. by rewrite gset_disj_included. Qed.
Global Instance set_unfold_gset_disj_valid_op (X Y : gset K) Q :
SetUnfold (X ## Y) Q SetUnfold ( (GSet X GSet Y)) Q.
Proof. intros [?]; constructor. by rewrite gset_disj_valid_op. Qed.
End gset_disj. End gset_disj.
Global Arguments gset_disjO _ {_ _}. Global Arguments gset_disjO _ {_ _}.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment