{ [A:Type]. [dfp:DataflowProgram(A)]. [s:df-program-statetype(dfp)]. [m:A].
    (df-program-meaning(df-program-in-state(dfp;s))(m) 
    ~ let s',x = df-program-in-state-ap(dfp;s;m) 
      in <case s'
          of inl(s2) =>
           df-program-meaning(df-program-in-state(dfp;s2))
           | inr(z) =>
           df-program-halt-meaning(dfp)
         , x
         >) }

{ Proof }



Definitions occuring in Statement :  df-program-in-state-ap: df-program-in-state-ap(dfp;s;m) df-program-in-state: df-program-in-state(dfp;s) df-program-halt-meaning: df-program-halt-meaning(dfp) df-program-meaning: df-program-meaning(dfp) df-program-statetype: df-program-statetype(dfp) dataflow-program: DataflowProgram(A) dataflow-ap: df(a) uall: [x:A]. B[x] spread: spread def pair: <a, b> decide: case b of inl(x) =s[x] | inr(y) =t[y] universe: Type sqequal: s ~ t
Definitions :  implies: P  Q unit: Unit union: left + right apply: f a df-program-halt-meaning: df-program-halt-meaning(dfp) rec_dataflow_ap: rec_dataflow_ap_compseq_tag_def pi2: snd(t) df-program-in-state-ap: df-program-in-state-ap(dfp;s;m) set: {x:A| B[x]}  equal: s = t spread: spread def pi1: fst(t) 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) quotient: x,y:A//B[x; y] exists: x:A. B[x] nat: top: Top lambda: x.A[x] primrec: primrec(n;b;c) corec: corec(T.F[T]) so_lambda: x.t[x] sq_type: SQType(T) uimplies: b supposing a dataflow: dataflow(A;B) product: x:A  B[x] df-program-type: df-program-type(dfp) bag: bag(T) df-program-in-state: df-program-in-state(dfp;s) df-program-meaning: df-program-meaning(dfp) dataflow-ap: df(a) subtype_rel: A r B function: x:A  B[x] all: x:A. B[x] universe: Type dataflow-program: DataflowProgram(A) sqequal: s ~ t df-program-statetype: df-program-statetype(dfp) uall: [x:A]. B[x] isect: x:A. B[x] member: t  T int:
Lemmas :  df-program-meaning_wf dataflow-ap_wf subtype_base_sq product_subtype_base dataflow_wf df-program-in-state_wf df-program-type_wf top_wf primrec_wf nat_wf isect_subtype_base df-program-statetype_wf dataflow-program_wf unit_wf bag_wf

\mforall{}[A:Type].  \mforall{}[dfp:DataflowProgram(A)].  \mforall{}[s:df-program-statetype(dfp)].  \mforall{}[m:A].
    (df-program-meaning(df-program-in-state(dfp;s))(m)  \msim{}  let  s',x  =  df-program-in-state-ap(dfp;s;m) 
                                                                                                              in  <case  s'
                                                                                                                      of  inl(s2)  =>
                                                                                                                        df-program-meaning(
                                                                                                                        df-program-in-state(dfp;s2))
                                                                                                                        |  inr(z)  =>
                                                                                                                        df-program-halt-meaning(dfp)
                                                                                                                    ,  x
                                                                                                                    >)


Date html generated: 2011_08_16-AM-09_36_06
Last ObjectModification: 2011_06_02-PM-03_29_40

Home Index