; @author Naoki Nishida
; @cops 826
(format CTRS oriented :problem infeasibility)
(fun 0 0)
(fun app 2)
(fun cons 2)
(fun empty 1)
(fun f 2)
(fun false 0)
(fun fstsplit 2)
(fun head 1)
(fun length 1)
(fun leq 2)
(fun map_f 2)
(fun nil 0)
(fun ring 6)
(fun s 1)
(fun sndsplit 2)
(fun tail 1)
(fun three 0)
(fun true 0)
(fun two 0)
(rule (fstsplit 0 x) nil)
(rule (fstsplit (s n) nil) nil)
(rule (fstsplit (s n) (cons h t)) (cons h (fstsplit n t)))
(rule (sndsplit 0 x) x)
(rule (sndsplit (s n) nil) nil)
(rule (sndsplit (s n) (cons h t)) (sndsplit n t))
(rule (empty nil) true)
(rule (empty (cons h t)) false)
(rule (leq 0 m) true)
(rule (leq (s n) 0) false)
(rule (leq (s n) (s m)) (leq n m))
(rule (length nil) 0)
(rule (length (cons h t)) (s (length t)))
(rule (app nil x) x)
(rule (app (cons h t) x) (cons h (app t x)))
(rule (map_f pid nil) nil)
(rule (map_f pid (cons h t)) (app (f pid h) (map_f pid t)))
(rule (head (cons h t)) h)
(rule (tail (cons h t)) t)
(rule (ring st_1 in_2 st_2 in_3 st_3 m) (ring (sndsplit m st_1) (cons (fstsplit m st_1) in_2) st_2 in_3 st_3 m) (= (empty (fstsplit m st_1)) false))
(rule (ring st_1 in_2 st_2 in_3 st_3 m) (ring st_1 in_2 (sndsplit m st_2) (cons (fstsplit m st_2) in_3) st_3 m) (= (leq m (length st_2)) true) (= (empty (fstsplit m st_2)) false))
(rule (ring st_1 in_2 st_2 in_3 st_3 m) (ring st_1 (tail in_2) (sndsplit m (app (map_f two (head in_2)) st_2)) (cons (fstsplit m (app (map_f two (head in_2)) st_2)) in_3) st_3 m) (= (leq m (length st_2)) false) (= (empty (fstsplit m (app (map_f two (head in_2)) st_2))) false))
(rule (ring st_1 in_2 st_2 in_3 st_3 m) (ring st_1 (tail in_2) st_2 in_3 st_3 m) (= (empty (map_f two (head in_2))) true))
(rule (ring st_1 in_2 st_2 in_3 st_3 m) (ring st_1 in_2 st_2 in_3 (sndsplit m st_3) m) (= (leq m (length st_3)) true) (= (empty (fstsplit m st_3)) false))
(rule (ring st_1 in_2 st_2 in_3 st_3 m) (ring st_1 in_2 st_2 (tail in_3) (sndsplit m (app (map_f three (head in_3)) st_3)) m) (= (leq m (length st_3)) false) (= (empty (fstsplit m (app (map_f three (head in_3)) st_3))) false))
(rule (ring st_1 in_2 st_2 in_3 st_3 m) (ring st_1 in_2 st_2 (tail in_3) st_3 m) (= (empty (map_f three (head in_3))) true))
(infeasible? (= (leq x6 (length x3)) true) (= (empty (fstsplit x6 x3)) false) (= (leq x6 (length x3)) false) (= (empty (fstsplit x6 (app (map_f two (head x2)) x3))) false))