Safety-Refined Liveness

Correctness properties of programs are traditionally decomposed into safety (“nothing bad happens”) and liveness (“something good eventually happens”). In sequential verification, this corresponds to the well-known decomposition of total correctness into partial correctness and termination. In this paper, we present a principle-first view of correctness: under suitable safety guarantees, liveness…