; @author Jonas Schöpf
; Ctrl example from examples/student/sum01.ctrs
(format LCTRS :smtlib 2.6)

(theory Ints)

(sort Result)

(fun return (-> Int Result))
(fun w (-> Int Result Result))
(fun sum (-> Int Result))

(rule (w x (return y)) (return (+ x y)))
(rule (sum x) (w x (sum (- x 1))) :guard (<= 0 (- x 1)))
(rule (sum x) (return 0) :guard (<= x 0))
