Nuprl Lemma : bind-df-program1-meaning

[M,A,B:Type]. [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(bind-df-program1(A;B;dfpX;dfpY))
     = bind-dataflow(df-program-meaning(dfpX);a.df-program-meaning(dfpY a))))


Proof not projected




Definitions occuring in Statement :  bind-df-program1: bind-df-program1(A;B;dfpX;dfpY),  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,  apply: f a,  function: x:A  B[x],  universe: Type,  equal: s = t,  bag: bag(T)
Definitions :  uall: [x:A]. B[x],  implies: P  Q,  all: x:A. B[x],  df-program-meaning: df-program-meaning(dfp),  bind-df-program1: bind-df-program1(A;B;dfpX;dfpY),  bind-dataflow: bind-dataflow(P;a.Q[a]),  member: t  T,  spreadn: spread4,  bind-dataflow-aux: bind-dataflow-aux(P;dfs;a.Q[a]),  subtype: S  T,  prop: ,  so_lambda: x y.t[x; y],  suptype: suptype(S; T),  so_lambda: x.t[x],  top: Top,  pi1: fst(t),  df-program-statetype: df-program-statetype(dfp),  df-program-type: df-program-type(dfp),  dataflow-program: DataflowProgram(A),  df-program-in-state: df-program-in-state(dfp;s),  pi2: snd(t),  let: let,  and: P  Q,  rev_implies: P  Q,  iff: P  Q,  squash: T,  true: True,  bind-df-next1: bind-df-next1(F;dfpY;s;m),  ifthenelse: if b then t else f fi ,  isl: isl(x),  outl: outl(x),  bind-nextouts1: bind-nextouts1(L;dfpY;m),  btrue: tt,  bag-combine: xbs.f[x],  compose: f o g,  null-dataflow: null-dataflow(),  df-program-in-state-ap: df-program-in-state-ap(dfp;s;m),  df-program-state: df-program-state(dfp),  reduce: reduce(f;k;as),  ycomb: Y,  map: map(f;as),  concat: concat(ll),  bag-map: bag-map(f;bs),  bag-union: bag-union(bbs),  empty-bag: {},  bnot: b,  bfalse: ff,  append: as @ bs,  bag-append: as + bs,  band: p  q,  exposed-bfalse: exposed-bfalse,  assert: b,  cand: A c B,  or: P  Q,  guard: {T},  uimplies: b supposing a,  so_apply: x[s1;s2],  so_apply: x[s],  unit: Unit,  bool: ,  uiff: uiff(P;Q),  false: False,  sq_type: SQType(T),  bag: bag(T),  nat: ,  it: ,  bag-null: bag-null(bs)
Lemmas :  subtype_rel_bag,  rec-dataflow-equal,  bag_wf,  unit_wf2,  df-program-statetype_wf,  dataflow_wf,  bind-df-next1_wf,  empty-bag_wf,  rec-dataflow_wf,  all_wf,  subtype_rel_wf,  df-program-type_wf,  dataflow-program_wf,  dataflow-ap_wf,  let_wf,  bag-map_wf,  pi1_wf_top,  bag-combine_wf,  pi2_wf,  bag-append_wf,  df-program-meaning_wf,  dataflow_subtype,  subtype_rel_self,  df-program-halt-meaning_wf,  df-program-in-state_wf,  null-dataflow_wf,  valueall-type_wf,  equal_wf,  and_wf,  it_wf,  top_wf,  bag-combine-map,  bag-combine-append-left,  true_wf,  squash_wf,  df-program-in-state-ap-property,  bag-map-append,  df-program-state_wf,  df-program-in-state-ap_wf,  bag-union_wf,  bag-map-map,  df-program-halt-meaning-null,  equal-empty-bag,  bag-append-empty,  bag-combine-empty-left,  map_append_sq,  bag-subtype-list,  bind-nextouts1_wf,  null_wf3,  bool_wf,  eqtt_to_assert,  uiff_transitivity,  assert_wf,  bnot_wf,  not_wf,  eqff_to_assert,  assert_of_bnot,  bfalse_wf,  false_wf,  bor_wf,  btrue_wf,  or_wf,  outl_wf,  isl_wf,  bool_cases,  subtype_base_sq,  bool_subtype_base,  assert_of_band,  iff_transitivity,  iff_weakening_uiff,  assert_functionality_wrt_uiff,  bnot_thru_band,  assert_of_bor,  or_functionality_wrt_uiff2,  equals-null-dataflow,  and_functionality_wrt_uiff3,  or_functionality_wrt_uiff,  not_functionality_wrt_uiff,  permutation_wf,  band_wf,  and_functionality_wrt_uiff,  assert_of_null,  bag-null_wf,  and_functionality_wrt_uiff2,  assert-bag-null,  bag-size_wf,  nat_wf,  bag-size-map,  bag-size-append,  bag-size-zero

\mforall{}[M,A,B:Type].  \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(bind-df-program1(A;B;dfpX;dfpY))
          =  bind-dataflow(df-program-meaning(dfpX);a.df-program-meaning(dfpY  a))))


Date html generated: 2012_01_23-PM-12_02_32
Last ObjectModification: 2011_12_31-PM-10_03_51

Home Index