Skip to content

Commit 646df6b

Browse files
authored
feat: add lemmas about EStateM.run (#11600)
This PR adds a few lemmas about `EStateM.run` on basic operations.
1 parent 552fa10 commit 646df6b

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

src/Init/Control/Lawful/Instances.lean

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,26 @@ end StateT
447447

448448
/-! # EStateM -/
449449

450+
namespace EStateM
451+
452+
@[simp, grind =] theorem run_pure (a : α) (s : σ) :
453+
EStateM.run (pure a : EStateM ε σ α) s = .ok a s := rfl
454+
455+
@[simp, grind =] theorem run_get (s : σ) :
456+
EStateM.run (get : EStateM ε σ σ) s = .ok s s := rfl
457+
458+
@[simp, grind =] theorem run_set (s₁ s₂ : σ) :
459+
EStateM.run (set s₁ : EStateM ε σ PUnit) s₂ = .ok .unit s₁ := rfl
460+
461+
@[simp, grind =] theorem run_modify (f : σ → σ) (s : σ) :
462+
EStateM.run (modify f : EStateM ε σ PUnit) s = .ok .unit (f s) := rfl
463+
464+
@[simp, grind =] theorem run_modifyGet (f : σ → α × σ) (s : σ) :
465+
EStateM.run (modifyGet f : EStateM ε σ α) s = .ok (f s).1 (f s).2 := rfl
466+
467+
@[simp, grind =] theorem run_throw (e : ε) (s : σ):
468+
EStateM.run (throw e : EStateM ε σ PUnit) s = .error e s := rfl
469+
450470
instance : LawfulMonad (EStateM ε σ) := .mk'
451471
(id_map := fun x => funext <| fun s => by
452472
dsimp only [EStateM.instMonad, EStateM.map]
@@ -460,3 +480,5 @@ instance : LawfulMonad (EStateM ε σ) := .mk'
460480
| .ok _ _ => rfl
461481
| .error _ _ => rfl)
462482
(map_const := fun _ _ => rfl)
483+
484+
end EStateM

0 commit comments

Comments
 (0)