MAYBE Time: 2.094396 TRS: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} DP: DP: { active# U11(X1, X2) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2), active# s X -> active# X, active# s X -> s# active X, active# plus(N, s M) -> U21#(and(isNat M, isNat N), M, N), active# plus(N, s M) -> and#(isNat M, isNat N), active# plus(N, s M) -> isNat# N, active# plus(N, s M) -> isNat# M, active# plus(N, 0()) -> U11#(isNat N, N), active# plus(N, 0()) -> isNat# N, active# plus(X1, X2) -> active# X1, active# plus(X1, X2) -> active# X2, active# plus(X1, X2) -> plus#(X1, active X2), active# plus(X1, X2) -> plus#(active X1, X2), active# U21(X1, X2, X3) -> active# X1, active# U21(X1, X2, X3) -> U21#(active X1, X2, X3), active# U21(tt(), M, N) -> s# plus(N, M), active# U21(tt(), M, N) -> plus#(N, M), active# U31 X -> active# X, active# U31 X -> U31# active X, active# x(N, s M) -> U41#(and(isNat M, isNat N), M, N), active# x(N, s M) -> and#(isNat M, isNat N), active# x(N, s M) -> isNat# N, active# x(N, s M) -> isNat# M, active# x(N, 0()) -> U31# isNat N, active# x(N, 0()) -> isNat# N, active# x(X1, X2) -> active# X1, active# x(X1, X2) -> active# X2, active# x(X1, X2) -> x#(X1, active X2), active# x(X1, X2) -> x#(active X1, X2), active# U41(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3), active# U41(tt(), M, N) -> plus#(x(N, M), N), active# U41(tt(), M, N) -> x#(N, M), active# and(X1, X2) -> active# X1, active# and(X1, X2) -> and#(active X1, X2), active# isNat s V1 -> isNat# V1, active# isNat plus(V1, V2) -> and#(isNat V1, isNat V2), active# isNat plus(V1, V2) -> isNat# V1, active# isNat plus(V1, V2) -> isNat# V2, active# isNat x(V1, V2) -> and#(isNat V1, isNat V2), active# isNat x(V1, V2) -> isNat# V1, active# isNat x(V1, V2) -> isNat# V2, U11#(mark X1, X2) -> U11#(X1, X2), U11#(ok X1, ok X2) -> U11#(X1, X2), s# mark X -> s# X, s# ok X -> s# X, plus#(X1, mark X2) -> plus#(X1, X2), plus#(mark X1, X2) -> plus#(X1, X2), plus#(ok X1, ok X2) -> plus#(X1, X2), U21#(mark X1, X2, X3) -> U21#(X1, X2, X3), U21#(ok X1, ok X2, ok X3) -> U21#(X1, X2, X3), U31# mark X -> U31# X, U31# ok X -> U31# X, x#(X1, mark X2) -> x#(X1, X2), x#(mark X1, X2) -> x#(X1, X2), x#(ok X1, ok X2) -> x#(X1, X2), U41#(mark X1, X2, X3) -> U41#(X1, X2, X3), U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3), and#(mark X1, X2) -> and#(X1, X2), and#(ok X1, ok X2) -> and#(X1, X2), isNat# ok X -> isNat# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2), proper# U11(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2, proper# s X -> s# proper X, proper# s X -> proper# X, proper# plus(X1, X2) -> plus#(proper X1, proper X2), proper# plus(X1, X2) -> proper# X1, proper# plus(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3), proper# U21(X1, X2, X3) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X3, proper# U31 X -> U31# proper X, proper# U31 X -> proper# X, proper# x(X1, X2) -> x#(proper X1, proper X2), proper# x(X1, X2) -> proper# X1, proper# x(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3), proper# U41(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> and#(proper X1, proper X2), proper# and(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2, proper# isNat X -> isNat# proper X, proper# isNat X -> proper# X, top# mark X -> proper# X, top# mark X -> top# proper X, top# ok X -> active# X, top# ok X -> top# active X} TRS: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} EDG: { (active# U31 X -> U31# active X, U31# ok X -> U31# X) (active# U31 X -> U31# active X, U31# mark X -> U31# X) (proper# U31 X -> U31# proper X, U31# ok X -> U31# X) (proper# U31 X -> U31# proper X, U31# mark X -> U31# X) (top# mark X -> top# proper X, top# ok X -> top# active X) (top# mark X -> top# proper X, top# ok X -> active# X) (top# mark X -> top# proper X, top# mark X -> top# proper X) (top# mark X -> top# proper X, top# mark X -> proper# X) (active# U11(X1, X2) -> U11#(active X1, X2), U11#(ok X1, ok X2) -> U11#(X1, X2)) (active# U11(X1, X2) -> U11#(active X1, X2), U11#(mark X1, X2) -> U11#(X1, X2)) (active# x(N, 0()) -> U31# isNat N, U31# ok X -> U31# X) (active# x(N, 0()) -> U31# isNat N, U31# mark X -> U31# X) (active# and(X1, X2) -> and#(active X1, X2), and#(ok X1, ok X2) -> and#(X1, X2)) (active# and(X1, X2) -> and#(active X1, X2), and#(mark X1, X2) -> and#(X1, X2)) (active# U41(X1, X2, X3) -> U41#(active X1, X2, X3), U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3)) (active# U41(X1, X2, X3) -> U41#(active X1, X2, X3), U41#(mark X1, X2, X3) -> U41#(X1, X2, X3)) (U21#(ok X1, ok X2, ok X3) -> U21#(X1, X2, X3), U21#(ok X1, ok X2, ok X3) -> U21#(X1, X2, X3)) (U21#(ok X1, ok X2, ok X3) -> U21#(X1, X2, X3), U21#(mark X1, X2, X3) -> U21#(X1, X2, X3)) (U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3), U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3)) (U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3), U41#(mark X1, X2, X3) -> U41#(X1, X2, X3)) (active# isNat x(V1, V2) -> isNat# V2, isNat# ok X -> isNat# X) (U11#(ok X1, ok X2) -> U11#(X1, X2), U11#(ok X1, ok X2) -> U11#(X1, X2)) (U11#(ok X1, ok X2) -> U11#(X1, X2), U11#(mark X1, X2) -> U11#(X1, X2)) (plus#(mark X1, X2) -> plus#(X1, X2), plus#(ok X1, ok X2) -> plus#(X1, X2)) (plus#(mark X1, X2) -> plus#(X1, X2), plus#(mark X1, X2) -> plus#(X1, X2)) (plus#(mark X1, X2) -> plus#(X1, X2), plus#(X1, mark X2) -> plus#(X1, X2)) (x#(X1, mark X2) -> x#(X1, X2), x#(ok X1, ok X2) -> x#(X1, X2)) (x#(X1, mark X2) -> x#(X1, X2), x#(mark X1, X2) -> x#(X1, X2)) (x#(X1, mark X2) -> x#(X1, X2), x#(X1, mark X2) -> x#(X1, X2)) (x#(ok X1, ok X2) -> x#(X1, X2), x#(ok X1, ok X2) -> x#(X1, X2)) (x#(ok X1, ok X2) -> x#(X1, X2), x#(mark X1, X2) -> x#(X1, X2)) (x#(ok X1, ok X2) -> x#(X1, X2), x#(X1, mark X2) -> x#(X1, X2)) (and#(ok X1, ok X2) -> and#(X1, X2), and#(ok X1, ok X2) -> and#(X1, X2)) (and#(ok X1, ok X2) -> and#(X1, X2), and#(mark X1, X2) -> and#(X1, X2)) (active# plus(X1, X2) -> active# X2, active# isNat x(V1, V2) -> isNat# V2) (active# plus(X1, X2) -> active# X2, active# isNat x(V1, V2) -> isNat# V1) (active# plus(X1, X2) -> active# X2, active# isNat x(V1, V2) -> and#(isNat V1, isNat V2)) (active# plus(X1, X2) -> active# X2, active# isNat plus(V1, V2) -> isNat# V2) (active# plus(X1, X2) -> active# X2, active# isNat plus(V1, V2) -> isNat# V1) (active# plus(X1, X2) -> active# X2, active# isNat plus(V1, V2) -> and#(isNat V1, isNat V2)) (active# plus(X1, X2) -> active# X2, active# isNat s V1 -> isNat# V1) (active# plus(X1, X2) -> active# X2, active# and(X1, X2) -> and#(active X1, X2)) (active# plus(X1, X2) -> active# X2, active# and(X1, X2) -> active# X1) (active# plus(X1, X2) -> active# X2, active# U41(tt(), M, N) -> x#(N, M)) (active# plus(X1, X2) -> active# X2, active# U41(tt(), M, N) -> plus#(x(N, M), N)) (active# plus(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3)) (active# plus(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> active# X1) (active# plus(X1, X2) -> active# X2, active# x(X1, X2) -> x#(active X1, X2)) (active# plus(X1, X2) -> active# X2, active# x(X1, X2) -> x#(X1, active X2)) (active# plus(X1, X2) -> active# X2, active# x(X1, X2) -> active# X2) (active# plus(X1, X2) -> active# X2, active# x(X1, X2) -> active# X1) (active# plus(X1, X2) -> active# X2, active# x(N, 0()) -> isNat# N) (active# plus(X1, X2) -> active# X2, active# x(N, 0()) -> U31# isNat N) (active# plus(X1, X2) -> active# X2, active# x(N, s M) -> isNat# M) (active# plus(X1, X2) -> active# X2, active# x(N, s M) -> isNat# N) (active# plus(X1, X2) -> active# X2, active# x(N, s M) -> and#(isNat M, isNat N)) (active# plus(X1, X2) -> active# X2, active# x(N, s M) -> U41#(and(isNat M, isNat N), M, N)) (active# plus(X1, X2) -> active# X2, active# U31 X -> U31# active X) (active# plus(X1, X2) -> active# X2, active# U31 X -> active# X) (active# plus(X1, X2) -> active# X2, active# U21(tt(), M, N) -> plus#(N, M)) (active# plus(X1, X2) -> active# X2, active# U21(tt(), M, N) -> s# plus(N, M)) (active# plus(X1, X2) -> active# X2, active# U21(X1, X2, X3) -> U21#(active X1, X2, X3)) (active# plus(X1, X2) -> active# X2, active# U21(X1, X2, X3) -> active# X1) (active# plus(X1, X2) -> active# X2, active# plus(X1, X2) -> plus#(active X1, X2)) (active# plus(X1, X2) -> active# X2, active# plus(X1, X2) -> plus#(X1, active X2)) (active# plus(X1, X2) -> active# X2, active# plus(X1, X2) -> active# X2) (active# plus(X1, X2) -> active# X2, active# plus(X1, X2) -> active# X1) (active# plus(X1, X2) -> active# X2, active# plus(N, 0()) -> isNat# N) (active# plus(X1, X2) -> active# X2, active# plus(N, 0()) -> U11#(isNat N, N)) (active# plus(X1, X2) -> active# X2, active# plus(N, s M) -> isNat# M) (active# plus(X1, X2) -> active# X2, active# plus(N, s M) -> isNat# N) (active# plus(X1, X2) -> active# X2, active# plus(N, s M) -> and#(isNat M, isNat N)) (active# plus(X1, X2) -> active# X2, active# plus(N, s M) -> U21#(and(isNat M, isNat N), M, N)) (active# plus(X1, X2) -> active# X2, active# s X -> s# active X) (active# plus(X1, X2) -> active# X2, active# s X -> active# X) (active# plus(X1, X2) -> active# X2, active# U11(X1, X2) -> U11#(active X1, X2)) (active# plus(X1, X2) -> active# X2, active# U11(X1, X2) -> active# X1) (proper# U11(X1, X2) -> proper# X2, proper# isNat X -> proper# X) (proper# U11(X1, X2) -> proper# X2, proper# isNat X -> isNat# proper X) (proper# U11(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X2) (proper# U11(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X1) (proper# U11(X1, X2) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# U11(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3) (proper# U11(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2) (proper# U11(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1) (proper# U11(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# U11(X1, X2) -> proper# X2, proper# x(X1, X2) -> proper# X2) (proper# U11(X1, X2) -> proper# X2, proper# x(X1, X2) -> proper# X1) (proper# U11(X1, X2) -> proper# X2, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# U11(X1, X2) -> proper# X2, proper# U31 X -> proper# X) (proper# U11(X1, X2) -> proper# X2, proper# U31 X -> U31# proper X) (proper# U11(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X3) (proper# U11(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X2) (proper# U11(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X1) (proper# U11(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# U11(X1, X2) -> proper# X2, proper# plus(X1, X2) -> proper# X2) (proper# U11(X1, X2) -> proper# X2, proper# plus(X1, X2) -> proper# X1) (proper# U11(X1, X2) -> proper# X2, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# U11(X1, X2) -> proper# X2, proper# s X -> proper# X) (proper# U11(X1, X2) -> proper# X2, proper# s X -> s# proper X) (proper# U11(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X2) (proper# U11(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X1) (proper# U11(X1, X2) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (proper# U21(X1, X2, X3) -> proper# X2, proper# isNat X -> proper# X) (proper# U21(X1, X2, X3) -> proper# X2, proper# isNat X -> isNat# proper X) (proper# U21(X1, X2, X3) -> proper# X2, proper# and(X1, X2) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X2, proper# and(X1, X2) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# U21(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3) (proper# U21(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# U21(X1, X2, X3) -> proper# X2, proper# x(X1, X2) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X2, proper# x(X1, X2) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X2, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# U21(X1, X2, X3) -> proper# X2, proper# U31 X -> proper# X) (proper# U21(X1, X2, X3) -> proper# X2, proper# U31 X -> U31# proper X) (proper# U21(X1, X2, X3) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X3) (proper# U21(X1, X2, X3) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X2, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# U21(X1, X2, X3) -> proper# X2, proper# plus(X1, X2) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X2, proper# plus(X1, X2) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X2, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# U21(X1, X2, X3) -> proper# X2, proper# s X -> proper# X) (proper# U21(X1, X2, X3) -> proper# X2, proper# s X -> s# proper X) (proper# U21(X1, X2, X3) -> proper# X2, proper# U11(X1, X2) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X2, proper# U11(X1, X2) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (proper# U41(X1, X2, X3) -> proper# X2, proper# isNat X -> proper# X) (proper# U41(X1, X2, X3) -> proper# X2, proper# isNat X -> isNat# proper X) (proper# U41(X1, X2, X3) -> proper# X2, proper# and(X1, X2) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X2, proper# and(X1, X2) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# U41(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3) (proper# U41(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# U41(X1, X2, X3) -> proper# X2, proper# x(X1, X2) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X2, proper# x(X1, X2) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X2, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# U41(X1, X2, X3) -> proper# X2, proper# U31 X -> proper# X) (proper# U41(X1, X2, X3) -> proper# X2, proper# U31 X -> U31# proper X) (proper# U41(X1, X2, X3) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X3) (proper# U41(X1, X2, X3) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X2, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# U41(X1, X2, X3) -> proper# X2, proper# plus(X1, X2) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X2, proper# plus(X1, X2) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X2, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# U41(X1, X2, X3) -> proper# X2, proper# s X -> proper# X) (proper# U41(X1, X2, X3) -> proper# X2, proper# s X -> s# proper X) (proper# U41(X1, X2, X3) -> proper# X2, proper# U11(X1, X2) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X2, proper# U11(X1, X2) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (active# isNat x(V1, V2) -> isNat# V1, isNat# ok X -> isNat# X) (active# plus(X1, X2) -> plus#(X1, active X2), plus#(ok X1, ok X2) -> plus#(X1, X2)) (active# plus(X1, X2) -> plus#(X1, active X2), plus#(X1, mark X2) -> plus#(X1, X2)) (active# x(X1, X2) -> x#(X1, active X2), x#(ok X1, ok X2) -> x#(X1, X2)) (active# x(X1, X2) -> x#(X1, active X2), x#(X1, mark X2) -> x#(X1, X2)) (active# isNat x(V1, V2) -> and#(isNat V1, isNat V2), and#(ok X1, ok X2) -> and#(X1, X2)) (active# isNat x(V1, V2) -> and#(isNat V1, isNat V2), and#(mark X1, X2) -> and#(X1, X2)) (proper# plus(X1, X2) -> plus#(proper X1, proper X2), plus#(ok X1, ok X2) -> plus#(X1, X2)) (proper# plus(X1, X2) -> plus#(proper X1, proper X2), plus#(mark X1, X2) -> plus#(X1, X2)) (proper# plus(X1, X2) -> plus#(proper X1, proper X2), plus#(X1, mark X2) -> plus#(X1, X2)) (proper# and(X1, X2) -> and#(proper X1, proper X2), and#(ok X1, ok X2) -> and#(X1, X2)) (proper# and(X1, X2) -> and#(proper X1, proper X2), and#(mark X1, X2) -> and#(X1, X2)) (active# plus(N, 0()) -> isNat# N, isNat# ok X -> isNat# X) (active# x(N, 0()) -> isNat# N, isNat# ok X -> isNat# X) (active# plus(X1, X2) -> active# X1, active# isNat x(V1, V2) -> isNat# V2) (active# plus(X1, X2) -> active# X1, active# isNat x(V1, V2) -> isNat# V1) (active# plus(X1, X2) -> active# X1, active# isNat x(V1, V2) -> and#(isNat V1, isNat V2)) (active# plus(X1, X2) -> active# X1, active# isNat plus(V1, V2) -> isNat# V2) (active# plus(X1, X2) -> active# X1, active# isNat plus(V1, V2) -> isNat# V1) (active# plus(X1, X2) -> active# X1, active# isNat plus(V1, V2) -> and#(isNat V1, isNat V2)) (active# plus(X1, X2) -> active# X1, active# isNat s V1 -> isNat# V1) (active# plus(X1, X2) -> active# X1, active# and(X1, X2) -> and#(active X1, X2)) (active# plus(X1, X2) -> active# X1, active# and(X1, X2) -> active# X1) (active# plus(X1, X2) -> active# X1, active# U41(tt(), M, N) -> x#(N, M)) (active# plus(X1, X2) -> active# X1, active# U41(tt(), M, N) -> plus#(x(N, M), N)) (active# plus(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3)) (active# plus(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1) (active# plus(X1, X2) -> active# X1, active# x(X1, X2) -> x#(active X1, X2)) (active# plus(X1, X2) -> active# X1, active# x(X1, X2) -> x#(X1, active X2)) (active# plus(X1, X2) -> active# X1, active# x(X1, X2) -> active# X2) (active# plus(X1, X2) -> active# X1, active# x(X1, X2) -> active# X1) (active# plus(X1, X2) -> active# X1, active# x(N, 0()) -> isNat# N) (active# plus(X1, X2) -> active# X1, active# x(N, 0()) -> U31# isNat N) (active# plus(X1, X2) -> active# X1, active# x(N, s M) -> isNat# M) (active# plus(X1, X2) -> active# X1, active# x(N, s M) -> isNat# N) (active# plus(X1, X2) -> active# X1, active# x(N, s M) -> and#(isNat M, isNat N)) (active# plus(X1, X2) -> active# X1, active# x(N, s M) -> U41#(and(isNat M, isNat N), M, N)) (active# plus(X1, X2) -> active# X1, active# U31 X -> U31# active X) (active# plus(X1, X2) -> active# X1, active# U31 X -> active# X) (active# plus(X1, X2) -> active# X1, active# U21(tt(), M, N) -> plus#(N, M)) (active# plus(X1, X2) -> active# X1, active# U21(tt(), M, N) -> s# plus(N, M)) (active# plus(X1, X2) -> active# X1, active# U21(X1, X2, X3) -> U21#(active X1, X2, X3)) (active# plus(X1, X2) -> active# X1, active# U21(X1, X2, X3) -> active# X1) (active# plus(X1, X2) -> active# X1, active# plus(X1, X2) -> plus#(active X1, X2)) (active# plus(X1, X2) -> active# X1, active# plus(X1, X2) -> plus#(X1, active X2)) (active# plus(X1, X2) -> active# X1, active# plus(X1, X2) -> active# X2) (active# plus(X1, X2) -> active# X1, active# plus(X1, X2) -> active# X1) (active# plus(X1, X2) -> active# X1, active# plus(N, 0()) -> isNat# N) (active# plus(X1, X2) -> active# X1, active# plus(N, 0()) -> U11#(isNat N, N)) (active# plus(X1, X2) -> active# X1, active# plus(N, s M) -> isNat# M) (active# plus(X1, X2) -> active# X1, active# plus(N, s M) -> isNat# N) (active# plus(X1, X2) -> active# X1, active# plus(N, s M) -> and#(isNat M, isNat N)) (active# plus(X1, X2) -> active# X1, active# plus(N, s M) -> U21#(and(isNat M, isNat N), M, N)) (active# plus(X1, X2) -> active# X1, active# s X -> s# active X) (active# plus(X1, X2) -> active# X1, active# s X -> active# X) (active# plus(X1, X2) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2)) (active# plus(X1, X2) -> active# X1, active# U11(X1, X2) -> active# X1) (active# x(X1, X2) -> active# X1, active# isNat x(V1, V2) -> isNat# V2) (active# x(X1, X2) -> active# X1, active# isNat x(V1, V2) -> isNat# V1) (active# x(X1, X2) -> active# X1, active# isNat x(V1, V2) -> and#(isNat V1, isNat V2)) (active# x(X1, X2) -> active# X1, active# isNat plus(V1, V2) -> isNat# V2) (active# x(X1, X2) -> active# X1, active# isNat plus(V1, V2) -> isNat# V1) (active# x(X1, X2) -> active# X1, active# isNat plus(V1, V2) -> and#(isNat V1, isNat V2)) (active# x(X1, X2) -> active# X1, active# isNat s V1 -> isNat# V1) (active# x(X1, X2) -> active# X1, active# and(X1, X2) -> and#(active X1, X2)) (active# x(X1, X2) -> active# X1, active# and(X1, X2) -> active# X1) (active# x(X1, X2) -> active# X1, active# U41(tt(), M, N) -> x#(N, M)) (active# x(X1, X2) -> active# X1, active# U41(tt(), M, N) -> plus#(x(N, M), N)) (active# x(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3)) (active# x(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1) (active# x(X1, X2) -> active# X1, active# x(X1, X2) -> x#(active X1, X2)) (active# x(X1, X2) -> active# X1, active# x(X1, X2) -> x#(X1, active X2)) (active# x(X1, X2) -> active# X1, active# x(X1, X2) -> active# X2) (active# x(X1, X2) -> active# X1, active# x(X1, X2) -> active# X1) (active# x(X1, X2) -> active# X1, active# x(N, 0()) -> isNat# N) (active# x(X1, X2) -> active# X1, active# x(N, 0()) -> U31# isNat N) (active# x(X1, X2) -> active# X1, active# x(N, s M) -> isNat# M) (active# x(X1, X2) -> active# X1, active# x(N, s M) -> isNat# N) (active# x(X1, X2) -> active# X1, active# x(N, s M) -> and#(isNat M, isNat N)) (active# x(X1, X2) -> active# X1, active# x(N, s M) -> U41#(and(isNat M, isNat N), M, N)) (active# x(X1, X2) -> active# X1, active# U31 X -> U31# active X) (active# x(X1, X2) -> active# X1, active# U31 X -> active# X) (active# x(X1, X2) -> active# X1, active# U21(tt(), M, N) -> plus#(N, M)) (active# x(X1, X2) -> active# X1, active# U21(tt(), M, N) -> s# plus(N, M)) (active# x(X1, X2) -> active# X1, active# U21(X1, X2, X3) -> U21#(active X1, X2, X3)) (active# x(X1, X2) -> active# X1, active# U21(X1, X2, X3) -> active# X1) (active# x(X1, X2) -> active# X1, active# plus(X1, X2) -> plus#(active X1, X2)) (active# x(X1, X2) -> active# X1, active# plus(X1, X2) -> plus#(X1, active X2)) (active# x(X1, X2) -> active# X1, active# plus(X1, X2) -> active# X2) (active# x(X1, X2) -> active# X1, active# plus(X1, X2) -> active# X1) (active# x(X1, X2) -> active# X1, active# plus(N, 0()) -> isNat# N) (active# x(X1, X2) -> active# X1, active# plus(N, 0()) -> U11#(isNat N, N)) (active# x(X1, X2) -> active# X1, active# plus(N, s M) -> isNat# M) (active# x(X1, X2) -> active# X1, active# plus(N, s M) -> isNat# N) (active# x(X1, X2) -> active# X1, active# plus(N, s M) -> and#(isNat M, isNat N)) (active# x(X1, X2) -> active# X1, active# plus(N, s M) -> U21#(and(isNat M, isNat N), M, N)) (active# x(X1, X2) -> active# X1, active# s X -> s# active X) (active# x(X1, X2) -> active# X1, active# s X -> active# X) (active# x(X1, X2) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2)) (active# x(X1, X2) -> active# X1, active# U11(X1, X2) -> active# X1) (active# and(X1, X2) -> active# X1, active# isNat x(V1, V2) -> isNat# V2) (active# and(X1, X2) -> active# X1, active# isNat x(V1, V2) -> isNat# V1) (active# and(X1, X2) -> active# X1, active# isNat x(V1, V2) -> and#(isNat V1, isNat V2)) (active# and(X1, X2) -> active# X1, active# isNat plus(V1, V2) -> isNat# V2) (active# and(X1, X2) -> active# X1, active# isNat plus(V1, V2) -> isNat# V1) (active# and(X1, X2) -> active# X1, active# isNat plus(V1, V2) -> and#(isNat V1, isNat V2)) (active# and(X1, X2) -> active# X1, active# isNat s V1 -> isNat# V1) (active# and(X1, X2) -> active# X1, active# and(X1, X2) -> and#(active X1, X2)) (active# and(X1, X2) -> active# X1, active# and(X1, X2) -> active# X1) (active# and(X1, X2) -> active# X1, active# U41(tt(), M, N) -> x#(N, M)) (active# and(X1, X2) -> active# X1, active# U41(tt(), M, N) -> plus#(x(N, M), N)) (active# and(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3)) (active# and(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1) (active# and(X1, X2) -> active# X1, active# x(X1, X2) -> x#(active X1, X2)) (active# and(X1, X2) -> active# X1, active# x(X1, X2) -> x#(X1, active X2)) (active# and(X1, X2) -> active# X1, active# x(X1, X2) -> active# X2) (active# and(X1, X2) -> active# X1, active# x(X1, X2) -> active# X1) (active# and(X1, X2) -> active# X1, active# x(N, 0()) -> isNat# N) (active# and(X1, X2) -> active# X1, active# x(N, 0()) -> U31# isNat N) (active# and(X1, X2) -> active# X1, active# x(N, s M) -> isNat# M) (active# and(X1, X2) -> active# X1, active# x(N, s M) -> isNat# N) (active# and(X1, X2) -> active# X1, active# x(N, s M) -> and#(isNat M, isNat N)) (active# and(X1, X2) -> active# X1, active# x(N, s M) -> U41#(and(isNat M, isNat N), M, N)) (active# and(X1, X2) -> active# X1, active# U31 X -> U31# active X) (active# and(X1, X2) -> active# X1, active# U31 X -> active# X) (active# and(X1, X2) -> active# X1, active# U21(tt(), M, N) -> plus#(N, M)) (active# and(X1, X2) -> active# X1, active# U21(tt(), M, N) -> s# plus(N, M)) (active# and(X1, X2) -> active# X1, active# U21(X1, X2, X3) -> U21#(active X1, X2, X3)) (active# and(X1, X2) -> active# X1, active# U21(X1, X2, X3) -> active# X1) (active# and(X1, X2) -> active# X1, active# plus(X1, X2) -> plus#(active X1, X2)) (active# and(X1, X2) -> active# X1, active# plus(X1, X2) -> plus#(X1, active X2)) (active# and(X1, X2) -> active# X1, active# plus(X1, X2) -> active# X2) (active# and(X1, X2) -> active# X1, active# plus(X1, X2) -> active# X1) (active# and(X1, X2) -> active# X1, active# plus(N, 0()) -> isNat# N) (active# and(X1, X2) -> active# X1, active# plus(N, 0()) -> U11#(isNat N, N)) (active# and(X1, X2) -> active# X1, active# plus(N, s M) -> isNat# M) (active# and(X1, X2) -> active# X1, active# plus(N, s M) -> isNat# N) (active# and(X1, X2) -> active# X1, active# plus(N, s M) -> and#(isNat M, isNat N)) (active# and(X1, X2) -> active# X1, active# plus(N, s M) -> U21#(and(isNat M, isNat N), M, N)) (active# and(X1, X2) -> active# X1, active# s X -> s# active X) (active# and(X1, X2) -> active# X1, active# s X -> active# X) (active# and(X1, X2) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2)) (active# and(X1, X2) -> active# X1, active# U11(X1, X2) -> active# X1) (proper# plus(X1, X2) -> proper# X1, proper# isNat X -> proper# X) (proper# plus(X1, X2) -> proper# X1, proper# isNat X -> isNat# proper X) (proper# plus(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2) (proper# plus(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X1) (proper# plus(X1, X2) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# plus(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3) (proper# plus(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2) (proper# plus(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1) (proper# plus(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# plus(X1, X2) -> proper# X1, proper# x(X1, X2) -> proper# X2) (proper# plus(X1, X2) -> proper# X1, proper# x(X1, X2) -> proper# X1) (proper# plus(X1, X2) -> proper# X1, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# plus(X1, X2) -> proper# X1, proper# U31 X -> proper# X) (proper# plus(X1, X2) -> proper# X1, proper# U31 X -> U31# proper X) (proper# plus(X1, X2) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X3) (proper# plus(X1, X2) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X2) (proper# plus(X1, X2) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X1) (proper# plus(X1, X2) -> proper# X1, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# plus(X1, X2) -> proper# X1, proper# plus(X1, X2) -> proper# X2) (proper# plus(X1, X2) -> proper# X1, proper# plus(X1, X2) -> proper# X1) (proper# plus(X1, X2) -> proper# X1, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# plus(X1, X2) -> proper# X1, proper# s X -> proper# X) (proper# plus(X1, X2) -> proper# X1, proper# s X -> s# proper X) (proper# plus(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2) (proper# plus(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X1) (proper# plus(X1, X2) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (proper# x(X1, X2) -> proper# X1, proper# isNat X -> proper# X) (proper# x(X1, X2) -> proper# X1, proper# isNat X -> isNat# proper X) (proper# x(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2) (proper# x(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X1) (proper# x(X1, X2) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# x(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3) (proper# x(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2) (proper# x(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1) (proper# x(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# x(X1, X2) -> proper# X1, proper# x(X1, X2) -> proper# X2) (proper# x(X1, X2) -> proper# X1, proper# x(X1, X2) -> proper# X1) (proper# x(X1, X2) -> proper# X1, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# x(X1, X2) -> proper# X1, proper# U31 X -> proper# X) (proper# x(X1, X2) -> proper# X1, proper# U31 X -> U31# proper X) (proper# x(X1, X2) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X3) (proper# x(X1, X2) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X2) (proper# x(X1, X2) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X1) (proper# x(X1, X2) -> proper# X1, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# x(X1, X2) -> proper# X1, proper# plus(X1, X2) -> proper# X2) (proper# x(X1, X2) -> proper# X1, proper# plus(X1, X2) -> proper# X1) (proper# x(X1, X2) -> proper# X1, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# x(X1, X2) -> proper# X1, proper# s X -> proper# X) (proper# x(X1, X2) -> proper# X1, proper# s X -> s# proper X) (proper# x(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2) (proper# x(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X1) (proper# x(X1, X2) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (proper# and(X1, X2) -> proper# X1, proper# isNat X -> proper# X) (proper# and(X1, X2) -> proper# X1, proper# isNat X -> isNat# proper X) (proper# and(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2) (proper# and(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X1) (proper# and(X1, X2) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# and(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3) (proper# and(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2) (proper# and(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1) (proper# and(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# and(X1, X2) -> proper# X1, proper# x(X1, X2) -> proper# X2) (proper# and(X1, X2) -> proper# X1, proper# x(X1, X2) -> proper# X1) (proper# and(X1, X2) -> proper# X1, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# and(X1, X2) -> proper# X1, proper# U31 X -> proper# X) (proper# and(X1, X2) -> proper# X1, proper# U31 X -> U31# proper X) (proper# and(X1, X2) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X3) (proper# and(X1, X2) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X2) (proper# and(X1, X2) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X1) (proper# and(X1, X2) -> proper# X1, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# and(X1, X2) -> proper# X1, proper# plus(X1, X2) -> proper# X2) (proper# and(X1, X2) -> proper# X1, proper# plus(X1, X2) -> proper# X1) (proper# and(X1, X2) -> proper# X1, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# and(X1, X2) -> proper# X1, proper# s X -> proper# X) (proper# and(X1, X2) -> proper# X1, proper# s X -> s# proper X) (proper# and(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2) (proper# and(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X1) (proper# and(X1, X2) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (active# x(N, s M) -> U41#(and(isNat M, isNat N), M, N), U41#(mark X1, X2, X3) -> U41#(X1, X2, X3)) (active# U41(tt(), M, N) -> plus#(x(N, M), N), plus#(ok X1, ok X2) -> plus#(X1, X2)) (active# U41(tt(), M, N) -> plus#(x(N, M), N), plus#(mark X1, X2) -> plus#(X1, X2)) (active# U41(tt(), M, N) -> plus#(x(N, M), N), plus#(X1, mark X2) -> plus#(X1, X2)) (proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3), U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3)) (proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3), U41#(mark X1, X2, X3) -> U41#(X1, X2, X3)) (active# U31 X -> active# X, active# isNat x(V1, V2) -> isNat# V2) (active# U31 X -> active# X, active# isNat x(V1, V2) -> isNat# V1) (active# U31 X -> active# X, active# isNat x(V1, V2) -> and#(isNat V1, isNat V2)) (active# U31 X -> active# X, active# isNat plus(V1, V2) -> isNat# V2) (active# U31 X -> active# X, active# isNat plus(V1, V2) -> isNat# V1) (active# U31 X -> active# X, active# isNat plus(V1, V2) -> and#(isNat V1, isNat V2)) (active# U31 X -> active# X, active# isNat s V1 -> isNat# V1) (active# U31 X -> active# X, active# and(X1, X2) -> and#(active X1, X2)) (active# U31 X -> active# X, active# and(X1, X2) -> active# X1) (active# U31 X -> active# X, active# U41(tt(), M, N) -> x#(N, M)) (active# U31 X -> active# X, active# U41(tt(), M, N) -> plus#(x(N, M), N)) (active# U31 X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3)) (active# U31 X -> active# X, active# U41(X1, X2, X3) -> active# X1) (active# U31 X -> active# X, active# x(X1, X2) -> x#(active X1, X2)) (active# U31 X -> active# X, active# x(X1, X2) -> x#(X1, active X2)) (active# U31 X -> active# X, active# x(X1, X2) -> active# X2) (active# U31 X -> active# X, active# x(X1, X2) -> active# X1) (active# U31 X -> active# X, active# x(N, 0()) -> isNat# N) (active# U31 X -> active# X, active# x(N, 0()) -> U31# isNat N) (active# U31 X -> active# X, active# x(N, s M) -> isNat# M) (active# U31 X -> active# X, active# x(N, s M) -> isNat# N) (active# U31 X -> active# X, active# x(N, s M) -> and#(isNat M, isNat N)) (active# U31 X -> active# X, active# x(N, s M) -> U41#(and(isNat M, isNat N), M, N)) (active# U31 X -> active# X, active# U31 X -> U31# active X) (active# U31 X -> active# X, active# U31 X -> active# X) (active# U31 X -> active# X, active# U21(tt(), M, N) -> plus#(N, M)) (active# U31 X -> active# X, active# U21(tt(), M, N) -> s# plus(N, M)) (active# U31 X -> active# X, active# U21(X1, X2, X3) -> U21#(active X1, X2, X3)) (active# U31 X -> active# X, active# U21(X1, X2, X3) -> active# X1) (active# U31 X -> active# X, active# plus(X1, X2) -> plus#(active X1, X2)) (active# U31 X -> active# X, active# plus(X1, X2) -> plus#(X1, active X2)) (active# U31 X -> active# X, active# plus(X1, X2) -> active# X2) (active# U31 X -> active# X, active# plus(X1, X2) -> active# X1) (active# U31 X -> active# X, active# plus(N, 0()) -> isNat# N) (active# U31 X -> active# X, active# plus(N, 0()) -> U11#(isNat N, N)) (active# U31 X -> active# X, active# plus(N, s M) -> isNat# M) (active# U31 X -> active# X, active# plus(N, s M) -> isNat# N) (active# U31 X -> active# X, active# plus(N, s M) -> and#(isNat M, isNat N)) (active# U31 X -> active# X, active# plus(N, s M) -> U21#(and(isNat M, isNat N), M, N)) (active# U31 X -> active# X, active# s X -> s# active X) (active# U31 X -> active# X, active# s X -> active# X) (active# U31 X -> active# X, active# U11(X1, X2) -> U11#(active X1, X2)) (active# U31 X -> active# X, active# U11(X1, X2) -> active# X1) (s# ok X -> s# X, s# ok X -> s# X) (s# ok X -> s# X, s# mark X -> s# X) (U31# ok X -> U31# X, U31# ok X -> U31# X) (U31# ok X -> U31# X, U31# mark X -> U31# X) (proper# s X -> proper# X, proper# isNat X -> proper# X) (proper# s X -> proper# X, proper# isNat X -> isNat# proper X) (proper# s X -> proper# X, proper# and(X1, X2) -> proper# X2) (proper# s X -> proper# X, proper# and(X1, X2) -> proper# X1) (proper# s X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# s X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3) (proper# s X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2) (proper# s X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1) (proper# s X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# s X -> proper# X, proper# x(X1, X2) -> proper# X2) (proper# s X -> proper# X, proper# x(X1, X2) -> proper# X1) (proper# s X -> proper# X, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# s X -> proper# X, proper# U31 X -> proper# X) (proper# s X -> proper# X, proper# U31 X -> U31# proper X) (proper# s X -> proper# X, proper# U21(X1, X2, X3) -> proper# X3) (proper# s X -> proper# X, proper# U21(X1, X2, X3) -> proper# X2) (proper# s X -> proper# X, proper# U21(X1, X2, X3) -> proper# X1) (proper# s X -> proper# X, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# s X -> proper# X, proper# plus(X1, X2) -> proper# X2) (proper# s X -> proper# X, proper# plus(X1, X2) -> proper# X1) (proper# s X -> proper# X, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# s X -> proper# X, proper# s X -> proper# X) (proper# s X -> proper# X, proper# s X -> s# proper X) (proper# s X -> proper# X, proper# U11(X1, X2) -> proper# X2) (proper# s X -> proper# X, proper# U11(X1, X2) -> proper# X1) (proper# s X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (proper# isNat X -> proper# X, proper# isNat X -> proper# X) (proper# isNat X -> proper# X, proper# isNat X -> isNat# proper X) (proper# isNat X -> proper# X, proper# and(X1, X2) -> proper# X2) (proper# isNat X -> proper# X, proper# and(X1, X2) -> proper# X1) (proper# isNat X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# isNat X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3) (proper# isNat X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2) (proper# isNat X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1) (proper# isNat X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# isNat X -> proper# X, proper# x(X1, X2) -> proper# X2) (proper# isNat X -> proper# X, proper# x(X1, X2) -> proper# X1) (proper# isNat X -> proper# X, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# isNat X -> proper# X, proper# U31 X -> proper# X) (proper# isNat X -> proper# X, proper# U31 X -> U31# proper X) (proper# isNat X -> proper# X, proper# U21(X1, X2, X3) -> proper# X3) (proper# isNat X -> proper# X, proper# U21(X1, X2, X3) -> proper# X2) (proper# isNat X -> proper# X, proper# U21(X1, X2, X3) -> proper# X1) (proper# isNat X -> proper# X, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# isNat X -> proper# X, proper# plus(X1, X2) -> proper# X2) (proper# isNat X -> proper# X, proper# plus(X1, X2) -> proper# X1) (proper# isNat X -> proper# X, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# isNat X -> proper# X, proper# s X -> proper# X) (proper# isNat X -> proper# X, proper# s X -> s# proper X) (proper# isNat X -> proper# X, proper# U11(X1, X2) -> proper# X2) (proper# isNat X -> proper# X, proper# U11(X1, X2) -> proper# X1) (proper# isNat X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (top# ok X -> active# X, active# isNat x(V1, V2) -> isNat# V2) (top# ok X -> active# X, active# isNat x(V1, V2) -> isNat# V1) (top# ok X -> active# X, active# isNat x(V1, V2) -> and#(isNat V1, isNat V2)) (top# ok X -> active# X, active# isNat plus(V1, V2) -> isNat# V2) (top# ok X -> active# X, active# isNat plus(V1, V2) -> isNat# V1) (top# ok X -> active# X, active# isNat plus(V1, V2) -> and#(isNat V1, isNat V2)) (top# ok X -> active# X, active# isNat s V1 -> isNat# V1) (top# ok X -> active# X, active# and(X1, X2) -> and#(active X1, X2)) (top# ok X -> active# X, active# and(X1, X2) -> active# X1) (top# ok X -> active# X, active# U41(tt(), M, N) -> x#(N, M)) (top# ok X -> active# X, active# U41(tt(), M, N) -> plus#(x(N, M), N)) (top# ok X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3)) (top# ok X -> active# X, active# U41(X1, X2, X3) -> active# X1) (top# ok X -> active# X, active# x(X1, X2) -> x#(active X1, X2)) (top# ok X -> active# X, active# x(X1, X2) -> x#(X1, active X2)) (top# ok X -> active# X, active# x(X1, X2) -> active# X2) (top# ok X -> active# X, active# x(X1, X2) -> active# X1) (top# ok X -> active# X, active# x(N, 0()) -> isNat# N) (top# ok X -> active# X, active# x(N, 0()) -> U31# isNat N) (top# ok X -> active# X, active# x(N, s M) -> isNat# M) (top# ok X -> active# X, active# x(N, s M) -> isNat# N) (top# ok X -> active# X, active# x(N, s M) -> and#(isNat M, isNat N)) (top# ok X -> active# X, active# x(N, s M) -> U41#(and(isNat M, isNat N), M, N)) (top# ok X -> active# X, active# U31 X -> U31# active X) (top# ok X -> active# X, active# U31 X -> active# X) (top# ok X -> active# X, active# U21(tt(), M, N) -> plus#(N, M)) (top# ok X -> active# X, active# U21(tt(), M, N) -> s# plus(N, M)) (top# ok X -> active# X, active# U21(X1, X2, X3) -> U21#(active X1, X2, X3)) (top# ok X -> active# X, active# U21(X1, X2, X3) -> active# X1) (top# ok X -> active# X, active# plus(X1, X2) -> plus#(active X1, X2)) (top# ok X -> active# X, active# plus(X1, X2) -> plus#(X1, active X2)) (top# ok X -> active# X, active# plus(X1, X2) -> active# X2) (top# ok X -> active# X, active# plus(X1, X2) -> active# X1) (top# ok X -> active# X, active# plus(N, 0()) -> isNat# N) (top# ok X -> active# X, active# plus(N, 0()) -> U11#(isNat N, N)) (top# ok X -> active# X, active# plus(N, s M) -> isNat# M) (top# ok X -> active# X, active# plus(N, s M) -> isNat# N) (top# ok X -> active# X, active# plus(N, s M) -> and#(isNat M, isNat N)) (top# ok X -> active# X, active# plus(N, s M) -> U21#(and(isNat M, isNat N), M, N)) (top# ok X -> active# X, active# s X -> s# active X) (top# ok X -> active# X, active# s X -> active# X) (top# ok X -> active# X, active# U11(X1, X2) -> U11#(active X1, X2)) (top# ok X -> active# X, active# U11(X1, X2) -> active# X1) (proper# U41(X1, X2, X3) -> proper# X3, proper# isNat X -> proper# X) (proper# U41(X1, X2, X3) -> proper# X3, proper# isNat X -> isNat# proper X) (proper# U41(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# U41(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X3) (proper# U41(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# U41(X1, X2, X3) -> proper# X3, proper# x(X1, X2) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X3, proper# x(X1, X2) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X3, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# U41(X1, X2, X3) -> proper# X3, proper# U31 X -> proper# X) (proper# U41(X1, X2, X3) -> proper# X3, proper# U31 X -> U31# proper X) (proper# U41(X1, X2, X3) -> proper# X3, proper# U21(X1, X2, X3) -> proper# X3) (proper# U41(X1, X2, X3) -> proper# X3, proper# U21(X1, X2, X3) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X3, proper# U21(X1, X2, X3) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X3, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# U41(X1, X2, X3) -> proper# X3, proper# plus(X1, X2) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X3, proper# plus(X1, X2) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X3, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# U41(X1, X2, X3) -> proper# X3, proper# s X -> proper# X) (proper# U41(X1, X2, X3) -> proper# X3, proper# s X -> s# proper X) (proper# U41(X1, X2, X3) -> proper# X3, proper# U11(X1, X2) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X3, proper# U11(X1, X2) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X3, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (active# U41(tt(), M, N) -> x#(N, M), x#(ok X1, ok X2) -> x#(X1, X2)) (active# U41(tt(), M, N) -> x#(N, M), x#(mark X1, X2) -> x#(X1, X2)) (active# U41(tt(), M, N) -> x#(N, M), x#(X1, mark X2) -> x#(X1, X2)) (active# U21(tt(), M, N) -> plus#(N, M), plus#(X1, mark X2) -> plus#(X1, X2)) (active# U21(tt(), M, N) -> plus#(N, M), plus#(mark X1, X2) -> plus#(X1, X2)) (active# U21(tt(), M, N) -> plus#(N, M), plus#(ok X1, ok X2) -> plus#(X1, X2)) (proper# U21(X1, X2, X3) -> proper# X3, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (proper# U21(X1, X2, X3) -> proper# X3, proper# U11(X1, X2) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X3, proper# U11(X1, X2) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X3, proper# s X -> s# proper X) (proper# U21(X1, X2, X3) -> proper# X3, proper# s X -> proper# X) (proper# U21(X1, X2, X3) -> proper# X3, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# U21(X1, X2, X3) -> proper# X3, proper# plus(X1, X2) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X3, proper# plus(X1, X2) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X3, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# U21(X1, X2, X3) -> proper# X3, proper# U21(X1, X2, X3) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X3, proper# U21(X1, X2, X3) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X3, proper# U21(X1, X2, X3) -> proper# X3) (proper# U21(X1, X2, X3) -> proper# X3, proper# U31 X -> U31# proper X) (proper# U21(X1, X2, X3) -> proper# X3, proper# U31 X -> proper# X) (proper# U21(X1, X2, X3) -> proper# X3, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# U21(X1, X2, X3) -> proper# X3, proper# x(X1, X2) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X3, proper# x(X1, X2) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# U21(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X3) (proper# U21(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# U21(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X3, proper# isNat X -> isNat# proper X) (proper# U21(X1, X2, X3) -> proper# X3, proper# isNat X -> proper# X) (top# mark X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (top# mark X -> proper# X, proper# U11(X1, X2) -> proper# X1) (top# mark X -> proper# X, proper# U11(X1, X2) -> proper# X2) (top# mark X -> proper# X, proper# s X -> s# proper X) (top# mark X -> proper# X, proper# s X -> proper# X) (top# mark X -> proper# X, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (top# mark X -> proper# X, proper# plus(X1, X2) -> proper# X1) (top# mark X -> proper# X, proper# plus(X1, X2) -> proper# X2) (top# mark X -> proper# X, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (top# mark X -> proper# X, proper# U21(X1, X2, X3) -> proper# X1) (top# mark X -> proper# X, proper# U21(X1, X2, X3) -> proper# X2) (top# mark X -> proper# X, proper# U21(X1, X2, X3) -> proper# X3) (top# mark X -> proper# X, proper# U31 X -> U31# proper X) (top# mark X -> proper# X, proper# U31 X -> proper# X) (top# mark X -> proper# X, proper# x(X1, X2) -> x#(proper X1, proper X2)) (top# mark X -> proper# X, proper# x(X1, X2) -> proper# X1) (top# mark X -> proper# X, proper# x(X1, X2) -> proper# X2) (top# mark X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (top# mark X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1) (top# mark X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2) (top# mark X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3) (top# mark X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2)) (top# mark X -> proper# X, proper# and(X1, X2) -> proper# X1) (top# mark X -> proper# X, proper# and(X1, X2) -> proper# X2) (top# mark X -> proper# X, proper# isNat X -> isNat# proper X) (top# mark X -> proper# X, proper# isNat X -> proper# X) (proper# U31 X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (proper# U31 X -> proper# X, proper# U11(X1, X2) -> proper# X1) (proper# U31 X -> proper# X, proper# U11(X1, X2) -> proper# X2) (proper# U31 X -> proper# X, proper# s X -> s# proper X) (proper# U31 X -> proper# X, proper# s X -> proper# X) (proper# U31 X -> proper# X, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# U31 X -> proper# X, proper# plus(X1, X2) -> proper# X1) (proper# U31 X -> proper# X, proper# plus(X1, X2) -> proper# X2) (proper# U31 X -> proper# X, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# U31 X -> proper# X, proper# U21(X1, X2, X3) -> proper# X1) (proper# U31 X -> proper# X, proper# U21(X1, X2, X3) -> proper# X2) (proper# U31 X -> proper# X, proper# U21(X1, X2, X3) -> proper# X3) (proper# U31 X -> proper# X, proper# U31 X -> U31# proper X) (proper# U31 X -> proper# X, proper# U31 X -> proper# X) (proper# U31 X -> proper# X, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# U31 X -> proper# X, proper# x(X1, X2) -> proper# X1) (proper# U31 X -> proper# X, proper# x(X1, X2) -> proper# X2) (proper# U31 X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# U31 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1) (proper# U31 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2) (proper# U31 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3) (proper# U31 X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# U31 X -> proper# X, proper# and(X1, X2) -> proper# X1) (proper# U31 X -> proper# X, proper# and(X1, X2) -> proper# X2) (proper# U31 X -> proper# X, proper# isNat X -> isNat# proper X) (proper# U31 X -> proper# X, proper# isNat X -> proper# X) (isNat# ok X -> isNat# X, isNat# ok X -> isNat# X) (U31# mark X -> U31# X, U31# mark X -> U31# X) (U31# mark X -> U31# X, U31# ok X -> U31# X) (s# mark X -> s# X, s# mark X -> s# X) (s# mark X -> s# X, s# ok X -> s# X) (active# s X -> active# X, active# U11(X1, X2) -> active# X1) (active# s X -> active# X, active# U11(X1, X2) -> U11#(active X1, X2)) (active# s X -> active# X, active# s X -> active# X) (active# s X -> active# X, active# s X -> s# active X) (active# s X -> active# X, active# plus(N, s M) -> U21#(and(isNat M, isNat N), M, N)) (active# s X -> active# X, active# plus(N, s M) -> and#(isNat M, isNat N)) (active# s X -> active# X, active# plus(N, s M) -> isNat# N) (active# s X -> active# X, active# plus(N, s M) -> isNat# M) (active# s X -> active# X, active# plus(N, 0()) -> U11#(isNat N, N)) (active# s X -> active# X, active# plus(N, 0()) -> isNat# N) (active# s X -> active# X, active# plus(X1, X2) -> active# X1) (active# s X -> active# X, active# plus(X1, X2) -> active# X2) (active# s X -> active# X, active# plus(X1, X2) -> plus#(X1, active X2)) (active# s X -> active# X, active# plus(X1, X2) -> plus#(active X1, X2)) (active# s X -> active# X, active# U21(X1, X2, X3) -> active# X1) (active# s X -> active# X, active# U21(X1, X2, X3) -> U21#(active X1, X2, X3)) (active# s X -> active# X, active# U21(tt(), M, N) -> s# plus(N, M)) (active# s X -> active# X, active# U21(tt(), M, N) -> plus#(N, M)) (active# s X -> active# X, active# U31 X -> active# X) (active# s X -> active# X, active# U31 X -> U31# active X) (active# s X -> active# X, active# x(N, s M) -> U41#(and(isNat M, isNat N), M, N)) (active# s X -> active# X, active# x(N, s M) -> and#(isNat M, isNat N)) (active# s X -> active# X, active# x(N, s M) -> isNat# N) (active# s X -> active# X, active# x(N, s M) -> isNat# M) (active# s X -> active# X, active# x(N, 0()) -> U31# isNat N) (active# s X -> active# X, active# x(N, 0()) -> isNat# N) (active# s X -> active# X, active# x(X1, X2) -> active# X1) (active# s X -> active# X, active# x(X1, X2) -> active# X2) (active# s X -> active# X, active# x(X1, X2) -> x#(X1, active X2)) (active# s X -> active# X, active# x(X1, X2) -> x#(active X1, X2)) (active# s X -> active# X, active# U41(X1, X2, X3) -> active# X1) (active# s X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3)) (active# s X -> active# X, active# U41(tt(), M, N) -> plus#(x(N, M), N)) (active# s X -> active# X, active# U41(tt(), M, N) -> x#(N, M)) (active# s X -> active# X, active# and(X1, X2) -> active# X1) (active# s X -> active# X, active# and(X1, X2) -> and#(active X1, X2)) (active# s X -> active# X, active# isNat s V1 -> isNat# V1) (active# s X -> active# X, active# isNat plus(V1, V2) -> and#(isNat V1, isNat V2)) (active# s X -> active# X, active# isNat plus(V1, V2) -> isNat# V1) (active# s X -> active# X, active# isNat plus(V1, V2) -> isNat# V2) (active# s X -> active# X, active# isNat x(V1, V2) -> and#(isNat V1, isNat V2)) (active# s X -> active# X, active# isNat x(V1, V2) -> isNat# V1) (active# s X -> active# X, active# isNat x(V1, V2) -> isNat# V2) (proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3), U21#(mark X1, X2, X3) -> U21#(X1, X2, X3)) (proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3), U21#(ok X1, ok X2, ok X3) -> U21#(X1, X2, X3)) (active# plus(N, 0()) -> U11#(isNat N, N), U11#(mark X1, X2) -> U11#(X1, X2)) (active# plus(N, 0()) -> U11#(isNat N, N), U11#(ok X1, ok X2) -> U11#(X1, X2)) (active# plus(N, s M) -> U21#(and(isNat M, isNat N), M, N), U21#(mark X1, X2, X3) -> U21#(X1, X2, X3)) (proper# U41(X1, X2, X3) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (proper# U41(X1, X2, X3) -> proper# X1, proper# U11(X1, X2) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X1, proper# U11(X1, X2) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X1, proper# s X -> s# proper X) (proper# U41(X1, X2, X3) -> proper# X1, proper# s X -> proper# X) (proper# U41(X1, X2, X3) -> proper# X1, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# U41(X1, X2, X3) -> proper# X1, proper# plus(X1, X2) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X1, proper# plus(X1, X2) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X1, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# U41(X1, X2, X3) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X3) (proper# U41(X1, X2, X3) -> proper# X1, proper# U31 X -> U31# proper X) (proper# U41(X1, X2, X3) -> proper# X1, proper# U31 X -> proper# X) (proper# U41(X1, X2, X3) -> proper# X1, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# U41(X1, X2, X3) -> proper# X1, proper# x(X1, X2) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X1, proper# x(X1, X2) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# U41(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3) (proper# U41(X1, X2, X3) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# U41(X1, X2, X3) -> proper# X1, proper# and(X1, X2) -> proper# X1) (proper# U41(X1, X2, X3) -> proper# X1, proper# and(X1, X2) -> proper# X2) (proper# U41(X1, X2, X3) -> proper# X1, proper# isNat X -> isNat# proper X) (proper# U41(X1, X2, X3) -> proper# X1, proper# isNat X -> proper# X) (proper# U21(X1, X2, X3) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (proper# U21(X1, X2, X3) -> proper# X1, proper# U11(X1, X2) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X1, proper# U11(X1, X2) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X1, proper# s X -> s# proper X) (proper# U21(X1, X2, X3) -> proper# X1, proper# s X -> proper# X) (proper# U21(X1, X2, X3) -> proper# X1, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# U21(X1, X2, X3) -> proper# X1, proper# plus(X1, X2) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X1, proper# plus(X1, X2) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X1, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# U21(X1, X2, X3) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X3) (proper# U21(X1, X2, X3) -> proper# X1, proper# U31 X -> U31# proper X) (proper# U21(X1, X2, X3) -> proper# X1, proper# U31 X -> proper# X) (proper# U21(X1, X2, X3) -> proper# X1, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# U21(X1, X2, X3) -> proper# X1, proper# x(X1, X2) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X1, proper# x(X1, X2) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# U21(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3) (proper# U21(X1, X2, X3) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# U21(X1, X2, X3) -> proper# X1, proper# and(X1, X2) -> proper# X1) (proper# U21(X1, X2, X3) -> proper# X1, proper# and(X1, X2) -> proper# X2) (proper# U21(X1, X2, X3) -> proper# X1, proper# isNat X -> isNat# proper X) (proper# U21(X1, X2, X3) -> proper# X1, proper# isNat X -> proper# X) (proper# U11(X1, X2) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (proper# U11(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X1) (proper# U11(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2) (proper# U11(X1, X2) -> proper# X1, proper# s X -> s# proper X) (proper# U11(X1, X2) -> proper# X1, proper# s X -> proper# X) (proper# U11(X1, X2) -> proper# X1, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# U11(X1, X2) -> proper# X1, proper# plus(X1, X2) -> proper# X1) (proper# U11(X1, X2) -> proper# X1, proper# plus(X1, X2) -> proper# X2) (proper# U11(X1, X2) -> proper# X1, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# U11(X1, X2) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X1) (proper# U11(X1, X2) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X2) (proper# U11(X1, X2) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X3) (proper# U11(X1, X2) -> proper# X1, proper# U31 X -> U31# proper X) (proper# U11(X1, X2) -> proper# X1, proper# U31 X -> proper# X) (proper# U11(X1, X2) -> proper# X1, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# U11(X1, X2) -> proper# X1, proper# x(X1, X2) -> proper# X1) (proper# U11(X1, X2) -> proper# X1, proper# x(X1, X2) -> proper# X2) (proper# U11(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# U11(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1) (proper# U11(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2) (proper# U11(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3) (proper# U11(X1, X2) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# U11(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X1) (proper# U11(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2) (proper# U11(X1, X2) -> proper# X1, proper# isNat X -> isNat# proper X) (proper# U11(X1, X2) -> proper# X1, proper# isNat X -> proper# X) (active# U41(X1, X2, X3) -> active# X1, active# U11(X1, X2) -> active# X1) (active# U41(X1, X2, X3) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2)) (active# U41(X1, X2, X3) -> active# X1, active# s X -> active# X) (active# U41(X1, X2, X3) -> active# X1, active# s X -> s# active X) (active# U41(X1, X2, X3) -> active# X1, active# plus(N, s M) -> U21#(and(isNat M, isNat N), M, N)) (active# U41(X1, X2, X3) -> active# X1, active# plus(N, s M) -> and#(isNat M, isNat N)) (active# U41(X1, X2, X3) -> active# X1, active# plus(N, s M) -> isNat# N) (active# U41(X1, X2, X3) -> active# X1, active# plus(N, s M) -> isNat# M) (active# U41(X1, X2, X3) -> active# X1, active# plus(N, 0()) -> U11#(isNat N, N)) (active# U41(X1, X2, X3) -> active# X1, active# plus(N, 0()) -> isNat# N) (active# U41(X1, X2, X3) -> active# X1, active# plus(X1, X2) -> active# X1) (active# U41(X1, X2, X3) -> active# X1, active# plus(X1, X2) -> active# X2) (active# U41(X1, X2, X3) -> active# X1, active# plus(X1, X2) -> plus#(X1, active X2)) (active# U41(X1, X2, X3) -> active# X1, active# plus(X1, X2) -> plus#(active X1, X2)) (active# U41(X1, X2, X3) -> active# X1, active# U21(X1, X2, X3) -> active# X1) (active# U41(X1, X2, X3) -> active# X1, active# U21(X1, X2, X3) -> U21#(active X1, X2, X3)) (active# U41(X1, X2, X3) -> active# X1, active# U21(tt(), M, N) -> s# plus(N, M)) (active# U41(X1, X2, X3) -> active# X1, active# U21(tt(), M, N) -> plus#(N, M)) (active# U41(X1, X2, X3) -> active# X1, active# U31 X -> active# X) (active# U41(X1, X2, X3) -> active# X1, active# U31 X -> U31# active X) (active# U41(X1, X2, X3) -> active# X1, active# x(N, s M) -> U41#(and(isNat M, isNat N), M, N)) (active# U41(X1, X2, X3) -> active# X1, active# x(N, s M) -> and#(isNat M, isNat N)) (active# U41(X1, X2, X3) -> active# X1, active# x(N, s M) -> isNat# N) (active# U41(X1, X2, X3) -> active# X1, active# x(N, s M) -> isNat# M) (active# U41(X1, X2, X3) -> active# X1, active# x(N, 0()) -> U31# isNat N) (active# U41(X1, X2, X3) -> active# X1, active# x(N, 0()) -> isNat# N) (active# U41(X1, X2, X3) -> active# X1, active# x(X1, X2) -> active# X1) (active# U41(X1, X2, X3) -> active# X1, active# x(X1, X2) -> active# X2) (active# U41(X1, X2, X3) -> active# X1, active# x(X1, X2) -> x#(X1, active X2)) (active# U41(X1, X2, X3) -> active# X1, active# x(X1, X2) -> x#(active X1, X2)) (active# U41(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> active# X1) (active# U41(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3)) (active# U41(X1, X2, X3) -> active# X1, active# U41(tt(), M, N) -> plus#(x(N, M), N)) (active# U41(X1, X2, X3) -> active# X1, active# U41(tt(), M, N) -> x#(N, M)) (active# U41(X1, X2, X3) -> active# X1, active# and(X1, X2) -> active# X1) (active# U41(X1, X2, X3) -> active# X1, active# and(X1, X2) -> and#(active X1, X2)) (active# U41(X1, X2, X3) -> active# X1, active# isNat s V1 -> isNat# V1) (active# U41(X1, X2, X3) -> active# X1, active# isNat plus(V1, V2) -> and#(isNat V1, isNat V2)) (active# U41(X1, X2, X3) -> active# X1, active# isNat plus(V1, V2) -> isNat# V1) (active# U41(X1, X2, X3) -> active# X1, active# isNat plus(V1, V2) -> isNat# V2) (active# U41(X1, X2, X3) -> active# X1, active# isNat x(V1, V2) -> and#(isNat V1, isNat V2)) (active# U41(X1, X2, X3) -> active# X1, active# isNat x(V1, V2) -> isNat# V1) (active# U41(X1, X2, X3) -> active# X1, active# isNat x(V1, V2) -> isNat# V2) (active# U21(X1, X2, X3) -> active# X1, active# U11(X1, X2) -> active# X1) (active# U21(X1, X2, X3) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2)) (active# U21(X1, X2, X3) -> active# X1, active# s X -> active# X) (active# U21(X1, X2, X3) -> active# X1, active# s X -> s# active X) (active# U21(X1, X2, X3) -> active# X1, active# plus(N, s M) -> U21#(and(isNat M, isNat N), M, N)) (active# U21(X1, X2, X3) -> active# X1, active# plus(N, s M) -> and#(isNat M, isNat N)) (active# U21(X1, X2, X3) -> active# X1, active# plus(N, s M) -> isNat# N) (active# U21(X1, X2, X3) -> active# X1, active# plus(N, s M) -> isNat# M) (active# U21(X1, X2, X3) -> active# X1, active# plus(N, 0()) -> U11#(isNat N, N)) (active# U21(X1, X2, X3) -> active# X1, active# plus(N, 0()) -> isNat# N) (active# U21(X1, X2, X3) -> active# X1, active# plus(X1, X2) -> active# X1) (active# U21(X1, X2, X3) -> active# X1, active# plus(X1, X2) -> active# X2) (active# U21(X1, X2, X3) -> active# X1, active# plus(X1, X2) -> plus#(X1, active X2)) (active# U21(X1, X2, X3) -> active# X1, active# plus(X1, X2) -> plus#(active X1, X2)) (active# U21(X1, X2, X3) -> active# X1, active# U21(X1, X2, X3) -> active# X1) (active# U21(X1, X2, X3) -> active# X1, active# U21(X1, X2, X3) -> U21#(active X1, X2, X3)) (active# U21(X1, X2, X3) -> active# X1, active# U21(tt(), M, N) -> s# plus(N, M)) (active# U21(X1, X2, X3) -> active# X1, active# U21(tt(), M, N) -> plus#(N, M)) (active# U21(X1, X2, X3) -> active# X1, active# U31 X -> active# X) (active# U21(X1, X2, X3) -> active# X1, active# U31 X -> U31# active X) (active# U21(X1, X2, X3) -> active# X1, active# x(N, s M) -> U41#(and(isNat M, isNat N), M, N)) (active# U21(X1, X2, X3) -> active# X1, active# x(N, s M) -> and#(isNat M, isNat N)) (active# U21(X1, X2, X3) -> active# X1, active# x(N, s M) -> isNat# N) (active# U21(X1, X2, X3) -> active# X1, active# x(N, s M) -> isNat# M) (active# U21(X1, X2, X3) -> active# X1, active# x(N, 0()) -> U31# isNat N) (active# U21(X1, X2, X3) -> active# X1, active# x(N, 0()) -> isNat# N) (active# U21(X1, X2, X3) -> active# X1, active# x(X1, X2) -> active# X1) (active# U21(X1, X2, X3) -> active# X1, active# x(X1, X2) -> active# X2) (active# U21(X1, X2, X3) -> active# X1, active# x(X1, X2) -> x#(X1, active X2)) (active# U21(X1, X2, X3) -> active# X1, active# x(X1, X2) -> x#(active X1, X2)) (active# U21(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> active# X1) (active# U21(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3)) (active# U21(X1, X2, X3) -> active# X1, active# U41(tt(), M, N) -> plus#(x(N, M), N)) (active# U21(X1, X2, X3) -> active# X1, active# U41(tt(), M, N) -> x#(N, M)) (active# U21(X1, X2, X3) -> active# X1, active# and(X1, X2) -> active# X1) (active# U21(X1, X2, X3) -> active# X1, active# and(X1, X2) -> and#(active X1, X2)) (active# U21(X1, X2, X3) -> active# X1, active# isNat s V1 -> isNat# V1) (active# U21(X1, X2, X3) -> active# X1, active# isNat plus(V1, V2) -> and#(isNat V1, isNat V2)) (active# U21(X1, X2, X3) -> active# X1, active# isNat plus(V1, V2) -> isNat# V1) (active# U21(X1, X2, X3) -> active# X1, active# isNat plus(V1, V2) -> isNat# V2) (active# U21(X1, X2, X3) -> active# X1, active# isNat x(V1, V2) -> and#(isNat V1, isNat V2)) (active# U21(X1, X2, X3) -> active# X1, active# isNat x(V1, V2) -> isNat# V1) (active# U21(X1, X2, X3) -> active# X1, active# isNat x(V1, V2) -> isNat# V2) (active# U11(X1, X2) -> active# X1, active# U11(X1, X2) -> active# X1) (active# U11(X1, X2) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2)) (active# U11(X1, X2) -> active# X1, active# s X -> active# X) (active# U11(X1, X2) -> active# X1, active# s X -> s# active X) (active# U11(X1, X2) -> active# X1, active# plus(N, s M) -> U21#(and(isNat M, isNat N), M, N)) (active# U11(X1, X2) -> active# X1, active# plus(N, s M) -> and#(isNat M, isNat N)) (active# U11(X1, X2) -> active# X1, active# plus(N, s M) -> isNat# N) (active# U11(X1, X2) -> active# X1, active# plus(N, s M) -> isNat# M) (active# U11(X1, X2) -> active# X1, active# plus(N, 0()) -> U11#(isNat N, N)) (active# U11(X1, X2) -> active# X1, active# plus(N, 0()) -> isNat# N) (active# U11(X1, X2) -> active# X1, active# plus(X1, X2) -> active# X1) (active# U11(X1, X2) -> active# X1, active# plus(X1, X2) -> active# X2) (active# U11(X1, X2) -> active# X1, active# plus(X1, X2) -> plus#(X1, active X2)) (active# U11(X1, X2) -> active# X1, active# plus(X1, X2) -> plus#(active X1, X2)) (active# U11(X1, X2) -> active# X1, active# U21(X1, X2, X3) -> active# X1) (active# U11(X1, X2) -> active# X1, active# U21(X1, X2, X3) -> U21#(active X1, X2, X3)) (active# U11(X1, X2) -> active# X1, active# U21(tt(), M, N) -> s# plus(N, M)) (active# U11(X1, X2) -> active# X1, active# U21(tt(), M, N) -> plus#(N, M)) (active# U11(X1, X2) -> active# X1, active# U31 X -> active# X) (active# U11(X1, X2) -> active# X1, active# U31 X -> U31# active X) (active# U11(X1, X2) -> active# X1, active# x(N, s M) -> U41#(and(isNat M, isNat N), M, N)) (active# U11(X1, X2) -> active# X1, active# x(N, s M) -> and#(isNat M, isNat N)) (active# U11(X1, X2) -> active# X1, active# x(N, s M) -> isNat# N) (active# U11(X1, X2) -> active# X1, active# x(N, s M) -> isNat# M) (active# U11(X1, X2) -> active# X1, active# x(N, 0()) -> U31# isNat N) (active# U11(X1, X2) -> active# X1, active# x(N, 0()) -> isNat# N) (active# U11(X1, X2) -> active# X1, active# x(X1, X2) -> active# X1) (active# U11(X1, X2) -> active# X1, active# x(X1, X2) -> active# X2) (active# U11(X1, X2) -> active# X1, active# x(X1, X2) -> x#(X1, active X2)) (active# U11(X1, X2) -> active# X1, active# x(X1, X2) -> x#(active X1, X2)) (active# U11(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1) (active# U11(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3)) (active# U11(X1, X2) -> active# X1, active# U41(tt(), M, N) -> plus#(x(N, M), N)) (active# U11(X1, X2) -> active# X1, active# U41(tt(), M, N) -> x#(N, M)) (active# U11(X1, X2) -> active# X1, active# and(X1, X2) -> active# X1) (active# U11(X1, X2) -> active# X1, active# and(X1, X2) -> and#(active X1, X2)) (active# U11(X1, X2) -> active# X1, active# isNat s V1 -> isNat# V1) (active# U11(X1, X2) -> active# X1, active# isNat plus(V1, V2) -> and#(isNat V1, isNat V2)) (active# U11(X1, X2) -> active# X1, active# isNat plus(V1, V2) -> isNat# V1) (active# U11(X1, X2) -> active# X1, active# isNat plus(V1, V2) -> isNat# V2) (active# U11(X1, X2) -> active# X1, active# isNat x(V1, V2) -> and#(isNat V1, isNat V2)) (active# U11(X1, X2) -> active# X1, active# isNat x(V1, V2) -> isNat# V1) (active# U11(X1, X2) -> active# X1, active# isNat x(V1, V2) -> isNat# V2) (active# x(N, s M) -> isNat# N, isNat# ok X -> isNat# X) (active# plus(N, s M) -> isNat# N, isNat# ok X -> isNat# X) (proper# x(X1, X2) -> x#(proper X1, proper X2), x#(X1, mark X2) -> x#(X1, X2)) (proper# x(X1, X2) -> x#(proper X1, proper X2), x#(mark X1, X2) -> x#(X1, X2)) (proper# x(X1, X2) -> x#(proper X1, proper X2), x#(ok X1, ok X2) -> x#(X1, X2)) (proper# U11(X1, X2) -> U11#(proper X1, proper X2), U11#(mark X1, X2) -> U11#(X1, X2)) (proper# U11(X1, X2) -> U11#(proper X1, proper X2), U11#(ok X1, ok X2) -> U11#(X1, X2)) (active# isNat plus(V1, V2) -> and#(isNat V1, isNat V2), and#(mark X1, X2) -> and#(X1, X2)) (active# isNat plus(V1, V2) -> and#(isNat V1, isNat V2), and#(ok X1, ok X2) -> and#(X1, X2)) (active# x(N, s M) -> and#(isNat M, isNat N), and#(mark X1, X2) -> and#(X1, X2)) (active# x(N, s M) -> and#(isNat M, isNat N), and#(ok X1, ok X2) -> and#(X1, X2)) (active# plus(N, s M) -> and#(isNat M, isNat N), and#(mark X1, X2) -> and#(X1, X2)) (active# plus(N, s M) -> and#(isNat M, isNat N), and#(ok X1, ok X2) -> and#(X1, X2)) (active# isNat plus(V1, V2) -> isNat# V1, isNat# ok X -> isNat# X) (proper# and(X1, X2) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (proper# and(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X1) (proper# and(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X2) (proper# and(X1, X2) -> proper# X2, proper# s X -> s# proper X) (proper# and(X1, X2) -> proper# X2, proper# s X -> proper# X) (proper# and(X1, X2) -> proper# X2, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# and(X1, X2) -> proper# X2, proper# plus(X1, X2) -> proper# X1) (proper# and(X1, X2) -> proper# X2, proper# plus(X1, X2) -> proper# X2) (proper# and(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# and(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X1) (proper# and(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X2) (proper# and(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X3) (proper# and(X1, X2) -> proper# X2, proper# U31 X -> U31# proper X) (proper# and(X1, X2) -> proper# X2, proper# U31 X -> proper# X) (proper# and(X1, X2) -> proper# X2, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# and(X1, X2) -> proper# X2, proper# x(X1, X2) -> proper# X1) (proper# and(X1, X2) -> proper# X2, proper# x(X1, X2) -> proper# X2) (proper# and(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# and(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1) (proper# and(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2) (proper# and(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3) (proper# and(X1, X2) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# and(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X1) (proper# and(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X2) (proper# and(X1, X2) -> proper# X2, proper# isNat X -> isNat# proper X) (proper# and(X1, X2) -> proper# X2, proper# isNat X -> proper# X) (proper# x(X1, X2) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (proper# x(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X1) (proper# x(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X2) (proper# x(X1, X2) -> proper# X2, proper# s X -> s# proper X) (proper# x(X1, X2) -> proper# X2, proper# s X -> proper# X) (proper# x(X1, X2) -> proper# X2, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# x(X1, X2) -> proper# X2, proper# plus(X1, X2) -> proper# X1) (proper# x(X1, X2) -> proper# X2, proper# plus(X1, X2) -> proper# X2) (proper# x(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# x(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X1) (proper# x(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X2) (proper# x(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X3) (proper# x(X1, X2) -> proper# X2, proper# U31 X -> U31# proper X) (proper# x(X1, X2) -> proper# X2, proper# U31 X -> proper# X) (proper# x(X1, X2) -> proper# X2, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# x(X1, X2) -> proper# X2, proper# x(X1, X2) -> proper# X1) (proper# x(X1, X2) -> proper# X2, proper# x(X1, X2) -> proper# X2) (proper# x(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# x(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1) (proper# x(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2) (proper# x(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3) (proper# x(X1, X2) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# x(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X1) (proper# x(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X2) (proper# x(X1, X2) -> proper# X2, proper# isNat X -> isNat# proper X) (proper# x(X1, X2) -> proper# X2, proper# isNat X -> proper# X) (proper# plus(X1, X2) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2)) (proper# plus(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X1) (proper# plus(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X2) (proper# plus(X1, X2) -> proper# X2, proper# s X -> s# proper X) (proper# plus(X1, X2) -> proper# X2, proper# s X -> proper# X) (proper# plus(X1, X2) -> proper# X2, proper# plus(X1, X2) -> plus#(proper X1, proper X2)) (proper# plus(X1, X2) -> proper# X2, proper# plus(X1, X2) -> proper# X1) (proper# plus(X1, X2) -> proper# X2, proper# plus(X1, X2) -> proper# X2) (proper# plus(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> U21#(proper X1, proper X2, proper X3)) (proper# plus(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X1) (proper# plus(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X2) (proper# plus(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X3) (proper# plus(X1, X2) -> proper# X2, proper# U31 X -> U31# proper X) (proper# plus(X1, X2) -> proper# X2, proper# U31 X -> proper# X) (proper# plus(X1, X2) -> proper# X2, proper# x(X1, X2) -> x#(proper X1, proper X2)) (proper# plus(X1, X2) -> proper# X2, proper# x(X1, X2) -> proper# X1) (proper# plus(X1, X2) -> proper# X2, proper# x(X1, X2) -> proper# X2) (proper# plus(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3)) (proper# plus(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1) (proper# plus(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2) (proper# plus(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3) (proper# plus(X1, X2) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2)) (proper# plus(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X1) (proper# plus(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X2) (proper# plus(X1, X2) -> proper# X2, proper# isNat X -> isNat# proper X) (proper# plus(X1, X2) -> proper# X2, proper# isNat X -> proper# X) (active# x(X1, X2) -> active# X2, active# U11(X1, X2) -> active# X1) (active# x(X1, X2) -> active# X2, active# U11(X1, X2) -> U11#(active X1, X2)) (active# x(X1, X2) -> active# X2, active# s X -> active# X) (active# x(X1, X2) -> active# X2, active# s X -> s# active X) (active# x(X1, X2) -> active# X2, active# plus(N, s M) -> U21#(and(isNat M, isNat N), M, N)) (active# x(X1, X2) -> active# X2, active# plus(N, s M) -> and#(isNat M, isNat N)) (active# x(X1, X2) -> active# X2, active# plus(N, s M) -> isNat# N) (active# x(X1, X2) -> active# X2, active# plus(N, s M) -> isNat# M) (active# x(X1, X2) -> active# X2, active# plus(N, 0()) -> U11#(isNat N, N)) (active# x(X1, X2) -> active# X2, active# plus(N, 0()) -> isNat# N) (active# x(X1, X2) -> active# X2, active# plus(X1, X2) -> active# X1) (active# x(X1, X2) -> active# X2, active# plus(X1, X2) -> active# X2) (active# x(X1, X2) -> active# X2, active# plus(X1, X2) -> plus#(X1, active X2)) (active# x(X1, X2) -> active# X2, active# plus(X1, X2) -> plus#(active X1, X2)) (active# x(X1, X2) -> active# X2, active# U21(X1, X2, X3) -> active# X1) (active# x(X1, X2) -> active# X2, active# U21(X1, X2, X3) -> U21#(active X1, X2, X3)) (active# x(X1, X2) -> active# X2, active# U21(tt(), M, N) -> s# plus(N, M)) (active# x(X1, X2) -> active# X2, active# U21(tt(), M, N) -> plus#(N, M)) (active# x(X1, X2) -> active# X2, active# U31 X -> active# X) (active# x(X1, X2) -> active# X2, active# U31 X -> U31# active X) (active# x(X1, X2) -> active# X2, active# x(N, s M) -> U41#(and(isNat M, isNat N), M, N)) (active# x(X1, X2) -> active# X2, active# x(N, s M) -> and#(isNat M, isNat N)) (active# x(X1, X2) -> active# X2, active# x(N, s M) -> isNat# N) (active# x(X1, X2) -> active# X2, active# x(N, s M) -> isNat# M) (active# x(X1, X2) -> active# X2, active# x(N, 0()) -> U31# isNat N) (active# x(X1, X2) -> active# X2, active# x(N, 0()) -> isNat# N) (active# x(X1, X2) -> active# X2, active# x(X1, X2) -> active# X1) (active# x(X1, X2) -> active# X2, active# x(X1, X2) -> active# X2) (active# x(X1, X2) -> active# X2, active# x(X1, X2) -> x#(X1, active X2)) (active# x(X1, X2) -> active# X2, active# x(X1, X2) -> x#(active X1, X2)) (active# x(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> active# X1) (active# x(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3)) (active# x(X1, X2) -> active# X2, active# U41(tt(), M, N) -> plus#(x(N, M), N)) (active# x(X1, X2) -> active# X2, active# U41(tt(), M, N) -> x#(N, M)) (active# x(X1, X2) -> active# X2, active# and(X1, X2) -> active# X1) (active# x(X1, X2) -> active# X2, active# and(X1, X2) -> and#(active X1, X2)) (active# x(X1, X2) -> active# X2, active# isNat s V1 -> isNat# V1) (active# x(X1, X2) -> active# X2, active# isNat plus(V1, V2) -> and#(isNat V1, isNat V2)) (active# x(X1, X2) -> active# X2, active# isNat plus(V1, V2) -> isNat# V1) (active# x(X1, X2) -> active# X2, active# isNat plus(V1, V2) -> isNat# V2) (active# x(X1, X2) -> active# X2, active# isNat x(V1, V2) -> and#(isNat V1, isNat V2)) (active# x(X1, X2) -> active# X2, active# isNat x(V1, V2) -> isNat# V1) (active# x(X1, X2) -> active# X2, active# isNat x(V1, V2) -> isNat# V2) (active# U21(tt(), M, N) -> s# plus(N, M), s# mark X -> s# X) (active# U21(tt(), M, N) -> s# plus(N, M), s# ok X -> s# X) (and#(mark X1, X2) -> and#(X1, X2), and#(mark X1, X2) -> and#(X1, X2)) (and#(mark X1, X2) -> and#(X1, X2), and#(ok X1, ok X2) -> and#(X1, X2)) (x#(mark X1, X2) -> x#(X1, X2), x#(X1, mark X2) -> x#(X1, X2)) (x#(mark X1, X2) -> x#(X1, X2), x#(mark X1, X2) -> x#(X1, X2)) (x#(mark X1, X2) -> x#(X1, X2), x#(ok X1, ok X2) -> x#(X1, X2)) (plus#(ok X1, ok X2) -> plus#(X1, X2), plus#(X1, mark X2) -> plus#(X1, X2)) (plus#(ok X1, ok X2) -> plus#(X1, X2), plus#(mark X1, X2) -> plus#(X1, X2)) (plus#(ok X1, ok X2) -> plus#(X1, X2), plus#(ok X1, ok X2) -> plus#(X1, X2)) (plus#(X1, mark X2) -> plus#(X1, X2), plus#(X1, mark X2) -> plus#(X1, X2)) (plus#(X1, mark X2) -> plus#(X1, X2), plus#(mark X1, X2) -> plus#(X1, X2)) (plus#(X1, mark X2) -> plus#(X1, X2), plus#(ok X1, ok X2) -> plus#(X1, X2)) (U11#(mark X1, X2) -> U11#(X1, X2), U11#(mark X1, X2) -> U11#(X1, X2)) (U11#(mark X1, X2) -> U11#(X1, X2), U11#(ok X1, ok X2) -> U11#(X1, X2)) (active# isNat plus(V1, V2) -> isNat# V2, isNat# ok X -> isNat# X) (U41#(mark X1, X2, X3) -> U41#(X1, X2, X3), U41#(mark X1, X2, X3) -> U41#(X1, X2, X3)) (U41#(mark X1, X2, X3) -> U41#(X1, X2, X3), U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3)) (U21#(mark X1, X2, X3) -> U21#(X1, X2, X3), U21#(mark X1, X2, X3) -> U21#(X1, X2, X3)) (U21#(mark X1, X2, X3) -> U21#(X1, X2, X3), U21#(ok X1, ok X2, ok X3) -> U21#(X1, X2, X3)) (active# U21(X1, X2, X3) -> U21#(active X1, X2, X3), U21#(mark X1, X2, X3) -> U21#(X1, X2, X3)) (active# U21(X1, X2, X3) -> U21#(active X1, X2, X3), U21#(ok X1, ok X2, ok X3) -> U21#(X1, X2, X3)) (active# x(X1, X2) -> x#(active X1, X2), x#(mark X1, X2) -> x#(X1, X2)) (active# x(X1, X2) -> x#(active X1, X2), x#(ok X1, ok X2) -> x#(X1, X2)) (active# plus(X1, X2) -> plus#(active X1, X2), plus#(mark X1, X2) -> plus#(X1, X2)) (active# plus(X1, X2) -> plus#(active X1, X2), plus#(ok X1, ok X2) -> plus#(X1, X2)) (top# ok X -> top# active X, top# mark X -> proper# X) (top# ok X -> top# active X, top# mark X -> top# proper X) (top# ok X -> top# active X, top# ok X -> active# X) (top# ok X -> top# active X, top# ok X -> top# active X) (proper# isNat X -> isNat# proper X, isNat# ok X -> isNat# X) (proper# s X -> s# proper X, s# mark X -> s# X) (proper# s X -> s# proper X, s# ok X -> s# X) (active# s X -> s# active X, s# mark X -> s# X) (active# s X -> s# active X, s# ok X -> s# X) } STATUS: arrows: 0.874291 SCCS (12): Scc: {top# mark X -> top# proper X, top# ok X -> top# active X} Scc: { active# U11(X1, X2) -> active# X1, active# s X -> active# X, active# plus(X1, X2) -> active# X1, active# plus(X1, X2) -> active# X2, active# U21(X1, X2, X3) -> active# X1, active# U31 X -> active# X, active# x(X1, X2) -> active# X1, active# x(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> active# X1, active# and(X1, X2) -> active# X1} Scc: { proper# U11(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2, proper# s X -> proper# X, proper# plus(X1, X2) -> proper# X1, proper# plus(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X3, proper# U31 X -> proper# X, proper# x(X1, X2) -> proper# X1, proper# x(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2, proper# isNat X -> proper# X} Scc: { and#(mark X1, X2) -> and#(X1, X2), and#(ok X1, ok X2) -> and#(X1, X2)} Scc: { U41#(mark X1, X2, X3) -> U41#(X1, X2, X3), U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3)} Scc: { x#(X1, mark X2) -> x#(X1, X2), x#(mark X1, X2) -> x#(X1, X2), x#(ok X1, ok X2) -> x#(X1, X2)} Scc: { U21#(mark X1, X2, X3) -> U21#(X1, X2, X3), U21#(ok X1, ok X2, ok X3) -> U21#(X1, X2, X3)} Scc: { plus#(X1, mark X2) -> plus#(X1, X2), plus#(mark X1, X2) -> plus#(X1, X2), plus#(ok X1, ok X2) -> plus#(X1, X2)} Scc: { U11#(mark X1, X2) -> U11#(X1, X2), U11#(ok X1, ok X2) -> U11#(X1, X2)} Scc: {isNat# ok X -> isNat# X} Scc: {U31# mark X -> U31# X, U31# ok X -> U31# X} Scc: {s# mark X -> s# X, s# ok X -> s# X} SCC (2): Strict: {top# mark X -> top# proper X, top# ok X -> top# active X} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} Fail SCC (10): Strict: { active# U11(X1, X2) -> active# X1, active# s X -> active# X, active# plus(X1, X2) -> active# X1, active# plus(X1, X2) -> active# X2, active# U21(X1, X2, X3) -> active# X1, active# U31 X -> active# X, active# x(X1, X2) -> active# X1, active# x(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> active# X1, active# and(X1, X2) -> active# X1} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0 + 1, [U41](x0, x1, x2) = x0 + 1, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = x0 + x1 + 1, [x](x0, x1) = x0 + x1 + 1, [and](x0, x1) = x0 + x1 + 1, [mark](x0) = x0, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = 1, [proper](x0) = 1, [ok](x0) = 1, [top](x0) = 0, [tt] = 1, [0] = 0, [active#](x0) = x0 + 1 Strict: active# and(X1, X2) -> active# X1 2 + 1X1 + 1X2 >= 1 + 1X1 active# U41(X1, X2, X3) -> active# X1 2 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 active# x(X1, X2) -> active# X2 2 + 1X1 + 1X2 >= 1 + 1X2 active# x(X1, X2) -> active# X1 2 + 1X1 + 1X2 >= 1 + 1X1 active# U31 X -> active# X 2 + 1X >= 1 + 1X active# U21(X1, X2, X3) -> active# X1 2 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 active# plus(X1, X2) -> active# X2 2 + 1X1 + 1X2 >= 1 + 1X2 active# plus(X1, X2) -> active# X1 2 + 1X1 + 1X2 >= 1 + 1X1 active# s X -> active# X 2 + 1X >= 1 + 1X active# U11(X1, X2) -> active# X1 2 + 1X1 + 0X2 >= 1 + 1X1 Weak: top ok X -> top active X 0 + 0X >= 0 + 0X top mark X -> top proper X 0 + 0X >= 0 + 0X proper isNat X -> isNat proper X 1 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 1 + 0X1 + 0X2 >= 3 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 1 + 0X1 + 0X2 + 0X3 >= 2 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 1 + 0X1 + 0X2 >= 3 + 0X1 + 0X2 proper U31 X -> U31 proper X 1 + 0X >= 2 + 0X proper 0() -> ok 0() 1 >= 1 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 1 + 0X1 + 0X2 + 0X3 >= 2 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 1 + 0X1 + 0X2 >= 3 + 0X1 + 0X2 proper s X -> s proper X 1 + 0X >= 2 + 0X proper tt() -> ok tt() 1 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 1 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 3 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 and(mark X1, X2) -> mark and(X1, X2) 1 + 1X1 + 1X2 >= 1 + 1X1 + 1X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 2 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 3 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 1X1 + 1X2 >= 1 + 1X1 + 1X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 1X1 + 1X2 >= 1 + 1X1 + 1X2 U31 ok X -> ok U31 X 2 + 0X >= 1 + 0X U31 mark X -> mark U31 X 1 + 1X >= 1 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 2 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 3 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 1X1 + 1X2 >= 1 + 1X1 + 1X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 1X1 + 1X2 >= 1 + 1X1 + 1X2 s ok X -> ok s X 2 + 0X >= 1 + 0X s mark X -> mark s X 1 + 1X >= 1 + 1X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 1 + 1X1 + 0X2 >= 1 + 1X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 1 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 0V1 >= 1 + 0V1 active and(tt(), X) -> mark X 3 + 1X >= 0 + 1X active and(X1, X2) -> and(active X1, X2) 2 + 1X1 + 1X2 >= 2 + 1X1 + 1X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 3 + 0N + 0M >= 2 + 2N + 1M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 1X1 + 1X2 >= 2 + 1X1 + 1X2 active x(X1, X2) -> x(X1, active X2) 2 + 1X1 + 1X2 >= 2 + 1X1 + 1X2 active x(N, 0()) -> mark U31 isNat N 2 + 1N >= 2 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 3 + 1N + 1M >= 4 + 0N + 0M active U31 tt() -> mark 0() 3 >= 0 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 3 + 0N + 0M >= 2 + 1N + 1M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 1X1 + 1X2 >= 2 + 1X1 + 1X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 1X1 + 1X2 >= 2 + 1X1 + 1X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 1N >= 2 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 3 + 1N + 1M >= 4 + 0N + 0M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 3 + 0N >= 0 + 1N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 Qed SCC (17): Strict: { proper# U11(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2, proper# s X -> proper# X, proper# plus(X1, X2) -> proper# X1, proper# plus(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X3, proper# U31 X -> proper# X, proper# x(X1, X2) -> proper# X1, proper# x(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2, proper# isNat X -> proper# X} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0 + x1 + x2, [U41](x0, x1, x2) = x0 + x1 + x2, [U11](x0, x1) = x0 + x1, [plus](x0, x1) = x0 + x1, [x](x0, x1) = x0 + x1, [and](x0, x1) = x0 + x1, [mark](x0) = x0, [active](x0) = 0, [s](x0) = x0, [U31](x0) = x0, [isNat](x0) = x0 + 1, [proper](x0) = 0, [ok](x0) = 0, [top](x0) = 0, [tt] = 0, [0] = 0, [proper#](x0) = x0 Strict: proper# isNat X -> proper# X 1 + 1X >= 0 + 1X proper# and(X1, X2) -> proper# X2 0 + 1X1 + 1X2 >= 0 + 1X2 proper# and(X1, X2) -> proper# X1 0 + 1X1 + 1X2 >= 0 + 1X1 proper# U41(X1, X2, X3) -> proper# X3 0 + 1X1 + 1X2 + 1X3 >= 0 + 1X3 proper# U41(X1, X2, X3) -> proper# X2 0 + 1X1 + 1X2 + 1X3 >= 0 + 1X2 proper# U41(X1, X2, X3) -> proper# X1 0 + 1X1 + 1X2 + 1X3 >= 0 + 1X1 proper# x(X1, X2) -> proper# X2 0 + 1X1 + 1X2 >= 0 + 1X2 proper# x(X1, X2) -> proper# X1 0 + 1X1 + 1X2 >= 0 + 1X1 proper# U31 X -> proper# X 0 + 1X >= 0 + 1X proper# U21(X1, X2, X3) -> proper# X3 0 + 1X1 + 1X2 + 1X3 >= 0 + 1X3 proper# U21(X1, X2, X3) -> proper# X2 0 + 1X1 + 1X2 + 1X3 >= 0 + 1X2 proper# U21(X1, X2, X3) -> proper# X1 0 + 1X1 + 1X2 + 1X3 >= 0 + 1X1 proper# plus(X1, X2) -> proper# X2 0 + 1X1 + 1X2 >= 0 + 1X2 proper# plus(X1, X2) -> proper# X1 0 + 1X1 + 1X2 >= 0 + 1X1 proper# s X -> proper# X 0 + 1X >= 0 + 1X proper# U11(X1, X2) -> proper# X2 0 + 1X1 + 1X2 >= 0 + 1X2 proper# U11(X1, X2) -> proper# X1 0 + 1X1 + 1X2 >= 0 + 1X1 Weak: top ok X -> top active X 0 + 0X >= 0 + 0X top mark X -> top proper X 0 + 0X >= 0 + 0X proper isNat X -> isNat proper X 0 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 0 + 0X proper 0() -> ok 0() 0 >= 0 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 0 + 0X proper tt() -> ok tt() 0 >= 0 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 0 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 and(mark X1, X2) -> mark and(X1, X2) 0 + 1X1 + 1X2 >= 0 + 1X1 + 1X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 0 + 1X1 + 1X2 + 1X3 >= 0 + 1X1 + 1X2 + 1X3 x(ok X1, ok X2) -> ok x(X1, X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 0 + 1X1 + 1X2 >= 0 + 1X1 + 1X2 x(X1, mark X2) -> mark x(X1, X2) 0 + 1X1 + 1X2 >= 0 + 1X1 + 1X2 U31 ok X -> ok U31 X 0 + 0X >= 0 + 0X U31 mark X -> mark U31 X 0 + 1X >= 0 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 0 + 1X1 + 1X2 + 1X3 >= 0 + 1X1 + 1X2 + 1X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 0 + 1X1 + 1X2 >= 0 + 1X1 + 1X2 plus(X1, mark X2) -> mark plus(X1, X2) 0 + 1X1 + 1X2 >= 0 + 1X1 + 1X2 s ok X -> ok s X 0 + 0X >= 0 + 0X s mark X -> mark s X 0 + 1X >= 0 + 1X U11(ok X1, ok X2) -> ok U11(X1, X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 0 + 1X1 + 1X2 >= 0 + 1X1 + 1X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 0 + 0V1 + 0V2 >= 2 + 1V1 + 1V2 active isNat 0() -> mark tt() 0 >= 0 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 0 + 0V1 + 0V2 >= 2 + 1V1 + 1V2 active isNat s V1 -> mark isNat V1 0 + 0V1 >= 1 + 1V1 active and(tt(), X) -> mark X 0 + 0X >= 0 + 1X active and(X1, X2) -> and(active X1, X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 1X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 0 + 0N + 0M >= 0 + 2N + 1M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 1X2 + 1X3 active x(X1, X2) -> x(active X1, X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 1X2 active x(X1, X2) -> x(X1, active X2) 0 + 0X1 + 0X2 >= 0 + 1X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 0 + 0N >= 1 + 1N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 0 + 0N + 0M >= 2 + 2N + 2M active U31 tt() -> mark 0() 0 >= 0 active U31 X -> U31 active X 0 + 0X >= 0 + 0X active U21(tt(), M, N) -> mark s plus(N, M) 0 + 0N + 0M >= 0 + 1N + 1M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 1X2 + 1X3 active plus(X1, X2) -> plus(active X1, X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 1X2 active plus(X1, X2) -> plus(X1, active X2) 0 + 0X1 + 0X2 >= 0 + 1X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 0 + 0N >= 1 + 2N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 0 + 0N + 0M >= 2 + 2N + 2M active s X -> s active X 0 + 0X >= 0 + 0X active U11(tt(), N) -> mark N 0 + 0N >= 0 + 1N active U11(X1, X2) -> U11(active X1, X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 1X2 SCCS (1): Scc: { proper# U11(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2, proper# s X -> proper# X, proper# plus(X1, X2) -> proper# X1, proper# plus(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X3, proper# U31 X -> proper# X, proper# x(X1, X2) -> proper# X1, proper# x(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2} SCC (16): Strict: { proper# U11(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2, proper# s X -> proper# X, proper# plus(X1, X2) -> proper# X1, proper# plus(X1, X2) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X1, proper# U21(X1, X2, X3) -> proper# X2, proper# U21(X1, X2, X3) -> proper# X3, proper# U31 X -> proper# X, proper# x(X1, X2) -> proper# X1, proper# x(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0 + x1 + x2 + 1, [U41](x0, x1, x2) = x0 + x1 + x2 + 1, [U11](x0, x1) = x0 + x1 + 1, [plus](x0, x1) = x0 + x1 + 1, [x](x0, x1) = x0 + x1 + 1, [and](x0, x1) = x0 + x1 + 1, [mark](x0) = x0, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = 1, [proper](x0) = 0, [ok](x0) = 0, [top](x0) = 0, [tt] = 1, [0] = 0, [proper#](x0) = x0 + 1 Strict: proper# and(X1, X2) -> proper# X2 2 + 1X1 + 1X2 >= 1 + 1X2 proper# and(X1, X2) -> proper# X1 2 + 1X1 + 1X2 >= 1 + 1X1 proper# U41(X1, X2, X3) -> proper# X3 2 + 1X1 + 1X2 + 1X3 >= 1 + 1X3 proper# U41(X1, X2, X3) -> proper# X2 2 + 1X1 + 1X2 + 1X3 >= 1 + 1X2 proper# U41(X1, X2, X3) -> proper# X1 2 + 1X1 + 1X2 + 1X3 >= 1 + 1X1 proper# x(X1, X2) -> proper# X2 2 + 1X1 + 1X2 >= 1 + 1X2 proper# x(X1, X2) -> proper# X1 2 + 1X1 + 1X2 >= 1 + 1X1 proper# U31 X -> proper# X 2 + 1X >= 1 + 1X proper# U21(X1, X2, X3) -> proper# X3 2 + 1X1 + 1X2 + 1X3 >= 1 + 1X3 proper# U21(X1, X2, X3) -> proper# X2 2 + 1X1 + 1X2 + 1X3 >= 1 + 1X2 proper# U21(X1, X2, X3) -> proper# X1 2 + 1X1 + 1X2 + 1X3 >= 1 + 1X1 proper# plus(X1, X2) -> proper# X2 2 + 1X1 + 1X2 >= 1 + 1X2 proper# plus(X1, X2) -> proper# X1 2 + 1X1 + 1X2 >= 1 + 1X1 proper# s X -> proper# X 2 + 1X >= 1 + 1X proper# U11(X1, X2) -> proper# X2 2 + 1X1 + 1X2 >= 1 + 1X2 proper# U11(X1, X2) -> proper# X1 2 + 1X1 + 1X2 >= 1 + 1X1 Weak: top ok X -> top active X 0 + 0X >= 0 + 0X top mark X -> top proper X 0 + 0X >= 0 + 0X proper isNat X -> isNat proper X 0 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 1 + 0X proper 0() -> ok 0() 0 >= 0 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 1 + 0X proper tt() -> ok tt() 0 >= 0 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 0 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 and(mark X1, X2) -> mark and(X1, X2) 1 + 1X1 + 1X2 >= 1 + 1X1 + 1X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 1 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 1X1 + 1X2 + 1X3 >= 1 + 1X1 + 1X2 + 1X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 1X1 + 1X2 >= 1 + 1X1 + 1X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 1X1 + 1X2 >= 1 + 1X1 + 1X2 U31 ok X -> ok U31 X 1 + 0X >= 0 + 0X U31 mark X -> mark U31 X 1 + 1X >= 1 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 1 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 1 + 1X1 + 1X2 + 1X3 >= 1 + 1X1 + 1X2 + 1X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 1X1 + 1X2 >= 1 + 1X1 + 1X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 1X1 + 1X2 >= 1 + 1X1 + 1X2 s ok X -> ok s X 1 + 0X >= 0 + 0X s mark X -> mark s X 1 + 1X >= 1 + 1X U11(ok X1, ok X2) -> ok U11(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 1 + 1X1 + 1X2 >= 1 + 1X1 + 1X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 1 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 0V1 >= 1 + 0V1 active and(tt(), X) -> mark X 3 + 1X >= 0 + 1X active and(X1, X2) -> and(active X1, X2) 2 + 1X1 + 1X2 >= 2 + 1X1 + 1X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 3 + 1N + 1M >= 2 + 2N + 1M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 2 + 1X1 + 1X2 + 1X3 >= 2 + 1X1 + 1X2 + 1X3 active x(X1, X2) -> x(active X1, X2) 2 + 1X1 + 1X2 >= 2 + 1X1 + 1X2 active x(X1, X2) -> x(X1, active X2) 2 + 1X1 + 1X2 >= 2 + 1X1 + 1X2 active x(N, 0()) -> mark U31 isNat N 2 + 1N >= 2 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 3 + 1N + 1M >= 4 + 1N + 1M active U31 tt() -> mark 0() 3 >= 0 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 3 + 1N + 1M >= 2 + 1N + 1M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 2 + 1X1 + 1X2 + 1X3 >= 2 + 1X1 + 1X2 + 1X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 1X1 + 1X2 >= 2 + 1X1 + 1X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 1X1 + 1X2 >= 2 + 1X1 + 1X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 1N >= 2 + 1N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 3 + 1N + 1M >= 4 + 1N + 1M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 3 + 1N >= 0 + 1N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 1X2 >= 2 + 1X1 + 1X2 Qed SCC (2): Strict: { and#(mark X1, X2) -> and#(X1, X2), and#(ok X1, ok X2) -> and#(X1, X2)} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0 + x1 + 1, [U41](x0, x1, x2) = x0 + x1 + 1, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0, [mark](x0) = 0, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = x0 + 1, [proper](x0) = 0, [ok](x0) = x0 + 1, [top](x0) = 0, [tt] = 0, [0] = 0, [and#](x0, x1) = x0 Strict: and#(ok X1, ok X2) -> and#(X1, X2) 1 + 0X1 + 1X2 >= 0 + 0X1 + 1X2 and#(mark X1, X2) -> and#(X1, X2) 0 + 0X1 + 1X2 >= 0 + 0X1 + 1X2 Weak: top ok X -> top active X 0 + 0X >= 0 + 0X top mark X -> top proper X 0 + 0X >= 0 + 0X proper isNat X -> isNat proper X 0 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 1 + 0X proper 0() -> ok 0() 0 >= 1 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 1 + 0X proper tt() -> ok tt() 0 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 isNat ok X -> ok isNat X 2 + 1X >= 2 + 1X and(ok X1, ok X2) -> ok and(X1, X2) 1 + 1X1 + 0X2 >= 1 + 1X1 + 0X2 and(mark X1, X2) -> mark and(X1, X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 3 + 1X1 + 1X2 + 0X3 >= 2 + 1X1 + 1X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 0X1 + 1X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 1 + 0X >= 0 + 0X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 3 + 1X1 + 1X2 + 0X3 >= 2 + 1X1 + 1X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 1 + 0X1 + 1X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 s ok X -> ok s X 2 + 1X >= 2 + 1X s mark X -> mark s X 1 + 0X >= 0 + 0X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 3 + 0V1 + 0V2 >= 0 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 0 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 3 + 0V1 + 0V2 >= 0 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 3 + 1V1 >= 0 + 0V1 active and(tt(), X) -> mark X 1 + 0X >= 0 + 0X active and(X1, X2) -> and(active X1, X2) 1 + 1X1 + 0X2 >= 1 + 1X1 + 0X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 2 + 0N + 1M >= 0 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 2 + 1X1 + 1X2 + 0X3 >= 2 + 1X1 + 1X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 0 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 0 + 0N + 0M active U31 tt() -> mark 0() 2 >= 0 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 2 + 0N + 1M >= 0 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 2 + 1X1 + 1X2 + 0X3 >= 2 + 1X1 + 1X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 0 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 0 + 0N + 0M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 2 + 0N >= 0 + 0N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 SCCS (1): Scc: {and#(mark X1, X2) -> and#(X1, X2)} SCC (1): Strict: {and#(mark X1, X2) -> and#(X1, X2)} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0 + 1, [U41](x0, x1, x2) = x0, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0 + 1, [mark](x0) = x0 + 1, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = 1, [proper](x0) = 0, [ok](x0) = x0 + 1, [top](x0) = x0 + 1, [tt] = 0, [0] = 1, [and#](x0, x1) = x0 Strict: and#(mark X1, X2) -> and#(X1, X2) 1 + 1X1 + 0X2 >= 0 + 1X1 + 0X2 Weak: top ok X -> top active X 2 + 1X >= 2 + 1X top mark X -> top proper X 2 + 1X >= 1 + 0X proper isNat X -> isNat proper X 0 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 1 + 0X proper 0() -> ok 0() 0 >= 2 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 1 + 0X proper tt() -> ok tt() 0 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 2 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 2 + 0X1 + 1X2 >= 2 + 0X1 + 1X2 and(mark X1, X2) -> mark and(X1, X2) 1 + 0X1 + 1X2 >= 2 + 0X1 + 1X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 2 + 1X >= 2 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 s ok X -> ok s X 2 + 1X >= 2 + 1X s mark X -> mark s X 2 + 1X >= 2 + 1X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 1 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 0V1 >= 2 + 0V1 active and(tt(), X) -> mark X 2 + 1X >= 1 + 1X active and(X1, X2) -> and(active X1, X2) 2 + 0X1 + 1X2 >= 1 + 0X1 + 1X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 1 + 0N + 0M >= 2 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 3 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 3 + 0N + 0M active U31 tt() -> mark 0() 2 >= 2 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 2 + 0N + 0M >= 3 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 3 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 4 + 0N + 0M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 2 + 0N >= 1 + 1N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 Qed SCC (2): Strict: { U41#(mark X1, X2, X3) -> U41#(X1, X2, X3), U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3)} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0 + 1, [U41](x0, x1, x2) = x0, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0 + 1, [mark](x0) = x0 + 1, [active](x0) = x0 + 1, [s](x0) = 1, [U31](x0) = x0 + 1, [isNat](x0) = 1, [proper](x0) = 1, [ok](x0) = x0 + 1, [top](x0) = 0, [tt] = 0, [0] = 1, [U41#](x0, x1, x2) = x0 Strict: U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3) 1 + 0X1 + 0X2 + 1X3 >= 0 + 0X1 + 0X2 + 1X3 U41#(mark X1, X2, X3) -> U41#(X1, X2, X3) 0 + 0X1 + 0X2 + 1X3 >= 0 + 0X1 + 0X2 + 1X3 Weak: top ok X -> top active X 0 + 0X >= 0 + 0X top mark X -> top proper X 0 + 0X >= 0 + 0X proper isNat X -> isNat proper X 1 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 1 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 1 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 1 + 0X >= 2 + 0X proper 0() -> ok 0() 1 >= 2 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 1 + 0X1 + 0X2 + 0X3 >= 2 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 1 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 1 + 0X >= 1 + 0X proper tt() -> ok tt() 1 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 2 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 and(mark X1, X2) -> mark and(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 2 + 1X >= 2 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 s ok X -> ok s X 1 + 0X >= 2 + 0X s mark X -> mark s X 1 + 0X >= 2 + 0X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 1 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 0V1 >= 2 + 0V1 active and(tt(), X) -> mark X 2 + 0X >= 1 + 1X active and(X1, X2) -> and(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 1 + 0N + 0M >= 2 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 3 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 3 + 0N + 0M active U31 tt() -> mark 0() 2 >= 2 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 2 + 0N + 0M >= 2 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 3 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 4 + 0N + 0M active s X -> s active X 2 + 0X >= 1 + 0X active U11(tt(), N) -> mark N 2 + 0N >= 1 + 1N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 SCCS (1): Scc: {U41#(mark X1, X2, X3) -> U41#(X1, X2, X3)} SCC (1): Strict: {U41#(mark X1, X2, X3) -> U41#(X1, X2, X3)} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0 + 1, [U41](x0, x1, x2) = x0, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0 + 1, [mark](x0) = x0 + 1, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = 1, [proper](x0) = 0, [ok](x0) = x0 + 1, [top](x0) = x0 + 1, [tt] = 0, [0] = 1, [U41#](x0, x1, x2) = x0 Strict: U41#(mark X1, X2, X3) -> U41#(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 0 + 1X1 + 0X2 + 0X3 Weak: top ok X -> top active X 2 + 1X >= 2 + 1X top mark X -> top proper X 2 + 1X >= 1 + 0X proper isNat X -> isNat proper X 0 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 1 + 0X proper 0() -> ok 0() 0 >= 2 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 1 + 0X proper tt() -> ok tt() 0 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 2 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 2 + 0X1 + 1X2 >= 2 + 0X1 + 1X2 and(mark X1, X2) -> mark and(X1, X2) 1 + 0X1 + 1X2 >= 2 + 0X1 + 1X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 2 + 1X >= 2 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 s ok X -> ok s X 2 + 1X >= 2 + 1X s mark X -> mark s X 2 + 1X >= 2 + 1X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 1 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 0V1 >= 2 + 0V1 active and(tt(), X) -> mark X 2 + 1X >= 1 + 1X active and(X1, X2) -> and(active X1, X2) 2 + 0X1 + 1X2 >= 1 + 0X1 + 1X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 1 + 0N + 0M >= 2 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 3 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 3 + 0N + 0M active U31 tt() -> mark 0() 2 >= 2 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 2 + 0N + 0M >= 3 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 3 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 4 + 0N + 0M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 2 + 0N >= 1 + 1N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 Qed SCC (3): Strict: { x#(X1, mark X2) -> x#(X1, X2), x#(mark X1, X2) -> x#(X1, X2), x#(ok X1, ok X2) -> x#(X1, X2)} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0, [U41](x0, x1, x2) = 1, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0 + 1, [mark](x0) = x0 + 1, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = 1, [proper](x0) = 0, [ok](x0) = x0 + 1, [top](x0) = 0, [tt] = 0, [0] = 1, [x#](x0, x1) = x0 + 1 Strict: x#(ok X1, ok X2) -> x#(X1, X2) 2 + 1X1 + 0X2 >= 1 + 1X1 + 0X2 x#(mark X1, X2) -> x#(X1, X2) 2 + 1X1 + 0X2 >= 1 + 1X1 + 0X2 x#(X1, mark X2) -> x#(X1, X2) 1 + 1X1 + 0X2 >= 1 + 1X1 + 0X2 Weak: top ok X -> top active X 0 + 0X >= 0 + 0X top mark X -> top proper X 0 + 0X >= 0 + 0X proper isNat X -> isNat proper X 0 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 1 + 0X proper 0() -> ok 0() 0 >= 2 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 1 + 0X proper tt() -> ok tt() 0 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 2 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 and(mark X1, X2) -> mark and(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 1 + 0X1 + 0X2 + 0X3 >= 2 + 0X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 0X1 + 0X2 + 0X3 >= 2 + 0X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 2 + 1X >= 2 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 s ok X -> ok s X 2 + 1X >= 2 + 1X s mark X -> mark s X 2 + 1X >= 2 + 1X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 1 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 0V1 >= 2 + 0V1 active and(tt(), X) -> mark X 2 + 0X >= 1 + 1X active and(X1, X2) -> and(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 2 + 0N + 0M >= 2 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 2 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 3 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 2 + 0N + 0M active U31 tt() -> mark 0() 2 >= 2 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 1 + 0N + 0M >= 3 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 3 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 3 + 0N + 0M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 2 + 0N >= 1 + 1N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 SCCS (1): Scc: {x#(X1, mark X2) -> x#(X1, X2)} SCC (1): Strict: {x#(X1, mark X2) -> x#(X1, X2)} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0 + 1, [U41](x0, x1, x2) = x0, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0 + 1, [mark](x0) = x0 + 1, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = 1, [proper](x0) = 0, [ok](x0) = x0 + 1, [top](x0) = x0 + 1, [tt] = 0, [0] = 1, [x#](x0, x1) = x0 Strict: x#(X1, mark X2) -> x#(X1, X2) 1 + 0X1 + 1X2 >= 0 + 0X1 + 1X2 Weak: top ok X -> top active X 2 + 1X >= 2 + 1X top mark X -> top proper X 2 + 1X >= 1 + 0X proper isNat X -> isNat proper X 0 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 1 + 0X proper 0() -> ok 0() 0 >= 2 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 1 + 0X proper tt() -> ok tt() 0 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 2 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 2 + 0X1 + 1X2 >= 2 + 0X1 + 1X2 and(mark X1, X2) -> mark and(X1, X2) 1 + 0X1 + 1X2 >= 2 + 0X1 + 1X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 2 + 1X >= 2 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 s ok X -> ok s X 2 + 1X >= 2 + 1X s mark X -> mark s X 2 + 1X >= 2 + 1X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 1 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 0V1 >= 2 + 0V1 active and(tt(), X) -> mark X 2 + 1X >= 1 + 1X active and(X1, X2) -> and(active X1, X2) 2 + 0X1 + 1X2 >= 1 + 0X1 + 1X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 1 + 0N + 0M >= 2 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 3 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 3 + 0N + 0M active U31 tt() -> mark 0() 2 >= 2 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 2 + 0N + 0M >= 3 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 3 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 4 + 0N + 0M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 2 + 0N >= 1 + 1N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 Qed SCC (2): Strict: { U21#(mark X1, X2, X3) -> U21#(X1, X2, X3), U21#(ok X1, ok X2, ok X3) -> U21#(X1, X2, X3)} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0 + 1, [U41](x0, x1, x2) = x0, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0 + 1, [mark](x0) = x0 + 1, [active](x0) = x0 + 1, [s](x0) = 1, [U31](x0) = x0 + 1, [isNat](x0) = 1, [proper](x0) = 1, [ok](x0) = x0 + 1, [top](x0) = 0, [tt] = 0, [0] = 1, [U21#](x0, x1, x2) = x0 Strict: U21#(ok X1, ok X2, ok X3) -> U21#(X1, X2, X3) 1 + 0X1 + 0X2 + 1X3 >= 0 + 0X1 + 0X2 + 1X3 U21#(mark X1, X2, X3) -> U21#(X1, X2, X3) 0 + 0X1 + 0X2 + 1X3 >= 0 + 0X1 + 0X2 + 1X3 Weak: top ok X -> top active X 0 + 0X >= 0 + 0X top mark X -> top proper X 0 + 0X >= 0 + 0X proper isNat X -> isNat proper X 1 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 1 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 1 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 1 + 0X >= 2 + 0X proper 0() -> ok 0() 1 >= 2 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 1 + 0X1 + 0X2 + 0X3 >= 2 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 1 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 1 + 0X >= 1 + 0X proper tt() -> ok tt() 1 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 2 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 and(mark X1, X2) -> mark and(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 2 + 1X >= 2 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 s ok X -> ok s X 1 + 0X >= 2 + 0X s mark X -> mark s X 1 + 0X >= 2 + 0X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 1 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 0V1 >= 2 + 0V1 active and(tt(), X) -> mark X 2 + 0X >= 1 + 1X active and(X1, X2) -> and(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 1 + 0N + 0M >= 2 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 3 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 3 + 0N + 0M active U31 tt() -> mark 0() 2 >= 2 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 2 + 0N + 0M >= 2 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 3 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 4 + 0N + 0M active s X -> s active X 2 + 0X >= 1 + 0X active U11(tt(), N) -> mark N 2 + 0N >= 1 + 1N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 SCCS (1): Scc: {U21#(mark X1, X2, X3) -> U21#(X1, X2, X3)} SCC (1): Strict: {U21#(mark X1, X2, X3) -> U21#(X1, X2, X3)} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0 + 1, [U41](x0, x1, x2) = x0, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0 + 1, [mark](x0) = x0 + 1, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = 1, [proper](x0) = 0, [ok](x0) = x0 + 1, [top](x0) = x0 + 1, [tt] = 0, [0] = 1, [U21#](x0, x1, x2) = x0 Strict: U21#(mark X1, X2, X3) -> U21#(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 0 + 1X1 + 0X2 + 0X3 Weak: top ok X -> top active X 2 + 1X >= 2 + 1X top mark X -> top proper X 2 + 1X >= 1 + 0X proper isNat X -> isNat proper X 0 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 1 + 0X proper 0() -> ok 0() 0 >= 2 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 1 + 0X proper tt() -> ok tt() 0 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 2 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 2 + 0X1 + 1X2 >= 2 + 0X1 + 1X2 and(mark X1, X2) -> mark and(X1, X2) 1 + 0X1 + 1X2 >= 2 + 0X1 + 1X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 2 + 1X >= 2 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 s ok X -> ok s X 2 + 1X >= 2 + 1X s mark X -> mark s X 2 + 1X >= 2 + 1X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 1 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 0V1 >= 2 + 0V1 active and(tt(), X) -> mark X 2 + 1X >= 1 + 1X active and(X1, X2) -> and(active X1, X2) 2 + 0X1 + 1X2 >= 1 + 0X1 + 1X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 1 + 0N + 0M >= 2 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 3 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 3 + 0N + 0M active U31 tt() -> mark 0() 2 >= 2 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 2 + 0N + 0M >= 3 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 3 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 4 + 0N + 0M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 2 + 0N >= 1 + 1N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 Qed SCC (3): Strict: { plus#(X1, mark X2) -> plus#(X1, X2), plus#(mark X1, X2) -> plus#(X1, X2), plus#(ok X1, ok X2) -> plus#(X1, X2)} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0, [U41](x0, x1, x2) = 1, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0 + 1, [mark](x0) = x0 + 1, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = 1, [proper](x0) = 0, [ok](x0) = x0 + 1, [top](x0) = 0, [tt] = 0, [0] = 1, [plus#](x0, x1) = x0 + 1 Strict: plus#(ok X1, ok X2) -> plus#(X1, X2) 2 + 1X1 + 0X2 >= 1 + 1X1 + 0X2 plus#(mark X1, X2) -> plus#(X1, X2) 2 + 1X1 + 0X2 >= 1 + 1X1 + 0X2 plus#(X1, mark X2) -> plus#(X1, X2) 1 + 1X1 + 0X2 >= 1 + 1X1 + 0X2 Weak: top ok X -> top active X 0 + 0X >= 0 + 0X top mark X -> top proper X 0 + 0X >= 0 + 0X proper isNat X -> isNat proper X 0 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 1 + 0X proper 0() -> ok 0() 0 >= 2 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 1 + 0X proper tt() -> ok tt() 0 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 2 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 and(mark X1, X2) -> mark and(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 1 + 0X1 + 0X2 + 0X3 >= 2 + 0X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 0X1 + 0X2 + 0X3 >= 2 + 0X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 2 + 1X >= 2 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 s ok X -> ok s X 2 + 1X >= 2 + 1X s mark X -> mark s X 2 + 1X >= 2 + 1X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 1 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 0V1 >= 2 + 0V1 active and(tt(), X) -> mark X 2 + 0X >= 1 + 1X active and(X1, X2) -> and(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 2 + 0N + 0M >= 2 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 2 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 3 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 2 + 0N + 0M active U31 tt() -> mark 0() 2 >= 2 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 1 + 0N + 0M >= 3 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 3 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 3 + 0N + 0M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 2 + 0N >= 1 + 1N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 SCCS (1): Scc: {plus#(X1, mark X2) -> plus#(X1, X2)} SCC (1): Strict: {plus#(X1, mark X2) -> plus#(X1, X2)} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0 + 1, [U41](x0, x1, x2) = x0, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0 + 1, [mark](x0) = x0 + 1, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = 1, [proper](x0) = 0, [ok](x0) = x0 + 1, [top](x0) = x0 + 1, [tt] = 0, [0] = 1, [plus#](x0, x1) = x0 Strict: plus#(X1, mark X2) -> plus#(X1, X2) 1 + 0X1 + 1X2 >= 0 + 0X1 + 1X2 Weak: top ok X -> top active X 2 + 1X >= 2 + 1X top mark X -> top proper X 2 + 1X >= 1 + 0X proper isNat X -> isNat proper X 0 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 1 + 0X proper 0() -> ok 0() 0 >= 2 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 1 + 0X proper tt() -> ok tt() 0 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 2 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 2 + 0X1 + 1X2 >= 2 + 0X1 + 1X2 and(mark X1, X2) -> mark and(X1, X2) 1 + 0X1 + 1X2 >= 2 + 0X1 + 1X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 2 + 1X >= 2 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 s ok X -> ok s X 2 + 1X >= 2 + 1X s mark X -> mark s X 2 + 1X >= 2 + 1X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 1 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 0V1 >= 2 + 0V1 active and(tt(), X) -> mark X 2 + 1X >= 1 + 1X active and(X1, X2) -> and(active X1, X2) 2 + 0X1 + 1X2 >= 1 + 0X1 + 1X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 1 + 0N + 0M >= 2 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 3 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 3 + 0N + 0M active U31 tt() -> mark 0() 2 >= 2 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 2 + 0N + 0M >= 3 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 3 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 4 + 0N + 0M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 2 + 0N >= 1 + 1N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 Qed SCC (2): Strict: { U11#(mark X1, X2) -> U11#(X1, X2), U11#(ok X1, ok X2) -> U11#(X1, X2)} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0 + x1 + 1, [U41](x0, x1, x2) = x0 + x1 + 1, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0, [mark](x0) = 0, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = x0 + 1, [proper](x0) = 0, [ok](x0) = x0 + 1, [top](x0) = 0, [tt] = 0, [0] = 0, [U11#](x0, x1) = x0 Strict: U11#(ok X1, ok X2) -> U11#(X1, X2) 1 + 0X1 + 1X2 >= 0 + 0X1 + 1X2 U11#(mark X1, X2) -> U11#(X1, X2) 0 + 0X1 + 1X2 >= 0 + 0X1 + 1X2 Weak: top ok X -> top active X 0 + 0X >= 0 + 0X top mark X -> top proper X 0 + 0X >= 0 + 0X proper isNat X -> isNat proper X 0 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 1 + 0X proper 0() -> ok 0() 0 >= 1 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 1 + 0X proper tt() -> ok tt() 0 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 isNat ok X -> ok isNat X 2 + 1X >= 2 + 1X and(ok X1, ok X2) -> ok and(X1, X2) 1 + 1X1 + 0X2 >= 1 + 1X1 + 0X2 and(mark X1, X2) -> mark and(X1, X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 3 + 1X1 + 1X2 + 0X3 >= 2 + 1X1 + 1X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 0X1 + 1X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 1 + 0X >= 0 + 0X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 3 + 1X1 + 1X2 + 0X3 >= 2 + 1X1 + 1X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 1 + 0X1 + 1X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 s ok X -> ok s X 2 + 1X >= 2 + 1X s mark X -> mark s X 1 + 0X >= 0 + 0X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 3 + 0V1 + 0V2 >= 0 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 0 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 3 + 0V1 + 0V2 >= 0 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 3 + 1V1 >= 0 + 0V1 active and(tt(), X) -> mark X 1 + 0X >= 0 + 0X active and(X1, X2) -> and(active X1, X2) 1 + 1X1 + 0X2 >= 1 + 1X1 + 0X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 2 + 0N + 1M >= 0 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 2 + 1X1 + 1X2 + 0X3 >= 2 + 1X1 + 1X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 0 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 0 + 0N + 0M active U31 tt() -> mark 0() 2 >= 0 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 2 + 0N + 1M >= 0 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 2 + 1X1 + 1X2 + 0X3 >= 2 + 1X1 + 1X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 0 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 0 + 0N + 0M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 2 + 0N >= 0 + 0N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 SCCS (1): Scc: {U11#(mark X1, X2) -> U11#(X1, X2)} SCC (1): Strict: {U11#(mark X1, X2) -> U11#(X1, X2)} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0 + 1, [U41](x0, x1, x2) = x0, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0 + 1, [mark](x0) = x0 + 1, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = 1, [proper](x0) = 0, [ok](x0) = x0 + 1, [top](x0) = x0 + 1, [tt] = 0, [0] = 1, [U11#](x0, x1) = x0 Strict: U11#(mark X1, X2) -> U11#(X1, X2) 1 + 1X1 + 0X2 >= 0 + 1X1 + 0X2 Weak: top ok X -> top active X 2 + 1X >= 2 + 1X top mark X -> top proper X 2 + 1X >= 1 + 0X proper isNat X -> isNat proper X 0 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 1 + 0X proper 0() -> ok 0() 0 >= 2 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 1 + 0X proper tt() -> ok tt() 0 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 2 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 2 + 0X1 + 1X2 >= 2 + 0X1 + 1X2 and(mark X1, X2) -> mark and(X1, X2) 1 + 0X1 + 1X2 >= 2 + 0X1 + 1X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 2 + 1X >= 2 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 s ok X -> ok s X 2 + 1X >= 2 + 1X s mark X -> mark s X 2 + 1X >= 2 + 1X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 1 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 0V1 >= 2 + 0V1 active and(tt(), X) -> mark X 2 + 1X >= 1 + 1X active and(X1, X2) -> and(active X1, X2) 2 + 0X1 + 1X2 >= 1 + 0X1 + 1X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 1 + 0N + 0M >= 2 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 3 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 3 + 0N + 0M active U31 tt() -> mark 0() 2 >= 2 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 2 + 0N + 0M >= 3 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 3 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 4 + 0N + 0M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 2 + 0N >= 1 + 1N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 Qed SCC (1): Strict: {isNat# ok X -> isNat# X} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0 + x1 + 1, [U41](x0, x1, x2) = x0 + x1 + 1, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0 + 1, [mark](x0) = 0, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = x0, [proper](x0) = 0, [ok](x0) = x0 + 1, [top](x0) = 0, [tt] = 0, [0] = 1, [isNat#](x0) = x0 Strict: isNat# ok X -> isNat# X 1 + 1X >= 0 + 1X Weak: top ok X -> top active X 0 + 0X >= 0 + 0X top mark X -> top proper X 0 + 0X >= 0 + 0X proper isNat X -> isNat proper X 0 + 0X >= 0 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 1 + 0X proper 0() -> ok 0() 0 >= 2 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 1 + 0X proper tt() -> ok tt() 0 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 1X >= 1 + 1X and(ok X1, ok X2) -> ok and(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 and(mark X1, X2) -> mark and(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 3 + 1X1 + 1X2 + 0X3 >= 2 + 1X1 + 1X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 0X1 + 1X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 1 + 0X >= 0 + 0X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 3 + 1X1 + 1X2 + 0X3 >= 2 + 1X1 + 1X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 1 + 0X1 + 1X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 s ok X -> ok s X 2 + 1X >= 2 + 1X s mark X -> mark s X 1 + 0X >= 0 + 0X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 1 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 0 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 0 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 0 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 1V1 >= 0 + 0V1 active and(tt(), X) -> mark X 2 + 0X >= 0 + 0X active and(X1, X2) -> and(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 2 + 0N + 1M >= 0 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 2 + 1X1 + 1X2 + 0X3 >= 2 + 1X1 + 1X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 0 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 0 + 0N + 0M active U31 tt() -> mark 0() 2 >= 0 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 2 + 0N + 1M >= 0 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 2 + 1X1 + 1X2 + 0X3 >= 2 + 1X1 + 1X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 0 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 0 + 0N + 0M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 2 + 0N >= 0 + 0N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 Qed SCC (2): Strict: {U31# mark X -> U31# X, U31# ok X -> U31# X} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = 0, [U41](x0, x1, x2) = x0 + 1, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0 + x1, [mark](x0) = x0, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = 1, [proper](x0) = 0, [ok](x0) = x0 + 1, [top](x0) = 0, [tt] = 0, [0] = 0, [U31#](x0) = x0 Strict: U31# ok X -> U31# X 1 + 1X >= 0 + 1X U31# mark X -> U31# X 0 + 1X >= 0 + 1X Weak: top ok X -> top active X 0 + 0X >= 0 + 0X top mark X -> top proper X 0 + 0X >= 0 + 0X proper isNat X -> isNat proper X 0 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 1 + 0X proper 0() -> ok 0() 0 >= 1 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 1 + 0X proper tt() -> ok tt() 0 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 2 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 2 + 1X1 + 1X2 >= 1 + 1X1 + 1X2 and(mark X1, X2) -> mark and(X1, X2) 0 + 1X1 + 1X2 >= 0 + 1X1 + 1X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 1 + 1X >= 1 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 s ok X -> ok s X 2 + 1X >= 2 + 1X s mark X -> mark s X 1 + 1X >= 1 + 1X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 1 + 1X1 + 0X2 >= 1 + 1X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 2 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 0 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 2 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 0V1 >= 1 + 0V1 active and(tt(), X) -> mark X 1 + 1X >= 0 + 1X active and(X1, X2) -> and(active X1, X2) 1 + 1X1 + 1X2 >= 1 + 1X1 + 1X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 2 + 0N + 0M >= 1 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 2 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 3 + 0N + 0M active U31 tt() -> mark 0() 2 >= 0 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 1 + 0N + 0M >= 2 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 1 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 2 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 0 + 0N + 0M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 2 + 0N >= 0 + 1N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 SCCS (1): Scc: {U31# mark X -> U31# X} SCC (1): Strict: {U31# mark X -> U31# X} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0 + 1, [U41](x0, x1, x2) = x0, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0 + 1, [mark](x0) = x0 + 1, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = 1, [proper](x0) = 0, [ok](x0) = x0 + 1, [top](x0) = x0 + 1, [tt] = 0, [0] = 1, [U31#](x0) = x0 Strict: U31# mark X -> U31# X 1 + 1X >= 0 + 1X Weak: top ok X -> top active X 2 + 1X >= 2 + 1X top mark X -> top proper X 2 + 1X >= 1 + 0X proper isNat X -> isNat proper X 0 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 1 + 0X proper 0() -> ok 0() 0 >= 2 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 1 + 0X proper tt() -> ok tt() 0 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 2 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 2 + 0X1 + 1X2 >= 2 + 0X1 + 1X2 and(mark X1, X2) -> mark and(X1, X2) 1 + 0X1 + 1X2 >= 2 + 0X1 + 1X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 2 + 1X >= 2 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 s ok X -> ok s X 2 + 1X >= 2 + 1X s mark X -> mark s X 2 + 1X >= 2 + 1X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 1 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 0V1 >= 2 + 0V1 active and(tt(), X) -> mark X 2 + 1X >= 1 + 1X active and(X1, X2) -> and(active X1, X2) 2 + 0X1 + 1X2 >= 1 + 0X1 + 1X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 1 + 0N + 0M >= 2 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 3 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 3 + 0N + 0M active U31 tt() -> mark 0() 2 >= 2 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 2 + 0N + 0M >= 3 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 3 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 4 + 0N + 0M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 2 + 0N >= 1 + 1N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 Qed SCC (2): Strict: {s# mark X -> s# X, s# ok X -> s# X} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = 0, [U41](x0, x1, x2) = x0 + 1, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0 + x1, [mark](x0) = x0, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = 1, [proper](x0) = 0, [ok](x0) = x0 + 1, [top](x0) = 0, [tt] = 0, [0] = 0, [s#](x0) = x0 Strict: s# ok X -> s# X 1 + 1X >= 0 + 1X s# mark X -> s# X 0 + 1X >= 0 + 1X Weak: top ok X -> top active X 0 + 0X >= 0 + 0X top mark X -> top proper X 0 + 0X >= 0 + 0X proper isNat X -> isNat proper X 0 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 0 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 1 + 0X proper 0() -> ok 0() 0 >= 1 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 1 + 0X proper tt() -> ok tt() 0 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 2 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 2 + 1X1 + 1X2 >= 1 + 1X1 + 1X2 and(mark X1, X2) -> mark and(X1, X2) 0 + 1X1 + 1X2 >= 0 + 1X1 + 1X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 1 + 1X >= 1 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 s ok X -> ok s X 2 + 1X >= 2 + 1X s mark X -> mark s X 1 + 1X >= 1 + 1X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 1 + 1X1 + 0X2 >= 1 + 1X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 2 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 0 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 2 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 0V1 >= 1 + 0V1 active and(tt(), X) -> mark X 1 + 1X >= 0 + 1X active and(X1, X2) -> and(active X1, X2) 1 + 1X1 + 1X2 >= 1 + 1X1 + 1X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 2 + 0N + 0M >= 1 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 2 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 3 + 0N + 0M active U31 tt() -> mark 0() 2 >= 0 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 1 + 0N + 0M >= 2 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 1 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 2 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 0 + 0N + 0M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 2 + 0N >= 0 + 1N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 SCCS (1): Scc: {s# mark X -> s# X} SCC (1): Strict: {s# mark X -> s# X} Weak: { active U11(X1, X2) -> U11(active X1, X2), active U11(tt(), N) -> mark N, active s X -> s active X, active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N), active plus(N, 0()) -> mark U11(isNat N, N), active plus(X1, X2) -> plus(X1, active X2), active plus(X1, X2) -> plus(active X1, X2), active U21(X1, X2, X3) -> U21(active X1, X2, X3), active U21(tt(), M, N) -> mark s plus(N, M), active U31 X -> U31 active X, active U31 tt() -> mark 0(), active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N), active x(N, 0()) -> mark U31 isNat N, active x(X1, X2) -> x(X1, active X2), active x(X1, X2) -> x(active X1, X2), active U41(X1, X2, X3) -> U41(active X1, X2, X3), active U41(tt(), M, N) -> mark plus(x(N, M), N), active and(X1, X2) -> and(active X1, X2), active and(tt(), X) -> mark X, active isNat s V1 -> mark isNat V1, active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2), active isNat 0() -> mark tt(), active isNat x(V1, V2) -> mark and(isNat V1, isNat V2), U11(mark X1, X2) -> mark U11(X1, X2), U11(ok X1, ok X2) -> ok U11(X1, X2), s mark X -> mark s X, s ok X -> ok s X, plus(X1, mark X2) -> mark plus(X1, X2), plus(mark X1, X2) -> mark plus(X1, X2), plus(ok X1, ok X2) -> ok plus(X1, X2), U21(mark X1, X2, X3) -> mark U21(X1, X2, X3), U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3), U31 mark X -> mark U31 X, U31 ok X -> ok U31 X, x(X1, mark X2) -> mark x(X1, X2), x(mark X1, X2) -> mark x(X1, X2), x(ok X1, ok X2) -> ok x(X1, X2), U41(mark X1, X2, X3) -> mark U41(X1, X2, X3), U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3), and(mark X1, X2) -> mark and(X1, X2), and(ok X1, ok X2) -> ok and(X1, X2), isNat ok X -> ok isNat X, proper U11(X1, X2) -> U11(proper X1, proper X2), proper tt() -> ok tt(), proper s X -> s proper X, proper plus(X1, X2) -> plus(proper X1, proper X2), proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3), proper 0() -> ok 0(), proper U31 X -> U31 proper X, proper x(X1, X2) -> x(proper X1, proper X2), proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3), proper and(X1, X2) -> and(proper X1, proper X2), proper isNat X -> isNat proper X, top mark X -> top proper X, top ok X -> top active X} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [U21](x0, x1, x2) = x0 + 1, [U41](x0, x1, x2) = x0, [U11](x0, x1) = x0 + 1, [plus](x0, x1) = 1, [x](x0, x1) = 1, [and](x0, x1) = x0 + 1, [mark](x0) = x0 + 1, [active](x0) = x0 + 1, [s](x0) = x0 + 1, [U31](x0) = x0 + 1, [isNat](x0) = 1, [proper](x0) = 0, [ok](x0) = x0 + 1, [top](x0) = x0 + 1, [tt] = 0, [0] = 1, [s#](x0) = x0 Strict: s# mark X -> s# X 1 + 1X >= 0 + 1X Weak: top ok X -> top active X 2 + 1X >= 2 + 1X top mark X -> top proper X 2 + 1X >= 1 + 0X proper isNat X -> isNat proper X 0 + 0X >= 1 + 0X proper and(X1, X2) -> and(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 0 + 0X1 + 0X2 + 0X3 proper x(X1, X2) -> x(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper U31 X -> U31 proper X 0 + 0X >= 1 + 0X proper 0() -> ok 0() 0 >= 2 proper U21(X1, X2, X3) -> U21(proper X1, proper X2, proper X3) 0 + 0X1 + 0X2 + 0X3 >= 1 + 0X1 + 0X2 + 0X3 proper plus(X1, X2) -> plus(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 proper s X -> s proper X 0 + 0X >= 1 + 0X proper tt() -> ok tt() 0 >= 1 proper U11(X1, X2) -> U11(proper X1, proper X2) 0 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 isNat ok X -> ok isNat X 1 + 0X >= 2 + 0X and(ok X1, ok X2) -> ok and(X1, X2) 2 + 0X1 + 1X2 >= 2 + 0X1 + 1X2 and(mark X1, X2) -> mark and(X1, X2) 1 + 0X1 + 1X2 >= 2 + 0X1 + 1X2 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 x(ok X1, ok X2) -> ok x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(mark X1, X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 x(X1, mark X2) -> mark x(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 U31 ok X -> ok U31 X 2 + 1X >= 2 + 1X U31 mark X -> mark U31 X 2 + 1X >= 2 + 1X U21(ok X1, ok X2, ok X3) -> ok U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 U21(mark X1, X2, X3) -> mark U21(X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 plus(ok X1, ok X2) -> ok plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(mark X1, X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 plus(X1, mark X2) -> mark plus(X1, X2) 1 + 0X1 + 0X2 >= 2 + 0X1 + 0X2 s ok X -> ok s X 2 + 1X >= 2 + 1X s mark X -> mark s X 2 + 1X >= 2 + 1X U11(ok X1, ok X2) -> ok U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 U11(mark X1, X2) -> mark U11(X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 active isNat x(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat 0() -> mark tt() 2 >= 1 active isNat plus(V1, V2) -> mark and(isNat V1, isNat V2) 2 + 0V1 + 0V2 >= 3 + 0V1 + 0V2 active isNat s V1 -> mark isNat V1 2 + 0V1 >= 2 + 0V1 active and(tt(), X) -> mark X 2 + 1X >= 1 + 1X active and(X1, X2) -> and(active X1, X2) 2 + 0X1 + 1X2 >= 1 + 0X1 + 1X2 active U41(tt(), M, N) -> mark plus(x(N, M), N) 1 + 0N + 0M >= 2 + 0N + 0M active U41(X1, X2, X3) -> U41(active X1, X2, X3) 1 + 1X1 + 0X2 + 0X3 >= 1 + 1X1 + 0X2 + 0X3 active x(X1, X2) -> x(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(X1, X2) -> x(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active x(N, 0()) -> mark U31 isNat N 2 + 0N >= 3 + 0N active x(N, s M) -> mark U41(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 3 + 0N + 0M active U31 tt() -> mark 0() 2 >= 2 active U31 X -> U31 active X 2 + 1X >= 2 + 1X active U21(tt(), M, N) -> mark s plus(N, M) 2 + 0N + 0M >= 3 + 0N + 0M active U21(X1, X2, X3) -> U21(active X1, X2, X3) 2 + 1X1 + 0X2 + 0X3 >= 2 + 1X1 + 0X2 + 0X3 active plus(X1, X2) -> plus(active X1, X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(X1, X2) -> plus(X1, active X2) 2 + 0X1 + 0X2 >= 1 + 0X1 + 0X2 active plus(N, 0()) -> mark U11(isNat N, N) 2 + 0N >= 3 + 0N active plus(N, s M) -> mark U21(and(isNat M, isNat N), M, N) 2 + 0N + 0M >= 4 + 0N + 0M active s X -> s active X 2 + 1X >= 2 + 1X active U11(tt(), N) -> mark N 2 + 0N >= 1 + 1N active U11(X1, X2) -> U11(active X1, X2) 2 + 1X1 + 0X2 >= 2 + 1X1 + 0X2 Qed