Step * of Lemma M-leftunit

[Mnd:Monad]. ∀[T,S:Type]. ∀[x:T]. ∀[f:T ⟶ (M-map(Mnd) S)].
  ((M-bind(Mnd) (M-return(Mnd) x) f) (f x) ∈ (M-map(Mnd) S))
BY
((Auto THEN Unfold `monad` 1) THEN THEN THEN THEN THEN RepUR ``M-map M-bind M-return`` 0)⋅ }

1
1. Type ⟶ Type
2. return : ⋂T:Type. (T ⟶ (M T))
3. bind : ⋂T,S:Type.  ((M T) ⟶ (T ⟶ (M S)) ⟶ (M S))
4. leftunit : ∀[T,S:Type]. ∀[x:T]. ∀[f:T ⟶ (M S)].  ((bind (return x) f) (f x) ∈ (M S))
5. M4 rightunit:∀[T:Type]. ∀[m:M T].  ((bind return) m ∈ (M T))
× (∀[T,S,U:Type]. ∀[m:M T]. ∀[f:T ⟶ (M S)]. ∀[g:S ⟶ (M U)].
     ((bind (bind f) g) (bind x.(bind (f x) g))) ∈ (M U)))
6. Type
7. Type
8. T
9. T ⟶ (M-map(<M, return, bind, leftunit, M4>S)
⊢ (bind (return x) f) (f x) ∈ (M S)


Latex:


Latex:
\mforall{}[Mnd:Monad].  \mforall{}[T,S:Type].  \mforall{}[x:T].  \mforall{}[f:T  {}\mrightarrow{}  (M-map(Mnd)  S)].
    ((M-bind(Mnd)  (M-return(Mnd)  x)  f)  =  (f  x))


By


Latex:
((Auto  THEN  Unfold  `monad`  1)
  THEN  D  1
  THEN  D  2
  THEN  D  3
  THEN  D  4
  THEN  RepUR  ``M-map  M-bind  M-return``  0)\mcdot{}




Home Index