Merge initialization steps in TheoryModelBuilder (#4901)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Tue, 9 Mar 2021 22:31:38 +0000 (16:31 -0600)
committerGitHub <noreply@github.com>
Tue, 9 Mar 2021 22:31:38 +0000 (22:31 +0000)
commit9b8fc6287c49ebbcb0d5ad83f0dfaa803056448d
treea0e4039d7807c154a008ca78f8c2604737ad5d6c
parent6808152d40b0b4293816c18a8ddf83df2afc39f7
Merge initialization steps in TheoryModelBuilder (#4901)

Currently when constructing models, we traverse the equality engine of the model 3 times during initialization. This PR merges these 3 traversals.

This refactoring is necessary to update model building for the "centralized" approach for equality reasoning, where it will be important to traverse the equality engine of the model in a careful way (to skip irrelevant terms).

The PR also makes a few minor optimizations for e.g. reducing map lookups, and adds more documentation.
src/theory/theory_model_builder.cpp
src/theory/theory_model_builder.h