Make labelled separation logic asserts preserve labels (#8671)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Thu, 28 Apr 2022 12:27:32 +0000 (07:27 -0500)
committerGitHub <noreply@github.com>
Thu, 28 Apr 2022 12:27:32 +0000 (12:27 +0000)
commit449666e08ff5cc09fb950b6408d9362338c3d132
treefbe3980853948b94b4108d3e20ee2bf053a237fc
parent92c7bc3f4688e39ed691678c80f06f7760a3299f
Make labelled separation logic asserts preserve labels (#8671)

This is a first step towards fixing #8659.

The issue is that when two labels are equal, we assume they refer to subheaps of the same heap. This is incorrect for magic wand. This ensures we preserve labels, a further PR will ensure that syntactic equality on labels (instead of semantic equality) is used for knowing when two pto constraints must be unified. This means that SEP_LABEL nodes should never be rewritten.
src/theory/inference_id.cpp
src/theory/inference_id.h
src/theory/sep/theory_sep.cpp
src/theory/sep/theory_sep.h
src/theory/sep/theory_sep_rewriter.cpp