lean4-htt/tests/lean/run/9581.lean
Sebastian Graf 90ef90b462
feat: change extended syntax for mvcgen invariants ... with ... (#9989)
This PR changes the new extended syntax for `mvcgen` to `mvcgen
invariants ... with ...`.
2025-08-19 14:51:19 +00:00

38 lines
816 B
Text

import Std.Tactic.Do
open Std.Do
set_option mvcgen.warning false
structure MyException where
def F : EStateM MyException Unit Unit := do
for _ in [0:5] do
pure ()
theorem F_spec :
⦃⌜True⌝⦄
F
⦃⇓ _ => ⌜1 < 2⌝⦄ := by
mvcgen [F]
case inv1 => exact ⇓ _ => ⌜1 < 2⌝
-- it would be nice if we had a tactic wrapper around `case inv => exact ...` that does `mleave`
-- on all subgoals afterwards.
· mleave
omega
· mleave
omega
-- Goal that could be discharged completely automatically:
-- case post.except
-- ⊢ (⇓x => ⌜1 < 2⌝).snd ⊢ₑ (⇓x => ⌜1 < 2⌝).snd
· assumption
· mleave
theorem F_spec_using_with :
⦃⌜True⌝⦄
F
⦃⇓ _ => ⌜1 < 2⌝⦄ := by
mvcgen [F]
invariants · ⇓ _ => ⌜1 < 2⌝
with omega