(meta-info (comment "Ctrl example from examples-transformed/eval.ctrs"))
(format LCTRS :logic QF_LIA)

(fun eval1 2 :sort (Int Int  Unit))
(fun eval2 2 :sort (Int Int  Unit))
(fun eval3 2 :sort (Int Int  Unit))

(rule (eval3  x y) (eval2  (-  x 1) (+  y 1)) :guard (> x 0))
(rule (eval3  x y) (eval3  (+  x 1) (-  y 1)) :guard (> x 0))
(rule (eval2  x y) (eval1  x y) :guard (not (> x 0)))
(rule (eval2  x y) (eval2  (-  x 1) (+  y 1)) :guard (and (> x 0) (>= x 0)))
(rule (eval1  x y) (eval3  x y) :guard (>= y x))
(rule (eval1  x y) (eval2  x y) :guard (and (> x y) (>= x 0)))
