Sha256: 96cac45cbf90cae75b877929c738311db02fb322716638d3addbdc150796c4f5
Contents?: true
Size: 1.09 KB
Versions: 12
Compression:
Stored size: 1.09 KB
Contents
// A system agnostic domain specific language for runtime monitoring and verification // Basic events insert(index,elem) matches {event:'func_pre',name:'my_insert',args:[index,elem]}; relevant matches insert(_,_)|remove(_,_)|size(_)|get(_,_); insert_in_bounds(size) matches insert(index,_) with index >= 0 && index <= size; del_false matches del(_,false); not_add_true_del(el) not matches add(el,true) | del(el,_); Main = relevant >> (CheckIndex<0> /\ add_rm_get >> CheckElem)!; CheckIndex<size> = get_size(size)* (insert_in_bounds(size) CheckIndex<size+1> \/ remove_in_bounds(size) CheckIndex<size-1>); Msg<inf,sup> = if(inf<=sup) msg(inf) Msg<inf+1,sup> else empty; Main=relevant>>Msg<1,4>*!; acquire(id) matches {event:'func_pre',name:'acquire',args:[_,id,...]}; Main = relevant >> Resources; Resources = {let id; acquire(id) ((Resources | use(id)* release(id)) /\ acqRel(id) >> release(id) all) }?; msg(ty) matches {event:'func_pre',name:'msg',args:[ty]}; relevant matches msg(_); Msg<inf,sup> = if(inf<=sup) msg(inf) Msg<inf+1,sup> else empty; Main=relevant>>Msg<1,4>*!;
Version data entries
12 entries across 12 versions & 1 rubygems