Add new substitution apply methods fixpoint, sequential, simultaneous (#6429)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Fri, 23 Apr 2021 18:31:37 +0000 (13:31 -0500)
committerGitHub <noreply@github.com>
Fri, 23 Apr 2021 18:31:37 +0000 (18:31 +0000)
commit86569ce68ed002aeb31d102511d3c9bd8384a7ec
tree34f8871cb8da35d48af79dfc9208b2788fb7c5d4
parentf8af16037ecb1b9a3c322fc4ea2821497f8a2225
Add new substitution apply methods fixpoint, sequential, simultaneous (#6429)

This adds various methods for applying substitution as an options to MACRO_SR_* rules. It extends the proof checker and the proof post processor to eliminate based on these types.

It updates the trust substitutions utility used by non-clausal simplification to use fixed-point semantics for substitution, which is highly important for efficiency.

As a result of this PR, we are orders of magnitude faster for checking proofs for problems where non-clausal substitution infers many substitutions. It also makes our regressions noticeably faster:
src/expr/term_conversion_proof_generator.cpp
src/expr/term_conversion_proof_generator.h
src/smt/proof_post_processor.cpp
src/theory/builtin/proof_checker.cpp
src/theory/builtin/proof_checker.h
src/theory/strings/infer_proof_cons.cpp
src/theory/theory_proof_step_buffer.cpp
src/theory/theory_proof_step_buffer.h
src/theory/trust_substitutions.cpp