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)) -> skipfold(F, F(x, n), k, skip(k, 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, ys) | k = k (3) skipfold#(F, n, k, cons(x, ys)) => skipfold#(F, F(x, n), k, skip(k, 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, F(x, n), k, skip(k, 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 with respect to an argument wiltering [with HORPO] Processor on D3 = (P3, R, i, c). Constrained HORPO yields: skipfold#4(F, n, k, cons2(x, ys)) (>) skipfold#4(F, $, k, skip2(k, ys)) | k = k skip2(k, nil0) (>=) nil0 | k = k skip2(k, ys) (>=) ys | k <= 0 skip2(k, cons2(x, ys)) (>=) skip2(k - 1, ys) | k > 0 We do this using the following settings: * Disregarded arguments: skip2 1 skipfold#4 2 * Precedence and permutation: $ { } = cons2 { 1 } 2 = skip2 { } 2 > nil0 { } = skipfold#4 { 1 4 } _ _ 3 = skipfold4 { 3 } _ 1 _ 4 = zip2 { } 1 * Well-founded theory orderings: [>]_{Bool} = {(true,false)} [>]_{Int} = {(x,y) | x < 1000 /\ x < y } Processor output: { }. ***** 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: { D5 = (P4, {}, i, c) }. ***** We apply the Usable rules with respect to an argument wiltering [with HORPO] Processor on D5 = (P4, {}, i, c). Constrained HORPO yields: zip#2(cons2(x, xs), ys) (>) zip#2(ys, xs) We do this using the following settings: * Disregarded arguments: cons2 1 * Precedence and permutation: cons2 { } 2 > zip#2 { 1 2 } * Well-founded theory orderings: [>]_{Bool} = {(true,false)} [>]_{Int} = {(x,y) | x < 1000 /\ x < y } Processor output: { }.