; @author Jonas Schöpf
; Ctrl example from examples/student/sum04.ctrs
(format LCTRS :smtlib 2.6)
(theory Ints)
(fun return (-> Int Int))
(fun sum1 (-> Int Int))
(fun u (-> Int Int Int Int))

(rule (sum1 n) (u n 1 0) :var ((n Int)))
(rule (u n i k) (u n (+ i 1) (+ k i)) :guard (<= i n) :var ((n Int) (i Int) (k Int)))
(rule (u n i k) (return k) :guard (not (<= i n)) :var ((n Int) (i Int) (k Int)))