Nuprl Lemma : iterate-hdf-bind-simple

[A,B,C:Type]. ∀[X:hdataflow(A;B)]. ∀[Y:B ⟶ hdataflow(A;C)].
  ∀[L:A List]. ∀[a:A].  ((snd(X >>Y*(L)(a))) (snd(simple-hdf-bind(X;Y)*(L)(a))) ∈ bag(C)) supposing valueall-type(C)


Proof




Definitions occuring in Statement :  simple-hdf-bind: simple-hdf-bind(X;Y) hdf-bind: X >>Y iterate-hdataflow: P*(inputs) hdf-ap: X(a) hdataflow: hdataflow(A;B) list: List valueall-type: valueall-type(T) uimplies: supposing a uall: [x:A]. B[x] pi2: snd(t) 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 simple-hdf-bind: simple-hdf-bind(X;Y) hdf-bind: X >>Y so_lambda: λ2x.t[x] implies:  Q prop: so_apply: x[s] subtype_rel: A ⊆B all: x:A. B[x] bool: 𝔹 unit: Unit it: btrue: tt band: p ∧b q ifthenelse: if then else fi  uiff: uiff(P;Q) and: P ∧ Q bfalse: ff so_lambda: λ2y.t[x; y] so_apply: x[s1;s2] top: Top squash: T guard: {T} iff: ⇐⇒ Q rev_implies:  Q mk-hdf: mk-hdf(s,m.G[s; m];st.H[st];s0) not: ¬A false: False ext-eq: A ≡ B hdf-run: hdf-run(P) hdf-ap: X(a) hdf-halt: hdf-halt() hdf-halted: hdf-halted(P) isr: isr(x) assert: b pi2: snd(t) simple-bind-nxt: simple-bind-nxt(Y; p; a) callbyvalueall: callbyvalueall has-value: (a)↓ has-valueall: has-valueall(a) pi1: fst(t) true: True bind-nxt: bind-nxt(Y;p;a) cand: c∧ B decidable: Dec(P) or: P ∨ Q sq_type: SQType(T) compose: g rev_uimplies: rev_uimplies(P;Q)

Latex:
\mforall{}[A,B,C:Type].  \mforall{}[X:hdataflow(A;B)].  \mforall{}[Y:B  {}\mrightarrow{}  hdataflow(A;C)].
    \mforall{}[L:A  List].  \mforall{}[a:A].    ((snd(X  >>=  Y*(L)(a)))  =  (snd(simple-hdf-bind(X;Y)*(L)(a)))) 
    supposing  valueall-type(C)



Date html generated: 2016_05_16-AM-10_44_15
Last ObjectModification: 2016_01_17-AM-11_13_54

Theory : halting!dataflow


Home Index