Nuprl Lemma : hdf-bind-gen-compose1-left

[A,B,C,U:Type]. ∀[f:B ⟶ C]. ∀[X:hdataflow(A;B)]. ∀[Y:C ⟶ hdataflow(A;U)]. ∀[hdfs:bag(hdataflow(A;U))].
  (f (hdfs) >>(hdfs) >>f ∈ hdataflow(A;U)) supposing (valueall-type(C) and valueall-type(U))


Proof




Definitions occuring in Statement :  hdf-bind-gen: (hdfs) >>Y hdf-compose1: X hdataflow: hdataflow(A;B) compose: g valueall-type: valueall-type(T) uimplies: supposing a uall: [x:A]. B[x] function: x:A ⟶ B[x] universe: Type equal: t ∈ T bag: bag(T)
Definitions unfolded in proof :  uall: [x:A]. B[x] member: t ∈ T uimplies: supposing a uiff: uiff(P;Q) and: P ∧ Q cand: c∧ B so_lambda: λ2x.t[x] so_apply: x[s] implies:  Q all: x:A. B[x] top: Top prop: hdf-bind-gen: (hdfs) >>Y hdf-compose1: X mk-hdf: mk-hdf(s,m.G[s; m];st.H[st];s0) bool: 𝔹 unit: Unit it: btrue: tt ifthenelse: if then else fi  band: p ∧b q bfalse: ff exists: x:A. B[x] or: P ∨ Q sq_type: SQType(T) guard: {T} bnot: ¬bb assert: b false: False not: ¬A pi1: fst(t) pi2: snd(t) subtype_rel: A ⊆B bind-nxt: bind-nxt(Y;p;a) ext-eq: A ≡ B hdf-halt: hdf-halt() hdf-ap: X(a) squash: T callbyvalueall: callbyvalueall has-value: (a)↓ has-valueall: has-valueall(a) hdf-run: hdf-run(P) evalall: evalall(t) bag-map: bag-map(f;bs) map: map(f;as) list_ind: list_ind empty-bag: {} nil: [] true: True

Latex:
\mforall{}[A,B,C,U:Type].  \mforall{}[f:B  {}\mrightarrow{}  C].  \mforall{}[X:hdataflow(A;B)].  \mforall{}[Y:C  {}\mrightarrow{}  hdataflow(A;U)].
\mforall{}[hdfs:bag(hdataflow(A;U))].
    (f  o  X  (hdfs)  >>=  Y  =  X  (hdfs)  >>=  Y  o  f)  supposing  (valueall-type(C)  and  valueall-type(U))



Date html generated: 2016_05_16-AM-10_43_29
Last ObjectModification: 2016_01_17-AM-11_12_35

Theory : halting!dataflow


Home Index