mirror of
https://github.com/Z3Prover/z3
synced 2026-07-05 14:56:11 +00:00
updates to tptp_frontend
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
0b40cfcd8e
commit
56c366009a
2 changed files with 157 additions and 19 deletions
|
|
@ -405,6 +405,15 @@ struct evaluator_cfg : public default_rewriter_cfg {
|
|||
polymorphism::util util(m);
|
||||
util.unify(f, m.poly_root(f), subst);
|
||||
expr_ref d = subst(def);
|
||||
// The polymorphic interpretation body may carry type variables that the
|
||||
// instance/root unification does not fully resolve (e.g. when the body was
|
||||
// built with type variables distinct from the root signature's, as happens
|
||||
// for reified type constructors). If the substituted definition does not
|
||||
// have the instance's range sort, it would produce an ill-sorted rewrite;
|
||||
// treat the function as having no usable macro instead (sound: it is then
|
||||
// evaluated as uninterpreted / by model completion).
|
||||
if (!d || d->get_sort() != f->get_range())
|
||||
return false;
|
||||
m_pinned.push_back(d);
|
||||
def = d;
|
||||
SASSERT(def != nullptr);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue