{ [A,B,S1,S2:Type]. [next1:S1  A  (S1  B)]. [next2:S2  A  (S2  B)].
  [s1:S1]. [s2:S2]. [R:S1  S2  ].
    (rec-dataflow(s1;s,a.next1[s;a])
       = rec-dataflow(s2;s,a.next2[s;a])) supposing 
       (R[s1;s2] and 
       (s1:S1. s2:S2.
          (R[s1;s2]  (a:A. R[fst(next1[s1;a]);fst(next2[s2;a])]))) and 
       (s1:S1. s2:S2.
          (R[s1;s2]  (a:A. ((snd(next1[s1;a])) = (snd(next2[s2;a]))))))) }

{ Proof }



Definitions occuring in Statement :  rec-dataflow: rec-dataflow(s0;s,m.next[s; m]) dataflow: dataflow(A;B) uimplies: b supposing a uall: [x:A]. B[x] prop: so_apply: x[s1;s2] pi1: fst(t) pi2: snd(t) all: x:A. B[x] implies: P  Q function: x:A  B[x] product: x:A  B[x] universe: Type equal: s = t
Definitions :  iterate-dataflow: P*(inputs) dataflow-ap: df(a) list: type List let: let lambda: x.A[x] so_lambda: x.t[x] pi2: snd(t) limited-type: LimitedType void: Void subtype: S  T top: Top pi1: fst(t) so_lambda: x y.t[x; y] pair: <a, b> fpf: a:A fp-B[a] 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 axiom: Ax rec-dataflow: rec-dataflow(s0;s,m.next[s; m]) dataflow: dataflow(A;B) apply: f a so_apply: x[s1;s2] implies: P  Q all: x:A. B[x] prop: uimplies: b supposing a equal: s = t universe: Type product: x:A  B[x] function: x:A  B[x] member: t  T isect: x:A. B[x] uall: [x:A]. B[x] Auto: Error :Auto,  CollapseTHEN: Error :CollapseTHEN,  exists: x:A. B[x] tl: tl(l) hd: hd(l) nil: [] cons: [car / cdr] append: as @ bs iter_df_nil: iter_df_nil{iter_df_nil_compseq_tag_def:o}(P) guard: {T} Complete: Error :Complete,  Try: Error :Try,  ExRepD: Error :ExRepD,  spread: spread def nat: primrec: primrec(n;b;c) corec: corec(T.F[T]) sq_type: SQType(T) iter_df_cons: iter_df_cons{iter_df_cons_compseq_tag_def:o}(as; a; P) sqequal: s ~ t D: Error :D,  RepUR: Error :RepUR,  HypSubst: Error :HypSubst,  CollapseTHENA: Error :CollapseTHENA,  it: rec_dataflow_ap: rec_dataflow_ap_compseq_tag_def THENM: Error :THENM,  RepeatFor: Error :RepeatFor,  AssertBY: Error :AssertBY,  tactic: Error :tactic
Lemmas :  isect_subtype_base nat_wf primrec_wf subtype_base_sq pi1_wf iterate-dataflow-append dataflow-ap_wf last_induction append_wf iterate-dataflow_wf dataflow_wf pi1_wf_top top_wf member_wf pi2_wf dataflow-equal rec-dataflow_wf

\mforall{}[A,B,S1,S2:Type].  \mforall{}[next1:S1  {}\mrightarrow{}  A  {}\mrightarrow{}  (S1  \mtimes{}  B)].  \mforall{}[next2:S2  {}\mrightarrow{}  A  {}\mrightarrow{}  (S2  \mtimes{}  B)].  \mforall{}[s1:S1].  \mforall{}[s2:S2].
\mforall{}[R:S1  {}\mrightarrow{}  S2  {}\mrightarrow{}  \mBbbP{}].
    (rec-dataflow(s1;s,a.next1[s;a])  =  rec-dataflow(s2;s,a.next2[s;a]))  supposing 
          (R[s1;s2]  and 
          (\mforall{}s1:S1.  \mforall{}s2:S2.    (R[s1;s2]  {}\mRightarrow{}  (\mforall{}a:A.  R[fst(next1[s1;a]);fst(next2[s2;a])])))  and 
          (\mforall{}s1:S1.  \mforall{}s2:S2.    (R[s1;s2]  {}\mRightarrow{}  (\mforall{}a:A.  ((snd(next1[s1;a]))  =  (snd(next2[s2;a])))))))


Date html generated: 2011_08_10-AM-08_19_44
Last ObjectModification: 2011_05_03-PM-02_23_18

Home Index