Fix potential for cycles in trust substitutions (#7687)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Wed, 24 Nov 2021 05:34:25 +0000 (23:34 -0600)
committerGitHub <noreply@github.com>
Wed, 24 Nov 2021 05:34:25 +0000 (05:34 +0000)
commite1d04c40218a4170fcc6885762e193696d4c958e
tree99a9fbce7557717364392f80828c9a05a170c30a
parentf6e4fecac1d16fb737a54597cfdbe31d03d2b507
Fix potential for cycles in trust substitutions (#7687)

This ensures we use only the prefix of substitutions for the *first* time a formula is proven in a substitution map.

This avoids the possibility for cycles in proof generators during non-clausal simplification, where we may reprove a formula F later at a point where later substitutions depend on F.
src/theory/trust_substitutions.cpp
src/theory/trust_substitutions.h
test/regress/CMakeLists.txt
test/regress/regress1/proofs/str-ovf-dd.smt2 [new file with mode: 0644]