Fixes #5848.
This also fixes an issue leftover from #6605 where a spurious assertion failure was thrown.
Also introduces subfolder regress/regress1/abduction.
Node SortProperties::mkGroundTerm(TypeNode type)
{
- Assert(type.getKind() == kind::SORT_TYPE);
+ // we typically use this method for sorts, although there are other types
+ // where it is used as well, e.g. arrays that are not closed enumerable.
GroundTermAttribute gta;
if (type.hasAttribute(gta))
{
# Regression level 1 tests
set(regress_1_tests
- regress1/abduct-dt.smt2
+ regress1/abduction/sygus-abduct-test-user.smt2
+ regress1/abduction/issue5848-4.smt2
+ regress1/abduction/issue5848-2.smt2
+ regress1/abduction/issue5848.smt2
+ regress1/abduction/issue6605-1.smt2
+ regress1/abduction/abduct-dt.smt2
+ regress1/abduction/sygus-abduct-test-ccore.smt2
+ regress1/abduction/sygus-abduct-test.smt2
+ regress1/abduction/abd-simple-conj-4.smt2
+ regress1/abduction/abduction_streq.readable.smt2
+ regress1/abduction/yoni-true-sol.smt2
+ regress1/abduction/uf-abduct.smt2
+ regress1/abduction/abduction_1255.corecstrs.readable.smt2
+ regress1/abduction/abduction-no-pbe-sym-break.smt2
+ regress1/abduction/issue5848-3-trivial-no-abduct.smt2
+ regress1/abduction/sygus-abduct-ex1-grammar.smt2
regress1/arith/arith-brab-test.smt2
regress1/arith/arith-int-004.cvc.smt2
regress1/arith/arith-int-011.cvc.smt2
regress1/strings/update-ex1.smt2
regress1/strings/update-ex2.smt2
regress1/strings/username_checker_min.smt2
- regress1/sygus-abduct-ex1-grammar.smt2
- regress1/sygus-abduct-test.smt2
- regress1/sygus-abduct-test-ccore.smt2
- regress1/sygus-abduct-test-user.smt2
regress1/sygus/VC22_a.sy
- regress1/sygus/abd-simple-conj-4.smt2
- regress1/sygus/abduction_1255.corecstrs.readable.smt2
- regress1/sygus/abduction_streq.readable.smt2
- regress1/sygus/abduction-no-pbe-sym-break.smt2
regress1/sygus/abv.sy
regress1/sygus/array-grammar-store.sy
regress1/sygus/array_search_5-Q-easy.sy
regress1/sygus/trivial-stream.sy
regress1/sygus/twolets1.sy
regress1/sygus/twolets2-orig.sy
- regress1/sygus/uf-abduct.smt2
regress1/sygus/unbdd_inv_gen_winf1.sy
regress1/sygus/univ_2-long-repeat.sy
- regress1/sygus/yoni-true-sol.smt2
regress1/sym/q-constant.smt2
regress1/sym/q-function.smt2
regress1/sym/qf-function.smt2
+++ /dev/null
-; COMMAND-LINE: --produce-abducts
-; SCRUBBER: grep -v -E '(\(define-fun)'
-; EXIT: 0
-(set-logic ALL)
-(declare-datatypes ((List 0)) (((nil) (cons (head Int) (tail List)))))
-(declare-fun x () List)
-(assert (distinct x nil))
-(get-abduct A (= x (cons (head x) (tail x))))
--- /dev/null
+; COMMAND-LINE: --produce-abducts --sygus-core-connective
+; SCRUBBER: grep -v -E '(\(define-fun)'
+; EXIT: 0
+(set-logic QF_LIA)
+(set-option :produce-abducts true)
+(declare-fun x () Int)
+(declare-fun y () Int)
+(declare-fun z () Int)
+(declare-fun w () Int)
+(declare-fun u () Int)
+(declare-fun v () Int)
+(assert (>= x 0))
+(get-abduct A (>= (+ x y z w u v) 2))
--- /dev/null
+; COMMAND-LINE: --produce-abducts
+; SCRUBBER: grep -v -E '(\(define-fun)'
+; EXIT: 0
+(set-logic ALL)
+(declare-datatypes ((List 0)) (((nil) (cons (head Int) (tail List)))))
+(declare-fun x () List)
+(assert (distinct x nil))
+(get-abduct A (= x (cons (head x) (tail x))))
--- /dev/null
+; COMMAND-LINE: --produce-abducts
+; SCRUBBER: grep -v -E '(\(define-fun)'
+; EXIT: 0
+
+(set-logic UF)
+(set-option :produce-abducts true)
+(declare-const A Bool)
+(declare-const B Bool)
+(declare-const C Bool)
+(assert (=> A C))
+(get-abduct D (=> A B))
--- /dev/null
+; COMMAND-LINE: --produce-abducts --sygus-core-connective
+; SCRUBBER: grep -v -E '(\(define-fun)'
+; EXIT: 0
+
+
+(set-info :smt-lib-version |2.6|)
+(set-logic QF_SLIA)
+(set-info :source |
+Generated by: Andrew Reynolds
+Generated on: 2018-04-25
+Generator: Kudzu, converted to v2.6 by CVC4
+Application: Symbolic Execution of Javascript
+Target solver: Kaluza
+Publications: "A symbolic execution framework for JavaScript" by P. Saxena, D. Akhawe, S. Hanna, F. Mao, S. McCamant, and D. Song, 2010.
+|)
+(set-info :license |"https://creativecommons.org/licenses/by/4.0/"|)
+(set-info :category |"industrial"|)
+(set-info :status unknown)
+(declare-fun T_1 () Bool)
+(declare-fun T_10 () Bool)
+(declare-fun T_11 () Bool)
+(declare-fun T_12 () Bool)
+(declare-fun T_13 () Bool)
+(declare-fun T_14 () Bool)
+(declare-fun T_2 () Bool)
+(declare-fun T_3 () Bool)
+(declare-fun T_4 () Bool)
+(declare-fun T_5 () Bool)
+(declare-fun T_6 () Bool)
+(declare-fun T_7 () Bool)
+(declare-fun T_8 () Bool)
+(declare-fun T_9 () Bool)
+(declare-fun T_a () Bool)
+(declare-fun T_b () Bool)
+(declare-fun T_c () Bool)
+(declare-fun T_d () Bool)
+(declare-fun T_e () Bool)
+(declare-fun T_f () Bool)
+(declare-fun var_0xINPUT_245549 () String)
+(assert (= T_1 (not (= "6JX7G3VKFq" var_0xINPUT_245549))))
+(assert T_1)
+(assert (= T_2 (not (= "" var_0xINPUT_245549))))
+(assert T_2)
+(assert (= T_3 (not (= var_0xINPUT_245549 ""))))
+(assert T_3)
+(assert (= T_4 (not (= "" var_0xINPUT_245549))))
+(assert T_4)
+(assert (= T_5 (= var_0xINPUT_245549 "")))
+(assert (= T_6 (not T_5)))
+(assert T_6)
+(assert (= T_7 (not (= "" var_0xINPUT_245549))))
+(assert T_7)
+(assert (= T_8 (not (= "" var_0xINPUT_245549))))
+(assert T_8)
+(assert (= T_9 (not (= var_0xINPUT_245549 ""))))
+(assert T_9)
+(assert (= T_a (= var_0xINPUT_245549 "")))
+(assert (= T_b (not T_a)))
+(assert T_b)
+(assert (= T_c (not (= "" var_0xINPUT_245549))))
+(assert T_c)
+(assert (= T_d (not (= var_0xINPUT_245549 ""))))
+(assert T_d)
+(assert (= T_e (not (= "" var_0xINPUT_245549))))
+(assert T_e)
+(assert (= T_f (= var_0xINPUT_245549 "")))
+(assert (= T_10 (not T_f)))
+(assert T_10)
+(assert (= T_11 (not (= "" var_0xINPUT_245549))))
+(assert T_11)
+(assert (= T_12 (= var_0xINPUT_245549 "Example:")))
+(assert (= T_13 (not T_12)))
+(assert T_13)
+(assert (= T_14 (not (= var_0xINPUT_245549 "CQALcCP5TB"))))
+(get-abduct A (not T_14))
--- /dev/null
+; COMMAND-LINE: --produce-abducts --sygus-core-connective
+; SCRUBBER: grep -v -E '(\(define-fun)'
+; EXIT: 0
+
+(set-info :smt-lib-version |2.6|)
+(set-logic QF_SLIA)
+(set-info :source |
+Generated by: Andrew Reynolds
+Generated on: 2018-04-25
+Generator: Kudzu, converted to v2.6 by CVC4
+Application: Symbolic Execution of Javascript
+Target solver: Kaluza
+Publications: "A symbolic execution framework for JavaScript" by P. Saxena, D. Akhawe, S. Hanna, F. Mao, S. McCamant, and D. Song, 2010.
+|)
+(set-info :license |"https://creativecommons.org/licenses/by/4.0/"|)
+(set-info :category |"industrial"|)
+(set-info :status unknown)
+(declare-fun I0_2 () Int)
+(declare-fun I1_2 () Int)
+(declare-fun I2_2 () Int)
+(declare-fun PCTEMP_LHS_1 () String)
+(declare-fun T1_2 () String)
+(declare-fun T2_2 () String)
+(declare-fun T3_2 () String)
+(declare-fun T_2 () Bool)
+(declare-fun T_4 () Bool)
+(declare-fun T_5 () Bool)
+(declare-fun var_0xINPUT_19 () String)
+(assert (= I0_2 (- 5 0)))
+(assert (<= 0 0))
+(assert (<= 0 5))
+(assert (<= 5 I1_2))
+(assert (= I2_2 I1_2))
+(assert (= I0_2 (str.len PCTEMP_LHS_1)))
+(assert (= var_0xINPUT_19 ( str.++ T1_2 T2_2 )))
+(assert (= T2_2 ( str.++ PCTEMP_LHS_1 T3_2 )))
+(assert (= 0 (str.len T1_2)))
+(assert (= I1_2 (str.len var_0xINPUT_19)))
+(assert (= T_2 (= PCTEMP_LHS_1 "Hello")))
+(assert T_2)
+(assert (= T_4 (= PCTEMP_LHS_1 "hello")))
+(assert (= T_5 (not T_4)))
+(get-abduct A T_5)
--- /dev/null
+; COMMAND-LINE: --produce-abducts
+; SCRUBBER: grep -v -E '(\(define-fun)'
+; EXIT: 0
+(set-logic ALL)
+(declare-fun v9 () Bool)
+(get-abduct A (or true v9))
--- /dev/null
+; COMMAND-LINE: --produce-abducts
+; EXPECT: none
+(set-logic ALL)
+(assert (= 0.0 (sqrt 1.0)))
+(get-abduct A false)
--- /dev/null
+; COMMAND-LINE: --produce-abducts
+; EXPECT: none
+(set-logic UFLRA)
+(declare-sort S0 0)
+(declare-fun S0-0 () S0)
+(declare-fun S0-1 () S0)
+(declare-fun v87 () Bool)
+(get-abduct A (and false (exists ((q117 S0)) (or v87 (and (= S0-1 q117) (= q117 S0-0))))))
--- /dev/null
+; COMMAND-LINE: --produce-abducts
+; SCRUBBER: grep -v -E '(\(define-fun)'
+; EXIT: 0
+(set-logic ALL)
+(declare-fun a () Int)
+(assert (= (mod 0 a) 0))
+(get-abduct A (= a 1))
--- /dev/null
+; COMMAND-LINE: --produce-abducts
+; SCRUBBER: grep -v -E '(\(define-fun)'
+; EXIT: 0
+(set-logic ALL)
+(set-option :produce-abducts true)
+(declare-fun a () Int)
+(declare-fun b () Int)
+(declare-fun c () Int)
+(assert (= (>= b c) (>= 0 a)))
+(assert (= c a))
+(get-abduct d (<= a b))
--- /dev/null
+; COMMAND-LINE: --produce-abducts --sygus-stream --sygus-abort-size=3
+; EXPECT: (error "Maximum term size (3) for enumerative SyGuS exceeded.")
+; SCRUBBER: sed -e 's/.*(>= j (+ 1 1))/SPURIOUS/; s/(define-fun.*//; /^$/d'
+; EXIT: 1
+
+(set-logic QF_LIA)
+(set-option :produce-abducts true)
+
+(declare-fun n () Int)
+(declare-fun m () Int)
+(declare-fun i () Int)
+(declare-fun j () Int)
+
+(assert (and (>= n 0) (>= m 0)))
+(assert (< n i))
+(assert (< (+ i j) m))
+
+; This test ensures that (>= j (+ 1 1)) is not printed as a solution,
+; since it is spurious: (>= j 0) is a stronger solution and will be enumerated
+; first.
+(get-abduct A
+ (<= n m)
+ ((GA Bool) (GI Int))
+ (
+ (GA Bool ((>= GI GI)))
+ (GI Int ((+ GI GI) (- GI) i j 0 1))
+ )
+)
--- /dev/null
+; COMMAND-LINE: --produce-abducts --sygus-core-connective
+; SCRUBBER: grep -v -E '(\(define-fun)'
+; EXIT: 0
+
+(set-logic QF_UFLIRA)
+(declare-fun n () Int)
+(declare-fun m () Int)
+(declare-fun x () Int)
+(declare-fun y () Int)
+
+(assert (>= n 1))
+(assert (and (<= n x)(<= x (+ n 5))))
+(assert (and (<= 1 y)(<= y m)))
+
+(get-abduct A (not (< x y)))
--- /dev/null
+; COMMAND-LINE: --produce-abducts
+; COMMAND-LINE: --produce-abducts --sygus-core-connective
+; SCRUBBER: grep -v -E '(\(define-fun)'
+; EXIT: 0
+(set-logic QF_UFLIRA)
+(set-option :produce-abducts true)
+(declare-fun n () Int)
+(declare-fun m () Int)
+(declare-fun x () Int)
+(declare-fun y () Int)
+
+(assert (>= n 1))
+(assert (and (<= n x)(<= x (+ n 5))))
+(assert (and (<= 1 y)(<= y m)))
+
+; 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 negation of the conjecture below are UNSAT.
+; The signature of A is below grammar.
+(get-abduct A (not (< x y))
+
+; the grammar for the abduct-to-synthesize
+; notice it does not permit the sygus-core-connective algorithm; this regression
+; tests that we ignore this option properly.
+((Start Bool) (StartInt Int))
+(
+(Start Bool ((< StartInt StartInt)))
+(StartInt Int (n m (+ StartInt StartInt) 0 1))
+)
+
+)
--- /dev/null
+; COMMAND-LINE: --produce-abducts --sygus-stream --sygus-abort-size=2
+; EXPECT: (error "Maximum term size (2) for enumerative SyGuS exceeded.")
+; SCRUBBER: grep -v -E '(\(define-fun)'
+; EXIT: 1
+
+(set-logic QF_UFLIRA)
+(declare-fun n () Int)
+(declare-fun m () Int)
+(declare-fun x () Int)
+(declare-fun y () Int)
+
+(assert (>= n 1))
+(assert (and (<= n x)(<= x (+ n 5))))
+(assert (and (<= 1 y)(<= y m)))
+
+(get-abduct A (not (< x y)))
--- /dev/null
+; COMMAND-LINE: --produce-abducts
+; SCRUBBER: grep -v -E '(\(define-fun)'
+; EXIT: 0
+(set-logic HO_UFLIA)
+(declare-fun f (Int) Int)
+(declare-fun a () Int)
+(assert (and (<= 0 a) (< a 4)))
+(get-abduct ensureF (or (> (f 0) 0) (> (f 1) 0) (> (f 2) 0) (> (f 3) 0)))
--- /dev/null
+; COMMAND-LINE: --produce-abducts
+; EXPECT: (define-fun A () Bool (>= j i))
+(set-logic QF_LIA)
+(set-option :produce-abducts true)
+(declare-fun n () Int)
+(declare-fun m () Int)
+(declare-fun i () Int)
+(declare-fun j () Int)
+(assert (and (>= n 0) (>= m 0)))
+(assert (< n i))
+(assert (< (+ i j) m))
+(get-abduct A
+ (<= n m)
+ ((GA Bool) (GJ Int) (GI Int))
+ (
+ (GA Bool ((>= GJ GI)))
+ (GJ Int ( j))
+ (GI Int ( i))
+ )
+)
+++ /dev/null
-; COMMAND-LINE: --produce-abducts --sygus-stream --sygus-abort-size=3
-; EXPECT: (error "Maximum term size (3) for enumerative SyGuS exceeded.")
-; SCRUBBER: sed -e 's/.*(>= j (+ 1 1))/SPURIOUS/; s/(define-fun.*//; /^$/d'
-; EXIT: 1
-
-(set-logic QF_LIA)
-(set-option :produce-abducts true)
-
-(declare-fun n () Int)
-(declare-fun m () Int)
-(declare-fun i () Int)
-(declare-fun j () Int)
-
-(assert (and (>= n 0) (>= m 0)))
-(assert (< n i))
-(assert (< (+ i j) m))
-
-; This test ensures that (>= j (+ 1 1)) is not printed as a solution,
-; since it is spurious: (>= j 0) is a stronger solution and will be enumerated
-; first.
-(get-abduct A
- (<= n m)
- ((GA Bool) (GI Int))
- (
- (GA Bool ((>= GI GI)))
- (GI Int ((+ GI GI) (- GI) i j 0 1))
- )
-)
+++ /dev/null
-; COMMAND-LINE: --produce-abducts --sygus-core-connective
-; SCRUBBER: grep -v -E '(\(define-fun)'
-; EXIT: 0
-
-(set-logic QF_UFLIRA)
-(declare-fun n () Int)
-(declare-fun m () Int)
-(declare-fun x () Int)
-(declare-fun y () Int)
-
-(assert (>= n 1))
-(assert (and (<= n x)(<= x (+ n 5))))
-(assert (and (<= 1 y)(<= y m)))
-
-(get-abduct A (not (< x y)))
+++ /dev/null
-; COMMAND-LINE: --produce-abducts
-; COMMAND-LINE: --produce-abducts --sygus-core-connective
-; SCRUBBER: grep -v -E '(\(define-fun)'
-; EXIT: 0
-(set-logic QF_UFLIRA)
-(set-option :produce-abducts true)
-(declare-fun n () Int)
-(declare-fun m () Int)
-(declare-fun x () Int)
-(declare-fun y () Int)
-
-(assert (>= n 1))
-(assert (and (<= n x)(<= x (+ n 5))))
-(assert (and (<= 1 y)(<= y m)))
-
-; 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 negation of the conjecture below are UNSAT.
-; The signature of A is below grammar.
-(get-abduct A (not (< x y))
-
-; the grammar for the abduct-to-synthesize
-; notice it does not permit the sygus-core-connective algorithm; this regression
-; tests that we ignore this option properly.
-((Start Bool) (StartInt Int))
-(
-(Start Bool ((< StartInt StartInt)))
-(StartInt Int (n m (+ StartInt StartInt) 0 1))
-)
-
-)
+++ /dev/null
-; COMMAND-LINE: --produce-abducts --sygus-stream --sygus-abort-size=2
-; EXPECT: (error "Maximum term size (2) for enumerative SyGuS exceeded.")
-; SCRUBBER: grep -v -E '(\(define-fun)'
-; EXIT: 1
-
-(set-logic QF_UFLIRA)
-(declare-fun n () Int)
-(declare-fun m () Int)
-(declare-fun x () Int)
-(declare-fun y () Int)
-
-(assert (>= n 1))
-(assert (and (<= n x)(<= x (+ n 5))))
-(assert (and (<= 1 y)(<= y m)))
-
-(get-abduct A (not (< x y)))
+++ /dev/null
-; COMMAND-LINE: --produce-abducts --sygus-core-connective
-; SCRUBBER: grep -v -E '(\(define-fun)'
-; EXIT: 0
-(set-logic QF_LIA)
-(set-option :produce-abducts true)
-(declare-fun x () Int)
-(declare-fun y () Int)
-(declare-fun z () Int)
-(declare-fun w () Int)
-(declare-fun u () Int)
-(declare-fun v () Int)
-(assert (>= x 0))
-(get-abduct A (>= (+ x y z w u v) 2))
+++ /dev/null
-; COMMAND-LINE: --produce-abducts
-; SCRUBBER: grep -v -E '(\(define-fun)'
-; EXIT: 0
-
-(set-logic UF)
-(set-option :produce-abducts true)
-(declare-const A Bool)
-(declare-const B Bool)
-(declare-const C Bool)
-(assert (=> A C))
-(get-abduct D (=> A B))
+++ /dev/null
-; COMMAND-LINE: --produce-abducts --sygus-core-connective
-; SCRUBBER: grep -v -E '(\(define-fun)'
-; EXIT: 0
-
-
-(set-info :smt-lib-version |2.6|)
-(set-logic QF_SLIA)
-(set-info :source |
-Generated by: Andrew Reynolds
-Generated on: 2018-04-25
-Generator: Kudzu, converted to v2.6 by CVC4
-Application: Symbolic Execution of Javascript
-Target solver: Kaluza
-Publications: "A symbolic execution framework for JavaScript" by P. Saxena, D. Akhawe, S. Hanna, F. Mao, S. McCamant, and D. Song, 2010.
-|)
-(set-info :license |"https://creativecommons.org/licenses/by/4.0/"|)
-(set-info :category |"industrial"|)
-(set-info :status unknown)
-(declare-fun T_1 () Bool)
-(declare-fun T_10 () Bool)
-(declare-fun T_11 () Bool)
-(declare-fun T_12 () Bool)
-(declare-fun T_13 () Bool)
-(declare-fun T_14 () Bool)
-(declare-fun T_2 () Bool)
-(declare-fun T_3 () Bool)
-(declare-fun T_4 () Bool)
-(declare-fun T_5 () Bool)
-(declare-fun T_6 () Bool)
-(declare-fun T_7 () Bool)
-(declare-fun T_8 () Bool)
-(declare-fun T_9 () Bool)
-(declare-fun T_a () Bool)
-(declare-fun T_b () Bool)
-(declare-fun T_c () Bool)
-(declare-fun T_d () Bool)
-(declare-fun T_e () Bool)
-(declare-fun T_f () Bool)
-(declare-fun var_0xINPUT_245549 () String)
-(assert (= T_1 (not (= "6JX7G3VKFq" var_0xINPUT_245549))))
-(assert T_1)
-(assert (= T_2 (not (= "" var_0xINPUT_245549))))
-(assert T_2)
-(assert (= T_3 (not (= var_0xINPUT_245549 ""))))
-(assert T_3)
-(assert (= T_4 (not (= "" var_0xINPUT_245549))))
-(assert T_4)
-(assert (= T_5 (= var_0xINPUT_245549 "")))
-(assert (= T_6 (not T_5)))
-(assert T_6)
-(assert (= T_7 (not (= "" var_0xINPUT_245549))))
-(assert T_7)
-(assert (= T_8 (not (= "" var_0xINPUT_245549))))
-(assert T_8)
-(assert (= T_9 (not (= var_0xINPUT_245549 ""))))
-(assert T_9)
-(assert (= T_a (= var_0xINPUT_245549 "")))
-(assert (= T_b (not T_a)))
-(assert T_b)
-(assert (= T_c (not (= "" var_0xINPUT_245549))))
-(assert T_c)
-(assert (= T_d (not (= var_0xINPUT_245549 ""))))
-(assert T_d)
-(assert (= T_e (not (= "" var_0xINPUT_245549))))
-(assert T_e)
-(assert (= T_f (= var_0xINPUT_245549 "")))
-(assert (= T_10 (not T_f)))
-(assert T_10)
-(assert (= T_11 (not (= "" var_0xINPUT_245549))))
-(assert T_11)
-(assert (= T_12 (= var_0xINPUT_245549 "Example:")))
-(assert (= T_13 (not T_12)))
-(assert T_13)
-(assert (= T_14 (not (= var_0xINPUT_245549 "CQALcCP5TB"))))
-(get-abduct A (not T_14))
+++ /dev/null
-; COMMAND-LINE: --produce-abducts --sygus-core-connective
-; SCRUBBER: grep -v -E '(\(define-fun)'
-; EXIT: 0
-
-(set-info :smt-lib-version |2.6|)
-(set-logic QF_SLIA)
-(set-info :source |
-Generated by: Andrew Reynolds
-Generated on: 2018-04-25
-Generator: Kudzu, converted to v2.6 by CVC4
-Application: Symbolic Execution of Javascript
-Target solver: Kaluza
-Publications: "A symbolic execution framework for JavaScript" by P. Saxena, D. Akhawe, S. Hanna, F. Mao, S. McCamant, and D. Song, 2010.
-|)
-(set-info :license |"https://creativecommons.org/licenses/by/4.0/"|)
-(set-info :category |"industrial"|)
-(set-info :status unknown)
-(declare-fun I0_2 () Int)
-(declare-fun I1_2 () Int)
-(declare-fun I2_2 () Int)
-(declare-fun PCTEMP_LHS_1 () String)
-(declare-fun T1_2 () String)
-(declare-fun T2_2 () String)
-(declare-fun T3_2 () String)
-(declare-fun T_2 () Bool)
-(declare-fun T_4 () Bool)
-(declare-fun T_5 () Bool)
-(declare-fun var_0xINPUT_19 () String)
-(assert (= I0_2 (- 5 0)))
-(assert (<= 0 0))
-(assert (<= 0 5))
-(assert (<= 5 I1_2))
-(assert (= I2_2 I1_2))
-(assert (= I0_2 (str.len PCTEMP_LHS_1)))
-(assert (= var_0xINPUT_19 ( str.++ T1_2 T2_2 )))
-(assert (= T2_2 ( str.++ PCTEMP_LHS_1 T3_2 )))
-(assert (= 0 (str.len T1_2)))
-(assert (= I1_2 (str.len var_0xINPUT_19)))
-(assert (= T_2 (= PCTEMP_LHS_1 "Hello")))
-(assert T_2)
-(assert (= T_4 (= PCTEMP_LHS_1 "hello")))
-(assert (= T_5 (not T_4)))
-(get-abduct A T_5)
+++ /dev/null
-; COMMAND-LINE: --produce-abducts
-; EXPECT: none
-(set-logic ALL)
-(assert (= 0.0 (sqrt 1.0)))
-(get-abduct A false)
+++ /dev/null
-; COMMAND-LINE: --produce-abducts
-; SCRUBBER: grep -v -E '(\(define-fun)'
-; EXIT: 0
-(set-logic HO_UFLIA)
-(declare-fun f (Int) Int)
-(declare-fun a () Int)
-(assert (and (<= 0 a) (< a 4)))
-(get-abduct ensureF (or (> (f 0) 0) (> (f 1) 0) (> (f 2) 0) (> (f 3) 0)))
+++ /dev/null
-; COMMAND-LINE: --produce-abducts
-; EXPECT: (define-fun A () Bool (>= j i))
-(set-logic QF_LIA)
-(set-option :produce-abducts true)
-(declare-fun n () Int)
-(declare-fun m () Int)
-(declare-fun i () Int)
-(declare-fun j () Int)
-(assert (and (>= n 0) (>= m 0)))
-(assert (< n i))
-(assert (< (+ i j) m))
-(get-abduct A
- (<= n m)
- ((GA Bool) (GJ Int) (GI Int))
- (
- (GA Bool ((>= GJ GI)))
- (GJ Int ( j))
- (GI Int ( i))
- )
-)