; @author Jonas Schöpf ; @doi 10.1007/978-3-642-40885-4_24 ; Example 15 (format LCTRS :smtlib 2.6) (theory Ints) (fun eval1 (-> Int Int Int)) (fun eval2 (-> Int Int Int)) (fun eval3 (-> Int Int Int)) (rule (eval1 x y) (eval2 x y) :guard (and (and (> x 0) (> y 0)) (> x y))) (rule (eval1 x y) (eval3 x y) :guard (and (and (> x 0) (> y 0)) (not (> x y)))) (rule (eval2 x y) (eval2 (+ x -1) (+ y 1)) :guard (> x 0)) (rule (eval2 x y) (eval1 x y) :guard (not (> x 0))) (rule (eval3 x y) (eval3 (+ x 1) (+ y -1)) :guard (> y 0)) (rule (eval3 x y) (eval1 x y) :guard (not (> y 0)))