Thm* es:ES, e,e':E. e e'  loc(e) = loc(e') Id | [es-le-loc] |
Thm* es:ES, e:E, l:IdLnk, tg:Id.
Thm* kind(e) = rcv(l; tg)
Thm* 
Thm* loc(e) = destination(l) & loc(sender(e)) = source(l) | [es-loc-rcv] |
Thm* the_es:ES, e:E. first(e)  loc(pred(e)) = loc(e) Id | [es-loc-pred] |
Thm* the_es:ES.
Thm* (Trans e,e':E. (e <loc e'))
Thm* & SWellFounded((e <loc e'))
Thm* & ( e,e':E. loc(e) = loc(e') Id  (e <loc e') e = e' (e' <loc e))
Thm* & ( e:E. first(e)  ( e':E. (e' <loc e)))
Thm* & ( e:E.
Thm* & ( first(e)
Thm* & (
Thm* & ((pred(e) <loc e) & ( e':E. ((pred(e) <loc e') & (e' <loc e))))
Thm* & ( e:E.
Thm* & ( first(e)
Thm* & (
Thm* & (( x:Id. (x when e) = (x after pred(e)) vartype(loc(e);x)))
Thm* & (Trans e,e':E. (e < e'))
Thm* & SWellFounded((e < e'))
Thm* & ( e:E.
Thm* & (isrcv(e)
Thm* & (
Thm* & (sends(lnk(e);sender(e))[index(e)] = msg(lnk(e);tag(e);val(e)) Msg)
Thm* & ( e,e':E. (e <loc e')  (e < e'))
Thm* & ( e:E. isrcv(e)  (sender(e) < e))
Thm* & ( e,e':E.
Thm* & ((e < e')
Thm* & (
Thm* & ( first(e') & (e < pred(e')) e = pred(e') E
Thm* & ( isrcv(e') & (e < sender(e')) e = sender(e') E)
Thm* & ( e:E. isrcv(e)  loc(e) = destination(lnk(e)))
Thm* & ( e:E, l:IdLnk.
Thm* & ( loc(e) = source(l)  sends(l;e) = nil (Msg on l) List)
Thm* & ( e,e':E.
Thm* & (isrcv(e)
Thm* & (
Thm* & (isrcv(e')
Thm* & (
Thm* & (lnk(e) = lnk(e')
Thm* & (
Thm* & (((e <loc e')
Thm* & ((
Thm* & (((sender(e) <loc sender(e'))
Thm* & (( sender(e) = sender(e') E & index(e)<index(e')))
Thm* & ( e:E, l:IdLnk, n: ||sends(l;e)||.
Thm* & ( e':E. isrcv(e') & lnk(e') = l & sender(e') = e E & index(e') = n ) | [es-axioms] |
Thm* the_es:ES, e:E, x:Id. (x after e) vartype(loc(e);x) | [es-after_wf] |
Thm* the_es:ES, e:E, x:Id. (x when e) vartype(loc(e);x) | [es-when_wf] |
Thm* the_es:ES, i,x:Id. vartype(i;x) Type | [es-vartype_wf] |
Thm* the_es:ES, e:E. isrcv(e)  tag(e) Id | [es-tag_wf] |
Thm* the_es:ES, e:E. loc(e) Id | [es-loc_wf] |
Thm* E:Type, eq:EqDecider(E), T,V:(Id Id Type), M:(IdLnk Id Type),
Thm* loc:(E Id), k:(E Knd), v:(e:E eventtype(k;loc;V;M;e)),
Thm* w,a:(x:Id e:E T(loc(e),x)), snds:(l:IdLnk E (Msg_sub(l; M) List)),
Thm* sndr:({e:E| isrcv(k(e)) } E), i:(e:{e:E| isrcv(k(e)) }  ||snds
Thm* sndr:({e:E| isrcv(k(e)) } E), i:(e:{e:E| isrcv(k(e)) }  ||(lnk(k(e))
Thm* sndr:({e:E| isrcv(k(e)) } E), i:(e:{e:E| isrcv(k(e)) }  ||,sndr(e))||),
Thm* f:(E  ), prd:({e':E| f(e') } E), cl:(E E Prop), p:ESAxioms{i:l}
Thm* f:(E  ), prd:({e':E| f(e') } E), cl:(E E Prop), p:ESAxioms(E;
Thm* f:(E  ), prd:({e':E| f(e') } E), cl:(E E Prop), p:ESAxioms(T;
Thm* f:(E  ), prd:({e':E| f(e') } E), cl:(E E Prop), p:ESAxioms(M;
Thm* f:(E  ), prd:({e':E| f(e') } E), cl:(E E Prop), p:ESAxioms(loc;
Thm* f:(E  ), prd:({e':E| f(e') } E), cl:(E E Prop), p:ESAxioms(k;
Thm* f:(E  ), prd:({e':E| f(e') } E), cl:(E E Prop), p:ESAxioms(v;
Thm* f:(E  ), prd:({e':E| f(e') } E), cl:(E E Prop), p:ESAxioms(w;
Thm* f:(E  ), prd:({e':E| f(e') } E), cl:(E E Prop), p:ESAxioms(a;
Thm* f:(E  ), prd:({e':E| f(e') } E), cl:(E E Prop), p:ESAxioms(snds;
Thm* f:(E  ), prd:({e':E| f(e') } E), cl:(E E Prop), p:ESAxioms(sndr;
Thm* f:(E  ), prd:({e':E| f(e') } E), cl:(E E Prop), p:ESAxioms(i;
Thm* f:(E  ), prd:({e':E| f(e') } E), cl:(E E Prop), p:ESAxioms(f;
Thm* f:(E  ), prd:({e':E| f(e') } E), cl:(E E Prop), p:ESAxioms(prd;
Thm* f:(E  ), prd:({e':E| f(e') } E), cl:(E E Prop), p:ESAxioms(cl).
Thm* mk-es(E; eq; T; V; M; loc; k; v; w; a; snds; sndr; i; f; prd; cl; p) ES | [mk-es_wf] |
Thm* E:Type{i}, T,V:(Id Id Type{i}), M:(IdLnk Id Type{i}), loc:(E Id),
Thm* kind:(E Knd), val:(e:E eventtype(kind;loc;V;M;e)),
Thm* when,after:(x:Id e:E T(loc(e),x)),
Thm* sends:(l:IdLnk E (Msg_sub(l; M) List)),
Thm* sender:({e:E| isrcv(kind(e)) } E),
Thm* index:(e:{e:E| isrcv(kind(e)) }  ||sends(lnk(kind(e)),sender(e))||),
Thm* first:(E  ), pred:({e':E| first(e') } E), causl:(E E Prop{i}).
Thm* ESAxioms{i:l}
Thm* ESAxioms(E;
Thm* ESAxioms(T;
Thm* ESAxioms(M;
Thm* ESAxioms(loc;
Thm* ESAxioms(kind;
Thm* ESAxioms(val;
Thm* ESAxioms(when;
Thm* ESAxioms(after;
Thm* ESAxioms(sends;
Thm* ESAxioms(sender;
Thm* ESAxioms(index;
Thm* ESAxioms(first;
Thm* ESAxioms(pred;
Thm* ESAxioms(causl)
Thm* Prop{i'} | [ESAxioms_wf] |
Thm* E:Type, V:(Id Id Type), M:(IdLnk Id Type), loc:(E Id), k:(E Knd),
Thm* e:E. eventtype(k;loc;V;M;e) Type | [eventtype_wf] |
Thm* i:Id, k:Knd. has-src(i;k)  isrcv(k) & source(lnk(k)) = i | [assert-has-src] |
Thm* i:Id, k:Knd. has-src(i;k)  | [has-src_wf] |
Thm* p:IdLnk List, i,j:Id. lconnects(p;i;j) Prop | [lconnects_wf] |
Thm* l:IdLnk, p:IdLnk List.
Thm* lpath([l / p])
Thm* 
Thm* lpath(p)
Thm* & ( ||p|| = 0  destination(l) = source(hd(p)) & hd(p) = lnk-inv(l)) | [lpath_cons] |
Thm* l:IdLnk. destination(lnk-inv(l)) = source(l) | [ldst-inv] |
Thm* l:IdLnk. source(lnk-inv(l)) = destination(l) | [lsrc-inv] |
Thm* a,b:Id. Dec(a = b) | [decidable__equal_Id] |
Thm* a,b:Id. a = b  a = b | [assert-eq-id] |
Thm* a:Id. a = a ~ true | [eq_id_self] |
Thm* B:Type, k:Knd, f:(Id B), g:(IdLnk Id B).
Thm* kindcase(k;a.f(a);l,t.g(l,t)) B | [kindcase_wf] |
Def (e <loc e') == loc(e) = loc(e') Id & (e < e') | [es-locl] |
Def ES
Def == E:Type
Def == EqDecider(E) (T:Id Id Type
Def == EqDecider(E) ( V:Id Id Type
Def == EqDecider(E) ( M:IdLnk Id Type
Def == EqDecider(E) ( Top (loc:E Id
Def == EqDecider(E) ( Top ( kind:E Knd
Def == EqDecider(E) ( Top ( val:(e:E eventtype(kind;loc;V;M;e))
Def == EqDecider(E) ( Top ( when:(x:Id e:E T(loc(e),x))
Def == EqDecider(E) ( Top ( after:(x:Id e:E T(loc(e),x))
Def == EqDecider(E) ( Top ( sends:(l:IdLnk E (Msg_sub(l; M) List))
Def == EqDecider(E) ( Top ( sender:{e:E| isrcv(kind(e)) } E
Def == EqDecider(E) ( Top ( index:(e:{e:E| isrcv(kind(e)) }  ||sends
Def == EqDecider(E) ( Top ( index:(e:{e:E| isrcv(kind(e)) }  ||(lnk(kind(e))
Def == EqDecider(E) ( Top ( index:(e:{e:E| isrcv(kind(e)) }  ||,sender(e))||)
Def == EqDecider(E) ( Top ( first:E 
Def == EqDecider(E) ( Top ( pred:{e':E|  (first(e')) } E
Def == EqDecider(E) ( Top ( causl:E E Prop
Def == EqDecider(E) ( Top ( ESAxioms{i:l}
Def == EqDecider(E) ( Top ( ESAxioms(E;
Def == EqDecider(E) ( Top ( ESAxioms(T;
Def == EqDecider(E) ( Top ( ESAxioms(M;
Def == EqDecider(E) ( Top ( ESAxioms(loc;
Def == EqDecider(E) ( Top ( ESAxioms(kind;
Def == EqDecider(E) ( Top ( ESAxioms(val;
Def == EqDecider(E) ( Top ( ESAxioms(when;
Def == EqDecider(E) ( Top ( ESAxioms(after;
Def == EqDecider(E) ( Top ( ESAxioms(sends;
Def == EqDecider(E) ( Top ( ESAxioms(sender;
Def == EqDecider(E) ( Top ( ESAxioms(index;
Def == EqDecider(E) ( Top ( ESAxioms(first;
Def == EqDecider(E) ( Top ( ESAxioms(pred;
Def == EqDecider(E) ( Top ( ESAxioms(causl)
Def == EqDecider(E) ( Top ( Top)) | [event_system] |
Def ESAxioms{i:l}
Def ESAxioms(E;
Def ESAxioms(T;
Def ESAxioms(M;
Def ESAxioms(loc;
Def ESAxioms(kind;
Def ESAxioms(val;
Def ESAxioms(when;
Def ESAxioms(after;
Def ESAxioms(sends;
Def ESAxioms(sender;
Def ESAxioms(index;
Def ESAxioms(first;
Def ESAxioms(pred;
Def ESAxioms(causl)
Def == ( e,e':E. loc(e) = loc(e') Id  causl(e,e') e = e' causl(e',e))
Def == & ( e:E. (first(e))  ( e':E. loc(e') = loc(e) Id  causl(e',e)))
Def == & ( e:E.
Def == & ( (first(e))
Def == & (
Def == & (loc(pred(e)) = loc(e) Id & causl(pred(e),e)
Def == & (& ( e':E.
Def == & (& (loc(e') = loc(e) Id  (causl(pred(e),e') & causl(e',e))))
Def == & ( e:E.
Def == & ( (first(e))  ( x:Id. when(x,e) = after(x,pred(e)) T(loc(e),x)))
Def == & (Trans e,e':E. causl(e,e'))
Def == & SWellFounded(causl(e,e'))
Def == & ( e:E.
Def == & ( isrcv(kind(e))
Def == & (
Def == & ((sends(lnk(kind(e)),sender(e)))[(index(e))]
Def == & (=
Def == & (msg(lnk(kind(e));tag(kind(e));val(e))
Def == & ( Msg(M))
Def == & ( e:E. isrcv(kind(e))  causl(sender(e),e))
Def == & ( e,e':E.
Def == & (causl(e,e')
Def == & (
Def == & ( (first(e')) & causl(e,pred(e')) e = pred(e')
Def == & ( isrcv(kind(e')) & causl(e,sender(e')) e = sender(e'))
Def == & ( e:E. isrcv(kind(e))  loc(e) = destination(lnk(kind(e))))
Def == & ( e:E, l:IdLnk.
Def == & ( loc(e) = source(l)  sends(l,e) = nil Msg_sub(l; M) List)
Def == & ( e,e':E.
Def == & ( isrcv(kind(e))
Def == & (
Def == & ( isrcv(kind(e'))
Def == & (
Def == & (lnk(kind(e)) = lnk(kind(e'))
Def == & (
Def == & ((causl(e,e')
Def == & ((
Def == & ((causl(sender(e),sender(e'))
Def == & (( sender(e) = sender(e') E & index(e)<index(e')))
Def == & ( e:E, l:IdLnk, n: ||sends(l,e)||.
Def == & ( e':E.
Def == & ( isrcv(kind(e')) & lnk(kind(e')) = l & sender(e') = e & index(e') = n) | [ESAxioms] |
Def KindDeq == union-deq(IdLnk Id;Id;product-deq(IdLnk;Id;IdLnkDeq;IdDeq);IdDeq) | [Kind-deq] |
Def lconnects(p;i;j)
Def == lpath(p)
Def == & (||p|| = 0  i = j Id)
Def == & ( ||p|| = 0  i = source(hd(p)) & j = destination(last(p))) | [lconnects] |
Def lpath(p)
Def == i: (||p||-1).
Def == destination(p[i]) = source(p[(i+1)]) & p[(i+1)] = lnk-inv(p[i]) IdLnk | [lpath] |
Def IdLnkDeq == product-deq(Id;Id ;IdDeq;product-deq(Id; ;IdDeq;NatDeq)) | [idlnk-deq] |