18.56/20.18 YES 18.56/20.18 18.56/20.18 Problem 1: 18.56/20.18 18.56/20.18 (VAR v_NonEmpty:S N:S X:S X1:S X2:S XS:S Y:S YS:S) 18.56/20.18 (RULES 18.56/20.18 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.18 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.18 active(repItems(nil)) -> mark(nil) 18.56/20.18 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.18 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.18 active(take(0,XS:S)) -> mark(nil) 18.56/20.18 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.18 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.18 active(zip(X:S,nil)) -> mark(nil) 18.56/20.18 active(oddNs) -> mark(incr(pairNs)) 18.56/20.18 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.18 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.18 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.18 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.18 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.18 incr(active(X:S)) -> incr(X:S) 18.56/20.18 incr(mark(X:S)) -> incr(X:S) 18.56/20.18 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.18 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.18 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.18 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.18 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.18 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.18 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.18 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.18 mark(0) -> active(0) 18.56/20.18 mark(nil) -> active(nil) 18.56/20.18 mark(oddNs) -> active(oddNs) 18.56/20.18 mark(pairNs) -> active(pairNs) 18.56/20.18 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.18 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.18 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.18 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.18 repItems(active(X:S)) -> repItems(X:S) 18.56/20.18 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.18 s(active(X:S)) -> s(X:S) 18.56/20.18 s(mark(X:S)) -> s(X:S) 18.56/20.18 tail(active(X:S)) -> tail(X:S) 18.56/20.18 tail(mark(X:S)) -> tail(X:S) 18.56/20.18 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.18 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.18 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.18 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.18 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.18 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.18 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.18 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.18 ) 18.56/20.18 (STRATEGY INNERMOST) 18.56/20.18 18.56/20.18 Problem 1: 18.56/20.18 18.56/20.18 Dependency Pairs Processor: 18.56/20.18 -> Pairs: 18.56/20.18 ACTIVE(incr(cons(X:S,XS:S))) -> CONS(s(X:S),incr(XS:S)) 18.56/20.18 ACTIVE(incr(cons(X:S,XS:S))) -> INCR(XS:S) 18.56/20.18 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.18 ACTIVE(incr(cons(X:S,XS:S))) -> S(X:S) 18.56/20.18 ACTIVE(repItems(cons(X:S,XS:S))) -> CONS(X:S,cons(X:S,repItems(XS:S))) 18.56/20.18 ACTIVE(repItems(cons(X:S,XS:S))) -> CONS(X:S,repItems(XS:S)) 18.56/20.18 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.18 ACTIVE(repItems(cons(X:S,XS:S))) -> REPITEMS(XS:S) 18.56/20.18 ACTIVE(repItems(nil)) -> MARK(nil) 18.56/20.18 ACTIVE(tail(cons(X:S,XS:S))) -> MARK(XS:S) 18.56/20.18 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> CONS(X:S,take(N:S,XS:S)) 18.56/20.18 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.18 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> TAKE(N:S,XS:S) 18.56/20.18 ACTIVE(take(0,XS:S)) -> MARK(nil) 18.56/20.18 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> CONS(pair(X:S,Y:S),zip(XS:S,YS:S)) 18.56/20.18 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.18 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> PAIR(X:S,Y:S) 18.56/20.18 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> ZIP(XS:S,YS:S) 18.56/20.18 ACTIVE(zip(nil,XS:S)) -> MARK(nil) 18.56/20.18 ACTIVE(zip(X:S,nil)) -> MARK(nil) 18.56/20.18 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.18 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.18 CONS(active(X1:S),X2:S) -> CONS(X1:S,X2:S) 18.56/20.18 CONS(mark(X1:S),X2:S) -> CONS(X1:S,X2:S) 18.56/20.18 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 18.56/20.18 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 18.56/20.18 INCR(active(X:S)) -> INCR(X:S) 18.56/20.18 INCR(mark(X:S)) -> INCR(X:S) 18.56/20.18 MARK(cons(X1:S,X2:S)) -> ACTIVE(cons(mark(X1:S),X2:S)) 18.56/20.18 MARK(cons(X1:S,X2:S)) -> CONS(mark(X1:S),X2:S) 18.56/20.18 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.18 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.18 MARK(incr(X:S)) -> INCR(mark(X:S)) 18.56/20.18 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.18 MARK(pair(X1:S,X2:S)) -> ACTIVE(pair(mark(X1:S),mark(X2:S))) 18.56/20.18 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.18 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.18 MARK(pair(X1:S,X2:S)) -> PAIR(mark(X1:S),mark(X2:S)) 18.56/20.18 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.18 MARK(repItems(X:S)) -> MARK(X:S) 18.56/20.18 MARK(repItems(X:S)) -> REPITEMS(mark(X:S)) 18.56/20.18 MARK(s(X:S)) -> ACTIVE(s(mark(X:S))) 18.56/20.18 MARK(s(X:S)) -> MARK(X:S) 18.56/20.18 MARK(s(X:S)) -> S(mark(X:S)) 18.56/20.18 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.18 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.18 MARK(tail(X:S)) -> TAIL(mark(X:S)) 18.56/20.18 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.18 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.18 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.18 MARK(take(X1:S,X2:S)) -> TAKE(mark(X1:S),mark(X2:S)) 18.56/20.18 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.18 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.18 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.18 MARK(zip(X1:S,X2:S)) -> ZIP(mark(X1:S),mark(X2:S)) 18.56/20.18 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.18 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.18 PAIR(active(X1:S),X2:S) -> PAIR(X1:S,X2:S) 18.56/20.18 PAIR(mark(X1:S),X2:S) -> PAIR(X1:S,X2:S) 18.56/20.18 PAIR(X1:S,active(X2:S)) -> PAIR(X1:S,X2:S) 18.56/20.18 PAIR(X1:S,mark(X2:S)) -> PAIR(X1:S,X2:S) 18.56/20.18 REPITEMS(active(X:S)) -> REPITEMS(X:S) 18.56/20.18 REPITEMS(mark(X:S)) -> REPITEMS(X:S) 18.56/20.18 S(active(X:S)) -> S(X:S) 18.56/20.18 S(mark(X:S)) -> S(X:S) 18.56/20.18 TAIL(active(X:S)) -> TAIL(X:S) 18.56/20.18 TAIL(mark(X:S)) -> TAIL(X:S) 18.56/20.18 TAKE(active(X1:S),X2:S) -> TAKE(X1:S,X2:S) 18.56/20.18 TAKE(mark(X1:S),X2:S) -> TAKE(X1:S,X2:S) 18.56/20.18 TAKE(X1:S,active(X2:S)) -> TAKE(X1:S,X2:S) 18.56/20.18 TAKE(X1:S,mark(X2:S)) -> TAKE(X1:S,X2:S) 18.56/20.18 ZIP(active(X1:S),X2:S) -> ZIP(X1:S,X2:S) 18.56/20.18 ZIP(mark(X1:S),X2:S) -> ZIP(X1:S,X2:S) 18.56/20.18 ZIP(X1:S,active(X2:S)) -> ZIP(X1:S,X2:S) 18.56/20.18 ZIP(X1:S,mark(X2:S)) -> ZIP(X1:S,X2:S) 18.56/20.18 -> Rules: 18.56/20.18 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.18 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.18 active(repItems(nil)) -> mark(nil) 18.56/20.18 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.18 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.18 active(take(0,XS:S)) -> mark(nil) 18.56/20.18 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.18 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.18 active(zip(X:S,nil)) -> mark(nil) 18.56/20.18 active(oddNs) -> mark(incr(pairNs)) 18.56/20.18 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.18 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.18 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 18.56/20.19 Problem 1: 18.56/20.19 18.56/20.19 SCC Processor: 18.56/20.19 -> Pairs: 18.56/20.19 ACTIVE(incr(cons(X:S,XS:S))) -> CONS(s(X:S),incr(XS:S)) 18.56/20.19 ACTIVE(incr(cons(X:S,XS:S))) -> INCR(XS:S) 18.56/20.19 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.19 ACTIVE(incr(cons(X:S,XS:S))) -> S(X:S) 18.56/20.19 ACTIVE(repItems(cons(X:S,XS:S))) -> CONS(X:S,cons(X:S,repItems(XS:S))) 18.56/20.19 ACTIVE(repItems(cons(X:S,XS:S))) -> CONS(X:S,repItems(XS:S)) 18.56/20.19 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 ACTIVE(repItems(cons(X:S,XS:S))) -> REPITEMS(XS:S) 18.56/20.19 ACTIVE(repItems(nil)) -> MARK(nil) 18.56/20.19 ACTIVE(tail(cons(X:S,XS:S))) -> MARK(XS:S) 18.56/20.19 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> CONS(X:S,take(N:S,XS:S)) 18.56/20.19 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.19 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> TAKE(N:S,XS:S) 18.56/20.19 ACTIVE(take(0,XS:S)) -> MARK(nil) 18.56/20.19 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> CONS(pair(X:S,Y:S),zip(XS:S,YS:S)) 18.56/20.19 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> PAIR(X:S,Y:S) 18.56/20.19 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> ZIP(XS:S,YS:S) 18.56/20.19 ACTIVE(zip(nil,XS:S)) -> MARK(nil) 18.56/20.19 ACTIVE(zip(X:S,nil)) -> MARK(nil) 18.56/20.19 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.19 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.19 CONS(active(X1:S),X2:S) -> CONS(X1:S,X2:S) 18.56/20.19 CONS(mark(X1:S),X2:S) -> CONS(X1:S,X2:S) 18.56/20.19 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 18.56/20.19 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 18.56/20.19 INCR(active(X:S)) -> INCR(X:S) 18.56/20.19 INCR(mark(X:S)) -> INCR(X:S) 18.56/20.19 MARK(cons(X1:S,X2:S)) -> ACTIVE(cons(mark(X1:S),X2:S)) 18.56/20.19 MARK(cons(X1:S,X2:S)) -> CONS(mark(X1:S),X2:S) 18.56/20.19 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.19 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.19 MARK(incr(X:S)) -> INCR(mark(X:S)) 18.56/20.19 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.19 MARK(pair(X1:S,X2:S)) -> ACTIVE(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.19 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.19 MARK(pair(X1:S,X2:S)) -> PAIR(mark(X1:S),mark(X2:S)) 18.56/20.19 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.19 MARK(repItems(X:S)) -> MARK(X:S) 18.56/20.19 MARK(repItems(X:S)) -> REPITEMS(mark(X:S)) 18.56/20.19 MARK(s(X:S)) -> ACTIVE(s(mark(X:S))) 18.56/20.19 MARK(s(X:S)) -> MARK(X:S) 18.56/20.19 MARK(s(X:S)) -> S(mark(X:S)) 18.56/20.19 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.19 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.19 MARK(tail(X:S)) -> TAIL(mark(X:S)) 18.56/20.19 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.19 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.19 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.19 MARK(take(X1:S,X2:S)) -> TAKE(mark(X1:S),mark(X2:S)) 18.56/20.19 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.19 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.19 MARK(zip(X1:S,X2:S)) -> ZIP(mark(X1:S),mark(X2:S)) 18.56/20.19 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.19 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.19 PAIR(active(X1:S),X2:S) -> PAIR(X1:S,X2:S) 18.56/20.19 PAIR(mark(X1:S),X2:S) -> PAIR(X1:S,X2:S) 18.56/20.19 PAIR(X1:S,active(X2:S)) -> PAIR(X1:S,X2:S) 18.56/20.19 PAIR(X1:S,mark(X2:S)) -> PAIR(X1:S,X2:S) 18.56/20.19 REPITEMS(active(X:S)) -> REPITEMS(X:S) 18.56/20.19 REPITEMS(mark(X:S)) -> REPITEMS(X:S) 18.56/20.19 S(active(X:S)) -> S(X:S) 18.56/20.19 S(mark(X:S)) -> S(X:S) 18.56/20.19 TAIL(active(X:S)) -> TAIL(X:S) 18.56/20.19 TAIL(mark(X:S)) -> TAIL(X:S) 18.56/20.19 TAKE(active(X1:S),X2:S) -> TAKE(X1:S,X2:S) 18.56/20.19 TAKE(mark(X1:S),X2:S) -> TAKE(X1:S,X2:S) 18.56/20.19 TAKE(X1:S,active(X2:S)) -> TAKE(X1:S,X2:S) 18.56/20.19 TAKE(X1:S,mark(X2:S)) -> TAKE(X1:S,X2:S) 18.56/20.19 ZIP(active(X1:S),X2:S) -> ZIP(X1:S,X2:S) 18.56/20.19 ZIP(mark(X1:S),X2:S) -> ZIP(X1:S,X2:S) 18.56/20.19 ZIP(X1:S,active(X2:S)) -> ZIP(X1:S,X2:S) 18.56/20.19 ZIP(X1:S,mark(X2:S)) -> ZIP(X1:S,X2:S) 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Strongly Connected Components: 18.56/20.19 ->->Cycle: 18.56/20.19 ->->-> Pairs: 18.56/20.19 ZIP(active(X1:S),X2:S) -> ZIP(X1:S,X2:S) 18.56/20.19 ZIP(mark(X1:S),X2:S) -> ZIP(X1:S,X2:S) 18.56/20.19 ZIP(X1:S,active(X2:S)) -> ZIP(X1:S,X2:S) 18.56/20.19 ZIP(X1:S,mark(X2:S)) -> ZIP(X1:S,X2:S) 18.56/20.19 ->->-> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->->Cycle: 18.56/20.19 ->->-> Pairs: 18.56/20.19 TAKE(active(X1:S),X2:S) -> TAKE(X1:S,X2:S) 18.56/20.19 TAKE(mark(X1:S),X2:S) -> TAKE(X1:S,X2:S) 18.56/20.19 TAKE(X1:S,active(X2:S)) -> TAKE(X1:S,X2:S) 18.56/20.19 TAKE(X1:S,mark(X2:S)) -> TAKE(X1:S,X2:S) 18.56/20.19 ->->-> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->->Cycle: 18.56/20.19 ->->-> Pairs: 18.56/20.19 TAIL(active(X:S)) -> TAIL(X:S) 18.56/20.19 TAIL(mark(X:S)) -> TAIL(X:S) 18.56/20.19 ->->-> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->->Cycle: 18.56/20.19 ->->-> Pairs: 18.56/20.19 S(active(X:S)) -> S(X:S) 18.56/20.19 S(mark(X:S)) -> S(X:S) 18.56/20.19 ->->-> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->->Cycle: 18.56/20.19 ->->-> Pairs: 18.56/20.19 REPITEMS(active(X:S)) -> REPITEMS(X:S) 18.56/20.19 REPITEMS(mark(X:S)) -> REPITEMS(X:S) 18.56/20.19 ->->-> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->->Cycle: 18.56/20.19 ->->-> Pairs: 18.56/20.19 PAIR(active(X1:S),X2:S) -> PAIR(X1:S,X2:S) 18.56/20.19 PAIR(mark(X1:S),X2:S) -> PAIR(X1:S,X2:S) 18.56/20.19 PAIR(X1:S,active(X2:S)) -> PAIR(X1:S,X2:S) 18.56/20.19 PAIR(X1:S,mark(X2:S)) -> PAIR(X1:S,X2:S) 18.56/20.19 ->->-> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->->Cycle: 18.56/20.19 ->->-> Pairs: 18.56/20.19 INCR(active(X:S)) -> INCR(X:S) 18.56/20.19 INCR(mark(X:S)) -> INCR(X:S) 18.56/20.19 ->->-> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->->Cycle: 18.56/20.19 ->->-> Pairs: 18.56/20.19 CONS(active(X1:S),X2:S) -> CONS(X1:S,X2:S) 18.56/20.19 CONS(mark(X1:S),X2:S) -> CONS(X1:S,X2:S) 18.56/20.19 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 18.56/20.19 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 18.56/20.19 ->->-> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->->Cycle: 18.56/20.19 ->->-> Pairs: 18.56/20.19 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.19 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 ACTIVE(tail(cons(X:S,XS:S))) -> MARK(XS:S) 18.56/20.19 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.19 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.19 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.19 MARK(cons(X1:S,X2:S)) -> ACTIVE(cons(mark(X1:S),X2:S)) 18.56/20.19 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.19 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.19 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.19 MARK(pair(X1:S,X2:S)) -> ACTIVE(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.19 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.19 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.19 MARK(repItems(X:S)) -> MARK(X:S) 18.56/20.19 MARK(s(X:S)) -> ACTIVE(s(mark(X:S))) 18.56/20.19 MARK(s(X:S)) -> MARK(X:S) 18.56/20.19 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.19 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.19 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.19 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.19 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.19 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.19 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.19 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.19 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.19 ->->-> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 18.56/20.19 18.56/20.19 The problem is decomposed in 9 subproblems. 18.56/20.19 18.56/20.19 Problem 1.1: 18.56/20.19 18.56/20.19 Subterm Processor: 18.56/20.19 -> Pairs: 18.56/20.19 ZIP(active(X1:S),X2:S) -> ZIP(X1:S,X2:S) 18.56/20.19 ZIP(mark(X1:S),X2:S) -> ZIP(X1:S,X2:S) 18.56/20.19 ZIP(X1:S,active(X2:S)) -> ZIP(X1:S,X2:S) 18.56/20.19 ZIP(X1:S,mark(X2:S)) -> ZIP(X1:S,X2:S) 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Projection: 18.56/20.19 pi(ZIP) = 1 18.56/20.19 18.56/20.19 Problem 1.1: 18.56/20.19 18.56/20.19 SCC Processor: 18.56/20.19 -> Pairs: 18.56/20.19 ZIP(X1:S,active(X2:S)) -> ZIP(X1:S,X2:S) 18.56/20.19 ZIP(X1:S,mark(X2:S)) -> ZIP(X1:S,X2:S) 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Strongly Connected Components: 18.56/20.19 ->->Cycle: 18.56/20.19 ->->-> Pairs: 18.56/20.19 ZIP(X1:S,active(X2:S)) -> ZIP(X1:S,X2:S) 18.56/20.19 ZIP(X1:S,mark(X2:S)) -> ZIP(X1:S,X2:S) 18.56/20.19 ->->-> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 18.56/20.19 Problem 1.1: 18.56/20.19 18.56/20.19 Subterm Processor: 18.56/20.19 -> Pairs: 18.56/20.19 ZIP(X1:S,active(X2:S)) -> ZIP(X1:S,X2:S) 18.56/20.19 ZIP(X1:S,mark(X2:S)) -> ZIP(X1:S,X2:S) 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Projection: 18.56/20.19 pi(ZIP) = 2 18.56/20.19 18.56/20.19 Problem 1.1: 18.56/20.19 18.56/20.19 SCC Processor: 18.56/20.19 -> Pairs: 18.56/20.19 Empty 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Strongly Connected Components: 18.56/20.19 There is no strongly connected component 18.56/20.19 18.56/20.19 The problem is finite. 18.56/20.19 18.56/20.19 Problem 1.2: 18.56/20.19 18.56/20.19 Subterm Processor: 18.56/20.19 -> Pairs: 18.56/20.19 TAKE(active(X1:S),X2:S) -> TAKE(X1:S,X2:S) 18.56/20.19 TAKE(mark(X1:S),X2:S) -> TAKE(X1:S,X2:S) 18.56/20.19 TAKE(X1:S,active(X2:S)) -> TAKE(X1:S,X2:S) 18.56/20.19 TAKE(X1:S,mark(X2:S)) -> TAKE(X1:S,X2:S) 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Projection: 18.56/20.19 pi(TAKE) = 1 18.56/20.19 18.56/20.19 Problem 1.2: 18.56/20.19 18.56/20.19 SCC Processor: 18.56/20.19 -> Pairs: 18.56/20.19 TAKE(X1:S,active(X2:S)) -> TAKE(X1:S,X2:S) 18.56/20.19 TAKE(X1:S,mark(X2:S)) -> TAKE(X1:S,X2:S) 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Strongly Connected Components: 18.56/20.19 ->->Cycle: 18.56/20.19 ->->-> Pairs: 18.56/20.19 TAKE(X1:S,active(X2:S)) -> TAKE(X1:S,X2:S) 18.56/20.19 TAKE(X1:S,mark(X2:S)) -> TAKE(X1:S,X2:S) 18.56/20.19 ->->-> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 18.56/20.19 Problem 1.2: 18.56/20.19 18.56/20.19 Subterm Processor: 18.56/20.19 -> Pairs: 18.56/20.19 TAKE(X1:S,active(X2:S)) -> TAKE(X1:S,X2:S) 18.56/20.19 TAKE(X1:S,mark(X2:S)) -> TAKE(X1:S,X2:S) 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Projection: 18.56/20.19 pi(TAKE) = 2 18.56/20.19 18.56/20.19 Problem 1.2: 18.56/20.19 18.56/20.19 SCC Processor: 18.56/20.19 -> Pairs: 18.56/20.19 Empty 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Strongly Connected Components: 18.56/20.19 There is no strongly connected component 18.56/20.19 18.56/20.19 The problem is finite. 18.56/20.19 18.56/20.19 Problem 1.3: 18.56/20.19 18.56/20.19 Subterm Processor: 18.56/20.19 -> Pairs: 18.56/20.19 TAIL(active(X:S)) -> TAIL(X:S) 18.56/20.19 TAIL(mark(X:S)) -> TAIL(X:S) 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Projection: 18.56/20.19 pi(TAIL) = 1 18.56/20.19 18.56/20.19 Problem 1.3: 18.56/20.19 18.56/20.19 SCC Processor: 18.56/20.19 -> Pairs: 18.56/20.19 Empty 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Strongly Connected Components: 18.56/20.19 There is no strongly connected component 18.56/20.19 18.56/20.19 The problem is finite. 18.56/20.19 18.56/20.19 Problem 1.4: 18.56/20.19 18.56/20.19 Subterm Processor: 18.56/20.19 -> Pairs: 18.56/20.19 S(active(X:S)) -> S(X:S) 18.56/20.19 S(mark(X:S)) -> S(X:S) 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Projection: 18.56/20.19 pi(S) = 1 18.56/20.19 18.56/20.19 Problem 1.4: 18.56/20.19 18.56/20.19 SCC Processor: 18.56/20.19 -> Pairs: 18.56/20.19 Empty 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Strongly Connected Components: 18.56/20.19 There is no strongly connected component 18.56/20.19 18.56/20.19 The problem is finite. 18.56/20.19 18.56/20.19 Problem 1.5: 18.56/20.19 18.56/20.19 Subterm Processor: 18.56/20.19 -> Pairs: 18.56/20.19 REPITEMS(active(X:S)) -> REPITEMS(X:S) 18.56/20.19 REPITEMS(mark(X:S)) -> REPITEMS(X:S) 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Projection: 18.56/20.19 pi(REPITEMS) = 1 18.56/20.19 18.56/20.19 Problem 1.5: 18.56/20.19 18.56/20.19 SCC Processor: 18.56/20.19 -> Pairs: 18.56/20.19 Empty 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Strongly Connected Components: 18.56/20.19 There is no strongly connected component 18.56/20.19 18.56/20.19 The problem is finite. 18.56/20.19 18.56/20.19 Problem 1.6: 18.56/20.19 18.56/20.19 Subterm Processor: 18.56/20.19 -> Pairs: 18.56/20.19 PAIR(active(X1:S),X2:S) -> PAIR(X1:S,X2:S) 18.56/20.19 PAIR(mark(X1:S),X2:S) -> PAIR(X1:S,X2:S) 18.56/20.19 PAIR(X1:S,active(X2:S)) -> PAIR(X1:S,X2:S) 18.56/20.19 PAIR(X1:S,mark(X2:S)) -> PAIR(X1:S,X2:S) 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Projection: 18.56/20.19 pi(PAIR) = 1 18.56/20.19 18.56/20.19 Problem 1.6: 18.56/20.19 18.56/20.19 SCC Processor: 18.56/20.19 -> Pairs: 18.56/20.19 PAIR(X1:S,active(X2:S)) -> PAIR(X1:S,X2:S) 18.56/20.19 PAIR(X1:S,mark(X2:S)) -> PAIR(X1:S,X2:S) 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Strongly Connected Components: 18.56/20.19 ->->Cycle: 18.56/20.19 ->->-> Pairs: 18.56/20.19 PAIR(X1:S,active(X2:S)) -> PAIR(X1:S,X2:S) 18.56/20.19 PAIR(X1:S,mark(X2:S)) -> PAIR(X1:S,X2:S) 18.56/20.19 ->->-> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 18.56/20.19 Problem 1.6: 18.56/20.19 18.56/20.19 Subterm Processor: 18.56/20.19 -> Pairs: 18.56/20.19 PAIR(X1:S,active(X2:S)) -> PAIR(X1:S,X2:S) 18.56/20.19 PAIR(X1:S,mark(X2:S)) -> PAIR(X1:S,X2:S) 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Projection: 18.56/20.19 pi(PAIR) = 2 18.56/20.19 18.56/20.19 Problem 1.6: 18.56/20.19 18.56/20.19 SCC Processor: 18.56/20.19 -> Pairs: 18.56/20.19 Empty 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Strongly Connected Components: 18.56/20.19 There is no strongly connected component 18.56/20.19 18.56/20.19 The problem is finite. 18.56/20.19 18.56/20.19 Problem 1.7: 18.56/20.19 18.56/20.19 Subterm Processor: 18.56/20.19 -> Pairs: 18.56/20.19 INCR(active(X:S)) -> INCR(X:S) 18.56/20.19 INCR(mark(X:S)) -> INCR(X:S) 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Projection: 18.56/20.19 pi(INCR) = 1 18.56/20.19 18.56/20.19 Problem 1.7: 18.56/20.19 18.56/20.19 SCC Processor: 18.56/20.19 -> Pairs: 18.56/20.19 Empty 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Strongly Connected Components: 18.56/20.19 There is no strongly connected component 18.56/20.19 18.56/20.19 The problem is finite. 18.56/20.19 18.56/20.19 Problem 1.8: 18.56/20.19 18.56/20.19 Subterm Processor: 18.56/20.19 -> Pairs: 18.56/20.19 CONS(active(X1:S),X2:S) -> CONS(X1:S,X2:S) 18.56/20.19 CONS(mark(X1:S),X2:S) -> CONS(X1:S,X2:S) 18.56/20.19 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 18.56/20.19 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Projection: 18.56/20.19 pi(CONS) = 1 18.56/20.19 18.56/20.19 Problem 1.8: 18.56/20.19 18.56/20.19 SCC Processor: 18.56/20.19 -> Pairs: 18.56/20.19 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 18.56/20.19 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 18.56/20.19 -> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.19 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.19 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.19 active(take(0,XS:S)) -> mark(nil) 18.56/20.19 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.19 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.19 active(zip(X:S,nil)) -> mark(nil) 18.56/20.19 active(oddNs) -> mark(incr(pairNs)) 18.56/20.19 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.19 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.19 incr(active(X:S)) -> incr(X:S) 18.56/20.19 incr(mark(X:S)) -> incr(X:S) 18.56/20.19 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.19 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.19 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.19 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.19 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.19 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.19 mark(0) -> active(0) 18.56/20.19 mark(nil) -> active(nil) 18.56/20.19 mark(oddNs) -> active(oddNs) 18.56/20.19 mark(pairNs) -> active(pairNs) 18.56/20.19 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.19 repItems(active(X:S)) -> repItems(X:S) 18.56/20.19 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.19 s(active(X:S)) -> s(X:S) 18.56/20.19 s(mark(X:S)) -> s(X:S) 18.56/20.19 tail(active(X:S)) -> tail(X:S) 18.56/20.19 tail(mark(X:S)) -> tail(X:S) 18.56/20.19 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.19 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.19 ->Strongly Connected Components: 18.56/20.19 ->->Cycle: 18.56/20.19 ->->-> Pairs: 18.56/20.19 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 18.56/20.19 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 18.56/20.19 ->->-> Rules: 18.56/20.19 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.19 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.19 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 18.56/20.20 Problem 1.8: 18.56/20.20 18.56/20.20 Subterm Processor: 18.56/20.20 -> Pairs: 18.56/20.20 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 18.56/20.20 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 18.56/20.20 -> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 ->Projection: 18.56/20.20 pi(CONS) = 2 18.56/20.20 18.56/20.20 Problem 1.8: 18.56/20.20 18.56/20.20 SCC Processor: 18.56/20.20 -> Pairs: 18.56/20.20 Empty 18.56/20.20 -> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 ->Strongly Connected Components: 18.56/20.20 There is no strongly connected component 18.56/20.20 18.56/20.20 The problem is finite. 18.56/20.20 18.56/20.20 Problem 1.9: 18.56/20.20 18.56/20.20 Reduction Pairs Processor: 18.56/20.20 -> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(tail(cons(X:S,XS:S))) -> MARK(XS:S) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> ACTIVE(cons(mark(X1:S),X2:S)) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> ACTIVE(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(repItems(X:S)) -> MARK(X:S) 18.56/20.20 MARK(s(X:S)) -> ACTIVE(s(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 -> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 -> Usable rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 ->Interpretation type: 18.56/20.20 Linear 18.56/20.20 ->Coefficients: 18.56/20.20 Natural Numbers 18.56/20.20 ->Dimension: 18.56/20.20 1 18.56/20.20 ->Bound: 18.56/20.20 2 18.56/20.20 ->Interpretation: 18.56/20.20 18.56/20.20 [active](X) = X 18.56/20.20 [cons](X1,X2) = 2.X1 + X2 18.56/20.20 [incr](X) = X 18.56/20.20 [mark](X) = X 18.56/20.20 [pair](X1,X2) = 2.X1 + 2.X2 18.56/20.20 [repItems](X) = 2.X + 2 18.56/20.20 [s](X) = X 18.56/20.20 [tail](X) = 2.X + 2 18.56/20.20 [take](X1,X2) = 2.X1 + 2.X2 + 2 18.56/20.20 [zip](X1,X2) = 2.X1 + 2.X2 + 2 18.56/20.20 [0] = 0 18.56/20.20 [fSNonEmpty] = 0 18.56/20.20 [nil] = 2 18.56/20.20 [oddNs] = 2 18.56/20.20 [pairNs] = 2 18.56/20.20 [ACTIVE](X) = 2.X + 2 18.56/20.20 [CONS](X1,X2) = 0 18.56/20.20 [INCR](X) = 0 18.56/20.20 [MARK](X) = 2.X + 2 18.56/20.20 [PAIR](X1,X2) = 0 18.56/20.20 [REPITEMS](X) = 0 18.56/20.20 [S](X) = 0 18.56/20.20 [TAIL](X) = 0 18.56/20.20 [TAKE](X1,X2) = 0 18.56/20.20 [ZIP](X1,X2) = 0 18.56/20.20 18.56/20.20 Problem 1.9: 18.56/20.20 18.56/20.20 SCC Processor: 18.56/20.20 -> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> ACTIVE(cons(mark(X1:S),X2:S)) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> ACTIVE(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(repItems(X:S)) -> MARK(X:S) 18.56/20.20 MARK(s(X:S)) -> ACTIVE(s(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 -> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 ->Strongly Connected Components: 18.56/20.20 ->->Cycle: 18.56/20.20 ->->-> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> ACTIVE(cons(mark(X1:S),X2:S)) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> ACTIVE(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(repItems(X:S)) -> MARK(X:S) 18.56/20.20 MARK(s(X:S)) -> ACTIVE(s(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 ->->-> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 18.56/20.20 Problem 1.9: 18.56/20.20 18.56/20.20 Reduction Pairs Processor: 18.56/20.20 -> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> ACTIVE(cons(mark(X1:S),X2:S)) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> ACTIVE(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(repItems(X:S)) -> MARK(X:S) 18.56/20.20 MARK(s(X:S)) -> ACTIVE(s(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 -> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 -> Usable rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 ->Interpretation type: 18.56/20.20 Linear 18.56/20.20 ->Coefficients: 18.56/20.20 Natural Numbers 18.56/20.20 ->Dimension: 18.56/20.20 1 18.56/20.20 ->Bound: 18.56/20.20 2 18.56/20.20 ->Interpretation: 18.56/20.20 18.56/20.20 [active](X) = 2 18.56/20.20 [cons](X1,X2) = 0 18.56/20.20 [incr](X) = 1 18.56/20.20 [mark](X) = 2 18.56/20.20 [pair](X1,X2) = 0 18.56/20.20 [repItems](X) = 1 18.56/20.20 [s](X) = 1 18.56/20.20 [tail](X) = 1 18.56/20.20 [take](X1,X2) = 1 18.56/20.20 [zip](X1,X2) = 1 18.56/20.20 [0] = 0 18.56/20.20 [fSNonEmpty] = 0 18.56/20.20 [nil] = 0 18.56/20.20 [oddNs] = 1 18.56/20.20 [pairNs] = 1 18.56/20.20 [ACTIVE](X) = X + 1 18.56/20.20 [CONS](X1,X2) = 0 18.56/20.20 [INCR](X) = 0 18.56/20.20 [MARK](X) = 2 18.56/20.20 [PAIR](X1,X2) = 0 18.56/20.20 [REPITEMS](X) = 0 18.56/20.20 [S](X) = 0 18.56/20.20 [TAIL](X) = 0 18.56/20.20 [TAKE](X1,X2) = 0 18.56/20.20 [ZIP](X1,X2) = 0 18.56/20.20 18.56/20.20 Problem 1.9: 18.56/20.20 18.56/20.20 SCC Processor: 18.56/20.20 -> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> ACTIVE(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(repItems(X:S)) -> MARK(X:S) 18.56/20.20 MARK(s(X:S)) -> ACTIVE(s(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 -> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 ->Strongly Connected Components: 18.56/20.20 ->->Cycle: 18.56/20.20 ->->-> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> ACTIVE(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(repItems(X:S)) -> MARK(X:S) 18.56/20.20 MARK(s(X:S)) -> ACTIVE(s(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 ->->-> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 18.56/20.20 Problem 1.9: 18.56/20.20 18.56/20.20 Reduction Pairs Processor: 18.56/20.20 -> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> ACTIVE(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(repItems(X:S)) -> MARK(X:S) 18.56/20.20 MARK(s(X:S)) -> ACTIVE(s(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 -> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 -> Usable rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 ->Interpretation type: 18.56/20.20 Linear 18.56/20.20 ->Coefficients: 18.56/20.20 Natural Numbers 18.56/20.20 ->Dimension: 18.56/20.20 1 18.56/20.20 ->Bound: 18.56/20.20 2 18.56/20.20 ->Interpretation: 18.56/20.20 18.56/20.20 [active](X) = 2.X 18.56/20.20 [cons](X1,X2) = 0 18.56/20.20 [incr](X) = 1 18.56/20.20 [mark](X) = 2 18.56/20.20 [pair](X1,X2) = 0 18.56/20.20 [repItems](X) = 1 18.56/20.20 [s](X) = 1 18.56/20.20 [tail](X) = 1 18.56/20.20 [take](X1,X2) = 1 18.56/20.20 [zip](X1,X2) = 1 18.56/20.20 [0] = 0 18.56/20.20 [fSNonEmpty] = 0 18.56/20.20 [nil] = 1 18.56/20.20 [oddNs] = 1 18.56/20.20 [pairNs] = 1 18.56/20.20 [ACTIVE](X) = 2.X 18.56/20.20 [CONS](X1,X2) = 0 18.56/20.20 [INCR](X) = 0 18.56/20.20 [MARK](X) = 2 18.56/20.20 [PAIR](X1,X2) = 0 18.56/20.20 [REPITEMS](X) = 0 18.56/20.20 [S](X) = 0 18.56/20.20 [TAIL](X) = 0 18.56/20.20 [TAKE](X1,X2) = 0 18.56/20.20 [ZIP](X1,X2) = 0 18.56/20.20 18.56/20.20 Problem 1.9: 18.56/20.20 18.56/20.20 SCC Processor: 18.56/20.20 -> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(repItems(X:S)) -> MARK(X:S) 18.56/20.20 MARK(s(X:S)) -> ACTIVE(s(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 -> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 ->Strongly Connected Components: 18.56/20.20 ->->Cycle: 18.56/20.20 ->->-> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(repItems(X:S)) -> MARK(X:S) 18.56/20.20 MARK(s(X:S)) -> ACTIVE(s(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 ->->-> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 18.56/20.20 Problem 1.9: 18.56/20.20 18.56/20.20 Reduction Pairs Processor: 18.56/20.20 -> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(repItems(X:S)) -> MARK(X:S) 18.56/20.20 MARK(s(X:S)) -> ACTIVE(s(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 -> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 -> Usable rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 ->Interpretation type: 18.56/20.20 Linear 18.56/20.20 ->Coefficients: 18.56/20.20 Natural Numbers 18.56/20.20 ->Dimension: 18.56/20.20 1 18.56/20.20 ->Bound: 18.56/20.20 2 18.56/20.20 ->Interpretation: 18.56/20.20 18.56/20.20 [active](X) = X 18.56/20.20 [cons](X1,X2) = 2.X1 + X2 18.56/20.20 [incr](X) = X 18.56/20.20 [mark](X) = X 18.56/20.20 [pair](X1,X2) = X1 + X2 18.56/20.20 [repItems](X) = 2.X + 2 18.56/20.20 [s](X) = X 18.56/20.20 [tail](X) = 2.X + 2 18.56/20.20 [take](X1,X2) = 2.X1 + 2.X2 + 2 18.56/20.20 [zip](X1,X2) = X1 + 2.X2 + 2 18.56/20.20 [0] = 0 18.56/20.20 [fSNonEmpty] = 0 18.56/20.20 [nil] = 2 18.56/20.20 [oddNs] = 2 18.56/20.20 [pairNs] = 2 18.56/20.20 [ACTIVE](X) = 2.X + 2 18.56/20.20 [CONS](X1,X2) = 0 18.56/20.20 [INCR](X) = 0 18.56/20.20 [MARK](X) = 2.X + 2 18.56/20.20 [PAIR](X1,X2) = 0 18.56/20.20 [REPITEMS](X) = 0 18.56/20.20 [S](X) = 0 18.56/20.20 [TAIL](X) = 0 18.56/20.20 [TAKE](X1,X2) = 0 18.56/20.20 [ZIP](X1,X2) = 0 18.56/20.20 18.56/20.20 Problem 1.9: 18.56/20.20 18.56/20.20 SCC Processor: 18.56/20.20 -> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> ACTIVE(s(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 -> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 ->Strongly Connected Components: 18.56/20.20 ->->Cycle: 18.56/20.20 ->->-> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> ACTIVE(s(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 ->->-> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 18.56/20.20 Problem 1.9: 18.56/20.20 18.56/20.20 Reduction Pairs Processor: 18.56/20.20 -> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> ACTIVE(s(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 -> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 -> Usable rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 ->Interpretation type: 18.56/20.20 Linear 18.56/20.20 ->Coefficients: 18.56/20.20 Natural Numbers 18.56/20.20 ->Dimension: 18.56/20.20 1 18.56/20.20 ->Bound: 18.56/20.20 2 18.56/20.20 ->Interpretation: 18.56/20.20 18.56/20.20 [active](X) = 2.X 18.56/20.20 [cons](X1,X2) = 0 18.56/20.20 [incr](X) = 1 18.56/20.20 [mark](X) = 2 18.56/20.20 [pair](X1,X2) = 1 18.56/20.20 [repItems](X) = 1 18.56/20.20 [s](X) = 0 18.56/20.20 [tail](X) = 1 18.56/20.20 [take](X1,X2) = 1 18.56/20.20 [zip](X1,X2) = 1 18.56/20.20 [0] = 0 18.56/20.20 [fSNonEmpty] = 0 18.56/20.20 [nil] = 0 18.56/20.20 [oddNs] = 1 18.56/20.20 [pairNs] = 1 18.56/20.20 [ACTIVE](X) = 2.X 18.56/20.20 [CONS](X1,X2) = 0 18.56/20.20 [INCR](X) = 0 18.56/20.20 [MARK](X) = 2 18.56/20.20 [PAIR](X1,X2) = 0 18.56/20.20 [REPITEMS](X) = 0 18.56/20.20 [S](X) = 0 18.56/20.20 [TAIL](X) = 0 18.56/20.20 [TAKE](X1,X2) = 0 18.56/20.20 [ZIP](X1,X2) = 0 18.56/20.20 18.56/20.20 Problem 1.9: 18.56/20.20 18.56/20.20 SCC Processor: 18.56/20.20 -> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 -> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 ->Strongly Connected Components: 18.56/20.20 ->->Cycle: 18.56/20.20 ->->-> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 ->->-> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 18.56/20.20 Problem 1.9: 18.56/20.20 18.56/20.20 Reduction Pairs Processor: 18.56/20.20 -> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> ACTIVE(tail(mark(X:S))) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 -> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 -> Usable rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 ->Interpretation type: 18.56/20.20 Linear 18.56/20.20 ->Coefficients: 18.56/20.20 Natural Numbers 18.56/20.20 ->Dimension: 18.56/20.20 1 18.56/20.20 ->Bound: 18.56/20.20 2 18.56/20.20 ->Interpretation: 18.56/20.20 18.56/20.20 [active](X) = 2 18.56/20.20 [cons](X1,X2) = 0 18.56/20.20 [incr](X) = 1 18.56/20.20 [mark](X) = 2 18.56/20.20 [pair](X1,X2) = 2 18.56/20.20 [repItems](X) = 1 18.56/20.20 [s](X) = 0 18.56/20.20 [tail](X) = 0 18.56/20.20 [take](X1,X2) = 1 18.56/20.20 [zip](X1,X2) = 1 18.56/20.20 [0] = 1 18.56/20.20 [fSNonEmpty] = 0 18.56/20.20 [nil] = 2 18.56/20.20 [oddNs] = 1 18.56/20.20 [pairNs] = 1 18.56/20.20 [ACTIVE](X) = 2.X 18.56/20.20 [CONS](X1,X2) = 0 18.56/20.20 [INCR](X) = 0 18.56/20.20 [MARK](X) = 2 18.56/20.20 [PAIR](X1,X2) = 0 18.56/20.20 [REPITEMS](X) = 0 18.56/20.20 [S](X) = 0 18.56/20.20 [TAIL](X) = 0 18.56/20.20 [TAKE](X1,X2) = 0 18.56/20.20 [ZIP](X1,X2) = 0 18.56/20.20 18.56/20.20 Problem 1.9: 18.56/20.20 18.56/20.20 SCC Processor: 18.56/20.20 -> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 -> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 ->Strongly Connected Components: 18.56/20.20 ->->Cycle: 18.56/20.20 ->->-> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 ->->-> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.20 mark(pairNs) -> active(pairNs) 18.56/20.20 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.20 repItems(active(X:S)) -> repItems(X:S) 18.56/20.20 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.20 s(active(X:S)) -> s(X:S) 18.56/20.20 s(mark(X:S)) -> s(X:S) 18.56/20.20 tail(active(X:S)) -> tail(X:S) 18.56/20.20 tail(mark(X:S)) -> tail(X:S) 18.56/20.20 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.20 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.20 18.56/20.20 Problem 1.9: 18.56/20.20 18.56/20.20 Reduction Pairs Processor: 18.56/20.20 -> Pairs: 18.56/20.20 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.20 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.20 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.20 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.20 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.20 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.20 MARK(s(X:S)) -> MARK(X:S) 18.56/20.20 MARK(tail(X:S)) -> MARK(X:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.20 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.20 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.20 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.20 -> Rules: 18.56/20.20 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.20 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.20 active(repItems(nil)) -> mark(nil) 18.56/20.20 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.20 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.20 active(take(0,XS:S)) -> mark(nil) 18.56/20.20 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.20 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.20 active(zip(X:S,nil)) -> mark(nil) 18.56/20.20 active(oddNs) -> mark(incr(pairNs)) 18.56/20.20 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.20 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.20 incr(active(X:S)) -> incr(X:S) 18.56/20.20 incr(mark(X:S)) -> incr(X:S) 18.56/20.20 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.20 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.20 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.20 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.20 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.20 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.20 mark(0) -> active(0) 18.56/20.20 mark(nil) -> active(nil) 18.56/20.20 mark(oddNs) -> active(oddNs) 18.56/20.21 mark(pairNs) -> active(pairNs) 18.56/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 repItems(active(X:S)) -> repItems(X:S) 18.56/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.21 s(active(X:S)) -> s(X:S) 18.56/20.21 s(mark(X:S)) -> s(X:S) 18.56/20.21 tail(active(X:S)) -> tail(X:S) 18.56/20.21 tail(mark(X:S)) -> tail(X:S) 18.56/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 -> Usable rules: 18.56/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 active(repItems(nil)) -> mark(nil) 18.56/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.21 active(take(0,XS:S)) -> mark(nil) 18.56/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.21 active(zip(X:S,nil)) -> mark(nil) 18.56/20.21 active(oddNs) -> mark(incr(pairNs)) 18.56/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 incr(active(X:S)) -> incr(X:S) 18.56/20.21 incr(mark(X:S)) -> incr(X:S) 18.56/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(0) -> active(0) 18.56/20.21 mark(nil) -> active(nil) 18.56/20.21 mark(oddNs) -> active(oddNs) 18.56/20.21 mark(pairNs) -> active(pairNs) 18.56/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 repItems(active(X:S)) -> repItems(X:S) 18.56/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.21 s(active(X:S)) -> s(X:S) 18.56/20.21 s(mark(X:S)) -> s(X:S) 18.56/20.21 tail(active(X:S)) -> tail(X:S) 18.56/20.21 tail(mark(X:S)) -> tail(X:S) 18.56/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 ->Interpretation type: 18.56/20.21 Linear 18.56/20.21 ->Coefficients: 18.56/20.21 Natural Numbers 18.56/20.21 ->Dimension: 18.56/20.21 1 18.56/20.21 ->Bound: 18.56/20.21 2 18.56/20.21 ->Interpretation: 18.56/20.21 18.56/20.21 [active](X) = X 18.56/20.21 [cons](X1,X2) = 2.X1 + X2 18.56/20.21 [incr](X) = X 18.56/20.21 [mark](X) = X 18.56/20.21 [pair](X1,X2) = 2.X1 + 2.X2 18.56/20.21 [repItems](X) = 2.X + 2 18.56/20.21 [s](X) = X 18.56/20.21 [tail](X) = 2.X + 2 18.56/20.21 [take](X1,X2) = 2.X1 + 2.X2 + 2 18.56/20.21 [zip](X1,X2) = 2.X1 + 2.X2 + 2 18.56/20.21 [0] = 0 18.56/20.21 [fSNonEmpty] = 0 18.56/20.21 [nil] = 2 18.56/20.21 [oddNs] = 2 18.56/20.21 [pairNs] = 2 18.56/20.21 [ACTIVE](X) = 2.X + 1 18.56/20.21 [CONS](X1,X2) = 0 18.56/20.21 [INCR](X) = 0 18.56/20.21 [MARK](X) = 2.X + 1 18.56/20.21 [PAIR](X1,X2) = 0 18.56/20.21 [REPITEMS](X) = 0 18.56/20.21 [S](X) = 0 18.56/20.21 [TAIL](X) = 0 18.56/20.21 [TAKE](X1,X2) = 0 18.56/20.21 [ZIP](X1,X2) = 0 18.56/20.21 18.56/20.21 Problem 1.9: 18.56/20.21 18.56/20.21 SCC Processor: 18.56/20.21 -> Pairs: 18.56/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.21 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.21 MARK(s(X:S)) -> MARK(X:S) 18.56/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.21 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.21 -> Rules: 18.56/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 active(repItems(nil)) -> mark(nil) 18.56/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.21 active(take(0,XS:S)) -> mark(nil) 18.56/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.21 active(zip(X:S,nil)) -> mark(nil) 18.56/20.21 active(oddNs) -> mark(incr(pairNs)) 18.56/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 incr(active(X:S)) -> incr(X:S) 18.56/20.21 incr(mark(X:S)) -> incr(X:S) 18.56/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(0) -> active(0) 18.56/20.21 mark(nil) -> active(nil) 18.56/20.21 mark(oddNs) -> active(oddNs) 18.56/20.21 mark(pairNs) -> active(pairNs) 18.56/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 repItems(active(X:S)) -> repItems(X:S) 18.56/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.21 s(active(X:S)) -> s(X:S) 18.56/20.21 s(mark(X:S)) -> s(X:S) 18.56/20.21 tail(active(X:S)) -> tail(X:S) 18.56/20.21 tail(mark(X:S)) -> tail(X:S) 18.56/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 ->Strongly Connected Components: 18.56/20.21 ->->Cycle: 18.56/20.21 ->->-> Pairs: 18.56/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.21 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.21 MARK(s(X:S)) -> MARK(X:S) 18.56/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.21 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.21 ->->-> Rules: 18.56/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 active(repItems(nil)) -> mark(nil) 18.56/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.21 active(take(0,XS:S)) -> mark(nil) 18.56/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.21 active(zip(X:S,nil)) -> mark(nil) 18.56/20.21 active(oddNs) -> mark(incr(pairNs)) 18.56/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 incr(active(X:S)) -> incr(X:S) 18.56/20.21 incr(mark(X:S)) -> incr(X:S) 18.56/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(0) -> active(0) 18.56/20.21 mark(nil) -> active(nil) 18.56/20.21 mark(oddNs) -> active(oddNs) 18.56/20.21 mark(pairNs) -> active(pairNs) 18.56/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 repItems(active(X:S)) -> repItems(X:S) 18.56/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.21 s(active(X:S)) -> s(X:S) 18.56/20.21 s(mark(X:S)) -> s(X:S) 18.56/20.21 tail(active(X:S)) -> tail(X:S) 18.56/20.21 tail(mark(X:S)) -> tail(X:S) 18.56/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 18.56/20.21 Problem 1.9: 18.56/20.21 18.56/20.21 Reduction Pairs Processor: 18.56/20.21 -> Pairs: 18.56/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.21 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.21 MARK(s(X:S)) -> MARK(X:S) 18.56/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.21 MARK(take(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.21 -> Rules: 18.56/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 active(repItems(nil)) -> mark(nil) 18.56/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.21 active(take(0,XS:S)) -> mark(nil) 18.56/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.21 active(zip(X:S,nil)) -> mark(nil) 18.56/20.21 active(oddNs) -> mark(incr(pairNs)) 18.56/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 incr(active(X:S)) -> incr(X:S) 18.56/20.21 incr(mark(X:S)) -> incr(X:S) 18.56/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(0) -> active(0) 18.56/20.21 mark(nil) -> active(nil) 18.56/20.21 mark(oddNs) -> active(oddNs) 18.56/20.21 mark(pairNs) -> active(pairNs) 18.56/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 repItems(active(X:S)) -> repItems(X:S) 18.56/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.21 s(active(X:S)) -> s(X:S) 18.56/20.21 s(mark(X:S)) -> s(X:S) 18.56/20.21 tail(active(X:S)) -> tail(X:S) 18.56/20.21 tail(mark(X:S)) -> tail(X:S) 18.56/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 -> Usable rules: 18.56/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 active(repItems(nil)) -> mark(nil) 18.56/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.21 active(take(0,XS:S)) -> mark(nil) 18.56/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.21 active(zip(X:S,nil)) -> mark(nil) 18.56/20.21 active(oddNs) -> mark(incr(pairNs)) 18.56/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 incr(active(X:S)) -> incr(X:S) 18.56/20.21 incr(mark(X:S)) -> incr(X:S) 18.56/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(0) -> active(0) 18.56/20.21 mark(nil) -> active(nil) 18.56/20.21 mark(oddNs) -> active(oddNs) 18.56/20.21 mark(pairNs) -> active(pairNs) 18.56/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 repItems(active(X:S)) -> repItems(X:S) 18.56/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.21 s(active(X:S)) -> s(X:S) 18.56/20.21 s(mark(X:S)) -> s(X:S) 18.56/20.21 tail(active(X:S)) -> tail(X:S) 18.56/20.21 tail(mark(X:S)) -> tail(X:S) 18.56/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 ->Interpretation type: 18.56/20.21 Linear 18.56/20.21 ->Coefficients: 18.56/20.21 Natural Numbers 18.56/20.21 ->Dimension: 18.56/20.21 1 18.56/20.21 ->Bound: 18.56/20.21 2 18.56/20.21 ->Interpretation: 18.56/20.21 18.56/20.21 [active](X) = X 18.56/20.21 [cons](X1,X2) = X1 + X2 18.56/20.21 [incr](X) = X 18.56/20.21 [mark](X) = X 18.56/20.21 [pair](X1,X2) = X1 + 2.X2 18.56/20.21 [repItems](X) = 2.X + 2 18.56/20.21 [s](X) = X 18.56/20.21 [tail](X) = X + 1 18.56/20.21 [take](X1,X2) = 2.X1 + 2.X2 + 2 18.56/20.21 [zip](X1,X2) = 2.X1 + 2.X2 + 2 18.56/20.21 [0] = 0 18.56/20.21 [fSNonEmpty] = 0 18.56/20.21 [nil] = 2 18.56/20.21 [oddNs] = 2 18.56/20.21 [pairNs] = 2 18.56/20.21 [ACTIVE](X) = 2.X + 1 18.56/20.21 [CONS](X1,X2) = 0 18.56/20.21 [INCR](X) = 0 18.56/20.21 [MARK](X) = 2.X + 1 18.56/20.21 [PAIR](X1,X2) = 0 18.56/20.21 [REPITEMS](X) = 0 18.56/20.21 [S](X) = 0 18.56/20.21 [TAIL](X) = 0 18.56/20.21 [TAKE](X1,X2) = 0 18.56/20.21 [ZIP](X1,X2) = 0 18.56/20.21 18.56/20.21 Problem 1.9: 18.56/20.21 18.56/20.21 SCC Processor: 18.56/20.21 -> Pairs: 18.56/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.21 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.21 MARK(s(X:S)) -> MARK(X:S) 18.56/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.21 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.21 -> Rules: 18.56/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 active(repItems(nil)) -> mark(nil) 18.56/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.21 active(take(0,XS:S)) -> mark(nil) 18.56/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.21 active(zip(X:S,nil)) -> mark(nil) 18.56/20.21 active(oddNs) -> mark(incr(pairNs)) 18.56/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 incr(active(X:S)) -> incr(X:S) 18.56/20.21 incr(mark(X:S)) -> incr(X:S) 18.56/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(0) -> active(0) 18.56/20.21 mark(nil) -> active(nil) 18.56/20.21 mark(oddNs) -> active(oddNs) 18.56/20.21 mark(pairNs) -> active(pairNs) 18.56/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 repItems(active(X:S)) -> repItems(X:S) 18.56/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.21 s(active(X:S)) -> s(X:S) 18.56/20.21 s(mark(X:S)) -> s(X:S) 18.56/20.21 tail(active(X:S)) -> tail(X:S) 18.56/20.21 tail(mark(X:S)) -> tail(X:S) 18.56/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 ->Strongly Connected Components: 18.56/20.21 ->->Cycle: 18.56/20.21 ->->-> Pairs: 18.56/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.21 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.21 MARK(s(X:S)) -> MARK(X:S) 18.56/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.21 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.21 ->->-> Rules: 18.56/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 active(repItems(nil)) -> mark(nil) 18.56/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.21 active(take(0,XS:S)) -> mark(nil) 18.56/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.21 active(zip(X:S,nil)) -> mark(nil) 18.56/20.21 active(oddNs) -> mark(incr(pairNs)) 18.56/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 incr(active(X:S)) -> incr(X:S) 18.56/20.21 incr(mark(X:S)) -> incr(X:S) 18.56/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(0) -> active(0) 18.56/20.21 mark(nil) -> active(nil) 18.56/20.21 mark(oddNs) -> active(oddNs) 18.56/20.21 mark(pairNs) -> active(pairNs) 18.56/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 repItems(active(X:S)) -> repItems(X:S) 18.56/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.21 s(active(X:S)) -> s(X:S) 18.56/20.21 s(mark(X:S)) -> s(X:S) 18.56/20.21 tail(active(X:S)) -> tail(X:S) 18.56/20.21 tail(mark(X:S)) -> tail(X:S) 18.56/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 18.56/20.21 Problem 1.9: 18.56/20.21 18.56/20.21 Reduction Pairs Processor: 18.56/20.21 -> Pairs: 18.56/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.21 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.21 MARK(s(X:S)) -> MARK(X:S) 18.56/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.21 MARK(take(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.21 -> Rules: 18.56/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 active(repItems(nil)) -> mark(nil) 18.56/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.21 active(take(0,XS:S)) -> mark(nil) 18.56/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.21 active(zip(X:S,nil)) -> mark(nil) 18.56/20.21 active(oddNs) -> mark(incr(pairNs)) 18.56/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 incr(active(X:S)) -> incr(X:S) 18.56/20.21 incr(mark(X:S)) -> incr(X:S) 18.56/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(0) -> active(0) 18.56/20.21 mark(nil) -> active(nil) 18.56/20.21 mark(oddNs) -> active(oddNs) 18.56/20.21 mark(pairNs) -> active(pairNs) 18.56/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 repItems(active(X:S)) -> repItems(X:S) 18.56/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.21 s(active(X:S)) -> s(X:S) 18.56/20.21 s(mark(X:S)) -> s(X:S) 18.56/20.21 tail(active(X:S)) -> tail(X:S) 18.56/20.21 tail(mark(X:S)) -> tail(X:S) 18.56/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 -> Usable rules: 18.56/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 active(repItems(nil)) -> mark(nil) 18.56/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.21 active(take(0,XS:S)) -> mark(nil) 18.56/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.21 active(zip(X:S,nil)) -> mark(nil) 18.56/20.21 active(oddNs) -> mark(incr(pairNs)) 18.56/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 incr(active(X:S)) -> incr(X:S) 18.56/20.21 incr(mark(X:S)) -> incr(X:S) 18.56/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(0) -> active(0) 18.56/20.21 mark(nil) -> active(nil) 18.56/20.21 mark(oddNs) -> active(oddNs) 18.56/20.21 mark(pairNs) -> active(pairNs) 18.56/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 repItems(active(X:S)) -> repItems(X:S) 18.56/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.21 s(active(X:S)) -> s(X:S) 18.56/20.21 s(mark(X:S)) -> s(X:S) 18.56/20.21 tail(active(X:S)) -> tail(X:S) 18.56/20.21 tail(mark(X:S)) -> tail(X:S) 18.56/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.56/20.21 ->Interpretation type: 18.56/20.21 Linear 18.56/20.21 ->Coefficients: 18.56/20.21 Natural Numbers 18.56/20.21 ->Dimension: 18.56/20.21 1 18.56/20.21 ->Bound: 18.56/20.21 2 18.56/20.21 ->Interpretation: 18.56/20.21 18.56/20.21 [active](X) = X 18.56/20.21 [cons](X1,X2) = 2.X1 + X2 18.56/20.21 [incr](X) = 2.X 18.56/20.21 [mark](X) = X 18.56/20.21 [pair](X1,X2) = 2.X1 + 2.X2 18.56/20.21 [repItems](X) = 2.X + 2 18.56/20.21 [s](X) = 2.X 18.56/20.21 [tail](X) = 2.X + 2 18.56/20.21 [take](X1,X2) = X1 + X2 + 2 18.56/20.21 [zip](X1,X2) = 2.X1 + 2.X2 + 1 18.56/20.21 [0] = 0 18.56/20.21 [fSNonEmpty] = 0 18.56/20.21 [nil] = 2 18.56/20.21 [oddNs] = 0 18.56/20.21 [pairNs] = 0 18.56/20.21 [ACTIVE](X) = 2.X + 2 18.56/20.21 [CONS](X1,X2) = 0 18.56/20.21 [INCR](X) = 0 18.56/20.21 [MARK](X) = 2.X + 2 18.56/20.21 [PAIR](X1,X2) = 0 18.56/20.21 [REPITEMS](X) = 0 18.56/20.21 [S](X) = 0 18.56/20.21 [TAIL](X) = 0 18.56/20.21 [TAKE](X1,X2) = 0 18.56/20.21 [ZIP](X1,X2) = 0 18.56/20.21 18.56/20.21 Problem 1.9: 18.56/20.21 18.56/20.21 SCC Processor: 18.56/20.21 -> Pairs: 18.56/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.56/20.21 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.56/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.56/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.56/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.56/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.56/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.56/20.21 MARK(s(X:S)) -> MARK(X:S) 18.56/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.56/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.56/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.56/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.56/20.21 -> Rules: 18.56/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.56/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.56/20.21 active(repItems(nil)) -> mark(nil) 18.56/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.56/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.56/20.21 active(take(0,XS:S)) -> mark(nil) 18.56/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.56/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.56/20.21 active(zip(X:S,nil)) -> mark(nil) 18.56/20.21 active(oddNs) -> mark(incr(pairNs)) 18.56/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.56/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.56/20.21 incr(active(X:S)) -> incr(X:S) 18.56/20.21 incr(mark(X:S)) -> incr(X:S) 18.56/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.56/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.56/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.56/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.56/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.56/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.56/20.21 mark(0) -> active(0) 18.56/20.21 mark(nil) -> active(nil) 18.56/20.21 mark(oddNs) -> active(oddNs) 18.56/20.21 mark(pairNs) -> active(pairNs) 18.56/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.56/20.21 repItems(active(X:S)) -> repItems(X:S) 18.56/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.56/20.21 s(active(X:S)) -> s(X:S) 18.56/20.21 s(mark(X:S)) -> s(X:S) 18.56/20.21 tail(active(X:S)) -> tail(X:S) 18.56/20.21 tail(mark(X:S)) -> tail(X:S) 18.56/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.56/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 ->Strongly Connected Components: 18.65/20.21 ->->Cycle: 18.65/20.21 ->->-> Pairs: 18.65/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.21 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.65/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.65/20.21 MARK(s(X:S)) -> MARK(X:S) 18.65/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.21 ->->-> Rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 18.65/20.21 Problem 1.9: 18.65/20.21 18.65/20.21 Reduction Pairs Processor: 18.65/20.21 -> Pairs: 18.65/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.21 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.65/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.65/20.21 MARK(s(X:S)) -> MARK(X:S) 18.65/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.21 -> Rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 -> Usable rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 ->Interpretation type: 18.65/20.21 Linear 18.65/20.21 ->Coefficients: 18.65/20.21 Natural Numbers 18.65/20.21 ->Dimension: 18.65/20.21 1 18.65/20.21 ->Bound: 18.65/20.21 2 18.65/20.21 ->Interpretation: 18.65/20.21 18.65/20.21 [active](X) = X 18.65/20.21 [cons](X1,X2) = X1 + X2 18.65/20.21 [incr](X) = X 18.65/20.21 [mark](X) = X 18.65/20.21 [pair](X1,X2) = 2.X1 + X2 18.65/20.21 [repItems](X) = 2.X + 2 18.65/20.21 [s](X) = X 18.65/20.21 [tail](X) = 2.X + 2 18.65/20.21 [take](X1,X2) = 2.X1 + 2.X2 + 2 18.65/20.21 [zip](X1,X2) = 2.X1 + X2 + 2 18.65/20.21 [0] = 0 18.65/20.21 [fSNonEmpty] = 0 18.65/20.21 [nil] = 2 18.65/20.21 [oddNs] = 2 18.65/20.21 [pairNs] = 2 18.65/20.21 [ACTIVE](X) = 2.X + 2 18.65/20.21 [CONS](X1,X2) = 0 18.65/20.21 [INCR](X) = 0 18.65/20.21 [MARK](X) = 2.X + 2 18.65/20.21 [PAIR](X1,X2) = 0 18.65/20.21 [REPITEMS](X) = 0 18.65/20.21 [S](X) = 0 18.65/20.21 [TAIL](X) = 0 18.65/20.21 [TAKE](X1,X2) = 0 18.65/20.21 [ZIP](X1,X2) = 0 18.65/20.21 18.65/20.21 Problem 1.9: 18.65/20.21 18.65/20.21 SCC Processor: 18.65/20.21 -> Pairs: 18.65/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.21 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.65/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.65/20.21 MARK(s(X:S)) -> MARK(X:S) 18.65/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.21 -> Rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 ->Strongly Connected Components: 18.65/20.21 ->->Cycle: 18.65/20.21 ->->-> Pairs: 18.65/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.21 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.65/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.65/20.21 MARK(s(X:S)) -> MARK(X:S) 18.65/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.21 ->->-> Rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 18.65/20.21 Problem 1.9: 18.65/20.21 18.65/20.21 Reduction Pairs Processor: 18.65/20.21 -> Pairs: 18.65/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.21 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.65/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.65/20.21 MARK(s(X:S)) -> MARK(X:S) 18.65/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.21 -> Rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 -> Usable rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 ->Interpretation type: 18.65/20.21 Linear 18.65/20.21 ->Coefficients: 18.65/20.21 Natural Numbers 18.65/20.21 ->Dimension: 18.65/20.21 1 18.65/20.21 ->Bound: 18.65/20.21 2 18.65/20.21 ->Interpretation: 18.65/20.21 18.65/20.21 [active](X) = X 18.65/20.21 [cons](X1,X2) = 2.X1 + X2 18.65/20.21 [incr](X) = X 18.65/20.21 [mark](X) = X 18.65/20.21 [pair](X1,X2) = 2.X1 + X2 18.65/20.21 [repItems](X) = 2.X + 2 18.65/20.21 [s](X) = X 18.65/20.21 [tail](X) = 2.X + 2 18.65/20.21 [take](X1,X2) = X1 + 2.X2 + 2 18.65/20.21 [zip](X1,X2) = 2.X1 + 2.X2 + 1 18.65/20.21 [0] = 0 18.65/20.21 [fSNonEmpty] = 0 18.65/20.21 [nil] = 2 18.65/20.21 [oddNs] = 2 18.65/20.21 [pairNs] = 2 18.65/20.21 [ACTIVE](X) = 2.X + 1 18.65/20.21 [CONS](X1,X2) = 0 18.65/20.21 [INCR](X) = 0 18.65/20.21 [MARK](X) = 2.X + 1 18.65/20.21 [PAIR](X1,X2) = 0 18.65/20.21 [REPITEMS](X) = 0 18.65/20.21 [S](X) = 0 18.65/20.21 [TAIL](X) = 0 18.65/20.21 [TAKE](X1,X2) = 0 18.65/20.21 [ZIP](X1,X2) = 0 18.65/20.21 18.65/20.21 Problem 1.9: 18.65/20.21 18.65/20.21 SCC Processor: 18.65/20.21 -> Pairs: 18.65/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.21 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.65/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.65/20.21 MARK(s(X:S)) -> MARK(X:S) 18.65/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.21 -> Rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 ->Strongly Connected Components: 18.65/20.21 ->->Cycle: 18.65/20.21 ->->-> Pairs: 18.65/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.21 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.65/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.65/20.21 MARK(s(X:S)) -> MARK(X:S) 18.65/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.21 ->->-> Rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 18.65/20.21 Problem 1.9: 18.65/20.21 18.65/20.21 Reduction Pairs Processor: 18.65/20.21 -> Pairs: 18.65/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.21 ACTIVE(repItems(cons(X:S,XS:S))) -> MARK(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.65/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.65/20.21 MARK(s(X:S)) -> MARK(X:S) 18.65/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.21 -> Rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 -> Usable rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 ->Interpretation type: 18.65/20.21 Linear 18.65/20.21 ->Coefficients: 18.65/20.21 All rationals 18.65/20.21 ->Dimension: 18.65/20.21 1 18.65/20.21 ->Bound: 18.65/20.21 2 18.65/20.21 ->Interpretation: 18.65/20.21 18.65/20.21 [active](X) = X 18.65/20.21 [cons](X1,X2) = 2.X1 + 1/2.X2 18.65/20.21 [incr](X) = X 18.65/20.21 [mark](X) = X 18.65/20.21 [pair](X1,X2) = X1 + X2 18.65/20.21 [repItems](X) = 2.X + 2 18.65/20.21 [s](X) = X 18.65/20.21 [tail](X) = 2.X 18.65/20.21 [take](X1,X2) = 1/2.X1 + X2 + 2 18.65/20.21 [zip](X1,X2) = 2.X1 + X2 + 1 18.65/20.21 [0] = 1/2 18.65/20.21 [fSNonEmpty] = 0 18.65/20.21 [nil] = 2 18.65/20.21 [oddNs] = 2 18.65/20.21 [pairNs] = 2 18.65/20.21 [ACTIVE](X) = 1/2.X 18.65/20.21 [CONS](X1,X2) = 0 18.65/20.21 [INCR](X) = 0 18.65/20.21 [MARK](X) = 1/2.X 18.65/20.21 [PAIR](X1,X2) = 0 18.65/20.21 [REPITEMS](X) = 0 18.65/20.21 [S](X) = 0 18.65/20.21 [TAIL](X) = 0 18.65/20.21 [TAKE](X1,X2) = 0 18.65/20.21 [ZIP](X1,X2) = 0 18.65/20.21 18.65/20.21 Problem 1.9: 18.65/20.21 18.65/20.21 SCC Processor: 18.65/20.21 -> Pairs: 18.65/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.65/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.65/20.21 MARK(s(X:S)) -> MARK(X:S) 18.65/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.21 -> Rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 ->Strongly Connected Components: 18.65/20.21 ->->Cycle: 18.65/20.21 ->->-> Pairs: 18.65/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.65/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.65/20.21 MARK(s(X:S)) -> MARK(X:S) 18.65/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.21 ->->-> Rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 18.65/20.21 Problem 1.9: 18.65/20.21 18.65/20.21 Reduction Pairs Processor: 18.65/20.21 -> Pairs: 18.65/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.65/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(repItems(X:S)) -> ACTIVE(repItems(mark(X:S))) 18.65/20.21 MARK(s(X:S)) -> MARK(X:S) 18.65/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.21 -> Rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 -> Usable rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 ->Interpretation type: 18.65/20.21 Linear 18.65/20.21 ->Coefficients: 18.65/20.21 Natural Numbers 18.65/20.21 ->Dimension: 18.65/20.21 1 18.65/20.21 ->Bound: 18.65/20.21 2 18.65/20.21 ->Interpretation: 18.65/20.21 18.65/20.21 [active](X) = X 18.65/20.21 [cons](X1,X2) = X2 18.65/20.21 [incr](X) = 2 18.65/20.21 [mark](X) = X 18.65/20.21 [pair](X1,X2) = X1 + 2 18.65/20.21 [repItems](X) = 0 18.65/20.21 [s](X) = 2 18.65/20.21 [tail](X) = X + 2 18.65/20.21 [take](X1,X2) = 2 18.65/20.21 [zip](X1,X2) = 2 18.65/20.21 [0] = 1 18.65/20.21 [fSNonEmpty] = 0 18.65/20.21 [nil] = 0 18.65/20.21 [oddNs] = 2 18.65/20.21 [pairNs] = 2 18.65/20.21 [ACTIVE](X) = X 18.65/20.21 [CONS](X1,X2) = 0 18.65/20.21 [INCR](X) = 0 18.65/20.21 [MARK](X) = 2 18.65/20.21 [PAIR](X1,X2) = 0 18.65/20.21 [REPITEMS](X) = 0 18.65/20.21 [S](X) = 0 18.65/20.21 [TAIL](X) = 0 18.65/20.21 [TAKE](X1,X2) = 0 18.65/20.21 [ZIP](X1,X2) = 0 18.65/20.21 18.65/20.21 Problem 1.9: 18.65/20.21 18.65/20.21 SCC Processor: 18.65/20.21 -> Pairs: 18.65/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.65/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(s(X:S)) -> MARK(X:S) 18.65/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.21 -> Rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 ->Strongly Connected Components: 18.65/20.21 ->->Cycle: 18.65/20.21 ->->-> Pairs: 18.65/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.65/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(s(X:S)) -> MARK(X:S) 18.65/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.21 ->->-> Rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 18.65/20.21 Problem 1.9: 18.65/20.21 18.65/20.21 Reduction Pairs Processor: 18.65/20.21 -> Pairs: 18.65/20.21 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.21 ACTIVE(take(s(N:S),cons(X:S,XS:S))) -> MARK(cons(X:S,take(N:S,XS:S))) 18.65/20.21 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.21 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.21 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.21 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.21 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.21 MARK(s(X:S)) -> MARK(X:S) 18.65/20.21 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.21 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.21 -> Rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.21 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.21 active(take(0,XS:S)) -> mark(nil) 18.65/20.21 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.21 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.21 active(zip(X:S,nil)) -> mark(nil) 18.65/20.21 active(oddNs) -> mark(incr(pairNs)) 18.65/20.21 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.21 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.21 incr(active(X:S)) -> incr(X:S) 18.65/20.21 incr(mark(X:S)) -> incr(X:S) 18.65/20.21 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.21 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.21 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.21 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.21 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.21 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.21 mark(0) -> active(0) 18.65/20.21 mark(nil) -> active(nil) 18.65/20.21 mark(oddNs) -> active(oddNs) 18.65/20.21 mark(pairNs) -> active(pairNs) 18.65/20.21 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.21 repItems(active(X:S)) -> repItems(X:S) 18.65/20.21 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.21 s(active(X:S)) -> s(X:S) 18.65/20.21 s(mark(X:S)) -> s(X:S) 18.65/20.21 tail(active(X:S)) -> tail(X:S) 18.65/20.21 tail(mark(X:S)) -> tail(X:S) 18.65/20.21 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.21 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.21 -> Usable rules: 18.65/20.21 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.21 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.21 active(repItems(nil)) -> mark(nil) 18.65/20.21 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 ->Interpretation type: 18.65/20.22 Linear 18.65/20.22 ->Coefficients: 18.65/20.22 All rationals 18.65/20.22 ->Dimension: 18.65/20.22 1 18.65/20.22 ->Bound: 18.65/20.22 2 18.65/20.22 ->Interpretation: 18.65/20.22 18.65/20.22 [active](X) = X 18.65/20.22 [cons](X1,X2) = 2.X1 + 1/2.X2 + 1/2 18.65/20.22 [incr](X) = X 18.65/20.22 [mark](X) = X 18.65/20.22 [pair](X1,X2) = X1 + X2 + 1 18.65/20.22 [repItems](X) = 2.X + 2 18.65/20.22 [s](X) = X 18.65/20.22 [tail](X) = 2.X + 1/2 18.65/20.22 [take](X1,X2) = X2 + 1 18.65/20.22 [zip](X1,X2) = X1 + 2.X2 + 2 18.65/20.22 [0] = 0 18.65/20.22 [fSNonEmpty] = 0 18.65/20.22 [nil] = 1 18.65/20.22 [oddNs] = 1 18.65/20.22 [pairNs] = 1 18.65/20.22 [ACTIVE](X) = 2.X + 1 18.65/20.22 [CONS](X1,X2) = 0 18.65/20.22 [INCR](X) = 0 18.65/20.22 [MARK](X) = 2.X + 1 18.65/20.22 [PAIR](X1,X2) = 0 18.65/20.22 [REPITEMS](X) = 0 18.65/20.22 [S](X) = 0 18.65/20.22 [TAIL](X) = 0 18.65/20.22 [TAKE](X1,X2) = 0 18.65/20.22 [ZIP](X1,X2) = 0 18.65/20.22 18.65/20.22 Problem 1.9: 18.65/20.22 18.65/20.22 SCC Processor: 18.65/20.22 -> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.22 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.22 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.22 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.22 -> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 ->Strongly Connected Components: 18.65/20.22 ->->Cycle: 18.65/20.22 ->->-> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.22 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.22 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.22 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.22 ->->-> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 18.65/20.22 Problem 1.9: 18.65/20.22 18.65/20.22 Reduction Pairs Processor: 18.65/20.22 -> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.22 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 MARK(take(X1:S,X2:S)) -> ACTIVE(take(mark(X1:S),mark(X2:S))) 18.65/20.22 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.22 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.22 -> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 -> Usable rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 ->Interpretation type: 18.65/20.22 Linear 18.65/20.22 ->Coefficients: 18.65/20.22 Natural Numbers 18.65/20.22 ->Dimension: 18.65/20.22 1 18.65/20.22 ->Bound: 18.65/20.22 2 18.65/20.22 ->Interpretation: 18.65/20.22 18.65/20.22 [active](X) = 2 18.65/20.22 [cons](X1,X2) = 1 18.65/20.22 [incr](X) = 2 18.65/20.22 [mark](X) = 2 18.65/20.22 [pair](X1,X2) = 0 18.65/20.22 [repItems](X) = 2 18.65/20.22 [s](X) = 0 18.65/20.22 [tail](X) = 2 18.65/20.22 [take](X1,X2) = 0 18.65/20.22 [zip](X1,X2) = 2 18.65/20.22 [0] = 2 18.65/20.22 [fSNonEmpty] = 0 18.65/20.22 [nil] = 2 18.65/20.22 [oddNs] = 2 18.65/20.22 [pairNs] = 2 18.65/20.22 [ACTIVE](X) = X 18.65/20.22 [CONS](X1,X2) = 0 18.65/20.22 [INCR](X) = 0 18.65/20.22 [MARK](X) = 2 18.65/20.22 [PAIR](X1,X2) = 0 18.65/20.22 [REPITEMS](X) = 0 18.65/20.22 [S](X) = 0 18.65/20.22 [TAIL](X) = 0 18.65/20.22 [TAKE](X1,X2) = 0 18.65/20.22 [ZIP](X1,X2) = 0 18.65/20.22 18.65/20.22 Problem 1.9: 18.65/20.22 18.65/20.22 SCC Processor: 18.65/20.22 -> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.22 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.22 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.22 -> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 ->Strongly Connected Components: 18.65/20.22 ->->Cycle: 18.65/20.22 ->->-> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.22 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.22 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.22 ->->-> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 18.65/20.22 Problem 1.9: 18.65/20.22 18.65/20.22 Reduction Pairs Processor: 18.65/20.22 -> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 ACTIVE(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> MARK(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.22 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.22 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.22 -> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 -> Usable rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 ->Interpretation type: 18.65/20.22 Linear 18.65/20.22 ->Coefficients: 18.65/20.22 All rationals 18.65/20.22 ->Dimension: 18.65/20.22 1 18.65/20.22 ->Bound: 18.65/20.22 2 18.65/20.22 ->Interpretation: 18.65/20.22 18.65/20.22 [active](X) = X 18.65/20.22 [cons](X1,X2) = X1 + 1/2.X2 18.65/20.22 [incr](X) = X 18.65/20.22 [mark](X) = X 18.65/20.22 [pair](X1,X2) = X1 + 2.X2 18.65/20.22 [repItems](X) = 2.X 18.65/20.22 [s](X) = X 18.65/20.22 [tail](X) = 2.X + 1 18.65/20.22 [take](X1,X2) = X1 + X2 + 2 18.65/20.22 [zip](X1,X2) = X1 + 2.X2 + 1 18.65/20.22 [0] = 0 18.65/20.22 [fSNonEmpty] = 0 18.65/20.22 [nil] = 2 18.65/20.22 [oddNs] = 2 18.65/20.22 [pairNs] = 1 18.65/20.22 [ACTIVE](X) = X 18.65/20.22 [CONS](X1,X2) = 0 18.65/20.22 [INCR](X) = 0 18.65/20.22 [MARK](X) = X 18.65/20.22 [PAIR](X1,X2) = 0 18.65/20.22 [REPITEMS](X) = 0 18.65/20.22 [S](X) = 0 18.65/20.22 [TAIL](X) = 0 18.65/20.22 [TAKE](X1,X2) = 0 18.65/20.22 [ZIP](X1,X2) = 0 18.65/20.22 18.65/20.22 Problem 1.9: 18.65/20.22 18.65/20.22 SCC Processor: 18.65/20.22 -> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.22 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.22 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.22 -> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 ->Strongly Connected Components: 18.65/20.22 ->->Cycle: 18.65/20.22 ->->-> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.22 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.22 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.22 ->->-> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 18.65/20.22 Problem 1.9: 18.65/20.22 18.65/20.22 Reduction Pairs Processor: 18.65/20.22 -> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.22 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 MARK(zip(X1:S,X2:S)) -> ACTIVE(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.22 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.22 -> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 -> Usable rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 ->Interpretation type: 18.65/20.22 Linear 18.65/20.22 ->Coefficients: 18.65/20.22 Natural Numbers 18.65/20.22 ->Dimension: 18.65/20.22 1 18.65/20.22 ->Bound: 18.65/20.22 2 18.65/20.22 ->Interpretation: 18.65/20.22 18.65/20.22 [active](X) = 1 18.65/20.22 [cons](X1,X2) = 0 18.65/20.22 [incr](X) = 1 18.65/20.22 [mark](X) = 1 18.65/20.22 [pair](X1,X2) = 0 18.65/20.22 [repItems](X) = 1 18.65/20.22 [s](X) = 2 18.65/20.22 [tail](X) = 1 18.65/20.22 [take](X1,X2) = 2 18.65/20.22 [zip](X1,X2) = 0 18.65/20.22 [0] = 2 18.65/20.22 [fSNonEmpty] = 0 18.65/20.22 [nil] = 2 18.65/20.22 [oddNs] = 1 18.65/20.22 [pairNs] = 1 18.65/20.22 [ACTIVE](X) = X + 1 18.65/20.22 [CONS](X1,X2) = 0 18.65/20.22 [INCR](X) = 0 18.65/20.22 [MARK](X) = 2 18.65/20.22 [PAIR](X1,X2) = 0 18.65/20.22 [REPITEMS](X) = 0 18.65/20.22 [S](X) = 0 18.65/20.22 [TAIL](X) = 0 18.65/20.22 [TAKE](X1,X2) = 0 18.65/20.22 [ZIP](X1,X2) = 0 18.65/20.22 18.65/20.22 Problem 1.9: 18.65/20.22 18.65/20.22 SCC Processor: 18.65/20.22 -> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.22 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.22 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.22 -> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 ->Strongly Connected Components: 18.65/20.22 ->->Cycle: 18.65/20.22 ->->-> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.22 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.22 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.22 ->->-> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 18.65/20.22 Problem 1.9: 18.65/20.22 18.65/20.22 Reduction Pairs Processor: 18.65/20.22 -> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 ACTIVE(oddNs) -> MARK(incr(pairNs)) 18.65/20.22 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.22 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.22 -> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 -> Usable rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 ->Interpretation type: 18.65/20.22 Linear 18.65/20.22 ->Coefficients: 18.65/20.22 All rationals 18.65/20.22 ->Dimension: 18.65/20.22 1 18.65/20.22 ->Bound: 18.65/20.22 2 18.65/20.22 ->Interpretation: 18.65/20.22 18.65/20.22 [active](X) = X 18.65/20.22 [cons](X1,X2) = 2.X1 + 1/2.X2 18.65/20.22 [incr](X) = X 18.65/20.22 [mark](X) = X 18.65/20.22 [pair](X1,X2) = X1 + X2 18.65/20.22 [repItems](X) = 2.X + 2 18.65/20.22 [s](X) = X 18.65/20.22 [tail](X) = 2.X + 1/2 18.65/20.22 [take](X1,X2) = 1/2.X1 + 2.X2 + 1 18.65/20.22 [zip](X1,X2) = X1 + X2 + 1/2 18.65/20.22 [0] = 0 18.65/20.22 [fSNonEmpty] = 0 18.65/20.22 [nil] = 1/2 18.65/20.22 [oddNs] = 2 18.65/20.22 [pairNs] = 1 18.65/20.22 [ACTIVE](X) = 2.X + 2 18.65/20.22 [CONS](X1,X2) = 0 18.65/20.22 [INCR](X) = 0 18.65/20.22 [MARK](X) = 2.X + 2 18.65/20.22 [PAIR](X1,X2) = 0 18.65/20.22 [REPITEMS](X) = 0 18.65/20.22 [S](X) = 0 18.65/20.22 [TAIL](X) = 0 18.65/20.22 [TAKE](X1,X2) = 0 18.65/20.22 [ZIP](X1,X2) = 0 18.65/20.22 18.65/20.22 Problem 1.9: 18.65/20.22 18.65/20.22 SCC Processor: 18.65/20.22 -> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 MARK(oddNs) -> ACTIVE(oddNs) 18.65/20.22 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.22 -> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 ->Strongly Connected Components: 18.65/20.22 ->->Cycle: 18.65/20.22 ->->-> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.22 ->->-> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 18.65/20.22 Problem 1.9: 18.65/20.22 18.65/20.22 Reduction Pairs Processor: 18.65/20.22 -> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 ACTIVE(pairNs) -> MARK(cons(0,incr(oddNs))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.22 -> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 -> Usable rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 ->Interpretation type: 18.65/20.22 Linear 18.65/20.22 ->Coefficients: 18.65/20.22 All rationals 18.65/20.22 ->Dimension: 18.65/20.22 1 18.65/20.22 ->Bound: 18.65/20.22 2 18.65/20.22 ->Interpretation: 18.65/20.22 18.65/20.22 [active](X) = X 18.65/20.22 [cons](X1,X2) = 2.X1 + 1/2.X2 18.65/20.22 [incr](X) = X 18.65/20.22 [mark](X) = X 18.65/20.22 [pair](X1,X2) = 2.X1 + 2.X2 18.65/20.22 [repItems](X) = 2.X + 1 18.65/20.22 [s](X) = X 18.65/20.22 [tail](X) = 2.X 18.65/20.22 [take](X1,X2) = 2.X1 + X2 + 2 18.65/20.22 [zip](X1,X2) = 2.X1 + 2.X2 + 1/2 18.65/20.22 [0] = 0 18.65/20.22 [fSNonEmpty] = 0 18.65/20.22 [nil] = 1/2 18.65/20.22 [oddNs] = 1/2 18.65/20.22 [pairNs] = 1/2 18.65/20.22 [ACTIVE](X) = 2.X + 2 18.65/20.22 [CONS](X1,X2) = 0 18.65/20.22 [INCR](X) = 0 18.65/20.22 [MARK](X) = 2.X + 2 18.65/20.22 [PAIR](X1,X2) = 0 18.65/20.22 [REPITEMS](X) = 0 18.65/20.22 [S](X) = 0 18.65/20.22 [TAIL](X) = 0 18.65/20.22 [TAKE](X1,X2) = 0 18.65/20.22 [ZIP](X1,X2) = 0 18.65/20.22 18.65/20.22 Problem 1.9: 18.65/20.22 18.65/20.22 SCC Processor: 18.65/20.22 -> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pairNs) -> ACTIVE(pairNs) 18.65/20.22 -> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 ->Strongly Connected Components: 18.65/20.22 ->->Cycle: 18.65/20.22 ->->-> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 ->->-> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 18.65/20.22 Problem 1.9: 18.65/20.22 18.65/20.22 Reduction Pairs Processor: 18.65/20.22 -> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 MARK(cons(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 -> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 -> Usable rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 ->Interpretation type: 18.65/20.22 Linear 18.65/20.22 ->Coefficients: 18.65/20.22 All rationals 18.65/20.22 ->Dimension: 18.65/20.22 1 18.65/20.22 ->Bound: 18.65/20.22 2 18.65/20.22 ->Interpretation: 18.65/20.22 18.65/20.22 [active](X) = X 18.65/20.22 [cons](X1,X2) = X1 + 1/2.X2 + 1/2 18.65/20.22 [incr](X) = X 18.65/20.22 [mark](X) = X 18.65/20.22 [pair](X1,X2) = X1 + X2 + 1 18.65/20.22 [repItems](X) = 2.X + 2 18.65/20.22 [s](X) = X 18.65/20.22 [tail](X) = 2.X + 2 18.65/20.22 [take](X1,X2) = 2.X1 + X2 + 1 18.65/20.22 [zip](X1,X2) = X1 + 2.X2 18.65/20.22 [0] = 0 18.65/20.22 [fSNonEmpty] = 0 18.65/20.22 [nil] = 1 18.65/20.22 [oddNs] = 1 18.65/20.22 [pairNs] = 1 18.65/20.22 [ACTIVE](X) = 1/2.X + 1 18.65/20.22 [CONS](X1,X2) = 0 18.65/20.22 [INCR](X) = 0 18.65/20.22 [MARK](X) = 1/2.X + 1 18.65/20.22 [PAIR](X1,X2) = 0 18.65/20.22 [REPITEMS](X) = 0 18.65/20.22 [S](X) = 0 18.65/20.22 [TAIL](X) = 0 18.65/20.22 [TAKE](X1,X2) = 0 18.65/20.22 [ZIP](X1,X2) = 0 18.65/20.22 18.65/20.22 Problem 1.9: 18.65/20.22 18.65/20.22 SCC Processor: 18.65/20.22 -> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 -> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 ->Strongly Connected Components: 18.65/20.22 ->->Cycle: 18.65/20.22 ->->-> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 ->->-> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 18.65/20.22 Problem 1.9: 18.65/20.22 18.65/20.22 Reduction Pairs Processor: 18.65/20.22 -> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X1:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 -> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 -> Usable rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 ->Interpretation type: 18.65/20.22 Linear 18.65/20.22 ->Coefficients: 18.65/20.22 Natural Numbers 18.65/20.22 ->Dimension: 18.65/20.22 1 18.65/20.22 ->Bound: 18.65/20.22 2 18.65/20.22 ->Interpretation: 18.65/20.22 18.65/20.22 [active](X) = X 18.65/20.22 [cons](X1,X2) = 2.X2 18.65/20.22 [incr](X) = 2.X 18.65/20.22 [mark](X) = X 18.65/20.22 [pair](X1,X2) = 2.X1 + X2 + 2 18.65/20.22 [repItems](X) = 0 18.65/20.22 [s](X) = 2.X + 2 18.65/20.22 [tail](X) = 2.X + 1 18.65/20.22 [take](X1,X2) = 2.X2 18.65/20.22 [zip](X1,X2) = 2.X1 18.65/20.22 [0] = 1 18.65/20.22 [fSNonEmpty] = 0 18.65/20.22 [nil] = 0 18.65/20.22 [oddNs] = 0 18.65/20.22 [pairNs] = 0 18.65/20.22 [ACTIVE](X) = 2.X + 2 18.65/20.22 [CONS](X1,X2) = 0 18.65/20.22 [INCR](X) = 0 18.65/20.22 [MARK](X) = 2.X + 2 18.65/20.22 [PAIR](X1,X2) = 0 18.65/20.22 [REPITEMS](X) = 0 18.65/20.22 [S](X) = 0 18.65/20.22 [TAIL](X) = 0 18.65/20.22 [TAKE](X1,X2) = 0 18.65/20.22 [ZIP](X1,X2) = 0 18.65/20.22 18.65/20.22 Problem 1.9: 18.65/20.22 18.65/20.22 SCC Processor: 18.65/20.22 -> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 -> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 ->Strongly Connected Components: 18.65/20.22 ->->Cycle: 18.65/20.22 ->->-> Pairs: 18.65/20.22 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.22 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.22 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.22 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.22 MARK(s(X:S)) -> MARK(X:S) 18.65/20.22 ->->-> Rules: 18.65/20.22 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.22 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.22 active(repItems(nil)) -> mark(nil) 18.65/20.22 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.22 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.22 active(take(0,XS:S)) -> mark(nil) 18.65/20.22 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.22 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.22 active(zip(X:S,nil)) -> mark(nil) 18.65/20.22 active(oddNs) -> mark(incr(pairNs)) 18.65/20.22 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.22 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.22 incr(active(X:S)) -> incr(X:S) 18.65/20.22 incr(mark(X:S)) -> incr(X:S) 18.65/20.22 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.22 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.22 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.22 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.22 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.22 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.22 mark(0) -> active(0) 18.65/20.22 mark(nil) -> active(nil) 18.65/20.22 mark(oddNs) -> active(oddNs) 18.65/20.22 mark(pairNs) -> active(pairNs) 18.65/20.22 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.22 repItems(active(X:S)) -> repItems(X:S) 18.65/20.22 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.22 s(active(X:S)) -> s(X:S) 18.65/20.22 s(mark(X:S)) -> s(X:S) 18.65/20.22 tail(active(X:S)) -> tail(X:S) 18.65/20.22 tail(mark(X:S)) -> tail(X:S) 18.65/20.22 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.22 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.22 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 18.65/20.23 Problem 1.9: 18.65/20.23 18.65/20.23 Reduction Pairs Processor: 18.65/20.23 -> Pairs: 18.65/20.23 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.23 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.23 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.23 MARK(pair(X1:S,X2:S)) -> MARK(X2:S) 18.65/20.23 MARK(s(X:S)) -> MARK(X:S) 18.65/20.23 -> Rules: 18.65/20.23 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.23 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.23 active(repItems(nil)) -> mark(nil) 18.65/20.23 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.23 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.23 active(take(0,XS:S)) -> mark(nil) 18.65/20.23 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.23 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.23 active(zip(X:S,nil)) -> mark(nil) 18.65/20.23 active(oddNs) -> mark(incr(pairNs)) 18.65/20.23 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.23 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 incr(active(X:S)) -> incr(X:S) 18.65/20.23 incr(mark(X:S)) -> incr(X:S) 18.65/20.23 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.23 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.23 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.23 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.23 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.23 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(0) -> active(0) 18.65/20.23 mark(nil) -> active(nil) 18.65/20.23 mark(oddNs) -> active(oddNs) 18.65/20.23 mark(pairNs) -> active(pairNs) 18.65/20.23 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 repItems(active(X:S)) -> repItems(X:S) 18.65/20.23 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.23 s(active(X:S)) -> s(X:S) 18.65/20.23 s(mark(X:S)) -> s(X:S) 18.65/20.23 tail(active(X:S)) -> tail(X:S) 18.65/20.23 tail(mark(X:S)) -> tail(X:S) 18.65/20.23 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 -> Usable rules: 18.65/20.23 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.23 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.23 active(repItems(nil)) -> mark(nil) 18.65/20.23 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.23 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.23 active(take(0,XS:S)) -> mark(nil) 18.65/20.23 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.23 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.23 active(zip(X:S,nil)) -> mark(nil) 18.65/20.23 active(oddNs) -> mark(incr(pairNs)) 18.65/20.23 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.23 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 incr(active(X:S)) -> incr(X:S) 18.65/20.23 incr(mark(X:S)) -> incr(X:S) 18.65/20.23 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.23 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.23 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.23 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.23 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.23 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(0) -> active(0) 18.65/20.23 mark(nil) -> active(nil) 18.65/20.23 mark(oddNs) -> active(oddNs) 18.65/20.23 mark(pairNs) -> active(pairNs) 18.65/20.23 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 repItems(active(X:S)) -> repItems(X:S) 18.65/20.23 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.23 s(active(X:S)) -> s(X:S) 18.65/20.23 s(mark(X:S)) -> s(X:S) 18.65/20.23 tail(active(X:S)) -> tail(X:S) 18.65/20.23 tail(mark(X:S)) -> tail(X:S) 18.65/20.23 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 ->Interpretation type: 18.65/20.23 Linear 18.65/20.23 ->Coefficients: 18.65/20.23 Natural Numbers 18.65/20.23 ->Dimension: 18.65/20.23 1 18.65/20.23 ->Bound: 18.65/20.23 2 18.65/20.23 ->Interpretation: 18.65/20.23 18.65/20.23 [active](X) = X 18.65/20.23 [cons](X1,X2) = 2.X2 18.65/20.23 [incr](X) = 2.X 18.65/20.23 [mark](X) = X 18.65/20.23 [pair](X1,X2) = X1 + 2.X2 + 2 18.65/20.23 [repItems](X) = 0 18.65/20.23 [s](X) = 2.X + 1 18.65/20.23 [tail](X) = 2.X + 2 18.65/20.23 [take](X1,X2) = 2.X1 + 2.X2 + 1 18.65/20.23 [zip](X1,X2) = 2.X1 + 2.X2 18.65/20.23 [0] = 2 18.65/20.23 [fSNonEmpty] = 0 18.65/20.23 [nil] = 0 18.65/20.23 [oddNs] = 0 18.65/20.23 [pairNs] = 0 18.65/20.23 [ACTIVE](X) = 2.X + 2 18.65/20.23 [CONS](X1,X2) = 0 18.65/20.23 [INCR](X) = 0 18.65/20.23 [MARK](X) = 2.X + 2 18.65/20.23 [PAIR](X1,X2) = 0 18.65/20.23 [REPITEMS](X) = 0 18.65/20.23 [S](X) = 0 18.65/20.23 [TAIL](X) = 0 18.65/20.23 [TAKE](X1,X2) = 0 18.65/20.23 [ZIP](X1,X2) = 0 18.65/20.23 18.65/20.23 Problem 1.9: 18.65/20.23 18.65/20.23 SCC Processor: 18.65/20.23 -> Pairs: 18.65/20.23 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.23 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.23 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.23 MARK(s(X:S)) -> MARK(X:S) 18.65/20.23 -> Rules: 18.65/20.23 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.23 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.23 active(repItems(nil)) -> mark(nil) 18.65/20.23 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.23 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.23 active(take(0,XS:S)) -> mark(nil) 18.65/20.23 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.23 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.23 active(zip(X:S,nil)) -> mark(nil) 18.65/20.23 active(oddNs) -> mark(incr(pairNs)) 18.65/20.23 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.23 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 incr(active(X:S)) -> incr(X:S) 18.65/20.23 incr(mark(X:S)) -> incr(X:S) 18.65/20.23 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.23 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.23 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.23 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.23 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.23 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(0) -> active(0) 18.65/20.23 mark(nil) -> active(nil) 18.65/20.23 mark(oddNs) -> active(oddNs) 18.65/20.23 mark(pairNs) -> active(pairNs) 18.65/20.23 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 repItems(active(X:S)) -> repItems(X:S) 18.65/20.23 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.23 s(active(X:S)) -> s(X:S) 18.65/20.23 s(mark(X:S)) -> s(X:S) 18.65/20.23 tail(active(X:S)) -> tail(X:S) 18.65/20.23 tail(mark(X:S)) -> tail(X:S) 18.65/20.23 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 ->Strongly Connected Components: 18.65/20.23 ->->Cycle: 18.65/20.23 ->->-> Pairs: 18.65/20.23 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.23 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.23 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.23 MARK(s(X:S)) -> MARK(X:S) 18.65/20.23 ->->-> Rules: 18.65/20.23 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.23 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.23 active(repItems(nil)) -> mark(nil) 18.65/20.23 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.23 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.23 active(take(0,XS:S)) -> mark(nil) 18.65/20.23 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.23 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.23 active(zip(X:S,nil)) -> mark(nil) 18.65/20.23 active(oddNs) -> mark(incr(pairNs)) 18.65/20.23 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.23 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 incr(active(X:S)) -> incr(X:S) 18.65/20.23 incr(mark(X:S)) -> incr(X:S) 18.65/20.23 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.23 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.23 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.23 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.23 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.23 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(0) -> active(0) 18.65/20.23 mark(nil) -> active(nil) 18.65/20.23 mark(oddNs) -> active(oddNs) 18.65/20.23 mark(pairNs) -> active(pairNs) 18.65/20.23 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 repItems(active(X:S)) -> repItems(X:S) 18.65/20.23 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.23 s(active(X:S)) -> s(X:S) 18.65/20.23 s(mark(X:S)) -> s(X:S) 18.65/20.23 tail(active(X:S)) -> tail(X:S) 18.65/20.23 tail(mark(X:S)) -> tail(X:S) 18.65/20.23 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 18.65/20.23 Problem 1.9: 18.65/20.23 18.65/20.23 Reduction Pairs Processor: 18.65/20.23 -> Pairs: 18.65/20.23 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.23 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.23 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.23 MARK(s(X:S)) -> MARK(X:S) 18.65/20.23 -> Rules: 18.65/20.23 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.23 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.23 active(repItems(nil)) -> mark(nil) 18.65/20.23 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.23 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.23 active(take(0,XS:S)) -> mark(nil) 18.65/20.23 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.23 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.23 active(zip(X:S,nil)) -> mark(nil) 18.65/20.23 active(oddNs) -> mark(incr(pairNs)) 18.65/20.23 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.23 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 incr(active(X:S)) -> incr(X:S) 18.65/20.23 incr(mark(X:S)) -> incr(X:S) 18.65/20.23 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.23 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.23 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.23 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.23 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.23 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(0) -> active(0) 18.65/20.23 mark(nil) -> active(nil) 18.65/20.23 mark(oddNs) -> active(oddNs) 18.65/20.23 mark(pairNs) -> active(pairNs) 18.65/20.23 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 repItems(active(X:S)) -> repItems(X:S) 18.65/20.23 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.23 s(active(X:S)) -> s(X:S) 18.65/20.23 s(mark(X:S)) -> s(X:S) 18.65/20.23 tail(active(X:S)) -> tail(X:S) 18.65/20.23 tail(mark(X:S)) -> tail(X:S) 18.65/20.23 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 -> Usable rules: 18.65/20.23 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.23 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.23 active(repItems(nil)) -> mark(nil) 18.65/20.23 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.23 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.23 active(take(0,XS:S)) -> mark(nil) 18.65/20.23 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.23 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.23 active(zip(X:S,nil)) -> mark(nil) 18.65/20.23 active(oddNs) -> mark(incr(pairNs)) 18.65/20.23 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.23 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 incr(active(X:S)) -> incr(X:S) 18.65/20.23 incr(mark(X:S)) -> incr(X:S) 18.65/20.23 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.23 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.23 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.23 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.23 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.23 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(0) -> active(0) 18.65/20.23 mark(nil) -> active(nil) 18.65/20.23 mark(oddNs) -> active(oddNs) 18.65/20.23 mark(pairNs) -> active(pairNs) 18.65/20.23 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 repItems(active(X:S)) -> repItems(X:S) 18.65/20.23 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.23 s(active(X:S)) -> s(X:S) 18.65/20.23 s(mark(X:S)) -> s(X:S) 18.65/20.23 tail(active(X:S)) -> tail(X:S) 18.65/20.23 tail(mark(X:S)) -> tail(X:S) 18.65/20.23 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 ->Interpretation type: 18.65/20.23 Linear 18.65/20.23 ->Coefficients: 18.65/20.23 Natural Numbers 18.65/20.23 ->Dimension: 18.65/20.23 1 18.65/20.23 ->Bound: 18.65/20.23 2 18.65/20.23 ->Interpretation: 18.65/20.23 18.65/20.23 [active](X) = X 18.65/20.23 [cons](X1,X2) = X2 18.65/20.23 [incr](X) = X 18.65/20.23 [mark](X) = X 18.65/20.23 [pair](X1,X2) = 2.X1 + 2 18.65/20.23 [repItems](X) = 2.X + 1 18.65/20.23 [s](X) = X + 2 18.65/20.23 [tail](X) = 2.X + 2 18.65/20.23 [take](X1,X2) = 2.X2 + 2 18.65/20.23 [zip](X1,X2) = 2.X1 + 2.X2 + 2 18.65/20.23 [0] = 1 18.65/20.23 [fSNonEmpty] = 0 18.65/20.23 [nil] = 2 18.65/20.23 [oddNs] = 2 18.65/20.23 [pairNs] = 2 18.65/20.23 [ACTIVE](X) = 2.X + 2 18.65/20.23 [CONS](X1,X2) = 0 18.65/20.23 [INCR](X) = 0 18.65/20.23 [MARK](X) = 2.X + 2 18.65/20.23 [PAIR](X1,X2) = 0 18.65/20.23 [REPITEMS](X) = 0 18.65/20.23 [S](X) = 0 18.65/20.23 [TAIL](X) = 0 18.65/20.23 [TAKE](X1,X2) = 0 18.65/20.23 [ZIP](X1,X2) = 0 18.65/20.23 18.65/20.23 Problem 1.9: 18.65/20.23 18.65/20.23 SCC Processor: 18.65/20.23 -> Pairs: 18.65/20.23 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.23 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.23 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.23 -> Rules: 18.65/20.23 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.23 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.23 active(repItems(nil)) -> mark(nil) 18.65/20.23 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.23 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.23 active(take(0,XS:S)) -> mark(nil) 18.65/20.23 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.23 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.23 active(zip(X:S,nil)) -> mark(nil) 18.65/20.23 active(oddNs) -> mark(incr(pairNs)) 18.65/20.23 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.23 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 incr(active(X:S)) -> incr(X:S) 18.65/20.23 incr(mark(X:S)) -> incr(X:S) 18.65/20.23 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.23 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.23 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.23 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.23 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.23 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(0) -> active(0) 18.65/20.23 mark(nil) -> active(nil) 18.65/20.23 mark(oddNs) -> active(oddNs) 18.65/20.23 mark(pairNs) -> active(pairNs) 18.65/20.23 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 repItems(active(X:S)) -> repItems(X:S) 18.65/20.23 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.23 s(active(X:S)) -> s(X:S) 18.65/20.23 s(mark(X:S)) -> s(X:S) 18.65/20.23 tail(active(X:S)) -> tail(X:S) 18.65/20.23 tail(mark(X:S)) -> tail(X:S) 18.65/20.23 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 ->Strongly Connected Components: 18.65/20.23 ->->Cycle: 18.65/20.23 ->->-> Pairs: 18.65/20.23 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.23 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.23 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.23 ->->-> Rules: 18.65/20.23 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.23 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.23 active(repItems(nil)) -> mark(nil) 18.65/20.23 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.23 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.23 active(take(0,XS:S)) -> mark(nil) 18.65/20.23 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.23 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.23 active(zip(X:S,nil)) -> mark(nil) 18.65/20.23 active(oddNs) -> mark(incr(pairNs)) 18.65/20.23 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.23 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 incr(active(X:S)) -> incr(X:S) 18.65/20.23 incr(mark(X:S)) -> incr(X:S) 18.65/20.23 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.23 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.23 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.23 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.23 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.23 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(0) -> active(0) 18.65/20.23 mark(nil) -> active(nil) 18.65/20.23 mark(oddNs) -> active(oddNs) 18.65/20.23 mark(pairNs) -> active(pairNs) 18.65/20.23 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 repItems(active(X:S)) -> repItems(X:S) 18.65/20.23 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.23 s(active(X:S)) -> s(X:S) 18.65/20.23 s(mark(X:S)) -> s(X:S) 18.65/20.23 tail(active(X:S)) -> tail(X:S) 18.65/20.23 tail(mark(X:S)) -> tail(X:S) 18.65/20.23 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 18.65/20.23 Problem 1.9: 18.65/20.23 18.65/20.23 Reduction Pairs Processor: 18.65/20.23 -> Pairs: 18.65/20.23 ACTIVE(incr(cons(X:S,XS:S))) -> MARK(cons(s(X:S),incr(XS:S))) 18.65/20.23 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.23 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.23 -> Rules: 18.65/20.23 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.23 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.23 active(repItems(nil)) -> mark(nil) 18.65/20.23 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.23 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.23 active(take(0,XS:S)) -> mark(nil) 18.65/20.23 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.23 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.23 active(zip(X:S,nil)) -> mark(nil) 18.65/20.23 active(oddNs) -> mark(incr(pairNs)) 18.65/20.23 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.23 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 incr(active(X:S)) -> incr(X:S) 18.65/20.23 incr(mark(X:S)) -> incr(X:S) 18.65/20.23 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.23 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.23 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.23 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.23 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.23 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(0) -> active(0) 18.65/20.23 mark(nil) -> active(nil) 18.65/20.23 mark(oddNs) -> active(oddNs) 18.65/20.23 mark(pairNs) -> active(pairNs) 18.65/20.23 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 repItems(active(X:S)) -> repItems(X:S) 18.65/20.23 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.23 s(active(X:S)) -> s(X:S) 18.65/20.23 s(mark(X:S)) -> s(X:S) 18.65/20.23 tail(active(X:S)) -> tail(X:S) 18.65/20.23 tail(mark(X:S)) -> tail(X:S) 18.65/20.23 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 -> Usable rules: 18.65/20.23 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.23 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.23 active(repItems(nil)) -> mark(nil) 18.65/20.23 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.23 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.23 active(take(0,XS:S)) -> mark(nil) 18.65/20.23 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.23 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.23 active(zip(X:S,nil)) -> mark(nil) 18.65/20.23 active(oddNs) -> mark(incr(pairNs)) 18.65/20.23 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.23 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 incr(active(X:S)) -> incr(X:S) 18.65/20.23 incr(mark(X:S)) -> incr(X:S) 18.65/20.23 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.23 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.23 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.23 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.23 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.23 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(0) -> active(0) 18.65/20.23 mark(nil) -> active(nil) 18.65/20.23 mark(oddNs) -> active(oddNs) 18.65/20.23 mark(pairNs) -> active(pairNs) 18.65/20.23 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 repItems(active(X:S)) -> repItems(X:S) 18.65/20.23 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.23 s(active(X:S)) -> s(X:S) 18.65/20.23 s(mark(X:S)) -> s(X:S) 18.65/20.23 tail(active(X:S)) -> tail(X:S) 18.65/20.23 tail(mark(X:S)) -> tail(X:S) 18.65/20.23 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 ->Interpretation type: 18.65/20.23 Linear 18.65/20.23 ->Coefficients: 18.65/20.23 All rationals 18.65/20.23 ->Dimension: 18.65/20.23 1 18.65/20.23 ->Bound: 18.65/20.23 4 18.65/20.23 ->Interpretation: 18.65/20.23 18.65/20.23 [active](X) = X 18.65/20.23 [cons](X1,X2) = 1/2.X2 + 1/3 18.65/20.23 [incr](X) = X + 1/2 18.65/20.23 [mark](X) = X 18.65/20.23 [pair](X1,X2) = 3/2.X1 + 3/2.X2 18.65/20.23 [repItems](X) = 4/3 18.65/20.23 [s](X) = 1/4.X + 1/3 18.65/20.23 [tail](X) = 4.X + 2 18.65/20.23 [take](X1,X2) = 2.X2 + 3 18.65/20.23 [zip](X1,X2) = 4.X1 + 3 18.65/20.23 [0] = 1/3 18.65/20.23 [fSNonEmpty] = 0 18.65/20.23 [nil] = 1/3 18.65/20.23 [oddNs] = 4 18.65/20.23 [pairNs] = 3 18.65/20.23 [ACTIVE](X) = 3/2.X + 4/3 18.65/20.23 [CONS](X1,X2) = 0 18.65/20.23 [INCR](X) = 0 18.65/20.23 [MARK](X) = 3/2.X + 4/3 18.65/20.23 [PAIR](X1,X2) = 0 18.65/20.23 [REPITEMS](X) = 0 18.65/20.23 [S](X) = 0 18.65/20.23 [TAIL](X) = 0 18.65/20.23 [TAKE](X1,X2) = 0 18.65/20.23 [ZIP](X1,X2) = 0 18.65/20.23 18.65/20.23 Problem 1.9: 18.65/20.23 18.65/20.23 SCC Processor: 18.65/20.23 -> Pairs: 18.65/20.23 MARK(incr(X:S)) -> ACTIVE(incr(mark(X:S))) 18.65/20.23 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.23 -> Rules: 18.65/20.23 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.23 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.23 active(repItems(nil)) -> mark(nil) 18.65/20.23 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.23 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.23 active(take(0,XS:S)) -> mark(nil) 18.65/20.23 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.23 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.23 active(zip(X:S,nil)) -> mark(nil) 18.65/20.23 active(oddNs) -> mark(incr(pairNs)) 18.65/20.23 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.23 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 incr(active(X:S)) -> incr(X:S) 18.65/20.23 incr(mark(X:S)) -> incr(X:S) 18.65/20.23 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.23 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.23 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.23 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.23 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.23 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(0) -> active(0) 18.65/20.23 mark(nil) -> active(nil) 18.65/20.23 mark(oddNs) -> active(oddNs) 18.65/20.23 mark(pairNs) -> active(pairNs) 18.65/20.23 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 repItems(active(X:S)) -> repItems(X:S) 18.65/20.23 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.23 s(active(X:S)) -> s(X:S) 18.65/20.23 s(mark(X:S)) -> s(X:S) 18.65/20.23 tail(active(X:S)) -> tail(X:S) 18.65/20.23 tail(mark(X:S)) -> tail(X:S) 18.65/20.23 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 ->Strongly Connected Components: 18.65/20.23 ->->Cycle: 18.65/20.23 ->->-> Pairs: 18.65/20.23 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.23 ->->-> Rules: 18.65/20.23 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.23 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.23 active(repItems(nil)) -> mark(nil) 18.65/20.23 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.23 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.23 active(take(0,XS:S)) -> mark(nil) 18.65/20.23 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.23 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.23 active(zip(X:S,nil)) -> mark(nil) 18.65/20.23 active(oddNs) -> mark(incr(pairNs)) 18.65/20.23 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.23 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 incr(active(X:S)) -> incr(X:S) 18.65/20.23 incr(mark(X:S)) -> incr(X:S) 18.65/20.23 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.23 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.23 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.23 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.23 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.23 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(0) -> active(0) 18.65/20.23 mark(nil) -> active(nil) 18.65/20.23 mark(oddNs) -> active(oddNs) 18.65/20.23 mark(pairNs) -> active(pairNs) 18.65/20.23 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 repItems(active(X:S)) -> repItems(X:S) 18.65/20.23 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.23 s(active(X:S)) -> s(X:S) 18.65/20.23 s(mark(X:S)) -> s(X:S) 18.65/20.23 tail(active(X:S)) -> tail(X:S) 18.65/20.23 tail(mark(X:S)) -> tail(X:S) 18.65/20.23 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 18.65/20.23 Problem 1.9: 18.65/20.23 18.65/20.23 Subterm Processor: 18.65/20.23 -> Pairs: 18.65/20.23 MARK(incr(X:S)) -> MARK(X:S) 18.65/20.23 -> Rules: 18.65/20.23 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.23 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.23 active(repItems(nil)) -> mark(nil) 18.65/20.23 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.23 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.23 active(take(0,XS:S)) -> mark(nil) 18.65/20.23 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.23 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.23 active(zip(X:S,nil)) -> mark(nil) 18.65/20.23 active(oddNs) -> mark(incr(pairNs)) 18.65/20.23 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.23 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 incr(active(X:S)) -> incr(X:S) 18.65/20.23 incr(mark(X:S)) -> incr(X:S) 18.65/20.23 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.23 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.23 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.23 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.23 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.23 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(0) -> active(0) 18.65/20.23 mark(nil) -> active(nil) 18.65/20.23 mark(oddNs) -> active(oddNs) 18.65/20.23 mark(pairNs) -> active(pairNs) 18.65/20.23 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 repItems(active(X:S)) -> repItems(X:S) 18.65/20.23 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.23 s(active(X:S)) -> s(X:S) 18.65/20.23 s(mark(X:S)) -> s(X:S) 18.65/20.23 tail(active(X:S)) -> tail(X:S) 18.65/20.23 tail(mark(X:S)) -> tail(X:S) 18.65/20.23 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 ->Projection: 18.65/20.23 pi(MARK) = 1 18.65/20.23 18.65/20.23 Problem 1.9: 18.65/20.23 18.65/20.23 SCC Processor: 18.65/20.23 -> Pairs: 18.65/20.23 Empty 18.65/20.23 -> Rules: 18.65/20.23 active(incr(cons(X:S,XS:S))) -> mark(cons(s(X:S),incr(XS:S))) 18.65/20.23 active(repItems(cons(X:S,XS:S))) -> mark(cons(X:S,cons(X:S,repItems(XS:S)))) 18.65/20.23 active(repItems(nil)) -> mark(nil) 18.65/20.23 active(tail(cons(X:S,XS:S))) -> mark(XS:S) 18.65/20.23 active(take(s(N:S),cons(X:S,XS:S))) -> mark(cons(X:S,take(N:S,XS:S))) 18.65/20.23 active(take(0,XS:S)) -> mark(nil) 18.65/20.23 active(zip(cons(X:S,XS:S),cons(Y:S,YS:S))) -> mark(cons(pair(X:S,Y:S),zip(XS:S,YS:S))) 18.65/20.23 active(zip(nil,XS:S)) -> mark(nil) 18.65/20.23 active(zip(X:S,nil)) -> mark(nil) 18.65/20.23 active(oddNs) -> mark(incr(pairNs)) 18.65/20.23 active(pairNs) -> mark(cons(0,incr(oddNs))) 18.65/20.23 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 18.65/20.23 incr(active(X:S)) -> incr(X:S) 18.65/20.23 incr(mark(X:S)) -> incr(X:S) 18.65/20.23 mark(cons(X1:S,X2:S)) -> active(cons(mark(X1:S),X2:S)) 18.65/20.23 mark(incr(X:S)) -> active(incr(mark(X:S))) 18.65/20.23 mark(pair(X1:S,X2:S)) -> active(pair(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(repItems(X:S)) -> active(repItems(mark(X:S))) 18.65/20.23 mark(s(X:S)) -> active(s(mark(X:S))) 18.65/20.23 mark(tail(X:S)) -> active(tail(mark(X:S))) 18.65/20.23 mark(take(X1:S,X2:S)) -> active(take(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(zip(X1:S,X2:S)) -> active(zip(mark(X1:S),mark(X2:S))) 18.65/20.23 mark(0) -> active(0) 18.65/20.23 mark(nil) -> active(nil) 18.65/20.23 mark(oddNs) -> active(oddNs) 18.65/20.23 mark(pairNs) -> active(pairNs) 18.65/20.23 pair(active(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(mark(X1:S),X2:S) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,active(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 pair(X1:S,mark(X2:S)) -> pair(X1:S,X2:S) 18.65/20.23 repItems(active(X:S)) -> repItems(X:S) 18.65/20.23 repItems(mark(X:S)) -> repItems(X:S) 18.65/20.23 s(active(X:S)) -> s(X:S) 18.65/20.23 s(mark(X:S)) -> s(X:S) 18.65/20.23 tail(active(X:S)) -> tail(X:S) 18.65/20.23 tail(mark(X:S)) -> tail(X:S) 18.65/20.23 take(active(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(mark(X1:S),X2:S) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,active(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 take(X1:S,mark(X2:S)) -> take(X1:S,X2:S) 18.65/20.23 zip(active(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(mark(X1:S),X2:S) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,active(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 zip(X1:S,mark(X2:S)) -> zip(X1:S,X2:S) 18.65/20.23 ->Strongly Connected Components: 18.65/20.23 There is no strongly connected component 18.65/20.23 18.65/20.23 The problem is finite. 18.65/20.23 EOF