; @author Jonas Schöpf
; Ctrl example from examples/sum_decl.ctrs
(format LCTRS :smtlib 2.6)
(theory Ints)
(fun sum3 (-> Int Int Int))
(fun u_3 (-> Int Int Int))
(fun sum_decl (-> Int Int))
(fun sum (-> Int Int))

(rule (sum3 x n) (+ n (sum3 x (+ n 1))) :guard (>= x n))
(rule (sum3 x n) 0 :guard (< x n))
(rule (u_3 z i) z :guard (<= i 0))
(rule (u_3 z i) (u_3 (+ z i) (- i 1)) :guard (> i 0))
(rule (sum_decl x) (u_3 0 x))
(rule (sum x) (+ x (sum (- x 1))) :guard (<= 0 (- x 1)))
(rule (sum x) 0 :guard (<= x 0))
