axioms.push_back(Node::fromExpr(easserts[i]));
}
std::vector<Node> asserts(axioms.begin(), axioms.end());
- asserts.push_back(Node::fromExpr(conj));
+ // negate the conjecture
+ Node conjn = Node::fromExpr(conj).negate();
+ asserts.push_back(conjn);
d_sssfVarlist.clear();
d_sssfSyms.clear();
std::string name("A");
* This method asks this SMT engine to find an abduct with respect to the
* current assertion stack (call it A) and the conjecture (call it B).
* If this method returns true, then abd is set to a formula C such that
- * A ^ C is satisfiable, and A ^ B ^ C is unsatisfiable.
+ * A ^ C is satisfiable, and A ^ ~B ^ C is unsatisfiable.
*
* The argument grammarType is a sygus datatype type that encodes the syntax
* restrictions on the shape of possible solutions.
; since it is spurious: (>= j 0) is a stronger solution and will be enumerated
; first.
(get-abduct A
- (not (<= n m))
+ (<= n m)
((GA Bool) (GI Int))
(
(GA Bool ((>= GI GI)))
; Generate a predicate A that is consistent with the above axioms (i.e.
; their conjunction is SAT), and is such that the conjunction of the above
-; axioms, A and the conjecture below are UNSAT.
+; axioms, A and the negation of the conjecture below are UNSAT.
; The signature of A is below grammar.
-(get-abduct A (< x y)
+(get-abduct A (not (< x y))
; the grammar for the abduct-to-synthesize
((Start Bool) (StartInt Int))
(assert (and (<= n x)(<= x (+ n 5))))
(assert (and (<= 1 y)(<= y m)))
-(get-abduct A (< x y))
+(get-abduct A (not (< x y)))