{ [A,B,C,S:Type]. [F:S  A  (S  C)]. [G:C  B  B]. [P:B  ].
  [s:S]. [s2:B].
    (better-feedback-dataflow(1;k.[rec-dataflow(s;s,a.F[s;a])][k];
     g,x.G[g 0;x];s2;s.P[s])
    = rec-dataflow(<s, s2>;s,a.let s1,s2 = s 
                               in let s',out = F[s1;a] 
                                  in <<s'
                                      , if P[G[out;s2]]
                                        then G[out;s2]
                                        else s2
                                        fi 
                                      >
                                     , G[out;s2]
                                     >)) }

{ Proof }



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: uall: [x:A]. B[x] 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 :  suptype: suptype(S; T) sqequal: s ~ t true: True data-stream: data-stream(P;L) fpf-cap: f(x)?z sq_stable: SqStable(P) proper-iseg: L1 < L2 iseg: l1  l2 gt: i > j map: map(f;as) label: ...$L... t top: Top grp_car: |g| filter: filter(P;l) intensional-universe: IType corec: corec(T.F[T]) tl: tl(l) hd: hd(l) length: ||as|| so_lambda: x y.t[x; y] let: let sq_type: SQType(T) list: type List nat_plus: l_contains: A  B cmp-le: cmp-le(cmp;x;y) inject: Inj(A;B;f) reducible: reducible(a) prime: prime(a) squash: T l_exists: (xL. P[x]) l_all: (xL.P[x]) infix_ap: x f y fun-connected: y is f*(x) limited-type: LimitedType qle: r  s qless: r < s q-rel: q-rel(r;x) sq_exists: x:{A| B[x]} exists: x:A. B[x] atom: Atom$n i-finite: i-finite(I) i-closed: i-closed(I) dstype: dstype(TypeNames; d; a) fset-member: a  s f-subset: xs  ys fset: FSet{T} fset-closed: (s closed under fs) Id: Id IdLnk: IdLnk Knd: Knd MaName: MaName l_disjoint: l_disjoint(T;l1;l2) decidable: Dec(P) union: left + right or: P  Q guard: {T} l_member: (x  l) assert: b lelt: i  j < k int_seg: {i..j} p-outcome: Outcome prop: void: Void implies: P  Q false: False set: {x:A| B[x]}  real: rationals: subtype: S  T nat: int: so_lambda: x.t[x] fpf: a:A fp-B[a] strong-subtype: strong-subtype(A;B) le: A  B ge: i  j  not: A less_than: a < b uimplies: b supposing a and: P  Q uiff: uiff(P;Q) subtype_rel: A r B all: x:A. B[x] axiom: Ax ifthenelse: if b then t else f fi  spread: spread def pair: <a, b> so_apply: x[s] nil: [] apply: f a so_apply: x[s1;s2] rec-dataflow: rec-dataflow(s0;s,m.next[s; m]) cons: [car / cdr] select: l[i] natural_number: $n better-feedback-dataflow: better-feedback-dataflow(n;ds;F;s;x.P[x]) dataflow: dataflow(A;B) bool: equal: s = t universe: Type product: x:A  B[x] uall: [x:A]. B[x] isect: x:A. B[x] member: t  T function: x:A  B[x] Auto: Error :Auto,  CollapseTHEN: Error :CollapseTHEN,  CollapseTHENA: Error :CollapseTHENA,  lambda: x.A[x] Try: Error :Try
Lemmas :  member_wf dataflow_wf select_wf int_seg_properties le_wf false_wf not_wf int_subtype_base subtype_base_sq int_seg_wf decidable__equal_int nat_wf better-feedback-dataflow_wf dataflow-extensionality bool_wf rec-dataflow_wf intensional-universe_wf subtype_rel_wf length_wf_nat length_nil top_wf ge_wf subtype_rel_self ifthenelse_wf true_wf squash_wf data-stream_wf feedback-1-rec-dataflow

\mforall{}[A,B,C,S:Type].  \mforall{}[F:S  {}\mrightarrow{}  A  {}\mrightarrow{}  (S  \mtimes{}  C)].  \mforall{}[G:C  {}\mrightarrow{}  B  {}\mrightarrow{}  B].  \mforall{}[P:B  {}\mrightarrow{}  \mBbbB{}].  \mforall{}[s:S].  \mforall{}[s2:B].
    (better-feedback-dataflow(1;\mlambda{}k.[rec-dataflow(s;s,a.F[s;a])][k];\mlambda{}g,x.G[g  0;x];s2;s.P[s])
    =  rec-dataflow(<s,  s2>s,a.let  s1,s2  =  s 
                                                          in  let  s',out  =  F[s1;a] 
                                                                in  <<s',  if  P[G[out;s2]]  then  G[out;s2]  else  s2  fi  >,  G[out;s2]>))


Date html generated: 2011_08_10-AM-08_20_41
Last ObjectModification: 2011_06_18-AM-08_32_06

Home Index