We consider termination of the LCSTRS with only rule scheme Calc: Signature: cons :: A -> list -> list nil :: list skip :: Int -> list -> list skipfold :: (A -> B -> B) -> B -> Int -> list -> B zip :: list -> list -> list Rules: skip(k, nil) -> nil | k = k skip(k, ys) -> ys | k <= 0 skip(k, cons(x, ys)) -> skip(k - 1, ys) | k > 0 skipfold(F, n, k, nil) -> n | k = k skipfold(F, n, k, cons(x, ys)) -> F(x, skipfold(F, n, k, skip(k - 1, ys))) | k = k zip(nil, ys) -> ys zip(cons(x, xs), ys) -> cons(x, zip(ys, xs)) The system is accessible function passing by a sort ordering that equates all sorts. We start by computing the initial DP problem D1 = (P1, R, i, c), where: P1. (1) skip#(k, cons(x, ys)) => skip#(k - 1, ys) | k > 0 (2) skipfold#(F, n, k, cons(x, ys)) => skip#(k - 1, ys) | k = k (3) skipfold#(F, n, k, cons(x, ys)) => skipfold#(F, n, k, skip(k - 1, ys)) | k = k (4) zip#(cons(x, xs), ys) => zip#(ys, xs) ***** We apply the Graph Processor on D1 = (P1, R, i, c). We compute a graph approximation with the following edges: 1: 1 2: 1 3: 2 3 4: 4 There are 3 SCCs. Processor output: { D2 = (P2, R, i, c) ; D3 = (P3, R, i, c) ; D4 = (P4, R, i, c) }, where: P2. (1) skip#(k, cons(x, ys)) => skip#(k - 1, ys) | k > 0 P3. (1) skipfold#(F, n, k, cons(x, ys)) => skipfold#(F, n, k, skip(k - 1, ys)) | k = k P4. (1) zip#(cons(x, xs), ys) => zip#(ys, xs) ***** We apply the Subterm Criterion Processor on D2 = (P2, R, i, c). We use the following projection function: nu(skip#) = 2 We thus have: (1) cons(x, ys) |>| ys All DPs are strictly oriented, and may be removed. Hence, this DP problem is finite. Processor output: { }. ***** We apply the Usable Rules Processor on D3 = (P3, R, i, c). We obtain 3 usable rules (out of 7 rules in the input problem). Processor output: { D5 = (P3, R2, i, c) }, where: R2. (1) skip(k, nil) -> nil | k = k (2) skip(k, ys) -> ys | k <= 0 (3) skip(k, cons(x, ys)) -> skip(k - 1, ys) | k > 0 ***** We apply the Usable Rules Processor on D4 = (P4, R, i, c). We obtain 0 usable rules (out of 7 rules in the input problem). Processor output: { D6 = (P4, {}, i, c) }. ***** We apply the Reduction Pair [with HORPO] Processor on D5 = (P3, R2, i, c). Constrained HORPO yields: skipfold#(F, n, k, cons(x, ys)) (>) skipfold#(F, n, k, skip(k - 1, ys)) | k = k skip(k, nil) (>=) nil | k = k skip(k, ys) (>=) ys | k <= 0 skip(k, cons(x, ys)) (>=) skip(k - 1, ys) | k > 0 We do this using the following settings: * Disregarded arguments: cons 1 skipfold# 2 * Precedence and permutation: cons { } 2 = skipfold# { 1 } _ 4 _ 3 > nil { } = skip { 2 } 1 * Well-founded theory orderings: [>]_{Bool} = {(true,false)} [>]_{Int} = {(x,y) | x > -1000 /\ x > y } All dependency pairs were removed. Processor output: { }. ***** We apply the Reduction Pair [with HORPO] Processor on D6 = (P4, {}, i, c). Constrained HORPO yields: zip#(cons(x, xs), ys) (>) zip#(ys, xs) We do this using the following settings: * Disregarded arguments: cons 1 * Precedence and permutation: cons { 2 } > zip# { 1 2 } * Well-founded theory orderings: [>]_{Bool} = {(true,false)} [>]_{Int} = {(x,y) | x < 1000 /\ x < y } All dependency pairs were removed. Processor output: { }.