Monotonic abstraction is a technique introduced in model checking parameterized distributed systems in order to cope with transitions containing global conditions within guards. The technique has been re-interpreted in a declarative setting in previous papers of ours and applied to the verification of fault tolerant systems under the so-called 'stopping failures' model. The declarative reinterpretation consists in logical techniques (quantifier relativizations and, especially, quantifier instantiations) making sense in a broader context. In fact, we recently showed that such techniques can over-approximate array accelerations, so that they can be employed as a meaningful (and practically effective) component of CEGAR loops in software model checking too. 1 c 1 to c 2 . More precisely, the abstraction kills (deletes) all the processes inside the configuration which violate the universal condition. Since the abstract transition relation is an over-approximation of the original one, proving a safety property in the abstract system implies that the property also holds in the original system."
Array-Based SystemsArray-based systems were first introduced in [34]: the underlying idea is that of specifying systems of various nature using array theories like those studied in [24,25] and implemented in common SMTsolvers. Array theories are multi-sorted and very flexible; typically one has three sorts: for indexes, elements and arrays. To specify a distributed system, one can use the index sort to model processes and