Nuprl Lemma : A-associative'

∀[Val:Type]. ∀[n:ℕ]. ∀[AType:array{i:l}(Val;n)]. ∀[T,S,U:Type]. ∀[m:A-map'(array-model(AType)) T].
∀[f:T ⟶ (A-map'(array-model(AType)) S)]. ∀[g:S ⟶ (A-map'(array-model(AType)) U)].
  ((A-bind'(array-model(AType)) (A-bind'(array-model(AType)) m f) g)
  = (A-bind'(array-model(AType)) m (λx.(A-bind'(array-model(AType)) (f x) g)))
  ∈ (A-map'(array-model(AType)) U))


Proof




Definitions occuring in Statement :  A-bind': A-bind'(AModel),  A-map': A-map'(AModel),  array-model: array-model(AType),  array: array{i:l}(Val;n),  nat: ℕ,  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 :  array-model: array-model(AType),  A-bind': A-bind'(AModel),  A-map': A-map'(AModel),  pi2: snd(t),  pi1: fst(t),  uall: ∀[x:A]. B[x],  member: t ∈ T
Lemmas referenced :  M-associative,  M-map_wf,  array-monad'_wf,  array_wf,  nat_wf
Rules used in proof :  sqequalSubstitution,  sqequalRule,  sqequalReflexivity,  sqequalTransitivity,  computationStep,  isect_memberFormation,  introduction,  cut,  lemma_by_obid,  sqequalHypSubstitution,  isectElimination,  thin,  because_Cache,  hypothesis,  functionEquality,  hypothesisEquality,  applyEquality,  isect_memberEquality,  axiomEquality,  universeEquality

Latex:
\mforall{}[Val:Type].  \mforall{}[n:\mBbbN{}].  \mforall{}[AType:array\{i:l\}(Val;n)].  \mforall{}[T,S,U:Type].  \mforall{}[m:A-map'(array-model(AType))  T].
\mforall{}[f:T  {}\mrightarrow{}  (A-map'(array-model(AType))  S)].  \mforall{}[g:S  {}\mrightarrow{}  (A-map'(array-model(AType))  U)].
    ((A-bind'(array-model(AType))  (A-bind'(array-model(AType))  m  f)  g)
    =  (A-bind'(array-model(AType))  m  (\mlambda{}x.(A-bind'(array-model(AType))  (f  x)  g))))



Date html generated: 2016_05_15-PM-02_19_07
Last ObjectModification: 2015_12_27-AM-08_59_34

Theory : monads


Home Index