feat(library/blast/congruence_closure): allow meta-variables in the congruence closure module after partitions have been frozen
This commit is contained in:
parent
67a4cd3972
commit
651e3834ba
2 changed files with 6 additions and 2 deletions
|
@ -16,6 +16,8 @@ action_result assert_cc_action(hypothesis_idx hidx) {
|
|||
if (!get_config().m_cc)
|
||||
return action_result::failed();
|
||||
congruence_closure & cc = get_cc();
|
||||
if (has_expr_metavar(curr_state().get_hypothesis_decl(hidx).get_type()))
|
||||
return action_result::failed();
|
||||
cc.add(hidx);
|
||||
// cc.display();
|
||||
if (cc.is_inconsistent()) {
|
||||
|
|
|
@ -566,17 +566,19 @@ static bool is_logical_app(expr const & n) {
|
|||
|
||||
void congruence_closure::internalize_core(name const & R, expr const & e, bool toplevel, bool to_propagate) {
|
||||
lean_assert(closed(e));
|
||||
if (has_expr_metavar(e))
|
||||
// we allow metavariables after partitions have been frozen
|
||||
if (has_expr_metavar(e) && !m_froze_partitions)
|
||||
return;
|
||||
if (m_entries.find(eqc_key(R, e)))
|
||||
return; // e has already been internalized
|
||||
update_non_eq_relations(R);
|
||||
switch (e.kind()) {
|
||||
case expr_kind::Var: case expr_kind::Meta:
|
||||
case expr_kind::Var:
|
||||
lean_unreachable();
|
||||
case expr_kind::Sort:
|
||||
return;
|
||||
case expr_kind::Constant: case expr_kind::Local:
|
||||
case expr_kind::Meta:
|
||||
mk_entry_core(R, e, to_propagate, false);
|
||||
return;
|
||||
case expr_kind::Lambda:
|
||||
|
|
Loading…
Reference in a new issue