MAYBE TRS: { half(0()) -> 0(), half(s(0())) -> 0(), half(s(s(x))) -> s(half(x)), le(0(), y) -> true(), le(s(x), 0()) -> false(), le(s(x), s(y)) -> le(x, y), inc(0()) -> 0(), inc(s(x)) -> s(inc(x)), log2(x, y) -> if(le(x, s(0())), x, inc(y)), log(x) -> log2(x, 0()), if(true(), x, s(y)) -> y, if(false(), x, y) -> log2(half(x), y)} DP: Strict: { half#(s(s(x))) -> half#(x), le#(s(x), s(y)) -> le#(x, y), inc#(s(x)) -> inc#(x), log2#(x, y) -> le#(x, s(0())), log2#(x, y) -> inc#(y), log2#(x, y) -> if#(le(x, s(0())), x, inc(y)), log#(x) -> log2#(x, 0()), if#(false(), x, y) -> half#(x), if#(false(), x, y) -> log2#(half(x), y)} Weak: { half(0()) -> 0(), half(s(0())) -> 0(), half(s(s(x))) -> s(half(x)), le(0(), y) -> true(), le(s(x), 0()) -> false(), le(s(x), s(y)) -> le(x, y), inc(0()) -> 0(), inc(s(x)) -> s(inc(x)), log2(x, y) -> if(le(x, s(0())), x, inc(y)), log(x) -> log2(x, 0()), if(true(), x, s(y)) -> y, if(false(), x, y) -> log2(half(x), y)} EDG: {(log2#(x, y) -> inc#(y), inc#(s(x)) -> inc#(x)) (le#(s(x), s(y)) -> le#(x, y), le#(s(x), s(y)) -> le#(x, y)) (inc#(s(x)) -> inc#(x), inc#(s(x)) -> inc#(x)) (if#(false(), x, y) -> half#(x), half#(s(s(x))) -> half#(x)) (log2#(x, y) -> if#(le(x, s(0())), x, inc(y)), if#(false(), x, y) -> half#(x)) (log2#(x, y) -> if#(le(x, s(0())), x, inc(y)), if#(false(), x, y) -> log2#(half(x), y)) (log2#(x, y) -> le#(x, s(0())), le#(s(x), s(y)) -> le#(x, y)) (half#(s(s(x))) -> half#(x), half#(s(s(x))) -> half#(x)) (if#(false(), x, y) -> log2#(half(x), y), log2#(x, y) -> le#(x, s(0()))) (if#(false(), x, y) -> log2#(half(x), y), log2#(x, y) -> inc#(y)) (if#(false(), x, y) -> log2#(half(x), y), log2#(x, y) -> if#(le(x, s(0())), x, inc(y))) (log#(x) -> log2#(x, 0()), log2#(x, y) -> le#(x, s(0()))) (log#(x) -> log2#(x, 0()), log2#(x, y) -> inc#(y)) (log#(x) -> log2#(x, 0()), log2#(x, y) -> if#(le(x, s(0())), x, inc(y)))} SCCS: Scc: { log2#(x, y) -> if#(le(x, s(0())), x, inc(y)), if#(false(), x, y) -> log2#(half(x), y)} Scc: {inc#(s(x)) -> inc#(x)} Scc: {le#(s(x), s(y)) -> le#(x, y)} Scc: {half#(s(s(x))) -> half#(x)} SCC: Strict: { log2#(x, y) -> if#(le(x, s(0())), x, inc(y)), if#(false(), x, y) -> log2#(half(x), y)} Weak: { half(0()) -> 0(), half(s(0())) -> 0(), half(s(s(x))) -> s(half(x)), le(0(), y) -> true(), le(s(x), 0()) -> false(), le(s(x), s(y)) -> le(x, y), inc(0()) -> 0(), inc(s(x)) -> s(inc(x)), log2(x, y) -> if(le(x, s(0())), x, inc(y)), log(x) -> log2(x, 0()), if(true(), x, s(y)) -> y, if(false(), x, y) -> log2(half(x), y)} Fail SCC: Strict: {inc#(s(x)) -> inc#(x)} Weak: { half(0()) -> 0(), half(s(0())) -> 0(), half(s(s(x))) -> s(half(x)), le(0(), y) -> true(), le(s(x), 0()) -> false(), le(s(x), s(y)) -> le(x, y), inc(0()) -> 0(), inc(s(x)) -> s(inc(x)), log2(x, y) -> if(le(x, s(0())), x, inc(y)), log(x) -> log2(x, 0()), if(true(), x, s(y)) -> y, if(false(), x, y) -> log2(half(x), y)} SPSC: Simple Projection: pi(inc#) = 0 Strict: {} Qed SCC: Strict: {le#(s(x), s(y)) -> le#(x, y)} Weak: { half(0()) -> 0(), half(s(0())) -> 0(), half(s(s(x))) -> s(half(x)), le(0(), y) -> true(), le(s(x), 0()) -> false(), le(s(x), s(y)) -> le(x, y), inc(0()) -> 0(), inc(s(x)) -> s(inc(x)), log2(x, y) -> if(le(x, s(0())), x, inc(y)), log(x) -> log2(x, 0()), if(true(), x, s(y)) -> y, if(false(), x, y) -> log2(half(x), y)} SPSC: Simple Projection: pi(le#) = 0 Strict: {} Qed SCC: Strict: {half#(s(s(x))) -> half#(x)} Weak: { half(0()) -> 0(), half(s(0())) -> 0(), half(s(s(x))) -> s(half(x)), le(0(), y) -> true(), le(s(x), 0()) -> false(), le(s(x), s(y)) -> le(x, y), inc(0()) -> 0(), inc(s(x)) -> s(inc(x)), log2(x, y) -> if(le(x, s(0())), x, inc(y)), log(x) -> log2(x, 0()), if(true(), x, s(y)) -> y, if(false(), x, y) -> log2(half(x), y)} SPSC: Simple Projection: pi(half#) = 0 Strict: {} Qed