24 lines
705 B
Text
24 lines
705 B
Text
structure EmptyM (_ : Type u) : Type v
|
||
|
||
instance : Monad EmptyM where
|
||
pure _ := ⟨⟩
|
||
bind _ _ := ⟨⟩
|
||
|
||
theorem runMEvil (runM : ∀α m, [Monad m] → m α → α) : False :=
|
||
runM PEmpty EmptyM ⟨⟩ |>.elim
|
||
|
||
instance : LawfulMonad EmptyM where
|
||
map_const := by intros; trivial
|
||
id_map := by intros; trivial
|
||
seqLeft_eq := by intros; trivial
|
||
seqRight_eq := by intros; trivial
|
||
pure_seq := by intros; trivial
|
||
bind_pure_comp := by intros; trivial
|
||
bind_map := by intros; trivial
|
||
pure_bind := by intros; trivial
|
||
bind_assoc := by intros; trivial
|
||
|
||
theorem lawfulRunMEvil (runM : ∀α m, [Monad m] → [LawfulMonad m] → m α → α)
|
||
: False :=
|
||
runM PEmpty EmptyM ⟨⟩ |>.elim
|