Package: z3
Version: 4.4.1-0.2

Hello, executing z3 on arm64 on the attached file produces a Segmentation
fault, while it works fine on amd64. I didn't check any other architectures.

z3 -smt2 gauss-Gauss-WP_parameter_gauss.smt2 
Segmentation fault

-Ralf.
;;; generated by SMT-LIB2 driver
;;; SMT-LIB2 driver: bit-vectors, common part
;;; SMT-LIB2: integer arithmetic
(declare-sort uni 0)

(declare-sort ty 0)

(declare-fun sort (ty uni) Bool)

(declare-fun witness (ty) uni)

;; witness_sort
  (assert (forall ((a ty)) (sort a (witness a))))

(declare-fun int () ty)

(declare-fun real () ty)

(declare-fun bool () ty)

(declare-fun match_bool (ty Bool uni uni) uni)

;; match_bool_sort
  (assert
  (forall ((a ty))
  (forall ((x Bool) (x1 uni) (x2 uni)) (sort a (match_bool a x x1 x2)))))

;; match_bool_True
  (assert
  (forall ((a ty))
  (forall ((z uni) (z1 uni)) (=> (sort a z) (= (match_bool a true z z1) z)))))

;; match_bool_False
  (assert
  (forall ((a ty))
  (forall ((z uni) (z1 uni))
  (=> (sort a z1) (= (match_bool a false z z1) z1)))))

(declare-fun index_bool (Bool) Int)

;; index_bool_True
  (assert (= (index_bool true) 0))

;; index_bool_False
  (assert (= (index_bool false) 1))

;; bool_inversion
  (assert (forall ((u Bool)) (or (= u true) (= u false))))

(declare-sort tuple0 0)

(declare-fun tuple01 () ty)

(declare-fun Tuple0 () tuple0)

;; tuple0_inversion
  (assert (forall ((u tuple0)) (= u Tuple0)))

;; CompatOrderMult
  (assert
  (forall ((x Int) (y Int) (z Int))
  (=> (<= x y) (=> (<= 0 z) (<= (* x z) (* y z))))))

(declare-fun ref (ty) ty)

(declare-fun mk_ref (ty uni) uni)

;; mk ref_sort
  (assert (forall ((a ty)) (forall ((x uni)) (sort (ref a) (mk_ref a x)))))

(declare-fun contents (ty uni) uni)

;; contents_sort
  (assert (forall ((a ty)) (forall ((x uni)) (sort a (contents a x)))))

;; contents_def
  (assert
  (forall ((a ty))
  (forall ((u uni)) (=> (sort a u) (= (contents a (mk_ref a u)) u)))))

;; ref_inversion
  (assert
  (forall ((a ty))
  (forall ((u uni)) (=> (sort (ref a) u) (= u (mk_ref a (contents a u)))))))

(assert
;; WP_parameter_gauss
 ;; File "debian/tests/why/gauss.mlw", line 6, characters 8-13
  (not
  (forall ((y Int))
  (=> (< 0 y)
  (and (and (<= 0 y) (= (* 2 0) (* 0 (+ 0 1))))
  (forall ((z Int) (x Int))
  (=> (and (<= z y) (= (* 2 x) (* z (+ z 1))))
  (ite (< z y)
  (forall ((z1 Int))
  (=> (= z1 (+ z 1))
  (forall ((x1 Int))
  (=> (= x1 (+ x z1))
  (and (and (<= z1 y) (= (* 2 x1) (* z1 (+ z1 1))))
  (and (<= 0 (- y z)) (< (- y z1) (- y z)))))))) (= (* 2 x) (* y (+ y 
1)))))))))))
(check-sat)

Reply via email to