(set-option :verbose true)
(set-option :use_locals)
(declare-const m Int)
(declare-const n Int)
(declare-const p Int)

(assert (= 1 2))
(assert (= m (- m)))
(assert (= m (- m n)))
(assert (= (+ m m) (+ m m m) (+ m m m m)))
(assert (= (* m m) (* m m m) (* m m m m)))
(assert (= (mod m n) (div n p)))
(assert (= m (abs m)))
(assert (< m n))
(assert (< m n p))
(assert (< m n p p))
(assert (<= m n))
(assert (<= m n p))
(assert (<= m n p p))
(assert (> m n))
(assert (> m n p))
(assert (> m n p p))
(assert (>= m n))
(assert (>= m n p))
(assert (>= m n p p))

(declare-const x Real)
(declare-const y Real)
(declare-const z Real)

(assert (= 1.0 2.0))
(assert (= x (- x)))
(assert (= x (- x y)))
(assert (= (+ x x) (+ x x x) (+ x x x x)))
(assert (= (* x x) (* x x x) (* x x x x)))
(assert (= (/ x y) z))
(assert (< x y))
(assert (< x y z))
(assert (< x y z z))
(assert (<= x y))
(assert (<= x y z))
(assert (<= x y z z))
(assert (> x y))
(assert (> x y z))
(assert (> x y z z))
(assert (>= x y))
(assert (>= x y z))
(assert (>= x y z z))

(assert (= (to_real (+ m n)) (+ x y)))
(assert (is_int x))
(assert (= (to_int (+ x y)) (+ m n)))
