in include/HashedAbstractPartition.h [146:170]
bool leq(const HashedAbstractPartition& other) const override {
if (is_top()) {
return other.is_top();
}
if (other.is_top()) {
return true;
}
if (m_map.size() > other.m_map.size()) {
// In this case, there is a label bound to a non-Bottom value in
// 'this' that is not defined in 'other' (and is therefore implicitly
// bound to Bottom).
return false;
}
for (const auto& binding : m_map) {
auto it = other.m_map.find(binding.first);
if (it == other.m_map.end()) {
// The other value is Bottom.
return false;
}
if (!binding.second.leq(it->second)) {
return false;
}
}
return true;
}