{ [A,B,C:Type]. [P:dataflow(A;B)]. [f:B  C]. [ms:A List].
    (data-stream(map-dataflow(P;b.f[b]);ms) ~ map(b.f[b];data-stream(P;ms))) }

{ Proof }



Definitions occuring in Statement :  map-dataflow: map-dataflow(P;b.f[b]) data-stream: data-stream(P;L) dataflow: dataflow(A;B) map: map(f;as) uall: [x:A]. B[x] so_apply: x[s] lambda: x.A[x] function: x:A  B[x] list: type List universe: Type sqequal: s ~ t
Definitions :  less_than: a < b natural_number: $n length: ||as|| lambda: x.A[x] subtract: n - m add: n + m minus: -n not: A false: False ge: i  j  isect: x:A. B[x] uall: [x:A]. B[x] universe: Type dataflow: dataflow(A;B) function: x:A  B[x] list: type List prop: sqequal: s ~ t so_lambda: x.t[x] member: t  T equal: s = t all: x:A. B[x] implies: P  Q guard: {T} le: A  B nat: int: subtype: S  T grp_car: |g| real: set: {x:A| B[x]}  uimplies: b supposing a top: Top void: Void decidable: Dec(P) l_disjoint: l_disjoint(T;l1;l2) fset-closed: (s closed under fs) f-subset: xs  ys fset-member: a  s p-outcome: Outcome i-closed: i-closed(I) i-finite: i-finite(I) exists: x:A. B[x] product: x:A  B[x] q-rel: q-rel(r;x) qless: r < s qle: r  s fun-connected: y is f*(x) infix_ap: x f y apply: f a l_all: (xL.P[x]) l_exists: (xL. P[x]) squash: T prime: prime(a) reducible: reducible(a) inject: Inj(A;B;f) l_contains: A  B l_member: (x  l) cand: A c B grp_lt: a < b set_lt: a <p b set_leq: a  b assoced: a ~ b divides: b | a assert: b or: P  Q union: left + right append: as @ bs firstn: firstn(n;as) cons: [car / cdr] last: last(L) nil: [] data-stream: data-stream(P;L) iterate-dataflow: P*(inputs) so_apply: x[s] map: map(f;as) map-dataflow: map-dataflow(P;b.f[b]) corec: corec(T.F[T]) primrec: primrec(n;b;c) subtype_rel: A r B sq_type: SQType(T) uiff: uiff(P;Q) and: P  Q hd: hd(l) tl: tl(l) strong-subtype: strong-subtype(A;B) qabs: |r| filter: filter(P;l) pi2: snd(t) dataflow-ap: df(a) pi1: fst(t) fpf: a:A fp-B[a] fpf-cap: f(x)?z pair: <a, b> fpf-dom: x  dom(f) ma-state: State(ds) deq: EqDecider(T) fpf-sub: f  g true: True data_stream_nil: data_stream_nil{data_stream_nil_compseq_tag_def:o}(P) int_iseg: {i...j} rationals: select: l[i] upto: upto(n) int_seg: {i..j} base: Base lelt: i  j < k iff: P  Q rev_implies: P  Q tactic: Error :tactic,  RepeatFor: Error :RepeatFor,  CollapseTHEN: Error :CollapseTHEN,  Try: Error :Try,  CollapseTHENA: Error :CollapseTHENA,  Auto: Error :Auto,  RepUR: Error :RepUR,  D: Error :D
Lemmas :  length_cons pos_length2 assert_wf iterate-map-dataflow rev_implies_wf iff_wf int_subtype_base set_subtype_base map_wf int_seg_wf upto_wf select_wf pi2_wf false_wf not_wf length_firstn non_neg_length map_append_sq data-stream-cons subtype_rel_list subtype_rel_wf last_wf dataflow-ap_wf pi1_wf list_subtype_base subtype_base_sq append_wf data-stream_wf iterate-dataflow_wf map-dataflow_wf firstn_wf data-stream-append firstn_all firstn_decomp length_wf1 decidable__lt top_wf member_wf length_wf_nat guard_wf le_wf comp_nat_ind_tp nat_wf uall_wf dataflow_wf nat_ind_tp nat_properties ge_wf

\mforall{}[A,B,C:Type].  \mforall{}[P:dataflow(A;B)].  \mforall{}[f:B  {}\mrightarrow{}  C].  \mforall{}[ms:A  List].
    (data-stream(map-dataflow(P;b.f[b]);ms)  \msim{}  map(\mlambda{}b.f[b];data-stream(P;ms)))


Date html generated: 2011_08_10-AM-08_17_27
Last ObjectModification: 2010_12_31-PM-12_51_55

Home Index