1.09/1.26 YES 1.09/1.26 1.09/1.26 Problem 1: 1.09/1.26 1.09/1.26 (VAR v_NonEmpty:S L:S X:S X1:S X2:S Y:S) 1.09/1.26 (RULES 1.09/1.26 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.26 active(eq(0,0)) -> mark(ttrue) 1.09/1.26 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.26 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.26 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.26 active(length(nil)) -> mark(0) 1.09/1.26 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.26 active(take(0,X:S)) -> mark(nil) 1.09/1.26 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.26 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.26 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.26 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.26 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.26 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.26 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.26 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.26 inf(active(X:S)) -> inf(X:S) 1.09/1.26 inf(mark(X:S)) -> inf(X:S) 1.09/1.26 length(active(X:S)) -> length(X:S) 1.09/1.26 length(mark(X:S)) -> length(X:S) 1.09/1.26 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.26 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.26 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.26 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.26 mark(s(X:S)) -> active(s(X:S)) 1.09/1.26 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.26 mark(0) -> active(0) 1.09/1.26 mark(ffalse) -> active(ffalse) 1.09/1.26 mark(nil) -> active(nil) 1.09/1.26 mark(ttrue) -> active(ttrue) 1.09/1.26 s(active(X:S)) -> s(X:S) 1.09/1.26 s(mark(X:S)) -> s(X:S) 1.09/1.26 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.26 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.26 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.26 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.26 ) 1.09/1.26 (STRATEGY INNERMOST) 1.09/1.26 1.09/1.26 Problem 1: 1.09/1.26 1.09/1.26 Dependency Pairs Processor: 1.09/1.26 -> Pairs: 1.09/1.26 ACTIVE(eq(s(X:S),s(Y:S))) -> EQ(X:S,Y:S) 1.09/1.26 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.26 ACTIVE(eq(0,0)) -> MARK(ttrue) 1.09/1.26 ACTIVE(eq(X:S,Y:S)) -> MARK(ffalse) 1.09/1.26 ACTIVE(inf(X:S)) -> CONS(X:S,inf(s(X:S))) 1.09/1.26 ACTIVE(inf(X:S)) -> INF(s(X:S)) 1.09/1.26 ACTIVE(inf(X:S)) -> MARK(cons(X:S,inf(s(X:S)))) 1.09/1.26 ACTIVE(inf(X:S)) -> S(X:S) 1.09/1.26 ACTIVE(length(cons(X:S,L:S))) -> LENGTH(L:S) 1.09/1.26 ACTIVE(length(cons(X:S,L:S))) -> MARK(s(length(L:S))) 1.09/1.26 ACTIVE(length(cons(X:S,L:S))) -> S(length(L:S)) 1.09/1.26 ACTIVE(length(nil)) -> MARK(0) 1.09/1.26 ACTIVE(take(s(X:S),cons(Y:S,L:S))) -> CONS(Y:S,take(X:S,L:S)) 1.09/1.26 ACTIVE(take(s(X:S),cons(Y:S,L:S))) -> MARK(cons(Y:S,take(X:S,L:S))) 1.09/1.26 ACTIVE(take(s(X:S),cons(Y:S,L:S))) -> TAKE(X:S,L:S) 1.09/1.26 ACTIVE(take(0,X:S)) -> MARK(nil) 1.09/1.26 CONS(active(X1:S),X2:S) -> CONS(X1:S,X2:S) 1.09/1.26 CONS(mark(X1:S),X2:S) -> CONS(X1:S,X2:S) 1.09/1.26 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 1.09/1.26 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 1.09/1.26 EQ(active(X1:S),X2:S) -> EQ(X1:S,X2:S) 1.09/1.26 EQ(mark(X1:S),X2:S) -> EQ(X1:S,X2:S) 1.09/1.26 EQ(X1:S,active(X2:S)) -> EQ(X1:S,X2:S) 1.09/1.26 EQ(X1:S,mark(X2:S)) -> EQ(X1:S,X2:S) 1.09/1.26 INF(active(X:S)) -> INF(X:S) 1.09/1.26 INF(mark(X:S)) -> INF(X:S) 1.09/1.26 LENGTH(active(X:S)) -> LENGTH(X:S) 1.09/1.26 LENGTH(mark(X:S)) -> LENGTH(X:S) 1.09/1.26 MARK(cons(X1:S,X2:S)) -> ACTIVE(cons(X1:S,X2:S)) 1.09/1.26 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.26 MARK(inf(X:S)) -> ACTIVE(inf(mark(X:S))) 1.09/1.26 MARK(inf(X:S)) -> INF(mark(X:S)) 1.09/1.26 MARK(inf(X:S)) -> MARK(X:S) 1.09/1.26 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.26 MARK(length(X:S)) -> LENGTH(mark(X:S)) 1.09/1.26 MARK(length(X:S)) -> MARK(X:S) 1.09/1.26 MARK(s(X:S)) -> ACTIVE(s(X:S)) 1.09/1.26 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.26 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.26 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.26 MARK(take(X1:S,X2:S)) -> TAKE(mark(X1:S),mark(X2:S)) 1.09/1.26 S(active(X:S)) -> S(X:S) 1.09/1.26 S(mark(X:S)) -> S(X:S) 1.09/1.26 TAKE(active(X1:S),X2:S) -> TAKE(X1:S,X2:S) 1.09/1.26 TAKE(mark(X1:S),X2:S) -> TAKE(X1:S,X2:S) 1.09/1.26 TAKE(X1:S,active(X2:S)) -> TAKE(X1:S,X2:S) 1.09/1.26 TAKE(X1:S,mark(X2:S)) -> TAKE(X1:S,X2:S) 1.09/1.26 -> Rules: 1.09/1.26 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.26 active(eq(0,0)) -> mark(ttrue) 1.09/1.26 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.26 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.26 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.26 active(length(nil)) -> mark(0) 1.09/1.26 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.26 active(take(0,X:S)) -> mark(nil) 1.09/1.26 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.26 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.26 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.26 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.26 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.26 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.26 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.26 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.26 inf(active(X:S)) -> inf(X:S) 1.09/1.26 inf(mark(X:S)) -> inf(X:S) 1.09/1.26 length(active(X:S)) -> length(X:S) 1.09/1.26 length(mark(X:S)) -> length(X:S) 1.09/1.26 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.26 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.26 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.26 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.26 mark(s(X:S)) -> active(s(X:S)) 1.09/1.26 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.26 mark(0) -> active(0) 1.09/1.26 mark(ffalse) -> active(ffalse) 1.09/1.26 mark(nil) -> active(nil) 1.09/1.26 mark(ttrue) -> active(ttrue) 1.09/1.26 s(active(X:S)) -> s(X:S) 1.09/1.26 s(mark(X:S)) -> s(X:S) 1.09/1.26 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.26 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.26 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.26 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.26 1.09/1.26 Problem 1: 1.09/1.26 1.09/1.26 SCC Processor: 1.09/1.26 -> Pairs: 1.09/1.26 ACTIVE(eq(s(X:S),s(Y:S))) -> EQ(X:S,Y:S) 1.09/1.26 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.26 ACTIVE(eq(0,0)) -> MARK(ttrue) 1.09/1.26 ACTIVE(eq(X:S,Y:S)) -> MARK(ffalse) 1.09/1.26 ACTIVE(inf(X:S)) -> CONS(X:S,inf(s(X:S))) 1.09/1.26 ACTIVE(inf(X:S)) -> INF(s(X:S)) 1.09/1.26 ACTIVE(inf(X:S)) -> MARK(cons(X:S,inf(s(X:S)))) 1.09/1.26 ACTIVE(inf(X:S)) -> S(X:S) 1.09/1.26 ACTIVE(length(cons(X:S,L:S))) -> LENGTH(L:S) 1.09/1.26 ACTIVE(length(cons(X:S,L:S))) -> MARK(s(length(L:S))) 1.09/1.26 ACTIVE(length(cons(X:S,L:S))) -> S(length(L:S)) 1.09/1.26 ACTIVE(length(nil)) -> MARK(0) 1.09/1.26 ACTIVE(take(s(X:S),cons(Y:S,L:S))) -> CONS(Y:S,take(X:S,L:S)) 1.09/1.26 ACTIVE(take(s(X:S),cons(Y:S,L:S))) -> MARK(cons(Y:S,take(X:S,L:S))) 1.09/1.26 ACTIVE(take(s(X:S),cons(Y:S,L:S))) -> TAKE(X:S,L:S) 1.09/1.26 ACTIVE(take(0,X:S)) -> MARK(nil) 1.09/1.26 CONS(active(X1:S),X2:S) -> CONS(X1:S,X2:S) 1.09/1.26 CONS(mark(X1:S),X2:S) -> CONS(X1:S,X2:S) 1.09/1.26 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 1.09/1.26 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 1.09/1.26 EQ(active(X1:S),X2:S) -> EQ(X1:S,X2:S) 1.09/1.26 EQ(mark(X1:S),X2:S) -> EQ(X1:S,X2:S) 1.09/1.26 EQ(X1:S,active(X2:S)) -> EQ(X1:S,X2:S) 1.09/1.26 EQ(X1:S,mark(X2:S)) -> EQ(X1:S,X2:S) 1.09/1.26 INF(active(X:S)) -> INF(X:S) 1.09/1.26 INF(mark(X:S)) -> INF(X:S) 1.09/1.26 LENGTH(active(X:S)) -> LENGTH(X:S) 1.09/1.26 LENGTH(mark(X:S)) -> LENGTH(X:S) 1.09/1.26 MARK(cons(X1:S,X2:S)) -> ACTIVE(cons(X1:S,X2:S)) 1.09/1.26 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.26 MARK(inf(X:S)) -> ACTIVE(inf(mark(X:S))) 1.09/1.26 MARK(inf(X:S)) -> INF(mark(X:S)) 1.09/1.26 MARK(inf(X:S)) -> MARK(X:S) 1.09/1.26 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.26 MARK(length(X:S)) -> LENGTH(mark(X:S)) 1.09/1.26 MARK(length(X:S)) -> MARK(X:S) 1.09/1.26 MARK(s(X:S)) -> ACTIVE(s(X:S)) 1.09/1.26 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.26 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.26 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.26 MARK(take(X1:S,X2:S)) -> TAKE(mark(X1:S),mark(X2:S)) 1.09/1.26 S(active(X:S)) -> S(X:S) 1.09/1.26 S(mark(X:S)) -> S(X:S) 1.09/1.26 TAKE(active(X1:S),X2:S) -> TAKE(X1:S,X2:S) 1.09/1.26 TAKE(mark(X1:S),X2:S) -> TAKE(X1:S,X2:S) 1.09/1.26 TAKE(X1:S,active(X2:S)) -> TAKE(X1:S,X2:S) 1.09/1.26 TAKE(X1:S,mark(X2:S)) -> TAKE(X1:S,X2:S) 1.09/1.26 -> Rules: 1.09/1.26 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.26 active(eq(0,0)) -> mark(ttrue) 1.09/1.26 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.26 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.26 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.26 active(length(nil)) -> mark(0) 1.09/1.26 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.26 active(take(0,X:S)) -> mark(nil) 1.09/1.26 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.26 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.26 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.26 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.26 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.26 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.26 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.26 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.26 inf(active(X:S)) -> inf(X:S) 1.09/1.26 inf(mark(X:S)) -> inf(X:S) 1.09/1.26 length(active(X:S)) -> length(X:S) 1.09/1.26 length(mark(X:S)) -> length(X:S) 1.09/1.26 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.26 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.26 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.26 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.26 mark(s(X:S)) -> active(s(X:S)) 1.09/1.26 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.26 mark(0) -> active(0) 1.09/1.26 mark(ffalse) -> active(ffalse) 1.09/1.26 mark(nil) -> active(nil) 1.09/1.26 mark(ttrue) -> active(ttrue) 1.09/1.26 s(active(X:S)) -> s(X:S) 1.09/1.26 s(mark(X:S)) -> s(X:S) 1.09/1.26 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.26 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Strongly Connected Components: 1.09/1.27 ->->Cycle: 1.09/1.27 ->->-> Pairs: 1.09/1.27 TAKE(active(X1:S),X2:S) -> TAKE(X1:S,X2:S) 1.09/1.27 TAKE(mark(X1:S),X2:S) -> TAKE(X1:S,X2:S) 1.09/1.27 TAKE(X1:S,active(X2:S)) -> TAKE(X1:S,X2:S) 1.09/1.27 TAKE(X1:S,mark(X2:S)) -> TAKE(X1:S,X2:S) 1.09/1.27 ->->-> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->->Cycle: 1.09/1.27 ->->-> Pairs: 1.09/1.27 S(active(X:S)) -> S(X:S) 1.09/1.27 S(mark(X:S)) -> S(X:S) 1.09/1.27 ->->-> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->->Cycle: 1.09/1.27 ->->-> Pairs: 1.09/1.27 LENGTH(active(X:S)) -> LENGTH(X:S) 1.09/1.27 LENGTH(mark(X:S)) -> LENGTH(X:S) 1.09/1.27 ->->-> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->->Cycle: 1.09/1.27 ->->-> Pairs: 1.09/1.27 INF(active(X:S)) -> INF(X:S) 1.09/1.27 INF(mark(X:S)) -> INF(X:S) 1.09/1.27 ->->-> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->->Cycle: 1.09/1.27 ->->-> Pairs: 1.09/1.27 EQ(active(X1:S),X2:S) -> EQ(X1:S,X2:S) 1.09/1.27 EQ(mark(X1:S),X2:S) -> EQ(X1:S,X2:S) 1.09/1.27 EQ(X1:S,active(X2:S)) -> EQ(X1:S,X2:S) 1.09/1.27 EQ(X1:S,mark(X2:S)) -> EQ(X1:S,X2:S) 1.09/1.27 ->->-> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->->Cycle: 1.09/1.27 ->->-> Pairs: 1.09/1.27 CONS(active(X1:S),X2:S) -> CONS(X1:S,X2:S) 1.09/1.27 CONS(mark(X1:S),X2:S) -> CONS(X1:S,X2:S) 1.09/1.27 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 1.09/1.27 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 1.09/1.27 ->->-> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->->Cycle: 1.09/1.27 ->->-> Pairs: 1.09/1.27 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.27 ACTIVE(inf(X:S)) -> MARK(cons(X:S,inf(s(X:S)))) 1.09/1.27 ACTIVE(length(cons(X:S,L:S))) -> MARK(s(length(L:S))) 1.09/1.27 ACTIVE(take(s(X:S),cons(Y:S,L:S))) -> MARK(cons(Y:S,take(X:S,L:S))) 1.09/1.27 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.27 MARK(inf(X:S)) -> ACTIVE(inf(mark(X:S))) 1.09/1.27 MARK(inf(X:S)) -> MARK(X:S) 1.09/1.27 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.27 MARK(length(X:S)) -> MARK(X:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.27 ->->-> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 1.09/1.27 1.09/1.27 The problem is decomposed in 7 subproblems. 1.09/1.27 1.09/1.27 Problem 1.1: 1.09/1.27 1.09/1.27 Subterm Processor: 1.09/1.27 -> Pairs: 1.09/1.27 TAKE(active(X1:S),X2:S) -> TAKE(X1:S,X2:S) 1.09/1.27 TAKE(mark(X1:S),X2:S) -> TAKE(X1:S,X2:S) 1.09/1.27 TAKE(X1:S,active(X2:S)) -> TAKE(X1:S,X2:S) 1.09/1.27 TAKE(X1:S,mark(X2:S)) -> TAKE(X1:S,X2:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Projection: 1.09/1.27 pi(TAKE) = 1 1.09/1.27 1.09/1.27 Problem 1.1: 1.09/1.27 1.09/1.27 SCC Processor: 1.09/1.27 -> Pairs: 1.09/1.27 TAKE(X1:S,active(X2:S)) -> TAKE(X1:S,X2:S) 1.09/1.27 TAKE(X1:S,mark(X2:S)) -> TAKE(X1:S,X2:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Strongly Connected Components: 1.09/1.27 ->->Cycle: 1.09/1.27 ->->-> Pairs: 1.09/1.27 TAKE(X1:S,active(X2:S)) -> TAKE(X1:S,X2:S) 1.09/1.27 TAKE(X1:S,mark(X2:S)) -> TAKE(X1:S,X2:S) 1.09/1.27 ->->-> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 1.09/1.27 Problem 1.1: 1.09/1.27 1.09/1.27 Subterm Processor: 1.09/1.27 -> Pairs: 1.09/1.27 TAKE(X1:S,active(X2:S)) -> TAKE(X1:S,X2:S) 1.09/1.27 TAKE(X1:S,mark(X2:S)) -> TAKE(X1:S,X2:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Projection: 1.09/1.27 pi(TAKE) = 2 1.09/1.27 1.09/1.27 Problem 1.1: 1.09/1.27 1.09/1.27 SCC Processor: 1.09/1.27 -> Pairs: 1.09/1.27 Empty 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Strongly Connected Components: 1.09/1.27 There is no strongly connected component 1.09/1.27 1.09/1.27 The problem is finite. 1.09/1.27 1.09/1.27 Problem 1.2: 1.09/1.27 1.09/1.27 Subterm Processor: 1.09/1.27 -> Pairs: 1.09/1.27 S(active(X:S)) -> S(X:S) 1.09/1.27 S(mark(X:S)) -> S(X:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Projection: 1.09/1.27 pi(S) = 1 1.09/1.27 1.09/1.27 Problem 1.2: 1.09/1.27 1.09/1.27 SCC Processor: 1.09/1.27 -> Pairs: 1.09/1.27 Empty 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Strongly Connected Components: 1.09/1.27 There is no strongly connected component 1.09/1.27 1.09/1.27 The problem is finite. 1.09/1.27 1.09/1.27 Problem 1.3: 1.09/1.27 1.09/1.27 Subterm Processor: 1.09/1.27 -> Pairs: 1.09/1.27 LENGTH(active(X:S)) -> LENGTH(X:S) 1.09/1.27 LENGTH(mark(X:S)) -> LENGTH(X:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Projection: 1.09/1.27 pi(LENGTH) = 1 1.09/1.27 1.09/1.27 Problem 1.3: 1.09/1.27 1.09/1.27 SCC Processor: 1.09/1.27 -> Pairs: 1.09/1.27 Empty 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Strongly Connected Components: 1.09/1.27 There is no strongly connected component 1.09/1.27 1.09/1.27 The problem is finite. 1.09/1.27 1.09/1.27 Problem 1.4: 1.09/1.27 1.09/1.27 Subterm Processor: 1.09/1.27 -> Pairs: 1.09/1.27 INF(active(X:S)) -> INF(X:S) 1.09/1.27 INF(mark(X:S)) -> INF(X:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Projection: 1.09/1.27 pi(INF) = 1 1.09/1.27 1.09/1.27 Problem 1.4: 1.09/1.27 1.09/1.27 SCC Processor: 1.09/1.27 -> Pairs: 1.09/1.27 Empty 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Strongly Connected Components: 1.09/1.27 There is no strongly connected component 1.09/1.27 1.09/1.27 The problem is finite. 1.09/1.27 1.09/1.27 Problem 1.5: 1.09/1.27 1.09/1.27 Subterm Processor: 1.09/1.27 -> Pairs: 1.09/1.27 EQ(active(X1:S),X2:S) -> EQ(X1:S,X2:S) 1.09/1.27 EQ(mark(X1:S),X2:S) -> EQ(X1:S,X2:S) 1.09/1.27 EQ(X1:S,active(X2:S)) -> EQ(X1:S,X2:S) 1.09/1.27 EQ(X1:S,mark(X2:S)) -> EQ(X1:S,X2:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Projection: 1.09/1.27 pi(EQ) = 1 1.09/1.27 1.09/1.27 Problem 1.5: 1.09/1.27 1.09/1.27 SCC Processor: 1.09/1.27 -> Pairs: 1.09/1.27 EQ(X1:S,active(X2:S)) -> EQ(X1:S,X2:S) 1.09/1.27 EQ(X1:S,mark(X2:S)) -> EQ(X1:S,X2:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Strongly Connected Components: 1.09/1.27 ->->Cycle: 1.09/1.27 ->->-> Pairs: 1.09/1.27 EQ(X1:S,active(X2:S)) -> EQ(X1:S,X2:S) 1.09/1.27 EQ(X1:S,mark(X2:S)) -> EQ(X1:S,X2:S) 1.09/1.27 ->->-> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 1.09/1.27 Problem 1.5: 1.09/1.27 1.09/1.27 Subterm Processor: 1.09/1.27 -> Pairs: 1.09/1.27 EQ(X1:S,active(X2:S)) -> EQ(X1:S,X2:S) 1.09/1.27 EQ(X1:S,mark(X2:S)) -> EQ(X1:S,X2:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Projection: 1.09/1.27 pi(EQ) = 2 1.09/1.27 1.09/1.27 Problem 1.5: 1.09/1.27 1.09/1.27 SCC Processor: 1.09/1.27 -> Pairs: 1.09/1.27 Empty 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Strongly Connected Components: 1.09/1.27 There is no strongly connected component 1.09/1.27 1.09/1.27 The problem is finite. 1.09/1.27 1.09/1.27 Problem 1.6: 1.09/1.27 1.09/1.27 Subterm Processor: 1.09/1.27 -> Pairs: 1.09/1.27 CONS(active(X1:S),X2:S) -> CONS(X1:S,X2:S) 1.09/1.27 CONS(mark(X1:S),X2:S) -> CONS(X1:S,X2:S) 1.09/1.27 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 1.09/1.27 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Projection: 1.09/1.27 pi(CONS) = 1 1.09/1.27 1.09/1.27 Problem 1.6: 1.09/1.27 1.09/1.27 SCC Processor: 1.09/1.27 -> Pairs: 1.09/1.27 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 1.09/1.27 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Strongly Connected Components: 1.09/1.27 ->->Cycle: 1.09/1.27 ->->-> Pairs: 1.09/1.27 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 1.09/1.27 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 1.09/1.27 ->->-> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 1.09/1.27 Problem 1.6: 1.09/1.27 1.09/1.27 Subterm Processor: 1.09/1.27 -> Pairs: 1.09/1.27 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 1.09/1.27 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Projection: 1.09/1.27 pi(CONS) = 2 1.09/1.27 1.09/1.27 Problem 1.6: 1.09/1.27 1.09/1.27 SCC Processor: 1.09/1.27 -> Pairs: 1.09/1.27 Empty 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Strongly Connected Components: 1.09/1.27 There is no strongly connected component 1.09/1.27 1.09/1.27 The problem is finite. 1.09/1.27 1.09/1.27 Problem 1.7: 1.09/1.27 1.09/1.27 Reduction Pairs Processor: 1.09/1.27 -> Pairs: 1.09/1.27 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.27 ACTIVE(inf(X:S)) -> MARK(cons(X:S,inf(s(X:S)))) 1.09/1.27 ACTIVE(length(cons(X:S,L:S))) -> MARK(s(length(L:S))) 1.09/1.27 ACTIVE(take(s(X:S),cons(Y:S,L:S))) -> MARK(cons(Y:S,take(X:S,L:S))) 1.09/1.27 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.27 MARK(inf(X:S)) -> ACTIVE(inf(mark(X:S))) 1.09/1.27 MARK(inf(X:S)) -> MARK(X:S) 1.09/1.27 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.27 MARK(length(X:S)) -> MARK(X:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 -> Usable rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Interpretation type: 1.09/1.27 Linear 1.09/1.27 ->Coefficients: 1.09/1.27 Natural Numbers 1.09/1.27 ->Dimension: 1.09/1.27 1 1.09/1.27 ->Bound: 1.09/1.27 2 1.09/1.27 ->Interpretation: 1.09/1.27 1.09/1.27 [active](X) = X 1.09/1.27 [cons](X1,X2) = 2.X1 + 1 1.09/1.27 [eq](X1,X2) = 2 1.09/1.27 [inf](X) = 2.X + 2 1.09/1.27 [length](X) = X + 2 1.09/1.27 [mark](X) = X 1.09/1.27 [s](X) = 2 1.09/1.27 [take](X1,X2) = 2.X1 + 2.X2 + 1 1.09/1.27 [0] = 2 1.09/1.27 [fSNonEmpty] = 0 1.09/1.27 [false] = 1 1.09/1.27 [nil] = 0 1.09/1.27 [true] = 1 1.09/1.27 [ACTIVE](X) = 2.X + 2 1.09/1.27 [CONS](X1,X2) = 0 1.09/1.27 [EQ](X1,X2) = 0 1.09/1.27 [INF](X) = 0 1.09/1.27 [LENGTH](X) = 0 1.09/1.27 [MARK](X) = 2.X + 2 1.09/1.27 [S](X) = 0 1.09/1.27 [TAKE](X1,X2) = 0 1.09/1.27 1.09/1.27 Problem 1.7: 1.09/1.27 1.09/1.27 SCC Processor: 1.09/1.27 -> Pairs: 1.09/1.27 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.27 ACTIVE(length(cons(X:S,L:S))) -> MARK(s(length(L:S))) 1.09/1.27 ACTIVE(take(s(X:S),cons(Y:S,L:S))) -> MARK(cons(Y:S,take(X:S,L:S))) 1.09/1.27 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.27 MARK(inf(X:S)) -> ACTIVE(inf(mark(X:S))) 1.09/1.27 MARK(inf(X:S)) -> MARK(X:S) 1.09/1.27 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.27 MARK(length(X:S)) -> MARK(X:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Strongly Connected Components: 1.09/1.27 ->->Cycle: 1.09/1.27 ->->-> Pairs: 1.09/1.27 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.27 ACTIVE(length(cons(X:S,L:S))) -> MARK(s(length(L:S))) 1.09/1.27 ACTIVE(take(s(X:S),cons(Y:S,L:S))) -> MARK(cons(Y:S,take(X:S,L:S))) 1.09/1.27 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.27 MARK(inf(X:S)) -> ACTIVE(inf(mark(X:S))) 1.09/1.27 MARK(inf(X:S)) -> MARK(X:S) 1.09/1.27 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.27 MARK(length(X:S)) -> MARK(X:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.27 ->->-> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 1.09/1.27 Problem 1.7: 1.09/1.27 1.09/1.27 Reduction Pairs Processor: 1.09/1.27 -> Pairs: 1.09/1.27 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.27 ACTIVE(length(cons(X:S,L:S))) -> MARK(s(length(L:S))) 1.09/1.27 ACTIVE(take(s(X:S),cons(Y:S,L:S))) -> MARK(cons(Y:S,take(X:S,L:S))) 1.09/1.27 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.27 MARK(inf(X:S)) -> ACTIVE(inf(mark(X:S))) 1.09/1.27 MARK(inf(X:S)) -> MARK(X:S) 1.09/1.27 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.27 MARK(length(X:S)) -> MARK(X:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 -> Usable rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Interpretation type: 1.09/1.27 Linear 1.09/1.27 ->Coefficients: 1.09/1.27 Natural Numbers 1.09/1.27 ->Dimension: 1.09/1.27 1 1.09/1.27 ->Bound: 1.09/1.27 2 1.09/1.27 ->Interpretation: 1.09/1.27 1.09/1.27 [active](X) = X + 1 1.09/1.27 [cons](X1,X2) = 1 1.09/1.27 [eq](X1,X2) = 0 1.09/1.27 [inf](X) = 2.X + 2 1.09/1.27 [length](X) = 2.X + 2 1.09/1.27 [mark](X) = 2.X + 1 1.09/1.27 [s](X) = 0 1.09/1.27 [take](X1,X2) = X1 + X2 + 2 1.09/1.27 [0] = 1 1.09/1.27 [fSNonEmpty] = 0 1.09/1.27 [false] = 0 1.09/1.27 [nil] = 1 1.09/1.27 [true] = 0 1.09/1.27 [ACTIVE](X) = X 1.09/1.27 [CONS](X1,X2) = 0 1.09/1.27 [EQ](X1,X2) = 0 1.09/1.27 [INF](X) = 0 1.09/1.27 [LENGTH](X) = 0 1.09/1.27 [MARK](X) = 2.X 1.09/1.27 [S](X) = 0 1.09/1.27 [TAKE](X1,X2) = 0 1.09/1.27 1.09/1.27 Problem 1.7: 1.09/1.27 1.09/1.27 SCC Processor: 1.09/1.27 -> Pairs: 1.09/1.27 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.27 ACTIVE(take(s(X:S),cons(Y:S,L:S))) -> MARK(cons(Y:S,take(X:S,L:S))) 1.09/1.27 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.27 MARK(inf(X:S)) -> ACTIVE(inf(mark(X:S))) 1.09/1.27 MARK(inf(X:S)) -> MARK(X:S) 1.09/1.27 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.27 MARK(length(X:S)) -> MARK(X:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Strongly Connected Components: 1.09/1.27 ->->Cycle: 1.09/1.27 ->->-> Pairs: 1.09/1.27 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.27 ACTIVE(take(s(X:S),cons(Y:S,L:S))) -> MARK(cons(Y:S,take(X:S,L:S))) 1.09/1.27 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.27 MARK(inf(X:S)) -> ACTIVE(inf(mark(X:S))) 1.09/1.27 MARK(inf(X:S)) -> MARK(X:S) 1.09/1.27 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.27 MARK(length(X:S)) -> MARK(X:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.27 ->->-> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 1.09/1.27 Problem 1.7: 1.09/1.27 1.09/1.27 Reduction Pairs Processor: 1.09/1.27 -> Pairs: 1.09/1.27 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.27 ACTIVE(take(s(X:S),cons(Y:S,L:S))) -> MARK(cons(Y:S,take(X:S,L:S))) 1.09/1.27 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.27 MARK(inf(X:S)) -> ACTIVE(inf(mark(X:S))) 1.09/1.27 MARK(inf(X:S)) -> MARK(X:S) 1.09/1.27 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.27 MARK(length(X:S)) -> MARK(X:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 -> Usable rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Interpretation type: 1.09/1.27 Linear 1.09/1.27 ->Coefficients: 1.09/1.27 Natural Numbers 1.09/1.27 ->Dimension: 1.09/1.27 1 1.09/1.27 ->Bound: 1.09/1.27 2 1.09/1.27 ->Interpretation: 1.09/1.27 1.09/1.27 [active](X) = X + 2 1.09/1.27 [cons](X1,X2) = X1 + 2 1.09/1.27 [eq](X1,X2) = 2 1.09/1.27 [inf](X) = 2.X + 2 1.09/1.27 [length](X) = 2.X + 2 1.09/1.27 [mark](X) = 2.X 1.09/1.27 [s](X) = 2 1.09/1.27 [take](X1,X2) = 2.X1 + 2.X2 + 2 1.09/1.27 [0] = 2 1.09/1.27 [fSNonEmpty] = 0 1.09/1.27 [false] = 2 1.09/1.27 [nil] = 2 1.09/1.27 [true] = 2 1.09/1.27 [ACTIVE](X) = X + 2 1.09/1.27 [CONS](X1,X2) = 0 1.09/1.27 [EQ](X1,X2) = 0 1.09/1.27 [INF](X) = 0 1.09/1.27 [LENGTH](X) = 0 1.09/1.27 [MARK](X) = 2.X 1.09/1.27 [S](X) = 0 1.09/1.27 [TAKE](X1,X2) = 0 1.09/1.27 1.09/1.27 Problem 1.7: 1.09/1.27 1.09/1.27 SCC Processor: 1.09/1.27 -> Pairs: 1.09/1.27 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.27 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.27 MARK(inf(X:S)) -> ACTIVE(inf(mark(X:S))) 1.09/1.27 MARK(inf(X:S)) -> MARK(X:S) 1.09/1.27 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.27 MARK(length(X:S)) -> MARK(X:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Strongly Connected Components: 1.09/1.27 ->->Cycle: 1.09/1.27 ->->-> Pairs: 1.09/1.27 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.27 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.27 MARK(inf(X:S)) -> ACTIVE(inf(mark(X:S))) 1.09/1.27 MARK(inf(X:S)) -> MARK(X:S) 1.09/1.27 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.27 MARK(length(X:S)) -> MARK(X:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.27 ->->-> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 1.09/1.27 Problem 1.7: 1.09/1.27 1.09/1.27 Reduction Pairs Processor: 1.09/1.27 -> Pairs: 1.09/1.27 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.27 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.27 MARK(inf(X:S)) -> ACTIVE(inf(mark(X:S))) 1.09/1.27 MARK(inf(X:S)) -> MARK(X:S) 1.09/1.27 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.27 MARK(length(X:S)) -> MARK(X:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.27 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.27 -> Rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 -> Usable rules: 1.09/1.27 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.27 active(eq(0,0)) -> mark(ttrue) 1.09/1.27 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.27 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.27 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.27 active(length(nil)) -> mark(0) 1.09/1.27 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.27 active(take(0,X:S)) -> mark(nil) 1.09/1.27 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.27 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.27 inf(active(X:S)) -> inf(X:S) 1.09/1.27 inf(mark(X:S)) -> inf(X:S) 1.09/1.27 length(active(X:S)) -> length(X:S) 1.09/1.27 length(mark(X:S)) -> length(X:S) 1.09/1.27 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.27 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.27 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.27 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.27 mark(s(X:S)) -> active(s(X:S)) 1.09/1.27 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.27 mark(0) -> active(0) 1.09/1.27 mark(ffalse) -> active(ffalse) 1.09/1.27 mark(nil) -> active(nil) 1.09/1.27 mark(ttrue) -> active(ttrue) 1.09/1.27 s(active(X:S)) -> s(X:S) 1.09/1.27 s(mark(X:S)) -> s(X:S) 1.09/1.27 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.27 ->Interpretation type: 1.09/1.27 Linear 1.09/1.27 ->Coefficients: 1.09/1.27 Natural Numbers 1.09/1.27 ->Dimension: 1.09/1.27 1 1.09/1.27 ->Bound: 1.09/1.28 2 1.09/1.28 ->Interpretation: 1.09/1.28 1.09/1.28 [active](X) = X + 1 1.09/1.28 [cons](X1,X2) = X1 + 1 1.09/1.28 [eq](X1,X2) = 1 1.09/1.28 [inf](X) = 2.X + 2 1.09/1.28 [length](X) = 2.X + 2 1.09/1.28 [mark](X) = 2.X 1.09/1.28 [s](X) = 1 1.09/1.28 [take](X1,X2) = X1 + 2.X2 + 2 1.09/1.28 [0] = 2 1.09/1.28 [fSNonEmpty] = 0 1.09/1.28 [false] = 1 1.09/1.28 [nil] = 1 1.09/1.28 [true] = 1 1.09/1.28 [ACTIVE](X) = 2 1.09/1.28 [CONS](X1,X2) = 0 1.09/1.28 [EQ](X1,X2) = 0 1.09/1.28 [INF](X) = 0 1.09/1.28 [LENGTH](X) = 0 1.09/1.28 [MARK](X) = 2.X 1.09/1.28 [S](X) = 0 1.09/1.28 [TAKE](X1,X2) = 0 1.09/1.28 1.09/1.28 Problem 1.7: 1.09/1.28 1.09/1.28 SCC Processor: 1.09/1.28 -> Pairs: 1.09/1.28 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.28 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.28 MARK(inf(X:S)) -> MARK(X:S) 1.09/1.28 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.28 MARK(length(X:S)) -> MARK(X:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 -> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 ->Strongly Connected Components: 1.09/1.28 ->->Cycle: 1.09/1.28 ->->-> Pairs: 1.09/1.28 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.28 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.28 MARK(inf(X:S)) -> MARK(X:S) 1.09/1.28 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.28 MARK(length(X:S)) -> MARK(X:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 ->->-> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 1.09/1.28 Problem 1.7: 1.09/1.28 1.09/1.28 Reduction Pairs Processor: 1.09/1.28 -> Pairs: 1.09/1.28 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.28 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.28 MARK(inf(X:S)) -> MARK(X:S) 1.09/1.28 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.28 MARK(length(X:S)) -> MARK(X:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 -> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 -> Usable rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 ->Interpretation type: 1.09/1.28 Linear 1.09/1.28 ->Coefficients: 1.09/1.28 Natural Numbers 1.09/1.28 ->Dimension: 1.09/1.28 1 1.09/1.28 ->Bound: 1.09/1.28 2 1.09/1.28 ->Interpretation: 1.09/1.28 1.09/1.28 [active](X) = X 1.09/1.28 [cons](X1,X2) = X2 1.09/1.28 [eq](X1,X2) = 2.X1 + X2 + 2 1.09/1.28 [inf](X) = 2.X + 1 1.09/1.28 [length](X) = 2.X + 2 1.09/1.28 [mark](X) = X 1.09/1.28 [s](X) = X 1.09/1.28 [take](X1,X2) = 2.X1 + 2.X2 1.09/1.28 [0] = 2 1.09/1.28 [fSNonEmpty] = 0 1.09/1.28 [false] = 1 1.09/1.28 [nil] = 1 1.09/1.28 [true] = 1 1.09/1.28 [ACTIVE](X) = 2.X + 2 1.09/1.28 [CONS](X1,X2) = 0 1.09/1.28 [EQ](X1,X2) = 0 1.09/1.28 [INF](X) = 0 1.09/1.28 [LENGTH](X) = 0 1.09/1.28 [MARK](X) = 2.X + 2 1.09/1.28 [S](X) = 0 1.09/1.28 [TAKE](X1,X2) = 0 1.09/1.28 1.09/1.28 Problem 1.7: 1.09/1.28 1.09/1.28 SCC Processor: 1.09/1.28 -> Pairs: 1.09/1.28 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.28 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.28 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.28 MARK(length(X:S)) -> MARK(X:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 -> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 ->Strongly Connected Components: 1.09/1.28 ->->Cycle: 1.09/1.28 ->->-> Pairs: 1.09/1.28 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.28 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.28 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.28 MARK(length(X:S)) -> MARK(X:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 ->->-> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 1.09/1.28 Problem 1.7: 1.09/1.28 1.09/1.28 Reduction Pairs Processor: 1.09/1.28 -> Pairs: 1.09/1.28 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.28 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.28 MARK(length(X:S)) -> ACTIVE(length(mark(X:S))) 1.09/1.28 MARK(length(X:S)) -> MARK(X:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 -> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 -> Usable rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 ->Interpretation type: 1.09/1.28 Linear 1.09/1.28 ->Coefficients: 1.09/1.28 Natural Numbers 1.09/1.28 ->Dimension: 1.09/1.28 1 1.09/1.28 ->Bound: 1.09/1.28 2 1.09/1.28 ->Interpretation: 1.09/1.28 1.09/1.28 [active](X) = 2 1.09/1.28 [cons](X1,X2) = 0 1.09/1.28 [eq](X1,X2) = 2 1.09/1.28 [inf](X) = 0 1.09/1.28 [length](X) = 0 1.09/1.28 [mark](X) = 2 1.09/1.28 [s](X) = 0 1.09/1.28 [take](X1,X2) = 2 1.09/1.28 [0] = 2 1.09/1.28 [fSNonEmpty] = 0 1.09/1.28 [false] = 2 1.09/1.28 [nil] = 2 1.09/1.28 [true] = 1 1.09/1.28 [ACTIVE](X) = X 1.09/1.28 [CONS](X1,X2) = 0 1.09/1.28 [EQ](X1,X2) = 0 1.09/1.28 [INF](X) = 0 1.09/1.28 [LENGTH](X) = 0 1.09/1.28 [MARK](X) = 2 1.09/1.28 [S](X) = 0 1.09/1.28 [TAKE](X1,X2) = 0 1.09/1.28 1.09/1.28 Problem 1.7: 1.09/1.28 1.09/1.28 SCC Processor: 1.09/1.28 -> Pairs: 1.09/1.28 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.28 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.28 MARK(length(X:S)) -> MARK(X:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 -> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 ->Strongly Connected Components: 1.09/1.28 ->->Cycle: 1.09/1.28 ->->-> Pairs: 1.09/1.28 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.28 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.28 MARK(length(X:S)) -> MARK(X:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 ->->-> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 1.09/1.28 Problem 1.7: 1.09/1.28 1.09/1.28 Reduction Pairs Processor: 1.09/1.28 -> Pairs: 1.09/1.28 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.28 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.28 MARK(length(X:S)) -> MARK(X:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 -> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 -> Usable rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 ->Interpretation type: 1.09/1.28 Linear 1.09/1.28 ->Coefficients: 1.09/1.28 Natural Numbers 1.09/1.28 ->Dimension: 1.09/1.28 1 1.09/1.28 ->Bound: 1.09/1.28 2 1.09/1.28 ->Interpretation: 1.09/1.28 1.09/1.28 [active](X) = X 1.09/1.28 [cons](X1,X2) = X2 1.09/1.28 [eq](X1,X2) = 2.X1 + 2.X2 + 2 1.09/1.28 [inf](X) = 2 1.09/1.28 [length](X) = 2.X + 2 1.09/1.28 [mark](X) = X 1.09/1.28 [s](X) = X 1.09/1.28 [take](X1,X2) = X1 + 2.X2 + 2 1.09/1.28 [0] = 2 1.09/1.28 [fSNonEmpty] = 0 1.09/1.28 [false] = 1 1.09/1.28 [nil] = 2 1.09/1.28 [true] = 2 1.09/1.28 [ACTIVE](X) = 2.X + 2 1.09/1.28 [CONS](X1,X2) = 0 1.09/1.28 [EQ](X1,X2) = 0 1.09/1.28 [INF](X) = 0 1.09/1.28 [LENGTH](X) = 0 1.09/1.28 [MARK](X) = 2.X + 2 1.09/1.28 [S](X) = 0 1.09/1.28 [TAKE](X1,X2) = 0 1.09/1.28 1.09/1.28 Problem 1.7: 1.09/1.28 1.09/1.28 SCC Processor: 1.09/1.28 -> Pairs: 1.09/1.28 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.28 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.28 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 -> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 ->Strongly Connected Components: 1.09/1.28 ->->Cycle: 1.09/1.28 ->->-> Pairs: 1.09/1.28 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.28 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.28 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 ->->-> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 1.09/1.28 Problem 1.7: 1.09/1.28 1.09/1.28 Reduction Pairs Processor: 1.09/1.28 -> Pairs: 1.09/1.28 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.28 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.28 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 -> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 -> Usable rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 ->Interpretation type: 1.09/1.28 Linear 1.09/1.28 ->Coefficients: 1.09/1.28 Natural Numbers 1.09/1.28 ->Dimension: 1.09/1.28 1 1.09/1.28 ->Bound: 1.09/1.28 2 1.09/1.28 ->Interpretation: 1.09/1.28 1.09/1.28 [active](X) = 2 1.09/1.28 [cons](X1,X2) = 2 1.09/1.28 [eq](X1,X2) = 2 1.09/1.28 [inf](X) = 2 1.09/1.28 [length](X) = 0 1.09/1.28 [mark](X) = 2 1.09/1.28 [s](X) = 2 1.09/1.28 [take](X1,X2) = 1 1.09/1.28 [0] = 2 1.09/1.28 [fSNonEmpty] = 0 1.09/1.28 [false] = 2 1.09/1.28 [nil] = 2 1.09/1.28 [true] = 2 1.09/1.28 [ACTIVE](X) = X 1.09/1.28 [CONS](X1,X2) = 0 1.09/1.28 [EQ](X1,X2) = 0 1.09/1.28 [INF](X) = 0 1.09/1.28 [LENGTH](X) = 0 1.09/1.28 [MARK](X) = 2 1.09/1.28 [S](X) = 0 1.09/1.28 [TAKE](X1,X2) = 0 1.09/1.28 1.09/1.28 Problem 1.7: 1.09/1.28 1.09/1.28 SCC Processor: 1.09/1.28 -> Pairs: 1.09/1.28 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.28 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 -> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 ->Strongly Connected Components: 1.09/1.28 ->->Cycle: 1.09/1.28 ->->-> Pairs: 1.09/1.28 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.28 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 ->->-> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 1.09/1.28 Problem 1.7: 1.09/1.28 1.09/1.28 Reduction Pairs Processor: 1.09/1.28 -> Pairs: 1.09/1.28 ACTIVE(eq(s(X:S),s(Y:S))) -> MARK(eq(X:S,Y:S)) 1.09/1.28 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 -> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 -> Usable rules: 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 ->Interpretation type: 1.09/1.28 Linear 1.09/1.28 ->Coefficients: 1.09/1.28 Natural Numbers 1.09/1.28 ->Dimension: 1.09/1.28 1 1.09/1.28 ->Bound: 1.09/1.28 2 1.09/1.28 ->Interpretation: 1.09/1.28 1.09/1.28 [active](X) = X 1.09/1.28 [cons](X1,X2) = 0 1.09/1.28 [eq](X1,X2) = 2.X2 + 1 1.09/1.28 [inf](X) = 0 1.09/1.28 [length](X) = 0 1.09/1.28 [mark](X) = X 1.09/1.28 [s](X) = 2.X + 2 1.09/1.28 [take](X1,X2) = 2.X1 + 2.X2 1.09/1.28 [0] = 0 1.09/1.28 [fSNonEmpty] = 0 1.09/1.28 [false] = 0 1.09/1.28 [nil] = 0 1.09/1.28 [true] = 0 1.09/1.28 [ACTIVE](X) = 2.X + 1 1.09/1.28 [CONS](X1,X2) = 0 1.09/1.28 [EQ](X1,X2) = 0 1.09/1.28 [INF](X) = 0 1.09/1.28 [LENGTH](X) = 0 1.09/1.28 [MARK](X) = 2.X + 2 1.09/1.28 [S](X) = 0 1.09/1.28 [TAKE](X1,X2) = 0 1.09/1.28 1.09/1.28 Problem 1.7: 1.09/1.28 1.09/1.28 SCC Processor: 1.09/1.28 -> Pairs: 1.09/1.28 MARK(eq(X1:S,X2:S)) -> ACTIVE(eq(X1:S,X2:S)) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 -> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 ->Strongly Connected Components: 1.09/1.28 ->->Cycle: 1.09/1.28 ->->-> Pairs: 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 ->->-> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 1.09/1.28 Problem 1.7: 1.09/1.28 1.09/1.28 Subterm Processor: 1.09/1.28 -> Pairs: 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 1.09/1.28 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 1.09/1.28 -> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 ->Projection: 1.09/1.28 pi(MARK) = 1 1.09/1.28 1.09/1.28 Problem 1.7: 1.09/1.28 1.09/1.28 SCC Processor: 1.09/1.28 -> Pairs: 1.09/1.28 Empty 1.09/1.28 -> Rules: 1.09/1.28 active(eq(s(X:S),s(Y:S))) -> mark(eq(X:S,Y:S)) 1.09/1.28 active(eq(0,0)) -> mark(ttrue) 1.09/1.28 active(eq(X:S,Y:S)) -> mark(ffalse) 1.09/1.28 active(inf(X:S)) -> mark(cons(X:S,inf(s(X:S)))) 1.09/1.28 active(length(cons(X:S,L:S))) -> mark(s(length(L:S))) 1.09/1.28 active(length(nil)) -> mark(0) 1.09/1.28 active(take(s(X:S),cons(Y:S,L:S))) -> mark(cons(Y:S,take(X:S,L:S))) 1.09/1.28 active(take(0,X:S)) -> mark(nil) 1.09/1.28 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 1.09/1.28 eq(active(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(mark(X1:S),X2:S) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,active(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 eq(X1:S,mark(X2:S)) -> eq(X1:S,X2:S) 1.09/1.28 inf(active(X:S)) -> inf(X:S) 1.09/1.28 inf(mark(X:S)) -> inf(X:S) 1.09/1.28 length(active(X:S)) -> length(X:S) 1.09/1.28 length(mark(X:S)) -> length(X:S) 1.09/1.28 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 1.09/1.28 mark(eq(X1:S,X2:S)) -> active(eq(X1:S,X2:S)) 1.09/1.28 mark(inf(X:S)) -> active(inf(mark(X:S))) 1.09/1.28 mark(length(X:S)) -> active(length(mark(X:S))) 1.09/1.28 mark(s(X:S)) -> active(s(X:S)) 1.09/1.28 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 1.09/1.28 mark(0) -> active(0) 1.09/1.28 mark(ffalse) -> active(ffalse) 1.09/1.28 mark(nil) -> active(nil) 1.09/1.28 mark(ttrue) -> active(ttrue) 1.09/1.28 s(active(X:S)) -> s(X:S) 1.09/1.28 s(mark(X:S)) -> s(X:S) 1.09/1.28 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 1.09/1.28 ->Strongly Connected Components: 1.09/1.28 There is no strongly connected component 1.09/1.28 1.09/1.28 The problem is finite. 1.09/1.28 EOF