-
Notifications
You must be signed in to change notification settings - Fork 19
Description
For certain SMT problems interpolation seems to produce different outputs for the interpolation.
Particularly, for the following interpolation construction:
A: (or (and (= 1 (+ |x#3##0| (* -1 |x#3##1|))) (= 0 (+ |x#2##0| (* -1 |x#2##1|))) (<= 0 |x#3##1|)) (and (= 0 (+ |x#2##1| (* -1 |x#3##1|))) (= 1 (+ |x#2##0| (* -1 |x#3##1|))) (<= 0 (* -1 |x#3##0|)) (<= 1 |x#3##1|)))
B: (and (not (or (not (or (and (not (<= 1 |x#3##1|)) (<= 0 (* -1 |x#3##1|)) (<= 2 |x#2##1|)) (and (<= 1 |x#3##1|) (not (<= 0 (* -1 |x#3##1|))) (<= 1 (+ (* -1 |x#2##1|) |x#3##1|)) (not (<= 3 |x#3##1|))) (and (not (<= 0 (+ |x#2##1| (* -1 |x#3##1|)))) (not (<= 0 (* -1 |x#3##1|))) (<= 2 |x#2##1|) (<= 3 |x#3##1|) (<= -2 (* -1 |x#2##1|)) (<= -2 (+ |x#2##1| (* -1 |x#3##1|)))) (and (<= 1 |x#3##1|) (not (<= 0 (* -1 |x#3##1|))) (<= 2 (+ |x#2##1| (* -1 |x#3##1|)))) (and (not (<= 0 (+ |x#2##1| (* -1 |x#3##1|)))) (not (<= 0 (* -1 |x#3##1|))) (<= 2 |x#2##1|) (<= 1 (+ (* -1 |x#2##1|) |x#3##1|)) (<= -2 (+ |x#2##1| (* -1 |x#3##1|)))) (and (<= 1 |x#2##1|) (not (<= 0 (+ |x#2##1| (* -1 |x#3##1|)))) (not (<= 0 (* -1 |x#3##1|))) (<= 3 |x#3##1|) (<= 2 (+ (* -1 |x#2##1|) |x#3##1|))))) (and (<= 1 |x#3##1|) (<= -1 (* -1 |x#3##1|)) (= (+ |x#2##1| (* -1 |x#3##1|)) 4) (or (and (<= 0 (+ |x#2##1| (* -1 |x#3##1|))) (not (<= 0 (* -1 |x#3##1|))) (<= 2 |x#3##1|) (not (<= 1 (+ (* -1 |x#2##1|) |x#3##1|))) (not (<= 2 (+ |x#2##1| (* -1 |x#3##1|)))) (<= -2 (+ |x#2##1| (* |x#3##1| -2))) (<= 1 (+ (* -1 |x#2##1|) (* |x#3##1| 2)))) (and (not (<= 0 (* -1 |x#3##1|))) (<= 2 |x#2##1|) (<= 1 (+ (* -1 |x#2##1|) |x#3##1|)) (<= 3 |x#3##1|) (not (<= 2 (+ |x#2##1| (* -1 |x#3##1|)))) (not (<= 2 (+ (* -1 |x#2##1|) |x#3##1|))) (<= -1 (+ |x#2##1| (* -1 |x#3##1|)))) (and (not (<= 0 (* -1 |x#3##1|))) (<= 2 |x#2##1|) (<= 3 |x#3##1|) (not (<= 2 (+ |x#2##1| (* -1 |x#3##1|)))) (<= -2 (* -1 |x#2##1|))) (and (<= 1 |x#2##1|) (not (<= 0 (* -1 |x#3##1|))) (not (<= 2 |x#2##1|)) (<= 1 (+ (* -1 |x#2##1|) |x#3##1|)) (not (<= 2 (+ |x#2##1| (* -1 |x#3##1|)))) (<= -2 (+ |x#2##1| (* -1 |x#3##1|))) (not (<= 2 (+ (* -1 |x#2##1|) |x#3##1|)))) (and (not (<= 0 (+ |x#2##1| (* -1 |x#3##1|)))) (not (<= 0 (* -1 |x#3##1|))) (<= 3 |x#3##1|) (<= 2 (+ (* -1 |x#2##1|) |x#3##1|)) (<= 3 |x#2##1|)) (and (not (<= 1 |x#2##1|)) (not (<= 0 (* -1 |x#3##1|))) (<= 3 |x#3##1|) (<= -3 (* -1 |x#3##1|)) (<= 1 (* -1 |x#2##1|))) (and (<= 0 (+ |x#2##1| (* -1 |x#3##1|))) (not (<= 0 (* -1 |x#3##1|))) (<= 3 |x#3##1|) (not (<= 2 (+ |x#2##1| (* -1 |x#3##1|))))) (and (not (<= 0 (* -1 |x#3##1|))) (not (<= 2 |x#2##1|)) (<= -4 (+ |x#2##1| (* -1 |x#3##1|))) (<= 4 (+ (* -1 |x#2##1|) |x#3##1|)) (<= -1 |x#2##1|)) (and (not (<= 1 |x#2##1|)) (not (<= 0 (* -1 |x#3##1|))) (<= 3 |x#3##1|) (<= 4 (+ (* -1 |x#2##1|) |x#3##1|))) (and (not (<= 0 (* -1 |x#3##1|))) (not (<= 2 |x#2##1|)) (<= 3 |x#3##1|) (<= 4 (+ (* -1 |x#2##1|) |x#3##1|))) (and (<= 1 |x#2##1|) (not (<= 0 (* -1 |x#3##1|))) (not (<= 2 |x#2##1|)) (<= 1 (+ (* -1 |x#2##1|) |x#3##1|)) (<= 3 |x#3##1|) (not (<= 2 (+ |x#2##1| (* -1 |x#3##1|)))) (<= -2 (+ |x#2##1| (* -1 |x#3##1|)))) (and (not (<= 1 |x#2##1|)) (not (<= 0 (* -1 |x#3##1|))) (<= 1 (+ (* -1 |x#2##1|) |x#3##1|)) (<= 3 |x#3##1|) (<= -3 (* -1 |x#3##1|)) (not (<= 2 (+ |x#2##1| (* -1 |x#3##1|)))) (<= 0 (* -1 |x#2##1|))) (and (not (<= 0 (* -1 |x#3##1|))) (not (<= 2 |x#2##1|)) (<= 3 |x#3##1|) (not (<= 2 (+ |x#2##1| (* -1 |x#3##1|)))) (<= 2 (+ (* -1 |x#2##1|) |x#3##1|))) (and (not (<= 0 (* -1 |x#3##1|))) (not (<= 1 (+ (* -1 |x#2##1|) |x#3##1|))) (<= 2 (+ |x#2##1| (* -1 |x#3##1|)))) (and (not (<= 1 |x#2##1|)) (not (<= 0 (* -1 |x#3##1|))) (<= 1 (+ (* -1 |x#2##1|) |x#3##1|)) (not (<= 3 |x#3##1|)) (not (<= 2 (+ |x#2##1| (* -1 |x#3##1|))))) (and (not (<= 0 (* -1 |x#3##1|))) (<= 1 (+ |x#2##1| (* -1 |x#3##1|))) (not (<= 1 (+ (* -1 |x#2##1|) |x#3##1|))) (not (<= 2 (+ |x#2##1| (* -1 |x#3##1|)))) (<= 0 (+ (* -1 |x#2##1|) (* |x#3##1| 2))) (<= 0 (+ |x#2##1| (* |x#3##1| -2)))))))) (not (or (and (<= 2 |x#2##0|) (<= 1 |x#3##0|) (<= -1 (* -1 |x#3##0|))) (and (<= 1 (+ |x#2##0| (* -1 |x#3##0|))) (<= 3 |x#3##0|)) (and (<= 2 |x#2##0|) (<= -2 (* -1 |x#2##0|)) (<= 2 (+ (* -1 |x#2##0|) |x#3##0|)) (<= 4 |x#3##0|) (<= -3 (+ |x#2##0| (* -1 |x#3##0|)))) (and (<= 2 |x#3##0|) (<= 1 (+ |x#2##0| (* -1 |x#3##0|))) (<= -2 (+ (* -1 |x#2##0|) |x#3##0|))) (and (<= 2 (+ (* -1 |x#2##0|) |x#3##0|)) (<= 3 |x#3##0|) (<= -3 (* -1 |x#3##0|))) (and (<= 2 |x#3##0|) (<= 4 (+ |x#2##0| (* -1 |x#3##0|)))) (and (<= 2 |x#3##0|) (<= 2 (+ (* -1 |x#2##0|) |x#3##0|)) (<= -3 (* -1 |x#3##0|))) (and (<= 1 |x#2##0|) (<= 4 |x#3##0|) (<= 3 (+ (* -1 |x#2##0|) |x#3##0|))) (and (<= 2 |x#2##0|) (<= 2 (+ (* -1 |x#2##0|) |x#3##0|)) (<= 3 |x#3##0|) (<= -3 (+ |x#2##0| (* -1 |x#3##0|)))))))
getInterpolationContext returns different interpolants.