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

add scoped_vector invariants and unit tests (#7327)

* add scoped vector unit test

* fix dlist tests

* add new scoped vector invariants

* remove all loop invariants
This commit is contained in:
LiviaSun 2024-08-02 19:21:40 -07:00 committed by GitHub
parent d2fc085b8c
commit 7c30cbfe48
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 142 additions and 5 deletions

View file

@ -176,8 +176,46 @@ private:
}
bool invariant() const {
return
m_size <= m_elems.size() &&
m_elems_start <= m_elems.size();
if (!(m_size <= m_elems.size() && m_elems_start <= m_elems.size()))
return false;
// Check that source and destination trails have the same length.
if (m_src.size() != m_dst.size())
return false;
// The size of m_src, m_dst, and m_src_lim should be consistent with the scope stack.
if (m_src_lim.size() != m_sizes.size() || m_src.size() != m_dst.size())
return false;
// // m_elems_lim stores the past sizes of m_elems for each scope. Each element in m_elems_lim should be
// // within bounds and in non-decreasing order.
// for (unsigned i = 1; i < m_elems_lim.size(); ++i) {
// if (m_elems_lim[i - 1] > m_elems_lim[i]) return false;
// }
// // m_sizes tracks the size of the vector at each scope level.
// // Each element in m_sizes should be non-decreasing and within the size of m_elems.
// for (unsigned i = 1; i < m_sizes.size(); ++i) {
// if (m_sizes[i - 1] > m_sizes[i])
// return false;
// }
// // The m_src and m_dst vectors should have the same size and should contain valid indices.
// if (m_src.size() != m_dst.size()) return false;
// for (unsigned i = 0; i < m_src.size(); ++i) {
// if (m_src[i] >= m_index.size() || m_dst[i] >= m_elems.size()) return false;
// }
// // The size of m_src_lim should be less than or equal to the size of m_sizes and store valid indices.
// if (m_src_lim.size() > m_sizes.size()) return false;
// for (unsigned elem : m_src_lim) {
// if (elem > m_src.size()) return false;
// }
return true;
}
};