bool leq()

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;
  }