{ [A:{A:'| A} ]. [dfps:DataflowProgram(A) List]. [B:{B:Type| 
                                                         valueall-type(B)} ].
  [F:k:||dfps||  bag(df-program-type(dfps[k]))  bag(B)].
    better-parallel-dataflow(
    ||dfps||;k.map(dfp.df-program-meaning(dfp);dfps)[k];
    F)
    = df-program-meaning(parallel-df-program-case2(B;F;dfps)) 
    supposing f:k:||dfps||  bag(df-program-type(dfps[k]))
                ((k:||dfps||. ((f k) = {}))  ((F f) = {})) }

{ Proof }



Definitions occuring in Statement :  parallel-df-program-case2: parallel-df-program-case2(B;F;dfps) df-program-meaning: df-program-meaning(dfp) df-program-type: df-program-type(dfp) dataflow-program: DataflowProgram(A) better-parallel-dataflow: better-parallel-dataflow dataflow: dataflow(A;B) select: l[i] map: map(f;as) length: ||as|| int_seg: {i..j} uimplies: b supposing a uall: [x:A]. B[x] all: x:A. B[x] exists: x:A. B[x] squash: T implies: P  Q set: {x:A| B[x]}  apply: f a lambda: x.A[x] function: x:A  B[x] list: type List natural_number: $n universe: Type equal: s = t empty-bag: {} bag: bag(T) valueall-type: valueall-type(T)
Definitions :  true: True divides: b | a assoced: a ~ b set_leq: a  b set_lt: a <p b grp_lt: a < b cand: A c B l_contains: A  B cmp-le: cmp-le(cmp;x;y) reducible: reducible(a) prime: prime(a) l_exists: (xL. P[x]) infix_ap: x f y fun-connected: y is f*(x) qle: r  s qless: r < s q-rel: q-rel(r;x) sq_exists: x:{A| B[x]} i-finite: i-finite(I) i-closed: i-closed(I) p-outcome: Outcome fset-member: a  s f-subset: xs  ys fset-closed: (s closed under fs) l_disjoint: l_disjoint(T;l1;l2) decidable: Dec(P) uni_sat: a = !x:T. Q[x] inv_funs: InvFuns(A;B;f;g) inject: Inj(A;B;f) eqfun_p: IsEqFun(T;eq) refl: Refl(T;x,y.E[x; y]) urefl: UniformlyRefl(T;x,y.E[x; y]) sym: Sym(T;x,y.E[x; y]) usym: UniformlySym(T;x,y.E[x; y]) trans: Trans(T;x,y.E[x; y]) utrans: UniformlyTrans(T;x,y.E[x; y]) anti_sym: AntiSym(T;x,y.R[x; y]) uanti_sym: UniformlyAntiSym(T;x,y.R[x; y]) connex: Connex(T;x,y.R[x; y]) uconnex: uconnex(T; x,y.R[x; y]) coprime: CoPrime(a,b) ident: Ident(T;op;id) assoc: Assoc(T;op) comm: Comm(T;op) inverse: Inverse(T;op;id;inv) bilinear: BiLinear(T;pl;tm) bilinear_p: IsBilinear(A;B;C;+a;+b;+c;f) action_p: IsAction(A;x;e;S;f) dist_1op_2op_lr: Dist1op2opLR(A;1op;2op) fun_thru_1op: fun_thru_1op(A;B;opa;opb;f) fun_thru_2op: FunThru2op(A;B;opa;opb;f) cancel: Cancel(T;S;op) monot: monot(T;x,y.R[x; y];f) monoid_p: IsMonoid(T;op;id) group_p: IsGroup(T;op;id;inv) monoid_hom_p: IsMonHom{M1,M2}(f) grp_leq: a  b integ_dom_p: IsIntegDom(r) prime_ideal_p: IsPrimeIdeal(R;P) no_repeats: no_repeats(T;l) value-type: value-type(T) is_list_splitting: is_list_splitting(T;L;LL;L2;f) is_accum_splitting: is_accum_splitting(T;A;L;LL;L2;f;g;x) bag-member: bag-member(T;x;bs) req: x = y rnonneg: rnonneg(r) rleq: x  y i-member: r  I partitions: partitions(I;p) modulus-of-ccontinuity: modulus-of-ccontinuity(omega;I;f) fpf-sub: f  g sq_stable: SqStable(P) strict-bag-function: strict-bag-function(G;L;B;S) l_all: (xL.P[x]) decide: case b of inl(x) =s[x] | inr(y) =t[y] bnot: b isl: isl(x) bl-exists: (xL.P[x])_b filter: filter(P;l) list_ind: list_ind def permutation: permutation(T;L1;L2) select-tuple: x.n sqequal: s ~ t so_apply: x[s] or: P  Q guard: {T} l_member: (x  l) assert: b nil: [] label: ...$L... t grp_car: |g| corec: corec(T.F[T]) listp: A List combination: Combination(n;T) rev_implies: P  Q iff: P  Q atom: Atom rec: rec(x.A[x]) atom: Atom$n Id: Id qeq: qeq(r;s) bfalse: ff btrue: tt ifthenelse: if b then t else f fi  tunion: x:A.B[x] int_nzero: b-union: A  B upto: upto(n) quotient: x,y:A//B[x; y] has-valueall: has-valueall(a) callbyvalueall: callbyvalueall nat: has-value: has-value(a) callbyvalue: callbyvalue pair: <a, b> fpf: a:A fp-B[a] strong-subtype: strong-subtype(A;B) ge: i  j  uiff: uiff(P;Q) subtype_rel: A r B parallel-df-prog: parallel-df-prog tuple: tuple(n;i.F[i]) parallel-df-halt: parallel-df-halt(G;L;B;halt) bool: unit: Unit top: Top union: left + right tuple-type: tuple-type(L) and: P  Q lelt: i  j < k less_than: a < b void: Void false: False not: A le: A  B empty-bag: {} apply: f a limited-type: LimitedType real: rationals: subtype: S  T int: natural_number: $n axiom: Ax parallel-df-program-case2: parallel-df-program-case2(B;F;dfps) df-program-meaning: df-program-meaning(dfp) map: map(f;as) lambda: x.A[x] length: ||as|| better-parallel-dataflow: better-parallel-dataflow member: t  T prop: squash: T list: type List valueall-type: valueall-type(T) int_seg: {i..j} uall: [x:A]. B[x] so_lambda: x.t[x] uimplies: b supposing a isect: x:A. B[x] dataflow: dataflow(A;B) all: x:A. B[x] implies: P  Q function: x:A  B[x] exists: x:A. B[x] product: x:A  B[x] equal: s = t bag: bag(T) df-program-type: df-program-type(dfp) select: l[i] dataflow-program: DataflowProgram(A) set: {x:A| B[x]}  universe: Type fpf-cap: f(x)?z sq_type: SQType(T) intensional-universe: IType nat_plus: dstype: dstype(TypeNames; d; a) fset: FSet{T} IdLnk: IdLnk Knd: Knd MaName: MaName rev_uimplies: rev_uimplies(P;Q) tl: tl(l) hd: hd(l) eq_bool: p =b q lt_int: i <z j le_int: i z j eq_int: (i = j) eq_atom: x =a y null: null(as) set_blt: a < b grp_blt: a < b dcdr-to-bool: [d] bl-all: (xL.P[x])_b b-exists: (i<n.P[i])_b eq_type: eq_type(T;T') eq_atom: eq_atom$n(x;y) q_less: q_less(r;s) q_le: q_le(r;s) deq-member: deq-member(eq;x;L) deq-disjoint: deq-disjoint(eq;as;bs) deq-all-disjoint: deq-all-disjoint(eq;ass;bs) name_eq: name_eq(x;y) eq_id: a = b eq_lnk: a = b bimplies: p  q band: p  q bor: p q MaAuto: Error :MaAuto,  cons: [car / cdr] CollapseTHEN: Error :CollapseTHEN,  Auto: Error :Auto,  D: Error :D,  CollapseTHENA: Error :CollapseTHENA,  THENM: Error :THENM,  AssertBY: Error :AssertBY,  fpf-dom: x  dom(f) BHyp: Error :BHyp,  tactic: Error :tactic,  n-tuple: n-tuple(n)
Lemmas :  tuple_wf select-tuple-tuple cons_member nat_properties subtype_rel_bag sq_stable__all assert-bl-exists decidable__l_all-better-extract decidable__assert true_wf assert_of_bnot subtype_base_sq set_subtype_base int_subtype_base decidable__equal_int l_all_wf2 sq_stable__and decidable__lt sq_stable__equal intensional-universe_wf intensional-universe_wf2 select_wf dataflow-program_wf empty-bag_wf df-program-type_wf bag_wf length_wf1 int_seg_wf valueall-type_wf squash_wf uall_wf dataflow_wf parallel-df-prog-meaning real-has-value int_inc_real rational-has-value upto_wf rationals_wf member_wf int_nzero_wf b-union_wf bool_wf ifthenelse_wf tunion_wf subtype_rel_wf int-rational btrue_wf bfalse_wf Id-has-valueall Id_wf list-valueall-type le_wf set-valueall-type int-valueall-type iff_wf rev_implies_wf better-parallel-dataflow_wf length_wf_nat top_wf map_wf df-program-meaning_wf map_length non_neg_length nat_wf ge_wf not_wf false_wf int_seg_properties select-map tuple-type_wf select-tuple_wf permutation_wf length-map unit_wf bl-exists_wf l_member_wf bnot_wf isl_wf parallel-df-halt_wf assert_wf l_all_wf strict-bag-function_wf sq_stable_from_decidable

\mforall{}[A:\{A:\mBbbU{}'|  \mdownarrow{}A\}  ].  \mforall{}[dfps:DataflowProgram(A)  List].  \mforall{}[B:\{B:Type|  valueall-type(B)\}  ].
\mforall{}[F:k:\mBbbN{}||dfps||  {}\mrightarrow{}  bag(df-program-type(dfps[k]))  {}\mrightarrow{}  bag(B)].
    better-parallel-dataflow(
    ||dfps||;\mlambda{}k.map(\mlambda{}dfp.df-program-meaning(dfp);dfps)[k];
    F)
    =  df-program-meaning(parallel-df-program-case2(B;F;dfps)) 
    supposing  \mforall{}f:k:\mBbbN{}||dfps||  {}\mrightarrow{}  bag(df-program-type(dfps[k]))
                            ((\mexists{}k:\mBbbN{}||dfps||.  ((f  k)  =  \{\}))  {}\mRightarrow{}  ((F  f)  =  \{\}))


Date html generated: 2011_08_16-AM-09_39_55
Last ObjectModification: 2011_06_10-PM-03_49_34

Home Index