(proof-new) Fixes for proofs in rewriter (#5307)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Wed, 21 Oct 2020 00:12:07 +0000 (19:12 -0500)
committerGitHub <noreply@github.com>
Wed, 21 Oct 2020 00:12:07 +0000 (19:12 -0500)
commit6940f336d9c63c4844438d6921a38f2c561a4195
tree57ce7cf87d4e5540e9c138606bea54482e51ff38
parent020565a54621169437a237b0d14478f0c44936a0
(proof-new) Fixes for proofs in rewriter (#5307)

This PR fixes proofs in the rewriter so that we use attributes for marking whether a node has been rewritten with proofs instead of consulting the provided TConvProofGenerator for hasRewriteStep. This additionally marks TRUST_REWRITE steps if a rewriter happens to be nondeterministic (e.g. quantifiers). It furthermore decouples rewriteWithProof from reconstruction for theory rewrite steps.

The proof postprocessor is additionally updated so that extended equality REWRITE steps are converted to THEORY_REWRITE steps with identifier RW_REWRITE_EQ_EXT for consistency, since eliminating REWRITE should result in THEORY_REWRITE only. This required generalizing the argument to THEORY_REWRITE to be a MethodId instead of a Boolean.
src/expr/proof_rule.h
src/smt/proof_post_processor.cpp
src/theory/builtin/proof_checker.cpp
src/theory/builtin/proof_checker.h
src/theory/rewriter.cpp
src/theory/rewriter.h