Normal form equality conflicts and uniqueness check (#4497)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Wed, 20 May 2020 15:20:34 +0000 (10:20 -0500)
committerGitHub <noreply@github.com>
Wed, 20 May 2020 15:20:34 +0000 (10:20 -0500)
commit7225f8f14ea0de0eca4c49ec3a2616196074d4d3
tree1abee6df10d3b5631bed1945df703621eca57c2c
parentc010efcdea8e96f3d423d8cebdfd0f3c19a379c7
Normal form equality conflicts and uniqueness check (#4497)

This adds a new inference schema to strings that was discovered by the internal proof checker. It says that we are in conflict when an equality between the normal forms of two terms in the same equivalence class rewrites to false.

It also improves the efficiency of processing normal forms by only considering normal forms that are unique up to rewriting.
src/theory/strings/core_solver.cpp
src/theory/strings/core_solver.h
src/theory/strings/infer_info.cpp
src/theory/strings/infer_info.h
test/regress/CMakeLists.txt
test/regress/regress0/strings/quad-028-2-2-unsat.smt2 [new file with mode: 0644]