; @author Naoki Nishida
; @cops 894
(format CTRS oriented :problem infeasibility)
(fun 0 0)
(fun add 2)
(fun div 2)
(fun false 0)
(fun lte 2)
(fun minus 2)
(fun mod 2)
(fun mult 2)
(fun power 2)
(fun s 1)
(fun true 0)
(rule (add 0 x) x)
(rule (add (s x) y) (s (add x y)))
(rule (mult 0 y) 0)
(rule (mult (s x) y) (add (mult x y) y))
(rule (lte 0 y) true)
(rule (lte (s x) 0) false)
(rule (lte (s x) (s y)) (lte x y))
(rule (minus 0 (s y)) 0)
(rule (minus x 0) x)
(rule (minus (s x) (s y)) (minus x y))
(rule (mod 0 y) 0)
(rule (mod x 0) x)
(rule (mod x (s y)) (mod (minus x (s y)) (s y)) (= (lte (s y) x) true))
(rule (mod x (s y)) x (= (lte (s y) x) false))
(rule (div 0 (s x)) 0)
(rule (div (s x) (s y)) 0 (= (lte (s x) y) true))
(rule (div (s x) (s y)) (s q) (= (lte (s x) y) false) (= (div (minus x y) (s y)) q))
(rule (power x 0) (s 0))
(rule (power x n) (mult (mult y y) (s 0)) (= (mod n (s (s 0))) 0) (= (power x (div n (s (s 0)))) y))
(rule (power x n) (mult (mult y y) x) (= (mod n (s (s 0))) (s z)) (= (power x (div n (s (s 0)))) y))
(infeasible? (= (mod x3 (s (s 0))) 0) (= (power x2 (div x3 (s (s 0)))) y) (= (mod x3 (s (s 0))) (s x1)) (= (power x2 (div x3 (s (s 0)))) x4))