Fix and refactor relevant domain (#6528)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Fri, 21 May 2021 21:27:19 +0000 (16:27 -0500)
committerGitHub <noreply@github.com>
Fri, 21 May 2021 21:27:19 +0000 (21:27 +0000)
commit8829c2cbb569296c188ef4285c7fe9568148f48a
tree5168211afd7f2d380b1d9ece36b3ec8e3ba24117
parent08218e74b729bd7da4d95ecd77bdd696a22bb687
Fix and refactor relevant domain (#6528)

In a handcrafted case, one can make the body of quantified formula another quantified formula when special attributes are used. The relevant domain utility was not robust to this case, leading to instantiations with free variables.

This fixes the issue and also updates its style to use a term context stack, which also avoids a tree traversal of the bodies of quantified formulas in this utility.

Fixes #6476. The benchmark from that issue now times out.
src/theory/quantifiers/relevant_domain.cpp
src/theory/quantifiers/relevant_domain.h