“…The first approach is to restrict the expressive power of the correctness specifications: typically, one either limits specifications to descriptions of finite traces such as regular expressions (RE) [12,15], or else redefines the semantics of existing logics (e.g., LTL) so as to reflect the limitations of the runtime setting [13,5,7,6]. The second approach is to leave the semantics of the specification logic unchanged, and study which subsets of the logic can be verified at runtime [17,24,11,16].…”