From da22439858554bf5ed6fa3920b04f8ad33fbb132 Mon Sep 17 00:00:00 2001
From: Robbert Krebbers <mail@robbertkrebbers.nl>
Date: Thu, 4 May 2023 13:18:05 +0200
Subject: [PATCH] Make sure that `iStartProof` fails on goals with `let`.

These should either be `simpl`ed or introduced into the Coq context.
Fixes the first bug in issue #520.
---
 iris/proofmode/ltac_tactics.v | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/iris/proofmode/ltac_tactics.v b/iris/proofmode/ltac_tactics.v
index 137683a28..86be845c6 100644
--- a/iris/proofmode/ltac_tactics.v
+++ b/iris/proofmode/ltac_tactics.v
@@ -66,6 +66,8 @@ Tactic Notation "iSelect" open_constr(pat) tactic1(tac) :=
 (** * Start a proof *)
 Tactic Notation "iStartProof" :=
   lazymatch goal with
+  | |- (let _ := _ in _) => fail "iStartProof: goal is a `let`, use `simpl`,"
+                                 "`intros x`, `iIntros (x)`, or `iIntros ""%x"""
   | |- envs_entails _ _ => idtac
   | |- ?φ => notypeclasses refine (as_emp_valid_2 φ _ _);
                [tc_solve || fail "iStartProof: not a BI assertion"
-- 
GitLab