This makes some of our regressions compliant for arithmetic subtyping. This is required to make these benchmarks parsable when subtyping is eliminated.
We should discuss whether we should be permissive for such benchmarks. Regardless, the majority of our regressions should be SMT-LIB compliant.
; Even though `n` is an integer, this would be UNSAT for real `n`, so the integrality can be ignored.
(assert
(and
- (>= (+ x n) 1)
+ (>= (+ x (to_real n)) 1.0)
(<= n 0)
- (<= x 0)
+ (<= x 0.0)
)
)
(assert (= x y))
(assert (= x (- 2.5 y)))
-(assert (>= (+ i j) x))
-(assert (<= j (+ x 0.5)))
+(assert (>= (to_real (+ i j)) x))
+(assert (<= (to_real j) (+ x 0.5)))
(assert (<= i 0))
(check-sat)
(set-option :incremental false)
(declare-fun x () Real)
(declare-fun y () Real)
-(check-sat-assuming ( (not (let ((_let_1 (+ x y))) (= (* _let_1 _let_1) (+ (+ (* x x) (* (* 2 x) y)) (* y y))))) ))
+(check-sat-assuming ( (not (let ((_let_1 (+ x y))) (= (* _let_1 _let_1) (+ (+ (* x x) (* (* 2.0 x) y)) (* y y))))) ))
(set-option :incremental false)
(declare-fun a () Real)
(declare-fun b () Real)
-(check-sat-assuming ( (not (= (^ (* a b) 5) (* (* (* (* (* (* (* (* (* b a) a) a) a) b) b) b) b) a))) ))
+(check-sat-assuming ( (not (= (^ (* a b) 5.0) (* (* (* (* (* (* (* (* (* b a) a) a) a) b) b) b) b) a))) ))
(declare-fun v3 () Int)
(declare-fun v5 () Real)
(assert (= (to_real v1) (+ (to_real v3) v5)))
-(assert (< v5 1))
-(assert (> v5 0))
+(assert (< v5 1.0))
+(assert (> v5 0.0))
(check-sat)
(exit)
(set-logic ALL)
(declare-fun a () Real)
-(assert (= (+ 2 (exp (+ 2 a))) 0))
+(assert (= (+ 2.0 (exp (+ 2.0 a))) 0.0))
(set-info :status unsat)
(check-sat)
(set-logic QF_LIRA)
(declare-fun a () Real)
(declare-fun b () Int)
-(assert (>= a (+ a b)))
+(assert (>= a (+ a (to_real b))))
(check-sat)
; EXPECT: unsat
(declare-fun x0 () Real)
(check-sat)
-(assert (<= (* x0 (- 1)) 0))
-(assert (or (>= 0 x0) (> (+ 1.0 x0) (- 12))))
+(assert (<= (* x0 (- 1.0)) 0.0))
+(assert (or (>= 0.0 x0) (> (+ 1.0 x0) (- 12.0))))
(check-sat)
(push)
-(assert (<= x0 (- 13)))
+(assert (<= x0 (- 13.0)))
(check-sat)
(check-sat)
(check-sat)
(declare-fun a () Real)
(declare-fun b () Real)
(declare-fun c () Real)
-(assert (> (+ (/ (- 2) a) (* 8 a)) 0))
-(assert (<= b 0))
-(assert (= (+ (* 4 a) (* 2 b)) 1))
-(assert (>= (* b c) 0))
+(assert (> (+ (/ (- 2.0) a) (* 8.0 a)) 0.0))
+(assert (<= b 0.0))
+(assert (= (+ (* 4.0 a) (* 2.0 b)) 1.0))
+(assert (>= (* b c) 0.0))
(check-sat)
(check-sat)
(check-sat)
(push)
(check-sat)
(pop)
-(assert (>= c 1))
+(assert (>= c 1.0))
(check-sat)
(declare-fun a () Real)
(declare-fun b () Real)
(assert (<= b 0.25))
-(assert (= (- b a) 3))
-(assert (or (> (* 2 b) 0) (= (/ 1 b) 3)))
+(assert (= (- b a) 3.0))
+(assert (or (> (* 2 b) 0.0) (= (/ 1.0 b) 3.0)))
(check-sat)
(push)
(check-sat)
(pop)
-(assert (>= (* 3 a) 1))
-(check-sat)
\ No newline at end of file
+(assert (>= (* 3.0 a) 1.0))
+(check-sat)
(set-logic ALL)
(declare-fun a () Real)
(declare-fun b () Real)
-(assert (distinct b 0))
-(assert (= b 2))
-(assert (= (/ 0 a) 1))
+(assert (distinct b 0.0))
+(assert (= b 2.0))
+(assert (= (/ 0.0 a) 1.0))
(check-sat)
-(assert (= (+ a b) 0))
-(check-sat-assuming ((> b 1)))
+(assert (= (+ a b) 0.0))
+(check-sat-assuming ((> b 1.0)))
(check-sat)
(declare-fun y () Real)
(declare-fun f (Real) Real)
(assert (=> (> x y) (> (f x) (f y))))
-(assert (= x 3))
-(assert (= y 2))
+(assert (= x 3.0))
+(assert (= y 2.0))
(check-sat-assuming ( (not (> (f x) (f y))) ))
(declare-const result (Pair Real Bool))
(assert (= l1 (Node l2 5.0 l2)))
(assert (= result (SumeAndPositiveTree l1)))
-(assert (= (first result) 5))
+(assert (= (first result) 5.0))
(assert (= (second result) true))
(check-sat)
(declare-fun $$rtu (Real) $$unsorted)
(declare-fun $$utr ($$unsorted) Real)
(declare-fun p ($$unsorted) Bool)
-(assert (and (= ($$utr ($$rtu 12)) 12) (= ($$utr ($$rtu (/ 41 152))) (/ 41 152)) ))
+(assert (and (= ($$utr ($$rtu 12.0)) 12.0) (= ($$utr ($$rtu (/ 41 152))) (/ 41 152)) ))
(assert (forall ((x $$unsorted)) (p x)))
(check-sat)
(declare-fun b () (_ BitVec 1))
(declare-fun c () (_ BitVec 8))
(declare-fun d () (_ BitVec 23))
-(assert (= 0 (fp.to_real (fp b c d))))
+(assert (= 0.0 (fp.to_real (fp b c d))))
(check-sat)
(set-logic QF_FP)
(declare-fun a () RoundingMode)
(declare-fun b () (_ FloatingPoint 8 24))
-(assert (= b (fp.add a b (fp.add a ((_ to_fp 8 24) a ((_ to_fp 8 24) a 0)) b))))
+(assert (= b (fp.add a b (fp.add a ((_ to_fp 8 24) a ((_ to_fp 8 24) a 0.0)) b))))
(check-sat)
(declare-const X (_ FloatingPoint 8 24))
(declare-const R Real)
(assert (= X ((_ to_fp 8 24) RTZ (- R))))
-(assert (= X ((_ to_fp 8 24) RTZ 0)))
+(assert (= X ((_ to_fp 8 24) RTZ 0.0)))
(set-info :status sat)
(check-sat)
(declare-fun neg_int () Int)
(assert (= pos_int 5))
-(assert (= pos_real_int_value 3))
+(assert (= pos_real_int_value 3.0))
(assert (= pos_rat (/ 1 3)))
-(assert (= zero 0))
+(assert (= zero 0.0))
(assert (= neg_rat (/ (- 2) 3)))
-(assert (= neg_real_int_value (- 2)))
+(assert (= neg_real_int_value (- 2.0)))
(assert (= neg_int (- 6)))
(check-sat)
(set-info :status sat)
(declare-fun r4 () Real)
(declare-fun ufrb5 (Real Real Real Real Real) Bool)
-(assert (ufrb5 0.0 0.0 0.0 0.0 0))
-(assert (ufrb5 (+ r4 r4) 0.0 1 0.0 0.0))
+(assert (ufrb5 0.0 0.0 0.0 0.0 0.0))
+(assert (ufrb5 (+ r4 r4) 0.0 1.0 0.0 0.0))
(check-sat)
; EXPECT: sat
(set-logic ALL)
(declare-fun x () Real)
-(assert (< x 0))
+(assert (< x 0.0))
(assert (not (= (/ (sqrt x) (sqrt x)) x)))
(set-info :status sat)
(check-sat)
; EXPECT: unsat
(set-logic ALL)
(set-info :status unsat)
-(assert (forall ((t Real)) (= 0 (/ t (cos 1.0)))))
+(assert (forall ((t Real)) (= 0.0 (/ t (cos 1.0)))))
(check-sat)
(declare-const x5 Real)
(declare-fun s () Real)
(assert (exists ((S Real)) (= s (sin 1.0))))
-(assert (xor (and (= 0.0 (/ x5 0.0)) (= x (- 0.0 1 (/ 0.0 x))) (= x 1)) x3))
+(assert (xor (and (= 0.0 (/ x5 0.0)) (= x (- 0.0 1.0 (/ 0.0 x))) (= x 1.0)) x3))
(check-sat)
(declare-fun a () Real)
(declare-fun r () Real)
(declare-fun v () Real)
-(assert (and (xor (= a 1.0) x) (= 1 (- v (exp (* r v))))))
+(assert (and (xor (= a 1.0) x) (= 1.0 (- v (exp (* r v))))))
(check-sat)
(set-info :status sat)
(declare-fun a () Real)
(declare-fun b () Real)
-(assert (= a (* b (+ (sin a) (/ 1 a)))))
+(assert (= a (* b (+ (sin a) (/ 1.0 a)))))
(check-sat)
; EXPECT: sat
(set-logic ALL)
(declare-fun v () Real)
-(assert (forall ((V Real)) (> 0 (/ 0.0 v))))
+(assert (forall ((V Real)) (> 0.0 (/ 0.0 v))))
(assert (= 0.0 (* (sin v) (sin 1.0))))
(check-sat)
(set-info :status sat)
(declare-fun v () Real)
(declare-fun a () (Array Real Real))
-(assert (exists ((V Real)) (or (and (= 0 (/ 0 v)) (< 0 (/ 0 v))) (= 1.0 (select (store a (/ (+ 0.0 real.pi) 0.0) 0.0) 0.0)))))
+(assert (exists ((V Real)) (or (and (= 0.0 (/ 0.0 v)) (< 0.0 (/ 0.0 v))) (= 1.0 (select (store a (/ (+ 0.0 real.pi) 0.0) 0.0) 0.0)))))
(check-sat)
(set-info :status unsat)
(declare-fun r8 () Real)
(declare-fun v57 () Bool)
-(assert (and (= 0.0 (exp (exp (+ 1.0 1.0)))) (not (= 0 (* r8 (ite v57 1 0))))))
+(assert (and (= 0.0 (exp (exp (+ 1.0 1.0)))) (not (= 0.0 (* r8 (ite v57 1.0 0.0))))))
(check-sat)
(set-info :status sat)
(declare-fun a () Real)
(declare-fun b () Real)
-(assert (= (* a a) 4))
-(assert (= (* b b) 0))
-(assert (= (+ (* a a) (* b b)) 4))
+(assert (= (* a a) 4.0))
+(assert (= (* b b) 0.0))
+(assert (= (+ (* a a) (* b b)) 4.0))
(check-sat)
(pop)
(push)
-(assert (< x 0))
+(assert (< x 0.0))
(assert (= (sqrt 1.0) (sqrt x)))
(check-sat)
(pop)
(set-logic ALL)
(set-info :status unsat)
(declare-fun x () Real)
-(assert (and (> 0.0 x) (not (= 0.0 (/ 0.0 (* 2 x))))))
+(assert (and (> 0.0 x) (not (= 0.0 (/ 0.0 (* 2.0 x))))))
(check-sat)
(declare-fun c () Int)
(declare-fun d () Int)
(declare-fun e () Int)
-(check-sat-assuming ( (not (let ((_let_1 (- (+ (- (+ a (/ (* 2 b) 3)) (* (/ c 4) 5)) (/ d 6)) e))) (= _let_1 _let_1))) ))
+(check-sat-assuming ( (not (let ((_let_1 (- (+ (- (+ (to_real a) (/ (* 2 b) 3)) (* (/ c 4) 5.0)) (/ d 6)) (to_real e)))) (= _let_1 _let_1))) ))
(set-option :incremental false)
(declare-fun x () Real)
(declare-fun b () Bool)
-(assert (= x (ite b 10 (- 10))))
+(assert (= x (ite b 10.0 (- 10.0))))
(assert b)
(check-sat)
(set-option :incremental false)
(declare-fun x () Real)
(declare-fun y () Real)
-(assert (and (and (and (= 0 (ite true x 1)) (= 0 (ite (= x 0) 0 1))) (= x (ite true y 0))) (= 0 (ite true 0 0))))
+(assert (and (and (and (= 0.0 (ite true x 1.0)) (= 0.0 (ite (= x 0.0) 0.0 1.0))) (= x (ite true y 0.0))) (= 0.0 (ite true 0.0 0.0))))
(check-sat)
(declare-fun x () Real)
(declare-fun y () Real)
(declare-fun b () Bool)
-(assert (= 0 (ite b (- x y) (* 2 x))))
+(assert (= 0.0 (ite b (- x y) (* 2.0 x))))
(check-sat)
(set-logic LIRA)
(set-info :status unsat)
-(assert (forall ((X Real) (Y Real)) (or (not (is_int X)) (not (>= (+ X (* (- (/ 2 3)) Y)) (- (/ 1 6)))) (not (>= (+ (* (- 1) X) (* (- (/ 1 4)) Y)) (- (/ 61 8)))) (not (>= (+ (* (- 1) X) (* (/ 5 2) Y)) 13))) ))
-(check-sat)
\ No newline at end of file
+(assert (forall ((X Real) (Y Real)) (or (not (is_int X)) (not (>= (+ X (* (- (/ 2 3)) Y)) (- (/ 1 6)))) (not (>= (+ (* (- 1.0) X) (* (- (/ 1 4)) Y)) (- (/ 61 8)))) (not (>= (+ (* (- 1.0) X) (* (/ 5 2) Y)) 13.0))) ))
+(check-sat)
(set-option :cegqi-inf-int true)
(set-option :cegqi-inf-real true)
(set-option :var-ineq-elim-quant false)
-(assert (forall (( b Real )) (forall (( c Int )) (and (> c (* b 2 ))))))
+(assert (forall (( b Real )) (forall (( c Int )) (and (> (to_real c) (* b 2.0))))))
(check-sat)
(declare-fun k () Real)
(declare-fun k2 () Int)
(assert (or (not (P (to_int k))) (not (P k2))))
-(assert (= k 0))
+(assert (= k 0.0))
(check-sat)
(set-logic ALL)
(set-info :status unsat)
(declare-fun P (Real) Bool)
-(assert (forall ((x Int)) (P x)))
+(assert (forall ((x Int)) (P (to_real x))))
(declare-fun a () Real)
(assert (is_int a))
; EXPECT: sat
(set-logic LIRA)
(set-info :status sat)
-(assert (forall ((x Real)) (exists ((y Int)) (and (>= y x) (< y (+ x 1))))))
+(assert (forall ((x Real)) (exists ((y Int)) (and (>= (to_real y) x) (< (to_real y) (+ x 1.0))))))
(check-sat)
; ensure that E-matching matches on sub-types
(declare-fun P (Real) Bool)
(assert (forall ((x Real)) (P x)))
-(assert (not (P 5)))
-(check-sat)
\ No newline at end of file
+(assert (not (P 5.0)))
+(check-sat)
(declare-fun y () Real)
(assert (> x 0.0))
(assert (> y 0.0))
-(assert (= (+ (* 2 x) y) 4))
+(assert (= (+ (* 2.0 x) y) 4.0))
(check-sat)
(reset-assertions)
(set-option :incremental false)
(declare-fun x () Real)
(declare-fun f (Real) Real)
-(assert (not (= (f 1) (f x))))
-(assert (not (= (f 0) (f x))))
-(assert (xor (= x 0) (= x 1)))
+(assert (not (= (f 1.0) (f x))))
+(assert (not (= (f 0.0) (f x))))
+(assert (xor (= x 0.0) (= x 1.0)))
(check-sat)
(declare-fun v1 () Int)
(declare-fun v2 () Int)
(declare-fun v3 () Real)
-(assert (= (+ v1 v2) v3))
-(assert (< v3 v2))
-(assert (> v3 (- v2 1)))
+(assert (= (to_real (+ v1 v2)) v3))
+(assert (< v3 (to_real v2)))
+(assert (> v3 (to_real (- v2 1))))
(check-sat)
(exit)
(declare-fun v3 () Int)
(declare-fun v4 () Int)
(declare-fun v5 () Real)
-(assert (= (* v1 v2) (+ (* v3 v4) v5)))
-(assert (< v5 1))
-(assert (> v5 0))
+(assert (= (to_real (* v1 v2)) (+ (to_real (* v3 v4)) v5)))
+(assert (< v5 1.0))
+(assert (> v5 0.0))
(check-sat)
(exit)
(set-info :status unsat)
(declare-fun v1 () Int)
(declare-fun v2 () Real)
-(assert (= (/ v1 2) v2))
+(assert (= (/ (to_real v1) 2.0) v2))
(assert (< v2 (/ 1 2)))
-(assert (> v2 0))
+(assert (> v2 0.0))
(check-sat)
(exit)
(declare-const x Bool)
(declare-fun a () Real)
(declare-fun r () Real)
-(assert (xor (= 0 (/ 0 a)) (and x (= 0.0 (/ r a r)))))
+(assert (xor (= 0.0 (/ 0.0 a)) (and x (= 0.0 (/ r a r)))))
(check-sat)
(assert
(let ((_let_0 (dbz 0.0))) (let ((_let_1 (= b 0.0))) (let ((_let_2 (/ 1.0 a))) (let ((_let_3 (dbz 1.0))) (let ((_let_4 (= a 0.0))) (let ((_let_5 (ite _let_4 _let_3 _let_2))) (let ((_let_6 (/ _let_5 b))) (let ((_let_7 (dbz _let_5))) (let ((_let_8 (dbz (dbz (ite _let_1 _let_7 _let_6))))) (or (>= (* (- 1.0) (ite (= _let_8 0.0) _let_0 (/ 0.0 _let_8))) 0.0) (>= _let_0 0.0)))))))))))
)
-(assert (> a 0))
+(assert (> a 0.0))
(check-sat)
(declare-fun c () Real)
(declare-fun d () Real)
(declare-fun e () Real)
-(assert (exists ((f Real)) (and (or (> (+ d (* (/ (* c e) (- (* c e) e)) f)) 0 (/ 0 a))) (> e 6))))
+(assert (exists ((f Real)) (and (or (> (+ d (* (/ (* c e) (- (* c e) e)) f)) 0.0 (/ 0.0 a))) (> e 6.0))))
(assert (distinct a (/ b e)))
(check-sat)
(assert (>= n 1))
(assert (and (<= 1 x)(<= x n)))
(assert (and (<= 1 y)(<= y n)))
-(assert (or (= (/ (* (- 1) x) n) i1)(= i1 (/ x n))))
-(assert (or (= (/ (* (- 1) y) n) i2)(= i2 (/ y n))))
+(assert (or (= (/ (to_real (* (- 1) x)) (to_real n)) i1)(= i1 (/ (to_real x) (to_real n)))))
+(assert (or (= (/ (to_real (* (- 1) y)) (to_real n)) i2)(= i2 (/ (to_real y) (to_real n)))))
(assert (and (= i1 i11) (= i2 i21) ))
-(assert (not (and (or (= (- 1) i11 )(= i11 1)) (or (= (- 1) i21)(= i21 1)) )))
+(assert (not (and (or (= (- 1.0) i11 )(= i11 1.0)) (or (= (- 1.0) i21)(= i21 1.0)) )))
(check-sat)
(declare-fun g () Real)
(assert (= (* c f c) a (- d f)))
(assert (= d (/ a f)))
-(assert (distinct f 0 (/ b g) g))
+(assert (distinct f 0.0 (/ b g) g))
(check-sat)
(assert
(<
(* a
- (/ 1
- (/ (- 2) a
+ (/ 1.0
+ (/ (- 2.0) a
(- a
(* a
- (mod (to_int a)
+ (to_real (mod (to_int a)
(to_int
(/ a
(* a
- (div (to_int (/ (- 9) 800))
- (to_int (/ a a))))))))))))
+ (to_real (div (to_int (/ (- 9) 800))
+ (to_int (/ a a))))))))))))))
(- a)))
-(assert (<= 0 a))
+(assert (<= 0.0 a))
(check-sat)
(set-logic ALL)
(set-info :status sat)
(declare-const s Real)
-(assert (or (or false (= 0.0 s)) (< (* s (+ 6 (* s 12))) (- 1))))
+(assert (or (or false (= 0.0 s)) (< (* s (+ 6.0 (* s 12.0))) (- 1.0))))
(check-sat)
; EXPECT: sat
(set-logic ALL)
(set-info :status sat)
-(assert (= 1 (* (/ 0 0) (/ 0 0) (/ 1 0))))
+(assert (= 1.0 (* (/ 0.0 0.0) (/ 0.0 0.0) (/ 1.0 0.0))))
(check-sat)
(set-info :status sat)
(declare-const x1 Real)
(declare-fun s () Real)
-(assert (and (> (* x1 s x1) 1) (exists ((x Bool)) (=> (not true) false))))
+(assert (and (> (* x1 s x1) 1.0) (exists ((x Bool)) (=> (not true) false))))
(check-sat)
(set-info :status sat)
(declare-fun s () Real)
(declare-fun k () Real)
-(assert (>= (* s k) 1))
+(assert (>= (* s k) 1.0))
(check-sat)
(declare-fun z () Real)
-(assert (= z (* 2 pi s)))
+(assert (= z (* 2.0 pi (to_real s))))
-(assert (> z 60))
+(assert (> z 60.0))
(check-sat)
(declare-fun z () Real)
-(assert (= z (+ y (* 2 pi s))))
+(assert (= z (+ y (* 2.0 pi (to_real s)))))
(assert (and (< (- pi) z) (< z pi)))
(and
(and
(exists ((?b Real)) (forall ((?c Real)) (exists ((?d Real))
- (or (and (and (and (and (< (+ (+ (+ 0 (* 68.0 ?c)) 0) (* 33.0 a)) 0.0) (<= 0 2.0))
- (or (<= 0 (+ (* (+ (* 55.0 ?d) 0) (* 49.0 ?b)) 0))))))))))
+ (or (and (and (and (and (< (+ (+ (+ 0.0 (* 68.0 ?c)) 0.0) (* 33.0 a)) 0.0) (<= 0.0 2.0))
+ (or (<= 0.0 (+ (* (+ (* 55.0 ?d) 0.0) (* 49.0 ?b)) 0.0))))))))))
)
)
)
(declare-fun b () Real)
(declare-fun c () Real)
(declare-fun e () Real)
-(assert (forall ((d Real)) (and (or (< (/ (* (- a) d) 0) c) (> b 0.0)) (= (= d 0) (= e 0)))))
+(assert (forall ((d Real)) (and (or (< (/ (* (- a) d) 0.0) c) (> b 0.0)) (= (= d 0.0) (= e 0.0)))))
(check-sat)
(set-logic ALL)
(set-info :status unsat)
-(assert (forall ((a Real)) (= (* (to_int (+ a 1)) (to_int a)) 1)))
+(assert (forall ((a Real)) (= (* (to_int (+ a 1.0)) (to_int a)) 1)))
(check-sat)
; EXPECT: sat
(set-logic NIRA)
(set-info :status sat)
-(assert (forall ((a Int) (b Int)) (or (> a 0) (<= a (/ 0 (+ 0.5 b))))))
+(assert (forall ((a Int) (b Int)) (or (> a 0) (<= (to_real a) (/ 0.0 (+ 0.5 (to_real b)))))))
(check-sat)
(set-info :status unsat)
(assert
(forall ((a Int) (b Int))
- (or (< a (/ 3 b (- 2)))
+ (or (< (to_real a) (/ 3.0 (to_real b) (- 2.0)))
(forall ((c Int)) (or (<= c b) (>= c a))))))
(check-sat)
; COMMAND-LINE: --sygus-inst --strings-exp
; EXPECT: unsat
(set-logic ALL)
-(assert (forall ((a Int) (b Int)) (or (> a (/ 0 b)) (exists ((c Int)) (< a c b)))))
+(assert (forall ((a Int) (b Int)) (or (> (to_real a) (/ 0.0 (to_real b))) (exists ((c Int)) (< a c b)))))
(check-sat)
(set-logic ALL)
(set-info :status unsat)
-(assert (forall ((a Real)) (exists ((b Int)) (= (exists ((c Int)) (<= a c (+ a 1))) (and (>= b (/ a (+ a 1))) (< 1 (+ a 1)))))))
+(assert (forall ((a Real)) (exists ((b Int)) (= (exists ((c Int)) (<= a (to_real c) (+ a 1.0))) (and (>= (to_real b) (/ a (+ a 1.0))) (< 1.0 (+ a 1.0)))))))
(check-sat)
(set-info :status unsat)
(declare-fun a () Bool)
(assert (forall ((b Int) (c Bool) (d Int))
-(or (= d (/ 1 (ite c 9 0))) (<= (ite a 1 b) (/ 1 (ite c 9 0))))))
+(or (= (to_real d) (/ 1.0 (ite c 9.0 0.0))) (<= (ite a 1.0 (to_real b)) (/ 1.0 (ite c 9.0 0.0))))))
(check-sat)
(declare-fun i () Int)
(declare-fun i1 () Int)
(assert (< 1.0 (to_real i)))
-(assert (distinct 0 (/ 7 (to_real i))))
+(assert (distinct 0.0 (/ 7.0 (to_real i))))
(push)
(assert (or (exists ((q Int)) (= 0 (* i i1)))))
(check-sat)
(set-info :status sat)
(declare-fun r1 () Real)
(declare-fun r5 () Real)
-(assert (forall ((q102 Int)) (or (= q102 (/ r1 r5)) (= (= 0.0 q102) (< 1.0 (/ r1 r5))))))
+(assert (forall ((q102 Int)) (or (= (to_real q102) (/ r1 r5)) (= (= 0 q102) (< 1.0 (/ r1 r5))))))
(check-sat)
(set-logic ALL)
(declare-const x Bool)
(declare-const x1 Bool)
-(assert (forall ((r Real)) (= x (and x1 (= r 2) (= 0.0 (exp (exp 1.0))) (= 3 (/ (- r) (- r)))))))
+(assert (forall ((r Real)) (= x (and x1 (= r 2.0) (= 0.0 (exp (exp 1.0))) (= 3.0 (/ (- r) (- r)))))))
(check-sat)
; EXPECT: unknown
(set-logic ALL)
(declare-fun e () Real)
-(assert (forall ((x Real)) (distinct (* e e) (+ 1 (* x x (- 1))))))
+(assert (forall ((x Real)) (distinct (* e e) (+ 1.0 (* x x (- 1.0))))))
(check-sat)
(set-logic LIRA)
(set-info :status unsat)
-(assert (forall ((x Int) (y Int) (a Real) (z Int)) (or (> x (+ a (* (/ 2 3) y) (* (/ 4 5) z))) (< x (+ 10 (* 3 a) (* (/ 2 5) y) (* (/ 4 7) z))))))
+(assert (forall ((x Int) (y Int) (a Real) (z Int)) (or (> (to_real x) (+ a (* (/ 2 3) (to_real y)) (* (/ 4 5) (to_real z)))) (< (to_real x) (+ 10.0 (* 3.0 a) (* (/ 2 5) (to_real y)) (* (/ 4 7) (to_real z)))))))
(check-sat)
; COMMAND-LINE: --sygus-inference
(set-logic ALL)
(declare-fun v () Real)
-(assert (= (* v v) 0))
+(assert (= (* v v) 0.0))
(check-sat)
(exit)
; COMMAND-LINE: --sygus-inference
(set-logic ALL)
(declare-fun a () Real)
-(assert (= (* a a) 1))
+(assert (= (* a a) 1.0))
(check-sat)
(exit)
(< (+ a c) 0.0)
(or (distinct a 0.0) (= b 5.0))
(distinct (+ b c) 1.0)
- (< c 1))))))
+ (< c 1.0))))))
(check-sat)
; COMMAND-LINE: --sygus-inference
(set-logic ALL)
(declare-fun a () Real)
-(assert (distinct a (sin 2)))
+(assert (distinct a (sin 2.0)))
(check-sat)
(set-logic ALL)
(declare-fun a () Int)
(declare-fun b () Real)
-(assert (= (/ 1 (to_real a)) b))
+(assert (= (/ 1.0 (to_real a)) b))
(check-sat)
(set-option :sygus-inference true)
(declare-fun a () Real)
(declare-fun b () Real)
-(assert (forall ((c Real)) (or (< c a) (< 0 b))))
+(assert (forall ((c Real)) (or (< c a) (< 0.0 b))))
(check-sat)
(set-logic ALL)
(declare-fun a () Real)
(declare-fun b () Real)
-(assert (forall ((c Real)) (and (xor (> c a) (= b 0)) (distinct (+ a b) 0))))
+(assert (forall ((c Real)) (and (xor (> c a) (= b 0.0)) (distinct (+ a b) 0.0))))
(check-sat)