3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-08 10:25:18 +00:00

revert first fix for #1173, replace by handling single arity chainables

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-07-28 08:44:19 -07:00
parent 64233034cc
commit e9b9a29339
2 changed files with 8 additions and 5 deletions

View file

@ -414,10 +414,10 @@ inline decl_kind arith_decl_plugin::fix_kind(decl_kind k, unsigned arity) {
return OP_UMINUS;
}
switch (k) {
case OP_LE: check_arity(arity, 2); break;
case OP_GE: check_arity(arity, 2); break;
case OP_LT: check_arity(arity, 2); break;
case OP_GT: check_arity(arity, 2); break;
case OP_LE: break;
case OP_GE: break;
case OP_LT: break;
case OP_GT: break;
case OP_ADD: break;
case OP_SUB: break;
case OP_UMINUS: check_arity(arity, 1); break;

View file

@ -2178,7 +2178,10 @@ app * ast_manager::mk_app(func_decl * decl, unsigned num_args, expr * const * ar
throw ast_exception(buffer.str().c_str());
}
app * r = 0;
if (num_args > 2 && !decl->is_flat_associative()) {
if (num_args == 1 && decl->is_chainable() && decl->get_arity() == 2) {
r = mk_true();
}
else if (num_args > 2 && !decl->is_flat_associative()) {
if (decl->is_right_associative()) {
unsigned j = num_args - 1;
r = mk_app_core(decl, args[j-1], args[j]);