Nuprl Lemma : feedback-2-equiv

[A,B,C,D,S1,S2:Type]. [F1:S1  A  (S1  C)]. [F2:S2  A  (S2  D)]. [G:C  D  B  B]. [P:B  ].
[s1:S1]. [s2:S2]. [buf:B].
  (better-feedback-dataflow(2;k.[rec-dataflow(s1;s,a.F1[s;a]); rec-dataflow(s2;s,a.F2[s;a])][k];g,x.
                                                                                                  G[g 0;g 
                                                                                                        1;x];buf;s.P[s])
  = rec-dataflow(<s1, s2, buf>;s,a.let s1,s2,buf = s in 
    let s1',out1 = F1[s1;a] 
    in let s2',out2 = F2[s2;a] 
       in let x = G[out1;out2;buf] in
              <<s1', s2', if P[x] then x else buf fi >, x>))


Proof not projected




Definitions occuring in Statement :  better-feedback-dataflow: better-feedback-dataflow(n;ds;F;s;x.P[x]) rec-dataflow: rec-dataflow(s0;s,m.next[s; m]) dataflow: dataflow(A;B) select: l[i] ifthenelse: if b then t else f fi  bool: let: let spreadn: spread3 uall: [x:A]. B[x] so_apply: x[s1;s2;s3] so_apply: x[s1;s2] so_apply: x[s] apply: f a lambda: x.A[x] function: x:A  B[x] spread: spread def pair: <a, b> product: x:A  B[x] cons: [car / cdr] nil: [] natural_number: $n universe: Type equal: s = t
Definitions :  btrue: tt bfalse: ff lt_int: i <z j bnot: b le_int: i z j ycomb: Y label: ...$L... t ge: i  j  and: P  Q lelt: i  j < k length: ||as|| int_seg: {i..j} false: False implies: P  Q not: A le: A  B nat: suptype: suptype(S; T) subtype: S  T top: Top so_lambda: x.t[x] so_lambda: x y.t[x; y] all: x:A. B[x] member: t  T ifthenelse: if b then t else f fi  spreadn: spread3 so_apply: x[s] so_apply: x[s1;s2;s3] so_apply: x[s1;s2] select: l[i] uall: [x:A]. B[x] guard: {T} sq_type: SQType(T) or: P  Q decidable: Dec(P) prop: uimplies: b supposing a
Lemmas :  better-feedback-dataflow_wf lelt_wf dataflow_wf int_subtype_base subtype_base_sq decidable__equal_int int_seg_wf length_wf_nat non_neg_length length_cons length_wf_nil length_nil length_wf select_wf le_wf bool_wf data-stream_wf feedback-2-rec-dataflow ifthenelse_wf let_wf rec-dataflow_wf dataflow-extensionality

\mforall{}[A,B,C,D,S1,S2:Type].  \mforall{}[F1:S1  {}\mrightarrow{}  A  {}\mrightarrow{}  (S1  \mtimes{}  C)].  \mforall{}[F2:S2  {}\mrightarrow{}  A  {}\mrightarrow{}  (S2  \mtimes{}  D)].  \mforall{}[G:C  {}\mrightarrow{}  D  {}\mrightarrow{}  B  {}\mrightarrow{}  B].
\mforall{}[P:B  {}\mrightarrow{}  \mBbbB{}].  \mforall{}[s1:S1].  \mforall{}[s2:S2].  \mforall{}[buf:B].
    (better-feedback-dataflow(2;\mlambda{}k.[rec-dataflow(s1;s,a.F1[s;a]);  rec-dataflow(s2;s,a.F2[s;a])][k];
      \mlambda{}g,x.G[g  0;g  1;x];buf;s.P[s])
    =  rec-dataflow(<s1,  s2,  buf>s,a.let  s1,s2,buf  =  s  in 
        let  s1',out1  =  F1[s1;a] 
        in  let  s2',out2  =  F2[s2;a] 
              in  let  x  =  G[out1;out2;buf]  in
                            <<s1',  s2',  if  P[x]  then  x  else  buf  fi  >,  x>))


Date html generated: 2012_01_23-AM-11_57_28
Last ObjectModification: 2011_12_17-PM-04_36_19

Home Index