{ [Info,A:Type]. [a:A]. [X:EClass(A)]. [S:Type]. [init:S].
  [f:S  A  S]. [test:S  A  ]. [nxt:S  A  S].
    (Threshold(init;f;test;nxt;X)
    = tr.let s',s,v = tr in 
          if test s v then {<s, v>} else {} fi [
      es-interface-accum(tr,x.
                          let s',s,v = tr in 
                          <if test s' x then nxt <s', xelse f s' x fi 
                          , s'
                          , x>;<init, init, a>;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  bool: spreadn: spread3 uall: [x:A]. B[x] apply: f a lambda: x.A[x] function: x:A  B[x] pair: <a, b> product: x:A  B[x] universe: Type equal: s = t single-bag: {x} empty-bag: {}
Definitions :  ycomb: Y prop: btrue: tt reduce: reduce(f;k;as) filter: filter(P;l) so_lambda: x y.t[x; y] subtype: S  T member: t  T es-le-before: loc(e) eclass-events: eclass-events(es;X;L) bfalse: ff top: Top es-interface-predecessors: (X)(e) ifthenelse: if b then t else f fi  list_accum: list_accum(x,a.f[x; a];y;l) implies: P  Q all: x:A. B[x] true: True spreadn: spread3 assert: b so_lambda: x.t[x] and: P  Q pi2: snd(t) pi1: fst(t) let: let outl: outl(x) do-apply: do-apply(f;x) isl: isl(x) can-apply: can-apply(f;x) eclass-val: X(e) in-eclass: e  X eclass: EClass(A[eo; e]) es-E-interface: E(X) cand: A c B es-prior-interface-vals: X(<e) squash: T hd: hd(l) le: A  B label: ...$L... t ge: i  j  length: ||as|| false: False exists: x:A. B[x] not: A rev_implies: P  Q map: map(f;as) mapfilter: mapfilter(f;P;L) iff: P  Q or: P  Q guard: {T} unit: Unit so_apply: x[s1;s2] uall: [x:A]. B[x] bool: sq_type: SQType(T) uimplies: b supposing a so_apply: x[s] es-before: before(e) uiff: uiff(P;Q) decidable: Dec(P) it:
Lemmas :  assert_of_bnot eqff_to_assert bnot_wf uiff_transitivity not_wf eqtt_to_assert assert_wf iff_weakening_uiff bool_wf in-eclass_wf es-E-interface_wf top_wf eclass-events_wf list_accum_append es-E_wf event-ordering+_inc es-before_wf es-interface-top es-interface-events-append assert_elim bool_subtype_base subtype_base_sq event-ordering+_wf eclass-val_wf ifthenelse_wf list_accum_wf pi2_wf pi1_wf_top not_assert_elim btrue_neq_bfalse assert_functionality_wrt_uiff es-interface-val_wf2 es-prior-interval-vals_wf false_wf true_wf eclass-val_wf2 es-prior-interface_wf member-es-before l_member_wf ge_wf squash_wf hd_wf append-impossible2 bool_cases es-loc_wf Id_wf es-before_wf2 non_neg_length length_cons length_wf_nat length_nil length_wf1 es-pred_wf general-append-cancellation nil_iseg es-first_wf mapfilter_wf es-locl_wf filter_type last_induction append_wf nil_member implies_functionality_wrt_iff all_functionality_wrt_iff member_append mapfilter-append filter_wf_top filter_append_sq map_wf is-prior-interface cons_member decidable__es-E-equal decidable__l_member append-nil not_functionality_wrt_iff decidable__assert es-interface-subtype_rel2 eclass_wf es-prior-interface-vals_wf equal-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].
    (Threshold(init;f;test;nxt;X)
    =  \mlambda{}tr.let  s',s,v  =  tr  in 
                if  test  s  v  then  \{<s,  v>\}  else  \{\}  fi  [es-interface-accum(\mlambda{}tr,x.
                                                                                                                                    let  s',s,v  =  tr  in 
                                                                                                                                    <if  test  s'  x
                                                                                                                                    then  nxt  <s',  x>
                                                                                                                                    else  f  s'  x
                                                                                                                                    fi 
                                                                                                                                    ,  s'
                                                                                                                                    ,  x><init,  init,  a>X)])


Date html generated: 2011_08_16-PM-06_04_57
Last ObjectModification: 2011_01_30-PM-03_52_24

Home Index