}
else
{
- Assert(args1.getKind() == kind::SELECT && args1[0] == func);
- Assert(args2.getKind() == kind::SELECT && args2[0] == func);
+ Assert(args1.getKind() == kind::SELECT && args1.getOperator() == func);
+ Assert(args2.getKind() == kind::SELECT && args2.getOperator() == func);
Assert(args1.getNumChildren() == 2);
Assert(args2.getNumChildren() == 2);
- args_eq = nm->mkNode(kind::EQUAL, args1[1], args2[1]);
+ args_eq = nm->mkNode(Kind::AND,
+ nm->mkNode(kind::EQUAL, args1[0], args2[0]),
+ nm->mkNode(kind::EQUAL, args1[1], args2[1])
+ );
}
Node func_eq = nm->mkNode(kind::EQUAL, args1, args2);
Node lemma = nm->mkNode(kind::IMPLIES, args_eq, func_eq);
if (seen.find(term) == seen.end())
{
TNode func;
- if (term.getKind() == kind::APPLY_UF)
+ if (term.getKind() == kind::APPLY_UF || term.getKind() == kind::SELECT)
{
storeFunctionAndAddLemmas(term.getOperator(),
term,
nm,
vec);
}
- else if (term.getKind() == kind::SELECT)
- {
- storeFunctionAndAddLemmas(
- term[0], term, fun_to_args, fun_to_skolem, assertions, nm, vec);
- }
else
{
AlwaysAssert(term.getKind() != kind::STORE)
regress0/arrays/bug272.minimized.smtv1.smt2
regress0/arrays/bug272.smtv1.smt2
regress0/arrays/bug3020.smt2
+ regress0/arrays/bug4957.smt2
regress0/arrays/bug637.delta.smt2
regress0/arrays/constarr.cvc
regress0/arrays/constarr.smt2