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) m f) g) = (M-bind(Mnd) m (λ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: f a
, 
lambda: λx.A[x]
, 
function: x:A ⟶ B[x]
, 
universe: Type
, 
equal: s = 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