“…Various approaches to verification of such programs differing in their principles, degree of automation, generality, and scalability have been proposed. The approaches are based, e.g., on monadic second order logic [30], 3-valued predicate logic with transitive closure [33], separation logic [8,21,31,35], other logics [3,14,29], automata [7,11,12,19], or other symbolic representations such as [1,4,17,27,36].…”