[proof-new] Catch trivial cycles in SAT proof generation (#5853)
authorHaniel Barbosa <hanielbbarbosa@gmail.com>
Thu, 4 Feb 2021 14:59:56 +0000 (11:59 -0300)
committerGitHub <noreply@github.com>
Thu, 4 Feb 2021 14:59:56 +0000 (08:59 -0600)
commit18e8b81b8eb4c4e313b03f4616271a0ea8e65e9b
treeb48324201876336ec351f3128d0850160df71ff9
parentac998a45ae64c589aeb79c5fd72234468e40451c
[proof-new] Catch trivial cycles in SAT proof generation (#5853)

Evaluating the proof infrastructure in SMT-LIB has uncovered a rare
case (i.e., not previously in our regressions!!) in which we generate
a trivial cycle during SAT proof generation, which can lead to
problematic cycles when expanding MACRO_RESOLUTION steps. For example,
we can go from

       l1 v l2   ~l1 v l3   ~l2 v l3
(ok) ------------------------------
                  l3
in which l3 = l1 v l2, to

         l1 v l2   ~l1 v l3   ~l2 v l3
(bad) ------------------------------
               l3 v l3
              ---------
                 l3
This commit now catches the trivial cycle before it's generated.
src/prop/sat_proof_manager.cpp
test/regress/CMakeLists.txt
test/regress/regress1/proofs/sat-trivial-cycle.smt2 [new file with mode: 0644]