YES TRS: { average(x, s(s(s(y)))) -> s(average(s(x), y)), average(s(x), y) -> average(x, s(y)), average(0(), s(s(0()))) -> s(0()), average(0(), s(0())) -> 0(), average(0(), 0()) -> 0()} DP: Strict: {average#(x, s(s(s(y)))) -> average#(s(x), y), average#(s(x), y) -> average#(x, s(y))} Weak: { average(x, s(s(s(y)))) -> s(average(s(x), y)), average(s(x), y) -> average(x, s(y)), average(0(), s(s(0()))) -> s(0()), average(0(), s(0())) -> 0(), average(0(), 0()) -> 0()} EDG: {(average#(s(x), y) -> average#(x, s(y)), average#(s(x), y) -> average#(x, s(y))) (average#(s(x), y) -> average#(x, s(y)), average#(x, s(s(s(y)))) -> average#(s(x), y)) (average#(x, s(s(s(y)))) -> average#(s(x), y), average#(x, s(s(s(y)))) -> average#(s(x), y)) (average#(x, s(s(s(y)))) -> average#(s(x), y), average#(s(x), y) -> average#(x, s(y)))} SCCS: Scc: {average#(x, s(s(s(y)))) -> average#(s(x), y), average#(s(x), y) -> average#(x, s(y))} SCC: Strict: {average#(x, s(s(s(y)))) -> average#(s(x), y), average#(s(x), y) -> average#(x, s(y))} Weak: { average(x, s(s(s(y)))) -> s(average(s(x), y)), average(s(x), y) -> average(x, s(y)), average(0(), s(s(0()))) -> s(0()), average(0(), s(0())) -> 0(), average(0(), 0()) -> 0()} POLY: Argument Filtering: pi(0) = [], pi(s) = [0], pi(average#) = [0,1], pi(average) = [] Usable Rules: {} Interpretation: [average#](x0, x1) = x0 + x1, [s](x0) = x0 + 1 Strict: {average#(s(x), y) -> average#(x, s(y))} Weak: { average(x, s(s(s(y)))) -> s(average(s(x), y)), average(s(x), y) -> average(x, s(y)), average(0(), s(s(0()))) -> s(0()), average(0(), s(0())) -> 0(), average(0(), 0()) -> 0()} EDG: {(average#(s(x), y) -> average#(x, s(y)), average#(s(x), y) -> average#(x, s(y)))} SCCS: Scc: {average#(s(x), y) -> average#(x, s(y))} SCC: Strict: {average#(s(x), y) -> average#(x, s(y))} Weak: { average(x, s(s(s(y)))) -> s(average(s(x), y)), average(s(x), y) -> average(x, s(y)), average(0(), s(s(0()))) -> s(0()), average(0(), s(0())) -> 0(), average(0(), 0()) -> 0()} SPSC: Simple Projection: pi(average#) = 0 Strict: {} Qed