fix(library/unifier): assertion violation
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
44c597724b
commit
4c9723e5ed
1 changed files with 9 additions and 4 deletions
|
@ -1735,12 +1735,17 @@ struct unifier_fn {
|
||||||
if (!all_local(lhs)) {
|
if (!all_local(lhs)) {
|
||||||
expr rhs_whnf = whnf(rhs, j, relax, aux);
|
expr rhs_whnf = whnf(rhs, j, relax, aux);
|
||||||
if (rhs_whnf != rhs) {
|
if (rhs_whnf != rhs) {
|
||||||
|
if (is_meta(rhs_whnf)) {
|
||||||
|
// it become a flex-flex constraint
|
||||||
|
alts.push_back(constraints(mk_eq_cnstr(lhs, rhs_whnf, j, relax)));
|
||||||
|
} else {
|
||||||
buffer<constraints> alts2;
|
buffer<constraints> alts2;
|
||||||
process_flex_rigid_core(lhs, rhs_whnf, j, relax, alts2);
|
process_flex_rigid_core(lhs, rhs_whnf, j, relax, alts2);
|
||||||
append_auxiliary_constraints(alts2, to_list(aux.begin(), aux.end()));
|
append_auxiliary_constraints(alts2, to_list(aux.begin(), aux.end()));
|
||||||
alts.append(alts2);
|
alts.append(alts2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// std::cout << "FlexRigid\n";
|
// std::cout << "FlexRigid\n";
|
||||||
// for (auto cs : alts) {
|
// for (auto cs : alts) {
|
||||||
|
|
Loading…
Reference in a new issue