{ [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