{ [Info,A:Type]. [a:A]. [X:EClass(A)]. [S:Type]. [init:S].
  [f:S  A  S]. [test:S  A  ]. [nxt:S  A  S]. [B:Type].
  [g:S  A  (B + Top)].
    (g[Threshold(init;f;test;nxt;X)]
    = p.(snd(p))[es-interface-accum(p,x.
                                      let s',v = p 
                                      in if test s' x
                                         then <nxt <s', x>, g <s', x>>
                                         else <f s' x, ff>
                                         fi ;<init
                                     , if test init a
                                       then g <init, a>
                                       else ff
                                       fi 
                                     >;X)]) }

{ Proof }



Definitions occuring in Statement :  es-threshold: Threshold(init;f;test;nxt;X),  es-interface-accum: es-interface-accum(f;x;X),  es-filter-image: f[X],  eclass: EClass(A[eo; e]),  ifthenelse: if b then t else f fi ,  bfalse: ff,  bool: ,  uall: [x:A]. B[x],  top: Top,  pi2: snd(t),  apply: f a,  lambda: x.A[x],  function: x:A  B[x],  spread: spread def,  pair: <a, b>,  product: x:A  B[x],  union: left + right,  universe: Type,  equal: s = t
Definitions :  uall: [x:A]. B[x],  eclass: EClass(A[eo; e]),  top: Top,  es-filter-image: f[X],  pi2: snd(t),  es-interface-accum: es-interface-accum(f;x;X),  ifthenelse: if b then t else f fi ,  bfalse: ff,  spreadn: spread3,  member: t  T,  all: x:A. B[x],  implies: P  Q,  btrue: tt,  prop: ,  and: P  Q,  pi1: fst(t),  so_lambda: x.t[x],  p-compose: f o g,  can-apply: can-apply(f;x),  do-apply: do-apply(f;x),  isl: isl(x),  outl: outl(x),  subtype: S  T,  suptype: suptype(S; T),  so_lambda: x y.t[x; y],  list_accum: list_accum(x,a.f[x; a];y;l),  ycomb: Y,  bool: ,  unit: Unit,  iff: P  Q,  so_apply: x[s],  es-E-interface: E(X),  so_apply: x[s1;s2],  it:
Lemmas :  es-threshold-as-accum,  bool_wf,  iff_weakening_uiff,  assert_wf,  eqtt_to_assert,  not_wf,  uiff_transitivity,  bnot_wf,  eqff_to_assert,  assert_of_bnot,  top_wf,  es-filter-image_wf,  es-interface-accum_wf,  ifthenelse_wf,  pi2_wf,  in-eclass_wf,  event-ordering+_wf,  es-E_wf,  event-ordering+_inc,  es-interface-predecessors_wf,  es-E-interface_wf,  Id_wf,  es-loc_wf,  eclass_wf,  es-interface-val_wf2,  pi1_wf_top

\mforall{}[Info,A:Type].  \mforall{}[a:A].  \mforall{}[X:EClass(A)].  \mforall{}[S:Type].  \mforall{}[init:S].  \mforall{}[f:S  {}\mrightarrow{}  A  {}\mrightarrow{}  S].  \mforall{}[test:S  {}\mrightarrow{}  A  {}\mrightarrow{}  \mBbbB{}].
\mforall{}[nxt:S  \mtimes{}  A  {}\mrightarrow{}  S].  \mforall{}[B:Type].  \mforall{}[g:S  \mtimes{}  A  {}\mrightarrow{}  (B  +  Top)].
    (g[Threshold(init;f;test;nxt;X)]
    =  \mlambda{}p.(snd(p))[es-interface-accum(\mlambda{}p,x.
                                                                        let  s',v  =  p 
                                                                        in  if  test  s'  x
                                                                              then  <nxt  <s',  x>,  g  <s',  x>>
                                                                              else  <f  s'  x,  ff>
                                                                              fi  ;<init,  if  test  init  a  then  g  <init,  a>  else  ff  fi  >X)])


Date html generated: 2011_08_16-PM-06_08_33
Last ObjectModification: 2010_11_10-AM-05_41_52

Home Index