From bc626812c4d679c5432e0a0aa57442ed0eab6baa Mon Sep 17 00:00:00 2001
From: Robbert Krebbers <mail@robbertkrebbers.nl>
Date: Sat, 11 Dec 2021 19:16:02 +0100
Subject: [PATCH] Tweak proofs.

---
 iris_heap_lang/metatheory.v | 35 +++++++++++++----------------------
 1 file changed, 13 insertions(+), 22 deletions(-)

diff --git a/iris_heap_lang/metatheory.v b/iris_heap_lang/metatheory.v
index 8f9718453..12d02a6ea 100644
--- a/iris_heap_lang/metatheory.v
+++ b/iris_heap_lang/metatheory.v
@@ -64,24 +64,21 @@ Fixpoint subst_map (vs : gmap string val) (e : expr) : expr :=
   end.
 
 (* Properties *)
-Local Instance SetUnfoldElemOf_insert_binder x y X Q :
+Local Instance set_unfold_elem_of_insert_binder x y X Q :
   SetUnfoldElemOf y X Q →
   SetUnfoldElemOf y (set_binder_insert x X) (Q ∨ BNamed y = x).
-Proof.
-  intros H1. constructor.
-  destruct x as [|x]; set_solver.
-Qed.
+Proof. destruct 1; constructor; destruct x; set_solver. Qed.
 
 Lemma is_closed_weaken X Y e : is_closed_expr X e → X ⊆ Y → is_closed_expr Y e.
-Proof.
-  revert X Y; induction e; naive_solver (eauto; set_solver).
-Qed.
+Proof. revert X Y; induction e; naive_solver (eauto; set_solver). Qed.
 
 Lemma is_closed_weaken_empty X e : is_closed_expr ∅ e → is_closed_expr X e.
 Proof. intros. by apply is_closed_weaken with ∅, empty_subseteq. Qed.
 
 Lemma is_closed_subst X e y v :
-  is_closed_val v → is_closed_expr ({[y]} ∪ X) e → is_closed_expr X (subst y v e).
+  is_closed_val v →
+  is_closed_expr ({[y]} ∪ X) e →
+  is_closed_expr X (subst y v e).
 Proof.
   intros Hv. revert X.
   induction e=> X /= ?; destruct_and?; split_and?; simplify_option_eq;
@@ -90,14 +87,16 @@ Proof.
     end; eauto using is_closed_weaken with set_solver.
 Qed.
 Lemma is_closed_subst' X e x v :
-  is_closed_val v → is_closed_expr (set_binder_insert x X) e → is_closed_expr X (subst' x v e).
+  is_closed_val v →
+  is_closed_expr (set_binder_insert x X) e →
+  is_closed_expr X (subst' x v e).
 Proof. destruct x; eauto using is_closed_subst. Qed.
 
 Lemma subst_is_closed X e x es : is_closed_expr X e → x ∉ X → subst x es e = e.
 Proof.
   revert X. induction e=> X /=;
    rewrite ?bool_decide_spec ?andb_True=> ??;
-    repeat case_decide; simplify_eq/=; f_equal; intuition eauto with set_solver.
+   repeat case_decide; simplify_eq/=; f_equal; intuition eauto with set_solver.
 Qed.
 
 Lemma subst_is_closed_empty e x v : is_closed_expr ∅ e → subst x v e = e.
@@ -244,19 +243,11 @@ Lemma subst_map_is_closed X e vs :
 Proof.
   revert X vs. assert (∀ x x1 x2 X (vs : gmap string val),
     (∀ x, x ∈ X → vs !! x = None) →
-    x ∈ x2 :b: x1 :b: X →
+    x ∈ set_binder_insert x2 (set_binder_insert x1 X) →
     binder_delete x1 (binder_delete x2 vs) !! x = None).
   { intros x x1 x2 X vs ??. rewrite !lookup_binder_delete_None. set_solver. }
-  induction e as [| |f x e IHe | | | | | | | | | | | | | | | | | | | |]=> X vs /= ? HX.
-  3:{ f_equal. eapply IHe; eauto.
-      intros x0 Hx0.
-      rewrite !lookup_binder_delete_None.
-      set_solver. }
-  all: repeat case_match; naive_solver eauto with f_equal.
+  induction e=> X vs /= ? HX; repeat case_match; naive_solver eauto with f_equal.
 Qed.
 
 Lemma subst_map_is_closed_empty e vs : is_closed_expr ∅ e → subst_map vs e = e.
-Proof.
-  intros.
-  apply subst_map_is_closed with ∅; try setoid_rewrite elem_of_empty; set_solver.
-Qed.
+Proof. intros. apply subst_map_is_closed with (∅ : stringset); set_solver. Qed.
-- 
GitLab