Nuprl Lemma : feedback-dataflow-recode

[A,C:Type]. [n:]. [B:n + 2  Type]. [ds:k:n + 2  dataflow(A;bag(B[k]))]. [F:k:n + 2  bag(B[k])  C  C].
[buf:C]. [P:C  ].
  (feedback-dataflow(ds;
                     F;buf;x.P[x])
  = feedback-dataflow(k.if (k = 0) then better-parallel-dataflow(2;ds;s.bag-merge(s 0;s 1)) else ds (k + 1) fi ;
                      g.(F 
                          (k.if (k = 0) then fst(bag-separate(g 0))
                              if (k = 1) then snd(bag-separate(g 0))
                              else g (k - 1)
                              fi ));buf;x.P[x]))


Proof not projected




Definitions occuring in Statement :  feedback-dataflow: feedback-dataflow better-parallel-dataflow: better-parallel-dataflow dataflow: dataflow(A;B) eq_int: (i = j) ifthenelse: if b then t else f fi  bool: int_seg: {i..j} nat: uall: [x:A]. B[x] so_apply: x[s] pi1: fst(t) pi2: snd(t) apply: f a lambda: x.A[x] function: x:A  B[x] subtract: n - m add: n + m natural_number: $n universe: Type equal: s = t bag-separate: bag-separate(bs) bag-merge: bag-merge(as;bs) bag: bag(T)
Definitions :  uall: [x:A]. B[x] nat: int_seg: {i..j} bag: bag(T) so_apply: x[s] ifthenelse: if b then t else f fi  eq_int: (i = j) pi2: snd(t) member: t  T le: A  B not: A implies: P  Q false: False so_lambda: x.t[x] squash: T true: True lelt: i  j < k and: P  Q all: x:A. B[x] btrue: tt subtype: S  T suptype: suptype(S; T) bfalse: ff guard: {T} top: Top let: let so_lambda: x y.t[x; y] parallel-dataflow: parallel-dataflow pi1: fst(t) bool: prop: unit: Unit uimplies: b supposing a uiff: uiff(P;Q) so_apply: x[s1;s2] sq_type: SQType(T) or: P  Q it:
Lemmas :  feedback-dataflow-equal le_wf bag_wf equal_wf squash_wf true_wf dataflow_wf ifthenelse_wf eq_int_wf lelt_wf int_seg_wf bool_wf uiff_transitivity assert_wf eqtt_to_assert assert_of_eq_int better-parallel-dataflow_wf bag-merge_wf bnot_wf not_wf eqff_to_assert assert_of_bnot not_functionality_wrt_uiff subtype_rel_self pi1_wf_top bag-separate_wf subtype_rel_simple_product top_wf permutation_wf nat_wf eq_int_eq_true and_wf dataflow-extensionality parallel-dataflow_wf rec-dataflow_wf dataflow-ap_wf subtype_base_sq int_subtype_base pi2_wf data-stream-cons dataflow-out_wf bool_cases bool_subtype_base parallel-bag-dataflow-recode let_wf

\mforall{}[A,C:Type].  \mforall{}[n:\mBbbN{}].  \mforall{}[B:\mBbbN{}n  +  2  {}\mrightarrow{}  Type].  \mforall{}[ds:k:\mBbbN{}n  +  2  {}\mrightarrow{}  dataflow(A;bag(B[k]))].
\mforall{}[F:k:\mBbbN{}n  +  2  {}\mrightarrow{}  bag(B[k])  {}\mrightarrow{}  C  {}\mrightarrow{}  C].  \mforall{}[buf:C].  \mforall{}[P:C  {}\mrightarrow{}  \mBbbB{}].
    (feedback-dataflow(ds;
                                          F;buf;x.P[x])
    =  feedback-dataflow(\mlambda{}k.if  (k  =\msubz{}  0)
                                                  then  better-parallel-dataflow(
                                                            2;ds;
                                                            \mlambda{}s.bag-merge(s  0;s  1))
                                                  else  ds  (k  +  1)
                                                  fi  ;
                                            \mlambda{}g.(F 
                                                    (\mlambda{}k.if  (k  =\msubz{}  0)  then  fst(bag-separate(g  0))
                                                            if  (k  =\msubz{}  1)  then  snd(bag-separate(g  0))
                                                            else  g  (k  -  1)
                                                            fi  ));buf;x.P[x]))


Date html generated: 2012_01_23-AM-11_58_13
Last ObjectModification: 2011_12_28-PM-03_08_17

Home Index