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

(theory Ints)

(sort Unit)

(fun v (-> Int Int Unit))
(fun return (-> Int Unit))
(fun u (-> Int Int Unit))
(fun sum1 (-> Int Unit))

(rule (v n s) (return s) :guard (not (>= n 0)))
(rule (v n s) (v (- n 1) (+ s n)) :guard (>= n 0))
(rule (u n s) (v n s) :guard (not (< n 0)))
(rule (u n s) (return 0) :guard (< n 0))
(rule (sum1 n) (u n 0))
