lean4-htt/tests/lean/run/9363.lean
2025-09-24 14:32:08 +00:00

44 lines
706 B
Text

import Std.Tactic.Do
open Std.Do
set_option mvcgen.warning false
axiom P : Nat → Prop
axiom P' : Nat → Prop
axiom Q : Nat → Prop
axiom R : Assertion ps
axiom hPQ : ∀ n, P n → P' n → Q n
axiom G : StateM Nat Unit
axiom H : StateM Nat Unit
noncomputable def F : StateM Nat Unit := do
G
H
@[spec]
axiom G_spec : ⦃⌜True⌝⦄ G ⦃⇓ _ n => ⌜P n ∧ P' n⌝⦄
@[spec]
axiom H_spec : ⦃fun n => ⌜Q n⌝⦄ H ⦃⇓ _ => R⦄
theorem F_spec :
⦃⌜True⌝⦄
F
⦃⇓ _ => R⦄ := by
mvcgen [F]
-- Goal:
-- s✝¹ : Nat
-- r✝ : Unit
-- s✝ : Nat
-- h : P s✝ ∧ P' s✝
-- ⊢ Q s✝
rename_i h
cases h
apply hPQ
assumption
assumption