Nuprl Lemma : hdf-sqequal4

∀[F1,F2:Top].
  (fix((λmk-hdf.(inl (λa.let out ⟵ F1[a]
                         in <mk-hdf, out>)))) || fix((λmk-hdf.(inl (λa.let out ⟵ F2[a]
                                                                    in <mk-hdf, out>)))) 
  ~ fix((λmk-hdf.(inl (λa.let out1 ⟵ F1[a]
                          in let out2 ⟵ F2[a]
                             in let out ⟵ out1 + out2
                                in <mk-hdf, out>)))))


Proof




Definitions occuring in Statement :  hdf-parallel: X || Y,  callbyvalueall: callbyvalueall,  uall: ∀[x:A]. B[x],  top: Top,  so_apply: x[s],  fix: fix(F),  lambda: λx.A[x],  pair: <a, b>,  inl: inl x,  sqequal: s ~ t,  bag-append: as + bs
Definitions unfolded in proof :  uall: ∀[x:A]. B[x],  member: t ∈ T,  hdf-parallel: X || Y,  mk-hdf: mk-hdf(s,m.G[s; m];st.H[st];s0),  ifthenelse: if b then t else f fi ,  so_lambda: so_lambda(x,y,z,w.t[x; y; z; w]),  so_apply: x[s1;s2;s3;s4],  so_lambda: λ2x.t[x],  top: Top,  so_apply: x[s],  uimplies: b supposing a,  strict4: strict4(F),  and: P ∧ Q,  all: ∀x:A. B[x],  implies: P ⇒ Q,  has-value: (a)↓,  prop: ℙ,  guard: {T},  or: P ∨ Q,  squash: ↓T,  so_lambda: λ2x y.t[x; y],  so_apply: x[s1;s2],  band: p ∧b q,  hdf-halted: hdf-halted(P),  isr: isr(x),  bfalse: ff,  hdf-run: hdf-run(P),  hdf-ap: X(a),  empty-bag: {},  nil: [],  it: ⋅,  btrue: tt,  hdf-halt: hdf-halt(),  int_seg: {i..j-},  lelt: i ≤ j < k,  satisfiable_int_formula: satisfiable_int_formula(fmla),  exists: ∃x:A. B[x],  false: False,  not: ¬A,  decidable: Dec(P),  subtype_rel: A ⊆r B,  le: A ≤ B,  less_than': less_than'(a;b),  nat: ℕ,  callbyvalueall: callbyvalueall,  ge: i ≥ j ,  sq_type: SQType(T)

Latex:
\mforall{}[F1,F2:Top].
    (fix((\mlambda{}mk-hdf.(inl  (\mlambda{}a.let  out  \mleftarrow{}{}  F1[a]
                                                  in  <mk-hdf,  out>))))  ||  fix((\mlambda{}mk-hdf.(inl  (\mlambda{}a.let  out  \mleftarrow{}{}  F2[a]
                                                                                                                                        in  <mk-hdf,  out>)))) 
    \msim{}  fix((\mlambda{}mk-hdf.(inl  (\mlambda{}a.let  out1  \mleftarrow{}{}  F1[a]
                                                    in  let  out2  \mleftarrow{}{}  F2[a]
                                                          in  let  out  \mleftarrow{}{}  out1  +  out2
                                                                in  <mk-hdf,  out>)))))



Date html generated: 2016_05_16-AM-10_51_00
Last ObjectModification: 2016_01_17-AM-11_09_38

Theory : halting!dataflow


Home Index