“…Most methods for k-safety verification are centered around the self-composition of a program [7] and often improve upon a naïve self-composition by, e.g., exploiting the commutativity of statements [55,31,32,29]. Relational program logics for k-safety offer a rich set of rules to over -approximate the program behavior [8,60,56,49,28,3,9]. Recently, much effort has been made to employ underapproximate methods that find bugs instead of proving their absence; so far, mostly for unary (non-hyper) properties [50,58,52,47,42,17,62,24].…”