Implement alpha equivalence proofs (#7066)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Thu, 23 Sep 2021 03:03:29 +0000 (22:03 -0500)
committerGitHub <noreply@github.com>
Thu, 23 Sep 2021 03:03:29 +0000 (03:03 +0000)
commit55d3b25f8d18495f92c0058df73f6ed80a369186
tree4763600774d8c7491c63fd8194d8149e61924b69
parentdbd1cf991f1333b0b2076bb11073b54a7c72a62a
Implement alpha equivalence proofs (#7066)

This is a modified version of #6137 which accounts for extended rewriting between quantified formulas that are considered alpha equivalent.

It also generalizes the proof rule ALPHA_EQUIV. Notice that if we were to make this rule more pedantic, we would check for variable shadowing during substitution, although this is not currently done.
13 files changed:
src/expr/term_canonize.cpp
src/expr/term_canonize.h
src/proof/proof_rule.cpp
src/proof/proof_rule.h
src/theory/quantifiers/alpha_equivalence.cpp
src/theory/quantifiers/alpha_equivalence.h
src/theory/quantifiers/proof_checker.cpp
src/theory/quantifiers/quantifiers_modules.cpp
src/theory/quantifiers/quantifiers_modules.h
src/theory/quantifiers_engine.cpp
src/theory/quantifiers_engine.h
test/regress/CMakeLists.txt
test/regress/regress1/proofs/quant-alpha-eq.smt2 [new file with mode: 0644]