3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00

new heap invariants (#7298)

* new heap invariants

* change ENSURE to SASSERT for unit test heap

* change SASSERT to VERIFY
This commit is contained in:
LiviaSun 2024-07-19 14:03:21 -07:00 committed by GitHub
parent bc636d7ee0
commit 80ac7b3438
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 26 additions and 11 deletions

View file

@ -55,6 +55,19 @@ class heap : private LT {
}
bool check_invariant_core(int idx) const {
// Check that m_values starts with a dummy value at index 0.
if (m_values.empty() || m_values[0] != -1) {
return false;
}
// All indices in m_value2indices that are not used in m_values should be 0
for (int val = 0; val < static_cast<int>(m_value2indices.size()); ++val) {
if (std::find(m_values.begin(), m_values.end(), val) == m_values.end() && m_value2indices[val] != 0) {
return false; // Unused indices should have a 0 value
}
}
if (idx < static_cast<int>(m_values.size())) {
SASSERT(m_value2indices[m_values[idx]] == idx);
SASSERT(parent(idx) == 0 || !less_than(m_values[idx], m_values[parent(idx)]));