9#ifndef CPROVER_UTIL_NUMBERING_H
10#define CPROVER_UTIL_NUMBERING_H
15#include <unordered_map>
20template <
typename keyt,
typename hasht = std::hash<keyt>>
30 std::unordered_map<keyt, number_type, hasht>
numbers_;
34 using iterator =
typename data_typet::iterator;
47 return (result.first)->second;
95 return data_.cbegin();
virtual void clear()
Reset the abstract state.
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
number_type number(const key_type &a)
std::optional< number_type > get_number(const key_type &a) const
const_iterator cend() const
typename data_typet::size_type size_type
const key_type & at(size_type t) const
std::vector< key_type > data_typet
const_iterator begin() const
key_type & operator[](size_type t)
const_iterator end() const
std::unordered_map< keyt, number_type, hasht > numbers_
const_iterator cbegin() const
const key_type & operator[](size_type t) const
typename data_typet::const_iterator const_iterator
typename data_typet::iterator iterator
#define INVARIANT(CONDITION, REASON)
This macro uses the wrapper function 'invariant_violated_string'.