“…Abstract interpretation [18] provides a general framework to build a sound static analysis from a basic semantics and an abstraction relation, and to verify semantic properties. Notably, it has been applied to verify numerical properties [21,36], the absence of runtime errors [7], string properties [26,4], array properties [29,30,31,20], liveness properties [57], and security properties [5,27,25]. Several families of shape analyses have also been designed to infer properties of programs manipulating dynamic data-structures, including TVLA [53] and shape analyses based on separation logic [52].…”