refactor(library/blast): hypothesis m_depth ==> m_dep_depth

This commit is contained in:
Leonardo de Moura 2015-11-09 13:29:07 -08:00
parent 9a557958f4
commit 9c364b410e
2 changed files with 15 additions and 12 deletions

View file

@ -23,18 +23,18 @@ using hypothesis_idx_map = typename lean::rb_map<unsigned, T, unsigned_cmp>;
class hypothesis {
friend class state;
name m_name; // for pretty printing
name m_name; // for pretty printing
unsigned m_active:1;
unsigned m_depth;
hypothesis_idx_set m_deps; // hypotheses used by the type and/or value of this hypothesis.
unsigned m_dep_depth; // dependency depth
hypothesis_idx_set m_deps; // hypotheses used by the type and/or value of this hypothesis.
expr m_type;
expr m_value; // justification for this object.
expr m_value; // justification for this object.
// Remark: if blast::is_local(m_value) is true, then the hypothesis is an assumption
public:
hypothesis():m_active(false), m_depth(0) {}
hypothesis():m_active(false), m_dep_depth(0) {}
name const & get_name() const { return m_name; }
bool is_active() const { return m_active; }
unsigned get_depth() const { return m_depth; }
unsigned get_dep_depth() const { return m_dep_depth; }
hypothesis_idx_set const & get_backward_deps() const { return m_deps; }
expr const & get_type() const { return m_type; }
expr const & get_value() const { return m_value; }

View file

@ -355,13 +355,16 @@ bool state::check_invariant() const {
}
#endif
struct hypothesis_depth_lt {
struct hypothesis_dep_depth_lt {
state const & m_state;
hypothesis_depth_lt(state const & s): m_state(s) {}
hypothesis_dep_depth_lt(state const & s): m_state(s) {}
bool operator()(unsigned hidx1, unsigned hidx2) const {
hypothesis const * h1 = m_state.get(hidx1);
hypothesis const * h2 = m_state.get(hidx2);
return h1 && h2 && h1->get_depth() < h2->get_depth() && (h1->get_depth() == h2->get_depth() && hidx1 < hidx2);
return
h1 && h2 && h1->get_dep_depth() < h2->get_dep_depth() &&
(h1->get_dep_depth() == h2->get_dep_depth() && hidx1 < hidx2);
}
};
@ -369,7 +372,7 @@ void state::get_sorted_hypotheses(hypothesis_idx_buffer & r) const {
m_context.for_each([&](unsigned hidx, hypothesis const &) {
r.push_back(hidx);
});
std::sort(r.begin(), r.end(), hypothesis_depth_lt(*this));
std::sort(r.begin(), r.end(), hypothesis_dep_depth_lt(*this));
}
void state::add_forward_dep(unsigned hidx_user, unsigned hidx_provider) {
@ -396,8 +399,8 @@ void state::add_deps(expr const & e, hypothesis & h_user, unsigned hidx_user) {
unsigned hidx_provider = href_index(l);
hypothesis const * h_provider = get(hidx_provider);
lean_assert(h_provider);
if (h_user.m_depth <= h_provider->m_depth)
h_user.m_depth = h_provider->m_depth + 1;
if (h_user.m_dep_depth <= h_provider->m_dep_depth)
h_user.m_dep_depth = h_provider->m_dep_depth + 1;
if (!h_user.m_deps.contains(hidx_provider)) {
h_user.m_deps.insert(hidx_provider);
add_forward_dep(hidx_user, hidx_provider);