Fix and improve evaluator (#5563)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Mon, 14 Dec 2020 14:35:28 +0000 (08:35 -0600)
committerGitHub <noreply@github.com>
Mon, 14 Dec 2020 14:35:28 +0000 (15:35 +0100)
commit219fb439a1a5ac8f8c53f0d287a259fa82c30ee2
tree0f201b8f6208cdebf61ffbf2ab3f139adf498eef
parentd16b689f85e4962dfc77e8e9a1b7de23ab11ac7d
Fix and improve evaluator (#5563)

This fixes a segfault in the evaluator for substitutions of the form x -> t where t is not constant.

This consolidates 2 cases where we did not evaluate children (when we are variable or are an application term with an unevaluated child). This was problematic previously since we would access children of currNode instead of currNodeVal.

This also makes our handling of APPLY_UF more consistent, so that it is added to the main switch statement.
src/theory/evaluator.cpp