Nuprl Lemma : M-associative

[Mnd:Monad]. ∀[T,S,U:Type]. ∀[m:M-map(Mnd) T]. ∀[f:T ⟶ (M-map(Mnd) S)]. ∀[g:S ⟶ (M-map(Mnd) U)].
  ((M-bind(Mnd) (M-bind(Mnd) f) g) (M-bind(Mnd) x.(M-bind(Mnd) (f x) g))) ∈ (M-map(Mnd) U))


Proof




Definitions occuring in Statement :  M-bind: M-bind(Mnd) M-map: M-map(mnd) monad: Monad uall: [x:A]. B[x] apply: a lambda: λx.A[x] function: x:A ⟶ B[x] universe: Type equal: t ∈ T
Definitions unfolded in proof :  uall: [x:A]. B[x] member: t ∈ T monad: Monad M-bind: M-bind(Mnd) M-map: M-map(mnd) pi1: fst(t) pi2: snd(t)
Lemmas referenced :  M-map_wf monad_wf
Rules used in proof :  sqequalSubstitution sqequalTransitivity computationStep sqequalReflexivity isect_memberFormation_alt introduction cut sqequalHypSubstitution productElimination thin sqequalRule hypothesis functionIsType universeIsType hypothesisEquality applyEquality extract_by_obid isectElimination isect_memberEquality axiomEquality functionEquality because_Cache inhabitedIsType universeEquality

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



Date html generated: 2019_10_15-AM-10_59_21
Last ObjectModification: 2018_09_27-AM-11_06_11

Theory : monads


Home Index