Nuprl Lemma : bind-df-program-meaning

[M:Type]. [A,B:{T:Type| valueall-type(T)} ]. [dfpX:DataflowProgram(M)]. [dfpY:A  DataflowProgram(M)].
  ((df-program-type(dfpX) r A)
   (a:A. (df-program-type(dfpY a) r B))
   (df-program-meaning(dfpX>>= dfpY) = bind-dataflow(df-program-meaning(dfpX);a.df-program-meaning(dfpY a))))


Proof not projected




Definitions occuring in Statement :  bind-df-program: bind-df-program,  bind-dataflow: bind-dataflow(P;a.Q[a]),  df-program-meaning: df-program-meaning(dfp),  df-program-type: df-program-type(dfp),  dataflow-program: DataflowProgram(A),  dataflow: dataflow(A;B),  subtype_rel: A r B,  uall: [x:A]. B[x],  all: x:A. B[x],  implies: P  Q,  set: {x:A| B[x]} ,  apply: f a,  function: x:A  B[x],  universe: Type,  equal: s = t,  bag: bag(T),  valueall-type: valueall-type(T)
Definitions :  uall: [x:A]. B[x],  implies: P  Q,  all: x:A. B[x],  df-program-meaning: df-program-meaning(dfp),  bind-df-program: bind-df-program,  bind-df-program1: bind-df-program1(A;B;dfpX;dfpY),  member: t  T,  prop: ,  squash: T,  true: True,  spreadn: spread4,  subtype: S  T,  so_lambda: x.t[x],  pi2: snd(t),  pi1: fst(t),  so_lambda: x y.t[x; y],  suptype: suptype(S; T),  and: P  Q,  assert: b,  isl: isl(x),  outl: outl(x),  btrue: tt,  bfalse: ff,  ifthenelse: if b then t else f fi ,  cand: A c B,  top: Top,  so_apply: x[s],  bind-df-next2: bind-df-next2(F;dfpY;s;m),  bind-df-next3: bind-df-next3(F;dfpY;s;m),  let: let,  bind-nextouts2: bind-nextouts2(L;dfpY;m),  bind-nextouts1: bind-nextouts1(L;dfpY;m),  bag-combine: xbs.f[x],  bag-map: bag-map(f;bs),  bag-append: as + bs,  bag-mapfilter: bag-mapfilter(f;P;bs),  bag-union: bag-union(bbs),  map: map(f;as),  append: as @ bs,  bag-filter: [xb|p[x]],  filter: filter(P;l),  reduce: reduce(f;k;as),  ycomb: Y,  concat: concat(ll),  empty-bag: {},  bind-df-next: bind-df-next(F;dfpY;s;m),  bnot: b,  not: A,  band: p  q,  false: False,  exposed-bfalse: exposed-bfalse,  guard: {T},  bind-df-next1: bind-df-next1(F;dfpY;s;m),  df-program-state: df-program-state(dfp),  df-program-in-state-ap: df-program-in-state-ap(dfp;s;m),  dataflow-program: DataflowProgram(A),  df-program-type: df-program-type(dfp),  uimplies: b supposing a,  so_apply: x[s1;s2],  exists: x:A. B[x],  unit: Unit,  bool: ,  uiff: uiff(P;Q),  cons-bag: x.b,  it: ,  bag-null: bag-null(bs),  listid: listid(L)
Lemmas :  bind-df-program1-meaning,  equal_wf,  squash_wf,  true_wf,  dataflow_wf,  bag_wf,  subtype_rel_bag,  all_wf,  subtype_rel_wf,  df-program-type_wf,  dataflow-program_wf,  valueall-type_wf,  rec-dataflow-equal,  unit_wf2,  df-program-statetype_wf,  bind-df-next2_wf,  empty-bag_wf,  bind-df-next3_wf,  bag-mapfilter_wf,  isl_wf,  pi1_wf_top,  pi2_wf,  assert_wf,  top_wf,  outl_wf,  false_wf,  and_wf,  bool_wf,  bag_to_squash_list,  bag-combine_wf,  bag-map_wf,  df-program-in-state-ap_wf,  bag-append_wf,  df-program-state_wf,  subtype_rel_simple_product,  bag_qinc,  bind-nextouts1_wf,  bind-nextouts2_wf,  bag-filter-append,  bag-filter_wf,  cons-bag_wf,  bag-map-append,  bind-df-next_wf,  ifthenelse_wf,  not_wf,  equal-empty-bag,  bag-null_wf,  uiff_transitivity,  eqtt_to_assert,  assert-bag-null,  bnot_wf,  eqff_to_assert,  assert_of_bnot,  not_functionality_wrt_uiff,  bind-df-next1_wf

\mforall{}[M:Type].  \mforall{}[A,B:\{T:Type|  valueall-type(T)\}  ].  \mforall{}[dfpX:DataflowProgram(M)].
\mforall{}[dfpY:A  {}\mrightarrow{}  DataflowProgram(M)].
    ((df-program-type(dfpX)  \msubseteq{}r  A)
    {}\mRightarrow{}  (\mforall{}a:A.  (df-program-type(dfpY  a)  \msubseteq{}r  B))
    {}\mRightarrow{}  (df-program-meaning(dfpX
                                                  >>=  dfpY)
          =  bind-dataflow(df-program-meaning(dfpX);a.df-program-meaning(dfpY  a))))


Date html generated: 2012_01_23-PM-12_02_58
Last ObjectModification: 2011_12_31-PM-09_10_26

Home Index