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

Improve leibniz_equiv and f_equiv.

It now turns setoid equalities into Leibniz equalities when possible,
and substitutes those.
parent c59e1f85
No related branches found
No related tags found
No related merge requests found
...@@ -47,7 +47,7 @@ Section heap. ...@@ -47,7 +47,7 @@ Section heap.
(** Conversion to heaps and back *) (** Conversion to heaps and back *)
Global Instance of_heap_proper : Proper (() ==> (=)) of_heap. Global Instance of_heap_proper : Proper (() ==> (=)) of_heap.
Proof. by intros ??; fold_leibniz=>->. Qed. Proof. solve_proper. Qed.
Lemma from_to_heap σ : of_heap (to_heap σ) = σ. Lemma from_to_heap σ : of_heap (to_heap σ) = σ.
Proof. Proof.
apply map_eq=>l. rewrite lookup_omap lookup_fmap. by case (σ !! l). apply map_eq=>l. rewrite lookup_omap lookup_fmap. by case (σ !! l).
...@@ -96,7 +96,7 @@ Section heap. ...@@ -96,7 +96,7 @@ Section heap.
(** Propers *) (** Propers *)
Global Instance heap_inv_proper : Proper (() ==> ()) heap_inv. Global Instance heap_inv_proper : Proper (() ==> ()) heap_inv.
Proof. intros h1 h2. by fold_leibniz=> ->. Qed. Proof. solve_proper. Qed.
(** General properties of mapsto *) (** General properties of mapsto *)
Lemma heap_mapsto_disjoint l v1 v2 : (l v1 l v2)%I False. Lemma heap_mapsto_disjoint l v1 v2 : (l v1 l v2)%I False.
......
...@@ -188,6 +188,7 @@ Tactic Notation "simplify_eq" := repeat ...@@ -188,6 +188,7 @@ Tactic Notation "simplify_eq" := repeat
| H : ?x = _ |- _ => subst x | H : ?x = _ |- _ => subst x
| H : _ = ?x |- _ => subst x | H : _ = ?x |- _ => subst x
| H : _ = _ |- _ => discriminate H | H : _ = _ |- _ => discriminate H
| H : _ _ |- _ => apply leibniz_equiv in H
| H : ?f _ = ?f _ |- _ => apply (inj f) in H | H : ?f _ = ?f _ |- _ => apply (inj f) in H
| H : ?f _ _ = ?f _ _ |- _ => apply (inj2 f) in H; destruct H | H : ?f _ _ = ?f _ _ |- _ => apply (inj2 f) in H; destruct H
(* before [injection] to circumvent bug #2939 in some situations *) (* before [injection] to circumvent bug #2939 in some situations *)
...@@ -237,7 +238,7 @@ Ltac f_equiv := ...@@ -237,7 +238,7 @@ Ltac f_equiv :=
| |- pointwise_relation _ _ _ _ => intros ? | |- pointwise_relation _ _ _ _ => intros ?
end; end;
(* Normalize away equalities. *) (* Normalize away equalities. *)
subst; simplify_eq;
(* repeatedly apply congruence lemmas and use the equalities in the hypotheses. *) (* repeatedly apply congruence lemmas and use the equalities in the hypotheses. *)
try match goal with try match goal with
| _ => first [ reflexivity | assumption | symmetry; assumption] | _ => first [ reflexivity | assumption | symmetry; assumption]
......
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