Separate ill-typed portion of arith models (#8734)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Fri, 6 May 2022 21:40:49 +0000 (16:40 -0500)
committerGitHub <noreply@github.com>
Fri, 6 May 2022 21:40:49 +0000 (21:40 +0000)
commit0c9e8f57125695d0c16e1bff565113879a445baa
tree6b74730eddaf9dfe90ffb34894b30a948eb617ba
parent595dc0f6f3efaa2f6b084bee7a57d5d399c317c7
Separate ill-typed portion of arith models (#8734)

This makes it so that the ill-typed portion of arithmetic models is not included in the main arithModel map.

Conceptually, we should not include entries in the arithmetic model that violate type constraints since these should never be used e.g. in non-linear to justify whether a model is correct. Instead, by not including that value, we assume that no value was given for that variable. Sanity checking of the arithmetic model then needs only to access the ill-typed portion of the model directly.

This makes it so that strict type invariants can be enforced in the non-linear solver's model.
src/theory/arith/linear/theory_arith_private.cpp
src/theory/arith/linear/theory_arith_private.h
src/theory/arith/theory_arith.cpp
src/theory/arith/theory_arith.h