{ [A:']. [dfp1,dfp2:DataflowProgram(A)]. [B:Type].
    [G:bag(df-program-type(dfp1))
         bag(df-program-type(dfp2))
         bag(B)
         bag(B)]. [P:bag(B)  ]. [buf:bag(B)].
      (feedback-df-prog2(B;G;P;buf;dfp1;dfp2)  DataflowProgram(A)) 
    supposing valueall-type(B) }

{ Proof }



Definitions occuring in Statement :  feedback-df-prog2: feedback-df-prog2(B;G;P;buf;dfp1;dfp2) df-program-type: df-program-type(dfp) dataflow-program: DataflowProgram(A) bool: uimplies: b supposing a uall: [x:A]. B[x] member: t  T function: x:A  B[x] universe: Type bag: bag(T) valueall-type: valueall-type(T)
Definitions :  implies: P  Q axiom: Ax feedback-df-prog2: feedback-df-prog2(B;G;P;buf;dfp1;dfp2) bool: df-program-type: df-program-type(dfp) bag: bag(T) all: x:A. B[x] function: x:A  B[x] isect: x:A. B[x] uall: [x:A]. B[x] uimplies: b supposing a valueall-type: valueall-type(T) equal: s = t dataflow-program: DataflowProgram(A) universe: Type member: t  T subtype: S  T void: Void eq_knd: a = b fpf-dom: x  dom(f) false: False limited-type: LimitedType bfalse: ff btrue: tt 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 infix_ap: x f y dcdr-to-bool: [d] bl-all: (xL.P[x])_b bl-exists: (xL.P[x])_b b-exists: (i<n.P[i])_b eq_type: eq_type(T;T') eq_atom: eq_atom$n(x;y) qeq: qeq(r;s) 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 bor: p q sq_type: SQType(T) natural_number: $n atom: Atom$n int: atom: Atom rec: rec(x.A[x]) tunion: x:A.B[x] b-union: A  B list: type List or: P  Q guard: {T} l_member: (x  l) true: True prop: so_lambda: x.t[x] 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) assert: b 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 squash: T sq_stable: SqStable(P) fpf: a:A fp-B[a] quotient: x,y:A//B[x; y] strong-subtype: strong-subtype(A;B) le: A  B ge: i  j  not: A less_than: a < b and: P  Q uiff: uiff(P;Q) subtype_rel: A r B so_apply: x[s] it: inr: inr x  isl: isl(x) bnot: b band: p  q ifthenelse: if b then t else f fi  let: let empty-bag: {} apply: f a decide: case b of inl(x) =s[x] | inr(y) =t[y] spread: spread def spreadn: spread3 evalall: evalall(t) lambda: x.A[x] inl: inl x  unit: Unit union: left + right pair: <a, b> set: {x:A| B[x]}  product: x:A  B[x]
Lemmas :  unit_wf member_wf evalall_wf subtype_rel_wf sq_stable__all squash_wf sq_stable__equal sq_stable__valueall-type product-valueall-type union-valueall-type equal-valueall-type bag-valueall-type empty-bag_wf eqtt_to_assert assert_wf not_wf uiff_transitivity eqff_to_assert assert_of_bnot bnot_wf isl_wf ifthenelse_wf bfalse_wf it_wf dataflow-program_wf valueall-type_wf df-program-type_wf bool_wf bag_wf

\mforall{}[A:\mBbbU{}'].  \mforall{}[dfp1,dfp2:DataflowProgram(A)].  \mforall{}[B:Type].
    \mforall{}[G:bag(df-program-type(dfp1))  {}\mrightarrow{}  bag(df-program-type(dfp2))  {}\mrightarrow{}  bag(B)  {}\mrightarrow{}  bag(B)].
    \mforall{}[P:bag(B)  {}\mrightarrow{}  \mBbbB{}].  \mforall{}[buf:bag(B)].
        (feedback-df-prog2(B;G;P;buf;dfp1;dfp2)  \mmember{}  DataflowProgram(A)) 
    supposing  valueall-type(B)


Date html generated: 2011_08_16-AM-09_43_41
Last ObjectModification: 2011_06_18-AM-08_34_41

Home Index