1.15/1.17 YES 1.15/1.17 1.15/1.17 Problem 1: 1.15/1.17 1.15/1.17 (VAR v_NonEmpty:S I:S P:S V:S V1:S V2:S X:S X1:S X2:S Y:S Z:S) 1.15/1.17 (RULES 1.15/1.17 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.17 active(__(nil,X:S)) -> mark(X:S) 1.15/1.17 active(__(X:S,nil)) -> mark(X:S) 1.15/1.17 active(and(tt,X:S)) -> mark(X:S) 1.15/1.17 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.17 active(isList(nil)) -> mark(tt) 1.15/1.17 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.17 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.17 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isPal(nil)) -> mark(tt) 1.15/1.17 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.17 active(isQid(a)) -> mark(tt) 1.15/1.17 active(isQid(e)) -> mark(tt) 1.15/1.17 active(isQid(i)) -> mark(tt) 1.15/1.17 active(isQid(o)) -> mark(tt) 1.15/1.17 active(isQid(u)) -> mark(tt) 1.15/1.17 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 isList(active(X:S)) -> isList(X:S) 1.15/1.17 isList(mark(X:S)) -> isList(X:S) 1.15/1.17 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.17 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.17 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.17 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.17 isPal(active(X:S)) -> isPal(X:S) 1.15/1.17 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.17 isQid(active(X:S)) -> isQid(X:S) 1.15/1.17 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.17 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.17 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.17 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.17 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.17 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.17 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.17 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.17 mark(a) -> active(a) 1.15/1.17 mark(e) -> active(e) 1.15/1.17 mark(i) -> active(i) 1.15/1.17 mark(nil) -> active(nil) 1.15/1.17 mark(o) -> active(o) 1.15/1.17 mark(tt) -> active(tt) 1.15/1.17 mark(u) -> active(u) 1.15/1.17 ) 1.15/1.17 (STRATEGY INNERMOST) 1.15/1.17 1.15/1.17 Problem 1: 1.15/1.17 1.15/1.17 Dependency Pairs Processor: 1.15/1.17 -> Pairs: 1.15/1.17 __#(active(X1:S),X2:S) -> __#(X1:S,X2:S) 1.15/1.17 __#(mark(X1:S),X2:S) -> __#(X1:S,X2:S) 1.15/1.17 __#(X1:S,active(X2:S)) -> __#(X1:S,X2:S) 1.15/1.17 __#(X1:S,mark(X2:S)) -> __#(X1:S,X2:S) 1.15/1.17 ACTIVE(__(__(X:S,Y:S),Z:S)) -> __#(X:S,__(Y:S,Z:S)) 1.15/1.17 ACTIVE(__(__(X:S,Y:S),Z:S)) -> __#(Y:S,Z:S) 1.15/1.17 ACTIVE(__(__(X:S,Y:S),Z:S)) -> MARK(__(X:S,__(Y:S,Z:S))) 1.15/1.17 ACTIVE(__(nil,X:S)) -> MARK(X:S) 1.15/1.17 ACTIVE(__(X:S,nil)) -> MARK(X:S) 1.15/1.17 ACTIVE(and(tt,X:S)) -> MARK(X:S) 1.15/1.17 ACTIVE(isList(__(V1:S,V2:S))) -> AND(isList(V1:S),isList(V2:S)) 1.15/1.17 ACTIVE(isList(__(V1:S,V2:S))) -> ISLIST(V1:S) 1.15/1.17 ACTIVE(isList(__(V1:S,V2:S))) -> ISLIST(V2:S) 1.15/1.17 ACTIVE(isList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isList(V2:S))) 1.15/1.17 ACTIVE(isList(nil)) -> MARK(tt) 1.15/1.17 ACTIVE(isList(V:S)) -> ISNELIST(V:S) 1.15/1.17 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> AND(isList(V1:S),isNeList(V2:S)) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> AND(isNeList(V1:S),isList(V2:S)) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> ISLIST(V1:S) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> ISLIST(V2:S) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> ISNELIST(V1:S) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> ISNELIST(V2:S) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.15/1.17 ACTIVE(isNeList(V:S)) -> ISQID(V:S) 1.15/1.17 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.15/1.17 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> AND(isQid(I:S),isPal(P:S)) 1.15/1.17 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> ISPAL(P:S) 1.15/1.17 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> ISQID(I:S) 1.15/1.17 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.15/1.17 ACTIVE(isNePal(V:S)) -> ISQID(V:S) 1.15/1.17 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.15/1.17 ACTIVE(isPal(nil)) -> MARK(tt) 1.15/1.17 ACTIVE(isPal(V:S)) -> ISNEPAL(V:S) 1.15/1.17 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.15/1.17 ACTIVE(isQid(a)) -> MARK(tt) 1.15/1.17 ACTIVE(isQid(e)) -> MARK(tt) 1.15/1.17 ACTIVE(isQid(i)) -> MARK(tt) 1.15/1.17 ACTIVE(isQid(o)) -> MARK(tt) 1.15/1.17 ACTIVE(isQid(u)) -> MARK(tt) 1.15/1.17 AND(active(X1:S),X2:S) -> AND(X1:S,X2:S) 1.15/1.17 AND(mark(X1:S),X2:S) -> AND(X1:S,X2:S) 1.15/1.17 AND(X1:S,active(X2:S)) -> AND(X1:S,X2:S) 1.15/1.17 AND(X1:S,mark(X2:S)) -> AND(X1:S,X2:S) 1.15/1.17 ISLIST(active(X:S)) -> ISLIST(X:S) 1.15/1.17 ISLIST(mark(X:S)) -> ISLIST(X:S) 1.15/1.17 ISNELIST(active(X:S)) -> ISNELIST(X:S) 1.15/1.17 ISNELIST(mark(X:S)) -> ISNELIST(X:S) 1.15/1.17 ISNEPAL(active(X:S)) -> ISNEPAL(X:S) 1.15/1.17 ISNEPAL(mark(X:S)) -> ISNEPAL(X:S) 1.15/1.17 ISPAL(active(X:S)) -> ISPAL(X:S) 1.15/1.17 ISPAL(mark(X:S)) -> ISPAL(X:S) 1.15/1.17 ISQID(active(X:S)) -> ISQID(X:S) 1.15/1.17 ISQID(mark(X:S)) -> ISQID(X:S) 1.15/1.17 MARK(__(X1:S,X2:S)) -> __#(mark(X1:S),mark(X2:S)) 1.15/1.17 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.15/1.17 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.17 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.15/1.17 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.15/1.17 MARK(and(X1:S,X2:S)) -> AND(mark(X1:S),X2:S) 1.15/1.17 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.17 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.15/1.17 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.15/1.17 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.15/1.17 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.15/1.17 MARK(isQid(X:S)) -> ACTIVE(isQid(X:S)) 1.15/1.17 -> Rules: 1.15/1.17 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.17 active(__(nil,X:S)) -> mark(X:S) 1.15/1.17 active(__(X:S,nil)) -> mark(X:S) 1.15/1.17 active(and(tt,X:S)) -> mark(X:S) 1.15/1.17 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.17 active(isList(nil)) -> mark(tt) 1.15/1.17 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.17 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.17 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isPal(nil)) -> mark(tt) 1.15/1.17 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.17 active(isQid(a)) -> mark(tt) 1.15/1.17 active(isQid(e)) -> mark(tt) 1.15/1.17 active(isQid(i)) -> mark(tt) 1.15/1.17 active(isQid(o)) -> mark(tt) 1.15/1.17 active(isQid(u)) -> mark(tt) 1.15/1.17 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 isList(active(X:S)) -> isList(X:S) 1.15/1.17 isList(mark(X:S)) -> isList(X:S) 1.15/1.17 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.17 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.17 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.17 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.17 isPal(active(X:S)) -> isPal(X:S) 1.15/1.17 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.17 isQid(active(X:S)) -> isQid(X:S) 1.15/1.17 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.17 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.17 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.17 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.17 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.17 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.17 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.17 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.17 mark(a) -> active(a) 1.15/1.17 mark(e) -> active(e) 1.15/1.17 mark(i) -> active(i) 1.15/1.17 mark(nil) -> active(nil) 1.15/1.17 mark(o) -> active(o) 1.15/1.17 mark(tt) -> active(tt) 1.15/1.17 mark(u) -> active(u) 1.15/1.17 1.15/1.17 Problem 1: 1.15/1.17 1.15/1.17 SCC Processor: 1.15/1.17 -> Pairs: 1.15/1.17 __#(active(X1:S),X2:S) -> __#(X1:S,X2:S) 1.15/1.17 __#(mark(X1:S),X2:S) -> __#(X1:S,X2:S) 1.15/1.17 __#(X1:S,active(X2:S)) -> __#(X1:S,X2:S) 1.15/1.17 __#(X1:S,mark(X2:S)) -> __#(X1:S,X2:S) 1.15/1.17 ACTIVE(__(__(X:S,Y:S),Z:S)) -> __#(X:S,__(Y:S,Z:S)) 1.15/1.17 ACTIVE(__(__(X:S,Y:S),Z:S)) -> __#(Y:S,Z:S) 1.15/1.17 ACTIVE(__(__(X:S,Y:S),Z:S)) -> MARK(__(X:S,__(Y:S,Z:S))) 1.15/1.17 ACTIVE(__(nil,X:S)) -> MARK(X:S) 1.15/1.17 ACTIVE(__(X:S,nil)) -> MARK(X:S) 1.15/1.17 ACTIVE(and(tt,X:S)) -> MARK(X:S) 1.15/1.17 ACTIVE(isList(__(V1:S,V2:S))) -> AND(isList(V1:S),isList(V2:S)) 1.15/1.17 ACTIVE(isList(__(V1:S,V2:S))) -> ISLIST(V1:S) 1.15/1.17 ACTIVE(isList(__(V1:S,V2:S))) -> ISLIST(V2:S) 1.15/1.17 ACTIVE(isList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isList(V2:S))) 1.15/1.17 ACTIVE(isList(nil)) -> MARK(tt) 1.15/1.17 ACTIVE(isList(V:S)) -> ISNELIST(V:S) 1.15/1.17 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> AND(isList(V1:S),isNeList(V2:S)) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> AND(isNeList(V1:S),isList(V2:S)) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> ISLIST(V1:S) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> ISLIST(V2:S) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> ISNELIST(V1:S) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> ISNELIST(V2:S) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.15/1.17 ACTIVE(isNeList(V:S)) -> ISQID(V:S) 1.15/1.17 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.15/1.17 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> AND(isQid(I:S),isPal(P:S)) 1.15/1.17 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> ISPAL(P:S) 1.15/1.17 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> ISQID(I:S) 1.15/1.17 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.15/1.17 ACTIVE(isNePal(V:S)) -> ISQID(V:S) 1.15/1.17 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.15/1.17 ACTIVE(isPal(nil)) -> MARK(tt) 1.15/1.17 ACTIVE(isPal(V:S)) -> ISNEPAL(V:S) 1.15/1.17 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.15/1.17 ACTIVE(isQid(a)) -> MARK(tt) 1.15/1.17 ACTIVE(isQid(e)) -> MARK(tt) 1.15/1.17 ACTIVE(isQid(i)) -> MARK(tt) 1.15/1.17 ACTIVE(isQid(o)) -> MARK(tt) 1.15/1.17 ACTIVE(isQid(u)) -> MARK(tt) 1.15/1.17 AND(active(X1:S),X2:S) -> AND(X1:S,X2:S) 1.15/1.17 AND(mark(X1:S),X2:S) -> AND(X1:S,X2:S) 1.15/1.17 AND(X1:S,active(X2:S)) -> AND(X1:S,X2:S) 1.15/1.17 AND(X1:S,mark(X2:S)) -> AND(X1:S,X2:S) 1.15/1.17 ISLIST(active(X:S)) -> ISLIST(X:S) 1.15/1.17 ISLIST(mark(X:S)) -> ISLIST(X:S) 1.15/1.17 ISNELIST(active(X:S)) -> ISNELIST(X:S) 1.15/1.17 ISNELIST(mark(X:S)) -> ISNELIST(X:S) 1.15/1.17 ISNEPAL(active(X:S)) -> ISNEPAL(X:S) 1.15/1.17 ISNEPAL(mark(X:S)) -> ISNEPAL(X:S) 1.15/1.17 ISPAL(active(X:S)) -> ISPAL(X:S) 1.15/1.17 ISPAL(mark(X:S)) -> ISPAL(X:S) 1.15/1.17 ISQID(active(X:S)) -> ISQID(X:S) 1.15/1.17 ISQID(mark(X:S)) -> ISQID(X:S) 1.15/1.17 MARK(__(X1:S,X2:S)) -> __#(mark(X1:S),mark(X2:S)) 1.15/1.17 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.15/1.17 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.17 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.15/1.17 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.15/1.17 MARK(and(X1:S,X2:S)) -> AND(mark(X1:S),X2:S) 1.15/1.17 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.17 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.15/1.17 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.15/1.17 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.15/1.17 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.15/1.17 MARK(isQid(X:S)) -> ACTIVE(isQid(X:S)) 1.15/1.17 -> Rules: 1.15/1.17 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.17 active(__(nil,X:S)) -> mark(X:S) 1.15/1.17 active(__(X:S,nil)) -> mark(X:S) 1.15/1.17 active(and(tt,X:S)) -> mark(X:S) 1.15/1.17 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.17 active(isList(nil)) -> mark(tt) 1.15/1.17 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.17 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.17 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isPal(nil)) -> mark(tt) 1.15/1.17 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.17 active(isQid(a)) -> mark(tt) 1.15/1.17 active(isQid(e)) -> mark(tt) 1.15/1.17 active(isQid(i)) -> mark(tt) 1.15/1.17 active(isQid(o)) -> mark(tt) 1.15/1.17 active(isQid(u)) -> mark(tt) 1.15/1.17 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 isList(active(X:S)) -> isList(X:S) 1.15/1.17 isList(mark(X:S)) -> isList(X:S) 1.15/1.17 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.17 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.17 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.17 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.17 isPal(active(X:S)) -> isPal(X:S) 1.15/1.17 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.17 isQid(active(X:S)) -> isQid(X:S) 1.15/1.17 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.17 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.17 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.17 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.17 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.17 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.17 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.17 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.17 mark(a) -> active(a) 1.15/1.17 mark(e) -> active(e) 1.15/1.17 mark(i) -> active(i) 1.15/1.17 mark(nil) -> active(nil) 1.15/1.17 mark(o) -> active(o) 1.15/1.17 mark(tt) -> active(tt) 1.15/1.17 mark(u) -> active(u) 1.15/1.17 ->Strongly Connected Components: 1.15/1.17 ->->Cycle: 1.15/1.17 ->->-> Pairs: 1.15/1.17 ISQID(active(X:S)) -> ISQID(X:S) 1.15/1.17 ISQID(mark(X:S)) -> ISQID(X:S) 1.15/1.17 ->->-> Rules: 1.15/1.17 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.17 active(__(nil,X:S)) -> mark(X:S) 1.15/1.17 active(__(X:S,nil)) -> mark(X:S) 1.15/1.17 active(and(tt,X:S)) -> mark(X:S) 1.15/1.17 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.17 active(isList(nil)) -> mark(tt) 1.15/1.17 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.17 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.17 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isPal(nil)) -> mark(tt) 1.15/1.17 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.17 active(isQid(a)) -> mark(tt) 1.15/1.17 active(isQid(e)) -> mark(tt) 1.15/1.17 active(isQid(i)) -> mark(tt) 1.15/1.17 active(isQid(o)) -> mark(tt) 1.15/1.17 active(isQid(u)) -> mark(tt) 1.15/1.17 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 isList(active(X:S)) -> isList(X:S) 1.15/1.17 isList(mark(X:S)) -> isList(X:S) 1.15/1.17 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.17 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.17 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.17 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.17 isPal(active(X:S)) -> isPal(X:S) 1.15/1.17 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.17 isQid(active(X:S)) -> isQid(X:S) 1.15/1.17 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.17 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.17 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.17 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.17 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.17 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.17 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.17 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.17 mark(a) -> active(a) 1.15/1.17 mark(e) -> active(e) 1.15/1.17 mark(i) -> active(i) 1.15/1.17 mark(nil) -> active(nil) 1.15/1.17 mark(o) -> active(o) 1.15/1.17 mark(tt) -> active(tt) 1.15/1.17 mark(u) -> active(u) 1.15/1.17 ->->Cycle: 1.15/1.17 ->->-> Pairs: 1.15/1.17 ISPAL(active(X:S)) -> ISPAL(X:S) 1.15/1.17 ISPAL(mark(X:S)) -> ISPAL(X:S) 1.15/1.17 ->->-> Rules: 1.15/1.17 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.17 active(__(nil,X:S)) -> mark(X:S) 1.15/1.17 active(__(X:S,nil)) -> mark(X:S) 1.15/1.17 active(and(tt,X:S)) -> mark(X:S) 1.15/1.17 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.17 active(isList(nil)) -> mark(tt) 1.15/1.17 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.17 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.17 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isPal(nil)) -> mark(tt) 1.15/1.17 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.17 active(isQid(a)) -> mark(tt) 1.15/1.17 active(isQid(e)) -> mark(tt) 1.15/1.17 active(isQid(i)) -> mark(tt) 1.15/1.17 active(isQid(o)) -> mark(tt) 1.15/1.17 active(isQid(u)) -> mark(tt) 1.15/1.17 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 isList(active(X:S)) -> isList(X:S) 1.15/1.17 isList(mark(X:S)) -> isList(X:S) 1.15/1.17 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.17 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.17 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.17 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.17 isPal(active(X:S)) -> isPal(X:S) 1.15/1.17 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.17 isQid(active(X:S)) -> isQid(X:S) 1.15/1.17 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.17 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.17 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.17 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.17 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.17 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.17 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.17 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.17 mark(a) -> active(a) 1.15/1.17 mark(e) -> active(e) 1.15/1.17 mark(i) -> active(i) 1.15/1.17 mark(nil) -> active(nil) 1.15/1.17 mark(o) -> active(o) 1.15/1.17 mark(tt) -> active(tt) 1.15/1.17 mark(u) -> active(u) 1.15/1.17 ->->Cycle: 1.15/1.17 ->->-> Pairs: 1.15/1.17 ISNEPAL(active(X:S)) -> ISNEPAL(X:S) 1.15/1.17 ISNEPAL(mark(X:S)) -> ISNEPAL(X:S) 1.15/1.17 ->->-> Rules: 1.15/1.17 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.17 active(__(nil,X:S)) -> mark(X:S) 1.15/1.17 active(__(X:S,nil)) -> mark(X:S) 1.15/1.17 active(and(tt,X:S)) -> mark(X:S) 1.15/1.17 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.17 active(isList(nil)) -> mark(tt) 1.15/1.17 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.17 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.17 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isPal(nil)) -> mark(tt) 1.15/1.17 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.17 active(isQid(a)) -> mark(tt) 1.15/1.17 active(isQid(e)) -> mark(tt) 1.15/1.17 active(isQid(i)) -> mark(tt) 1.15/1.17 active(isQid(o)) -> mark(tt) 1.15/1.17 active(isQid(u)) -> mark(tt) 1.15/1.17 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 isList(active(X:S)) -> isList(X:S) 1.15/1.17 isList(mark(X:S)) -> isList(X:S) 1.15/1.17 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.17 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.17 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.17 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.17 isPal(active(X:S)) -> isPal(X:S) 1.15/1.17 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.17 isQid(active(X:S)) -> isQid(X:S) 1.15/1.17 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.17 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.17 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.17 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.17 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.17 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.17 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.17 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.17 mark(a) -> active(a) 1.15/1.17 mark(e) -> active(e) 1.15/1.17 mark(i) -> active(i) 1.15/1.17 mark(nil) -> active(nil) 1.15/1.17 mark(o) -> active(o) 1.15/1.17 mark(tt) -> active(tt) 1.15/1.17 mark(u) -> active(u) 1.15/1.17 ->->Cycle: 1.15/1.17 ->->-> Pairs: 1.15/1.17 ISNELIST(active(X:S)) -> ISNELIST(X:S) 1.15/1.17 ISNELIST(mark(X:S)) -> ISNELIST(X:S) 1.15/1.17 ->->-> Rules: 1.15/1.17 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.17 active(__(nil,X:S)) -> mark(X:S) 1.15/1.17 active(__(X:S,nil)) -> mark(X:S) 1.15/1.17 active(and(tt,X:S)) -> mark(X:S) 1.15/1.17 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.17 active(isList(nil)) -> mark(tt) 1.15/1.17 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.17 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.17 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isPal(nil)) -> mark(tt) 1.15/1.17 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.17 active(isQid(a)) -> mark(tt) 1.15/1.17 active(isQid(e)) -> mark(tt) 1.15/1.17 active(isQid(i)) -> mark(tt) 1.15/1.17 active(isQid(o)) -> mark(tt) 1.15/1.17 active(isQid(u)) -> mark(tt) 1.15/1.17 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 isList(active(X:S)) -> isList(X:S) 1.15/1.17 isList(mark(X:S)) -> isList(X:S) 1.15/1.17 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.17 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.17 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.17 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.17 isPal(active(X:S)) -> isPal(X:S) 1.15/1.17 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.17 isQid(active(X:S)) -> isQid(X:S) 1.15/1.17 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.17 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.17 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.17 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.17 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.17 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.17 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.17 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.17 mark(a) -> active(a) 1.15/1.17 mark(e) -> active(e) 1.15/1.17 mark(i) -> active(i) 1.15/1.17 mark(nil) -> active(nil) 1.15/1.17 mark(o) -> active(o) 1.15/1.17 mark(tt) -> active(tt) 1.15/1.17 mark(u) -> active(u) 1.15/1.17 ->->Cycle: 1.15/1.17 ->->-> Pairs: 1.15/1.17 ISLIST(active(X:S)) -> ISLIST(X:S) 1.15/1.17 ISLIST(mark(X:S)) -> ISLIST(X:S) 1.15/1.17 ->->-> Rules: 1.15/1.17 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.17 active(__(nil,X:S)) -> mark(X:S) 1.15/1.17 active(__(X:S,nil)) -> mark(X:S) 1.15/1.17 active(and(tt,X:S)) -> mark(X:S) 1.15/1.17 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.17 active(isList(nil)) -> mark(tt) 1.15/1.17 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.17 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.17 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isPal(nil)) -> mark(tt) 1.15/1.17 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.17 active(isQid(a)) -> mark(tt) 1.15/1.17 active(isQid(e)) -> mark(tt) 1.15/1.17 active(isQid(i)) -> mark(tt) 1.15/1.17 active(isQid(o)) -> mark(tt) 1.15/1.17 active(isQid(u)) -> mark(tt) 1.15/1.17 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 isList(active(X:S)) -> isList(X:S) 1.15/1.17 isList(mark(X:S)) -> isList(X:S) 1.15/1.17 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.17 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.17 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.17 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.17 isPal(active(X:S)) -> isPal(X:S) 1.15/1.17 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.17 isQid(active(X:S)) -> isQid(X:S) 1.15/1.17 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.17 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.17 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.17 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.17 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.17 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.17 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.17 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.17 mark(a) -> active(a) 1.15/1.17 mark(e) -> active(e) 1.15/1.17 mark(i) -> active(i) 1.15/1.17 mark(nil) -> active(nil) 1.15/1.17 mark(o) -> active(o) 1.15/1.17 mark(tt) -> active(tt) 1.15/1.17 mark(u) -> active(u) 1.15/1.17 ->->Cycle: 1.15/1.17 ->->-> Pairs: 1.15/1.17 AND(active(X1:S),X2:S) -> AND(X1:S,X2:S) 1.15/1.17 AND(mark(X1:S),X2:S) -> AND(X1:S,X2:S) 1.15/1.17 AND(X1:S,active(X2:S)) -> AND(X1:S,X2:S) 1.15/1.17 AND(X1:S,mark(X2:S)) -> AND(X1:S,X2:S) 1.15/1.17 ->->-> Rules: 1.15/1.17 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.17 active(__(nil,X:S)) -> mark(X:S) 1.15/1.17 active(__(X:S,nil)) -> mark(X:S) 1.15/1.17 active(and(tt,X:S)) -> mark(X:S) 1.15/1.17 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.17 active(isList(nil)) -> mark(tt) 1.15/1.17 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.17 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.17 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isPal(nil)) -> mark(tt) 1.15/1.17 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.17 active(isQid(a)) -> mark(tt) 1.15/1.17 active(isQid(e)) -> mark(tt) 1.15/1.17 active(isQid(i)) -> mark(tt) 1.15/1.17 active(isQid(o)) -> mark(tt) 1.15/1.17 active(isQid(u)) -> mark(tt) 1.15/1.17 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 isList(active(X:S)) -> isList(X:S) 1.15/1.17 isList(mark(X:S)) -> isList(X:S) 1.15/1.17 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.17 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.17 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.17 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.17 isPal(active(X:S)) -> isPal(X:S) 1.15/1.17 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.17 isQid(active(X:S)) -> isQid(X:S) 1.15/1.17 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.17 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.17 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.17 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.17 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.17 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.17 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.17 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.17 mark(a) -> active(a) 1.15/1.17 mark(e) -> active(e) 1.15/1.17 mark(i) -> active(i) 1.15/1.17 mark(nil) -> active(nil) 1.15/1.17 mark(o) -> active(o) 1.15/1.17 mark(tt) -> active(tt) 1.15/1.17 mark(u) -> active(u) 1.15/1.17 ->->Cycle: 1.15/1.17 ->->-> Pairs: 1.15/1.17 __#(active(X1:S),X2:S) -> __#(X1:S,X2:S) 1.15/1.17 __#(mark(X1:S),X2:S) -> __#(X1:S,X2:S) 1.15/1.17 __#(X1:S,active(X2:S)) -> __#(X1:S,X2:S) 1.15/1.17 __#(X1:S,mark(X2:S)) -> __#(X1:S,X2:S) 1.15/1.17 ->->-> Rules: 1.15/1.17 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.17 active(__(nil,X:S)) -> mark(X:S) 1.15/1.17 active(__(X:S,nil)) -> mark(X:S) 1.15/1.17 active(and(tt,X:S)) -> mark(X:S) 1.15/1.17 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.17 active(isList(nil)) -> mark(tt) 1.15/1.17 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.17 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.17 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isPal(nil)) -> mark(tt) 1.15/1.17 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.17 active(isQid(a)) -> mark(tt) 1.15/1.17 active(isQid(e)) -> mark(tt) 1.15/1.17 active(isQid(i)) -> mark(tt) 1.15/1.17 active(isQid(o)) -> mark(tt) 1.15/1.17 active(isQid(u)) -> mark(tt) 1.15/1.17 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 isList(active(X:S)) -> isList(X:S) 1.15/1.17 isList(mark(X:S)) -> isList(X:S) 1.15/1.17 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.17 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.17 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.17 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.17 isPal(active(X:S)) -> isPal(X:S) 1.15/1.17 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.17 isQid(active(X:S)) -> isQid(X:S) 1.15/1.17 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.17 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.17 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.17 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.17 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.17 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.17 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.17 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.17 mark(a) -> active(a) 1.15/1.17 mark(e) -> active(e) 1.15/1.17 mark(i) -> active(i) 1.15/1.17 mark(nil) -> active(nil) 1.15/1.17 mark(o) -> active(o) 1.15/1.17 mark(tt) -> active(tt) 1.15/1.17 mark(u) -> active(u) 1.15/1.17 ->->Cycle: 1.15/1.17 ->->-> Pairs: 1.15/1.17 ACTIVE(__(__(X:S,Y:S),Z:S)) -> MARK(__(X:S,__(Y:S,Z:S))) 1.15/1.17 ACTIVE(__(nil,X:S)) -> MARK(X:S) 1.15/1.17 ACTIVE(__(X:S,nil)) -> MARK(X:S) 1.15/1.17 ACTIVE(and(tt,X:S)) -> MARK(X:S) 1.15/1.17 ACTIVE(isList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isList(V2:S))) 1.15/1.17 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.15/1.17 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.15/1.17 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.15/1.17 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.15/1.17 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.15/1.17 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.15/1.17 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.15/1.17 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.17 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.15/1.17 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.15/1.17 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.17 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.15/1.17 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.15/1.17 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.15/1.17 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.15/1.17 ->->-> Rules: 1.15/1.17 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.17 active(__(nil,X:S)) -> mark(X:S) 1.15/1.17 active(__(X:S,nil)) -> mark(X:S) 1.15/1.17 active(and(tt,X:S)) -> mark(X:S) 1.15/1.17 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.17 active(isList(nil)) -> mark(tt) 1.15/1.17 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.17 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.17 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isPal(nil)) -> mark(tt) 1.15/1.17 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.17 active(isQid(a)) -> mark(tt) 1.15/1.17 active(isQid(e)) -> mark(tt) 1.15/1.17 active(isQid(i)) -> mark(tt) 1.15/1.17 active(isQid(o)) -> mark(tt) 1.15/1.17 active(isQid(u)) -> mark(tt) 1.15/1.17 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 isList(active(X:S)) -> isList(X:S) 1.15/1.17 isList(mark(X:S)) -> isList(X:S) 1.15/1.17 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.17 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.17 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.17 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.17 isPal(active(X:S)) -> isPal(X:S) 1.15/1.17 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.17 isQid(active(X:S)) -> isQid(X:S) 1.15/1.17 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.17 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.17 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.17 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.17 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.17 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.17 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.17 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.17 mark(a) -> active(a) 1.15/1.17 mark(e) -> active(e) 1.15/1.17 mark(i) -> active(i) 1.15/1.17 mark(nil) -> active(nil) 1.15/1.17 mark(o) -> active(o) 1.15/1.17 mark(tt) -> active(tt) 1.15/1.17 mark(u) -> active(u) 1.15/1.17 1.15/1.17 1.15/1.17 The problem is decomposed in 8 subproblems. 1.15/1.17 1.15/1.17 Problem 1.1: 1.15/1.17 1.15/1.17 Subterm Processor: 1.15/1.17 -> Pairs: 1.15/1.17 ISQID(active(X:S)) -> ISQID(X:S) 1.15/1.17 ISQID(mark(X:S)) -> ISQID(X:S) 1.15/1.17 -> Rules: 1.15/1.17 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.17 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.17 active(__(nil,X:S)) -> mark(X:S) 1.15/1.17 active(__(X:S,nil)) -> mark(X:S) 1.15/1.17 active(and(tt,X:S)) -> mark(X:S) 1.15/1.17 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.17 active(isList(nil)) -> mark(tt) 1.15/1.17 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.17 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.17 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.17 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.17 active(isPal(nil)) -> mark(tt) 1.15/1.17 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.17 active(isQid(a)) -> mark(tt) 1.15/1.17 active(isQid(e)) -> mark(tt) 1.15/1.17 active(isQid(i)) -> mark(tt) 1.15/1.17 active(isQid(o)) -> mark(tt) 1.15/1.17 active(isQid(u)) -> mark(tt) 1.15/1.17 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.17 isList(active(X:S)) -> isList(X:S) 1.15/1.17 isList(mark(X:S)) -> isList(X:S) 1.15/1.17 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.17 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.17 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.17 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.17 isPal(active(X:S)) -> isPal(X:S) 1.15/1.17 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Projection: 1.15/1.18 pi(ISQID) = 1 1.15/1.18 1.15/1.18 Problem 1.1: 1.15/1.18 1.15/1.18 SCC Processor: 1.15/1.18 -> Pairs: 1.15/1.18 Empty 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Strongly Connected Components: 1.15/1.18 There is no strongly connected component 1.15/1.18 1.15/1.18 The problem is finite. 1.15/1.18 1.15/1.18 Problem 1.2: 1.15/1.18 1.15/1.18 Subterm Processor: 1.15/1.18 -> Pairs: 1.15/1.18 ISPAL(active(X:S)) -> ISPAL(X:S) 1.15/1.18 ISPAL(mark(X:S)) -> ISPAL(X:S) 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Projection: 1.15/1.18 pi(ISPAL) = 1 1.15/1.18 1.15/1.18 Problem 1.2: 1.15/1.18 1.15/1.18 SCC Processor: 1.15/1.18 -> Pairs: 1.15/1.18 Empty 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Strongly Connected Components: 1.15/1.18 There is no strongly connected component 1.15/1.18 1.15/1.18 The problem is finite. 1.15/1.18 1.15/1.18 Problem 1.3: 1.15/1.18 1.15/1.18 Subterm Processor: 1.15/1.18 -> Pairs: 1.15/1.18 ISNEPAL(active(X:S)) -> ISNEPAL(X:S) 1.15/1.18 ISNEPAL(mark(X:S)) -> ISNEPAL(X:S) 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Projection: 1.15/1.18 pi(ISNEPAL) = 1 1.15/1.18 1.15/1.18 Problem 1.3: 1.15/1.18 1.15/1.18 SCC Processor: 1.15/1.18 -> Pairs: 1.15/1.18 Empty 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Strongly Connected Components: 1.15/1.18 There is no strongly connected component 1.15/1.18 1.15/1.18 The problem is finite. 1.15/1.18 1.15/1.18 Problem 1.4: 1.15/1.18 1.15/1.18 Subterm Processor: 1.15/1.18 -> Pairs: 1.15/1.18 ISNELIST(active(X:S)) -> ISNELIST(X:S) 1.15/1.18 ISNELIST(mark(X:S)) -> ISNELIST(X:S) 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Projection: 1.15/1.18 pi(ISNELIST) = 1 1.15/1.18 1.15/1.18 Problem 1.4: 1.15/1.18 1.15/1.18 SCC Processor: 1.15/1.18 -> Pairs: 1.15/1.18 Empty 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Strongly Connected Components: 1.15/1.18 There is no strongly connected component 1.15/1.18 1.15/1.18 The problem is finite. 1.15/1.18 1.15/1.18 Problem 1.5: 1.15/1.18 1.15/1.18 Subterm Processor: 1.15/1.18 -> Pairs: 1.15/1.18 ISLIST(active(X:S)) -> ISLIST(X:S) 1.15/1.18 ISLIST(mark(X:S)) -> ISLIST(X:S) 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Projection: 1.15/1.18 pi(ISLIST) = 1 1.15/1.18 1.15/1.18 Problem 1.5: 1.15/1.18 1.15/1.18 SCC Processor: 1.15/1.18 -> Pairs: 1.15/1.18 Empty 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Strongly Connected Components: 1.15/1.18 There is no strongly connected component 1.15/1.18 1.15/1.18 The problem is finite. 1.15/1.18 1.15/1.18 Problem 1.6: 1.15/1.18 1.15/1.18 Subterm Processor: 1.15/1.18 -> Pairs: 1.15/1.18 AND(active(X1:S),X2:S) -> AND(X1:S,X2:S) 1.15/1.18 AND(mark(X1:S),X2:S) -> AND(X1:S,X2:S) 1.15/1.18 AND(X1:S,active(X2:S)) -> AND(X1:S,X2:S) 1.15/1.18 AND(X1:S,mark(X2:S)) -> AND(X1:S,X2:S) 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Projection: 1.15/1.18 pi(AND) = 1 1.15/1.18 1.15/1.18 Problem 1.6: 1.15/1.18 1.15/1.18 SCC Processor: 1.15/1.18 -> Pairs: 1.15/1.18 AND(X1:S,active(X2:S)) -> AND(X1:S,X2:S) 1.15/1.18 AND(X1:S,mark(X2:S)) -> AND(X1:S,X2:S) 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Strongly Connected Components: 1.15/1.18 ->->Cycle: 1.15/1.18 ->->-> Pairs: 1.15/1.18 AND(X1:S,active(X2:S)) -> AND(X1:S,X2:S) 1.15/1.18 AND(X1:S,mark(X2:S)) -> AND(X1:S,X2:S) 1.15/1.18 ->->-> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 1.15/1.18 Problem 1.6: 1.15/1.18 1.15/1.18 Subterm Processor: 1.15/1.18 -> Pairs: 1.15/1.18 AND(X1:S,active(X2:S)) -> AND(X1:S,X2:S) 1.15/1.18 AND(X1:S,mark(X2:S)) -> AND(X1:S,X2:S) 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Projection: 1.15/1.18 pi(AND) = 2 1.15/1.18 1.15/1.18 Problem 1.6: 1.15/1.18 1.15/1.18 SCC Processor: 1.15/1.18 -> Pairs: 1.15/1.18 Empty 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Strongly Connected Components: 1.15/1.18 There is no strongly connected component 1.15/1.18 1.15/1.18 The problem is finite. 1.15/1.18 1.15/1.18 Problem 1.7: 1.15/1.18 1.15/1.18 Subterm Processor: 1.15/1.18 -> Pairs: 1.15/1.18 __#(active(X1:S),X2:S) -> __#(X1:S,X2:S) 1.15/1.18 __#(mark(X1:S),X2:S) -> __#(X1:S,X2:S) 1.15/1.18 __#(X1:S,active(X2:S)) -> __#(X1:S,X2:S) 1.15/1.18 __#(X1:S,mark(X2:S)) -> __#(X1:S,X2:S) 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Projection: 1.15/1.18 pi(__#) = 1 1.15/1.18 1.15/1.18 Problem 1.7: 1.15/1.18 1.15/1.18 SCC Processor: 1.15/1.18 -> Pairs: 1.15/1.18 __#(X1:S,active(X2:S)) -> __#(X1:S,X2:S) 1.15/1.18 __#(X1:S,mark(X2:S)) -> __#(X1:S,X2:S) 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Strongly Connected Components: 1.15/1.18 ->->Cycle: 1.15/1.18 ->->-> Pairs: 1.15/1.18 __#(X1:S,active(X2:S)) -> __#(X1:S,X2:S) 1.15/1.18 __#(X1:S,mark(X2:S)) -> __#(X1:S,X2:S) 1.15/1.18 ->->-> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 1.15/1.18 Problem 1.7: 1.15/1.18 1.15/1.18 Subterm Processor: 1.15/1.18 -> Pairs: 1.15/1.18 __#(X1:S,active(X2:S)) -> __#(X1:S,X2:S) 1.15/1.18 __#(X1:S,mark(X2:S)) -> __#(X1:S,X2:S) 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Projection: 1.15/1.18 pi(__#) = 2 1.15/1.18 1.15/1.18 Problem 1.7: 1.15/1.18 1.15/1.18 SCC Processor: 1.15/1.18 -> Pairs: 1.15/1.18 Empty 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Strongly Connected Components: 1.15/1.18 There is no strongly connected component 1.15/1.18 1.15/1.18 The problem is finite. 1.15/1.18 1.15/1.18 Problem 1.8: 1.15/1.18 1.15/1.18 Reduction Pairs Processor: 1.15/1.18 -> Pairs: 1.15/1.18 ACTIVE(__(__(X:S,Y:S),Z:S)) -> MARK(__(X:S,__(Y:S,Z:S))) 1.15/1.18 ACTIVE(__(nil,X:S)) -> MARK(X:S) 1.15/1.18 ACTIVE(__(X:S,nil)) -> MARK(X:S) 1.15/1.18 ACTIVE(and(tt,X:S)) -> MARK(X:S) 1.15/1.18 ACTIVE(isList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.15/1.18 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.15/1.18 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.15/1.18 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.15/1.18 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.15/1.18 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.15/1.18 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.15/1.18 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 -> Usable rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Interpretation type: 1.15/1.18 Linear 1.15/1.18 ->Coefficients: 1.15/1.18 Natural Numbers 1.15/1.18 ->Dimension: 1.15/1.18 1 1.15/1.18 ->Bound: 1.15/1.18 2 1.15/1.18 ->Interpretation: 1.15/1.18 1.15/1.18 [__](X1,X2) = 2.X1 + X2 + 2 1.15/1.18 [active](X) = X 1.15/1.18 [and](X1,X2) = X1 + X2 + 2 1.15/1.18 [isList](X) = 2.X + 2 1.15/1.18 [isNeList](X) = 2.X + 2 1.15/1.18 [isNePal](X) = X + 2 1.15/1.18 [isPal](X) = 2.X + 2 1.15/1.18 [isQid](X) = 0 1.15/1.18 [mark](X) = X 1.15/1.18 [a] = 0 1.15/1.18 [e] = 2 1.15/1.18 [fSNonEmpty] = 0 1.15/1.18 [i] = 0 1.15/1.18 [nil] = 2 1.15/1.18 [o] = 0 1.15/1.18 [tt] = 0 1.15/1.18 [u] = 2 1.15/1.18 [__#](X1,X2) = 0 1.15/1.18 [ACTIVE](X) = 2.X + 2 1.15/1.18 [AND](X1,X2) = 0 1.15/1.18 [ISLIST](X) = 0 1.15/1.18 [ISNELIST](X) = 0 1.15/1.18 [ISNEPAL](X) = 0 1.15/1.18 [ISPAL](X) = 0 1.15/1.18 [ISQID](X) = 0 1.15/1.18 [MARK](X) = 2.X + 2 1.15/1.18 1.15/1.18 Problem 1.8: 1.15/1.18 1.15/1.18 SCC Processor: 1.15/1.18 -> Pairs: 1.15/1.18 ACTIVE(__(nil,X:S)) -> MARK(X:S) 1.15/1.18 ACTIVE(__(X:S,nil)) -> MARK(X:S) 1.15/1.18 ACTIVE(and(tt,X:S)) -> MARK(X:S) 1.15/1.18 ACTIVE(isList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.15/1.18 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.15/1.18 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.15/1.18 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.15/1.18 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.15/1.18 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.15/1.18 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.15/1.18 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Strongly Connected Components: 1.15/1.18 ->->Cycle: 1.15/1.18 ->->-> Pairs: 1.15/1.18 ACTIVE(__(nil,X:S)) -> MARK(X:S) 1.15/1.18 ACTIVE(__(X:S,nil)) -> MARK(X:S) 1.15/1.18 ACTIVE(and(tt,X:S)) -> MARK(X:S) 1.15/1.18 ACTIVE(isList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.15/1.18 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.15/1.18 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.15/1.18 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.15/1.18 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.15/1.18 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.15/1.18 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.15/1.18 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.15/1.18 ->->-> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 1.15/1.18 Problem 1.8: 1.15/1.18 1.15/1.18 Reduction Pairs Processor: 1.15/1.18 -> Pairs: 1.15/1.18 ACTIVE(__(nil,X:S)) -> MARK(X:S) 1.15/1.18 ACTIVE(__(X:S,nil)) -> MARK(X:S) 1.15/1.18 ACTIVE(and(tt,X:S)) -> MARK(X:S) 1.15/1.18 ACTIVE(isList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.15/1.18 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.15/1.18 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.15/1.18 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.15/1.18 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.15/1.18 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.15/1.18 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.15/1.18 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 -> Usable rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Interpretation type: 1.15/1.18 Linear 1.15/1.18 ->Coefficients: 1.15/1.18 Natural Numbers 1.15/1.18 ->Dimension: 1.15/1.18 1 1.15/1.18 ->Bound: 1.15/1.18 2 1.15/1.18 ->Interpretation: 1.15/1.18 1.15/1.18 [__](X1,X2) = 2.X1 + X2 + 2 1.15/1.18 [active](X) = X 1.15/1.18 [and](X1,X2) = 2.X1 + X2 + 2 1.15/1.18 [isList](X) = 2.X + 1 1.15/1.18 [isNeList](X) = 2.X + 1 1.15/1.18 [isNePal](X) = 2.X + 2 1.15/1.18 [isPal](X) = 2.X + 2 1.15/1.18 [isQid](X) = 2.X + 1 1.15/1.18 [mark](X) = X 1.15/1.18 [a] = 1 1.15/1.18 [e] = 0 1.15/1.18 [fSNonEmpty] = 0 1.15/1.18 [i] = 0 1.15/1.18 [nil] = 2 1.15/1.18 [o] = 1 1.15/1.18 [tt] = 0 1.15/1.18 [u] = 1 1.15/1.18 [__#](X1,X2) = 0 1.15/1.18 [ACTIVE](X) = 2.X + 2 1.15/1.18 [AND](X1,X2) = 0 1.15/1.18 [ISLIST](X) = 0 1.15/1.18 [ISNELIST](X) = 0 1.15/1.18 [ISNEPAL](X) = 0 1.15/1.18 [ISPAL](X) = 0 1.15/1.18 [ISQID](X) = 0 1.15/1.18 [MARK](X) = 2.X + 2 1.15/1.18 1.15/1.18 Problem 1.8: 1.15/1.18 1.15/1.18 SCC Processor: 1.15/1.18 -> Pairs: 1.15/1.18 ACTIVE(__(X:S,nil)) -> MARK(X:S) 1.15/1.18 ACTIVE(and(tt,X:S)) -> MARK(X:S) 1.15/1.18 ACTIVE(isList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.15/1.18 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.15/1.18 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.15/1.18 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.15/1.18 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.15/1.18 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.15/1.18 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.15/1.18 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Strongly Connected Components: 1.15/1.18 ->->Cycle: 1.15/1.18 ->->-> Pairs: 1.15/1.18 ACTIVE(__(X:S,nil)) -> MARK(X:S) 1.15/1.18 ACTIVE(and(tt,X:S)) -> MARK(X:S) 1.15/1.18 ACTIVE(isList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.15/1.18 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.15/1.18 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.15/1.18 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.15/1.18 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.15/1.18 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.15/1.18 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.15/1.18 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.15/1.18 ->->-> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 1.15/1.18 Problem 1.8: 1.15/1.18 1.15/1.18 Reduction Pairs Processor: 1.15/1.18 -> Pairs: 1.15/1.18 ACTIVE(__(X:S,nil)) -> MARK(X:S) 1.15/1.18 ACTIVE(and(tt,X:S)) -> MARK(X:S) 1.15/1.18 ACTIVE(isList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.15/1.18 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.15/1.18 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.15/1.18 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.15/1.18 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.15/1.18 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.15/1.18 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.15/1.18 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 -> Usable rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Interpretation type: 1.15/1.18 Linear 1.15/1.18 ->Coefficients: 1.15/1.18 Natural Numbers 1.15/1.18 ->Dimension: 1.15/1.18 1 1.15/1.18 ->Bound: 1.15/1.18 2 1.15/1.18 ->Interpretation: 1.15/1.18 1.15/1.18 [__](X1,X2) = 2.X1 + X2 + 2 1.15/1.18 [active](X) = X 1.15/1.18 [and](X1,X2) = X1 + X2 + 2 1.15/1.18 [isList](X) = 2.X + 2 1.15/1.18 [isNeList](X) = 2.X + 2 1.15/1.18 [isNePal](X) = 2.X + 2 1.15/1.18 [isPal](X) = 2.X + 2 1.15/1.18 [isQid](X) = X + 1 1.15/1.18 [mark](X) = X 1.15/1.18 [a] = 1 1.15/1.18 [e] = 2 1.15/1.18 [fSNonEmpty] = 0 1.15/1.18 [i] = 2 1.15/1.18 [nil] = 2 1.15/1.18 [o] = 2 1.15/1.18 [tt] = 1 1.15/1.18 [u] = 2 1.15/1.18 [__#](X1,X2) = 0 1.15/1.18 [ACTIVE](X) = 2.X + 2 1.15/1.18 [AND](X1,X2) = 0 1.15/1.18 [ISLIST](X) = 0 1.15/1.18 [ISNELIST](X) = 0 1.15/1.18 [ISNEPAL](X) = 0 1.15/1.18 [ISPAL](X) = 0 1.15/1.18 [ISQID](X) = 0 1.15/1.18 [MARK](X) = 2.X + 2 1.15/1.18 1.15/1.18 Problem 1.8: 1.15/1.18 1.15/1.18 SCC Processor: 1.15/1.18 -> Pairs: 1.15/1.18 ACTIVE(and(tt,X:S)) -> MARK(X:S) 1.15/1.18 ACTIVE(isList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.15/1.18 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.15/1.18 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.15/1.18 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.15/1.18 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.15/1.18 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.15/1.18 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.15/1.18 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.15/1.18 -> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 ->Strongly Connected Components: 1.15/1.18 ->->Cycle: 1.15/1.18 ->->-> Pairs: 1.15/1.18 ACTIVE(and(tt,X:S)) -> MARK(X:S) 1.15/1.18 ACTIVE(isList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.15/1.18 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.15/1.18 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.15/1.18 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.15/1.18 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.18 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.15/1.18 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.15/1.18 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.15/1.18 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.15/1.18 ->->-> Rules: 1.15/1.18 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.18 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.18 active(__(nil,X:S)) -> mark(X:S) 1.15/1.18 active(__(X:S,nil)) -> mark(X:S) 1.15/1.18 active(and(tt,X:S)) -> mark(X:S) 1.15/1.18 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.18 active(isList(nil)) -> mark(tt) 1.15/1.18 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.18 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.18 active(isPal(nil)) -> mark(tt) 1.15/1.18 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.18 active(isQid(a)) -> mark(tt) 1.15/1.18 active(isQid(e)) -> mark(tt) 1.15/1.18 active(isQid(i)) -> mark(tt) 1.15/1.18 active(isQid(o)) -> mark(tt) 1.15/1.18 active(isQid(u)) -> mark(tt) 1.15/1.18 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.18 isList(active(X:S)) -> isList(X:S) 1.15/1.18 isList(mark(X:S)) -> isList(X:S) 1.15/1.18 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.18 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.18 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.18 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.18 isPal(active(X:S)) -> isPal(X:S) 1.15/1.18 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.18 isQid(active(X:S)) -> isQid(X:S) 1.15/1.18 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.18 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.18 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.18 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.18 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.18 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.18 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.18 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.18 mark(a) -> active(a) 1.15/1.18 mark(e) -> active(e) 1.15/1.18 mark(i) -> active(i) 1.15/1.18 mark(nil) -> active(nil) 1.15/1.18 mark(o) -> active(o) 1.15/1.18 mark(tt) -> active(tt) 1.15/1.18 mark(u) -> active(u) 1.15/1.18 1.15/1.18 Problem 1.8: 1.15/1.18 1.15/1.18 Reduction Pairs Processor: 1.15/1.18 -> Pairs: 1.15/1.18 ACTIVE(and(tt,X:S)) -> MARK(X:S) 1.15/1.18 ACTIVE(isList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.15/1.18 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.15/1.18 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.15/1.18 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.15/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.15/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.15/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.15/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.15/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.15/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.15/1.19 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.15/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.15/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.15/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.15/1.19 -> Rules: 1.15/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.19 active(__(nil,X:S)) -> mark(X:S) 1.15/1.19 active(__(X:S,nil)) -> mark(X:S) 1.15/1.19 active(and(tt,X:S)) -> mark(X:S) 1.15/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.19 active(isList(nil)) -> mark(tt) 1.15/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.19 active(isPal(nil)) -> mark(tt) 1.15/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.19 active(isQid(a)) -> mark(tt) 1.15/1.19 active(isQid(e)) -> mark(tt) 1.15/1.19 active(isQid(i)) -> mark(tt) 1.15/1.19 active(isQid(o)) -> mark(tt) 1.15/1.19 active(isQid(u)) -> mark(tt) 1.15/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.19 isList(active(X:S)) -> isList(X:S) 1.15/1.19 isList(mark(X:S)) -> isList(X:S) 1.15/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.19 isPal(active(X:S)) -> isPal(X:S) 1.15/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.19 isQid(active(X:S)) -> isQid(X:S) 1.15/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.19 mark(a) -> active(a) 1.15/1.19 mark(e) -> active(e) 1.15/1.19 mark(i) -> active(i) 1.15/1.19 mark(nil) -> active(nil) 1.15/1.19 mark(o) -> active(o) 1.15/1.19 mark(tt) -> active(tt) 1.15/1.19 mark(u) -> active(u) 1.15/1.19 -> Usable rules: 1.15/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.15/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.15/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.15/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.15/1.19 active(__(nil,X:S)) -> mark(X:S) 1.15/1.19 active(__(X:S,nil)) -> mark(X:S) 1.15/1.19 active(and(tt,X:S)) -> mark(X:S) 1.15/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.15/1.19 active(isList(nil)) -> mark(tt) 1.15/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.15/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.15/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.15/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.15/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.15/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.15/1.19 active(isPal(nil)) -> mark(tt) 1.15/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.15/1.19 active(isQid(a)) -> mark(tt) 1.15/1.19 active(isQid(e)) -> mark(tt) 1.15/1.19 active(isQid(i)) -> mark(tt) 1.15/1.19 active(isQid(o)) -> mark(tt) 1.15/1.19 active(isQid(u)) -> mark(tt) 1.15/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.15/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.15/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.15/1.19 isList(active(X:S)) -> isList(X:S) 1.15/1.19 isList(mark(X:S)) -> isList(X:S) 1.15/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.15/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.15/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.15/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.15/1.19 isPal(active(X:S)) -> isPal(X:S) 1.15/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.15/1.19 isQid(active(X:S)) -> isQid(X:S) 1.15/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.15/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.15/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.15/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.15/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.15/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.15/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.15/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.15/1.19 mark(a) -> active(a) 1.15/1.19 mark(e) -> active(e) 1.15/1.19 mark(i) -> active(i) 1.15/1.19 mark(nil) -> active(nil) 1.15/1.19 mark(o) -> active(o) 1.15/1.19 mark(tt) -> active(tt) 1.15/1.19 mark(u) -> active(u) 1.15/1.19 ->Interpretation type: 1.15/1.19 Linear 1.15/1.19 ->Coefficients: 1.15/1.19 Natural Numbers 1.15/1.19 ->Dimension: 1.15/1.19 1 1.15/1.19 ->Bound: 1.15/1.19 2 1.15/1.19 ->Interpretation: 1.15/1.19 1.15/1.19 [__](X1,X2) = X1 + X2 + 2 1.15/1.19 [active](X) = X 1.15/1.19 [and](X1,X2) = X1 + X2 + 2 1.15/1.19 [isList](X) = 2.X + 2 1.15/1.19 [isNeList](X) = 2.X + 1 1.15/1.19 [isNePal](X) = 2.X + 1 1.15/1.19 [isPal](X) = 2.X + 1 1.15/1.19 [isQid](X) = 1 1.15/1.19 [mark](X) = X 1.15/1.19 [a] = 2 1.15/1.19 [e] = 2 1.15/1.19 [fSNonEmpty] = 0 1.15/1.19 [i] = 2 1.15/1.19 [nil] = 2 1.15/1.19 [o] = 0 1.15/1.19 [tt] = 1 1.15/1.19 [u] = 1 1.15/1.19 [__#](X1,X2) = 0 1.15/1.19 [ACTIVE](X) = 2.X + 2 1.15/1.19 [AND](X1,X2) = 0 1.15/1.19 [ISLIST](X) = 0 1.15/1.19 [ISNELIST](X) = 0 1.15/1.19 [ISNEPAL](X) = 0 1.15/1.19 [ISPAL](X) = 0 1.15/1.19 [ISQID](X) = 0 1.15/1.19 [MARK](X) = 2.X + 2 1.15/1.19 1.15/1.19 Problem 1.8: 1.15/1.19 1.15/1.19 SCC Processor: 1.15/1.19 -> Pairs: 1.15/1.19 ACTIVE(isList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isList(V2:S))) 1.17/1.19 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.17/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 -> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 ->Strongly Connected Components: 1.17/1.19 ->->Cycle: 1.17/1.19 ->->-> Pairs: 1.17/1.19 ACTIVE(isList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isList(V2:S))) 1.17/1.19 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.17/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 ->->-> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 1.17/1.19 Problem 1.8: 1.17/1.19 1.17/1.19 Reduction Pairs Processor: 1.17/1.19 -> Pairs: 1.17/1.19 ACTIVE(isList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isList(V2:S))) 1.17/1.19 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.17/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 -> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 -> Usable rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 ->Interpretation type: 1.17/1.19 Linear 1.17/1.19 ->Coefficients: 1.17/1.19 Natural Numbers 1.17/1.19 ->Dimension: 1.17/1.19 1 1.17/1.19 ->Bound: 1.17/1.19 2 1.17/1.19 ->Interpretation: 1.17/1.19 1.17/1.19 [__](X1,X2) = X1 + X2 + 2 1.17/1.19 [active](X) = X 1.17/1.19 [and](X1,X2) = X1 + X2 + 1 1.17/1.19 [isList](X) = 2.X + 2 1.17/1.19 [isNeList](X) = 2.X + 2 1.17/1.19 [isNePal](X) = 2.X + 2 1.17/1.19 [isPal](X) = 2.X + 2 1.17/1.19 [isQid](X) = 2.X + 2 1.17/1.19 [mark](X) = X 1.17/1.19 [a] = 1 1.17/1.19 [e] = 0 1.17/1.19 [fSNonEmpty] = 0 1.17/1.19 [i] = 1 1.17/1.19 [nil] = 2 1.17/1.19 [o] = 1 1.17/1.19 [tt] = 2 1.17/1.19 [u] = 2 1.17/1.19 [__#](X1,X2) = 0 1.17/1.19 [ACTIVE](X) = 2.X + 1 1.17/1.19 [AND](X1,X2) = 0 1.17/1.19 [ISLIST](X) = 0 1.17/1.19 [ISNELIST](X) = 0 1.17/1.19 [ISNEPAL](X) = 0 1.17/1.19 [ISPAL](X) = 0 1.17/1.19 [ISQID](X) = 0 1.17/1.19 [MARK](X) = 2.X + 1 1.17/1.19 1.17/1.19 Problem 1.8: 1.17/1.19 1.17/1.19 SCC Processor: 1.17/1.19 -> Pairs: 1.17/1.19 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.17/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 -> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 ->Strongly Connected Components: 1.17/1.19 ->->Cycle: 1.17/1.19 ->->-> Pairs: 1.17/1.19 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.17/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 ->->-> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 1.17/1.19 Problem 1.8: 1.17/1.19 1.17/1.19 Reduction Pairs Processor: 1.17/1.19 -> Pairs: 1.17/1.19 ACTIVE(isList(V:S)) -> MARK(isNeList(V:S)) 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.17/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 -> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 -> Usable rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 ->Interpretation type: 1.17/1.19 Linear 1.17/1.19 ->Coefficients: 1.17/1.19 Natural Numbers 1.17/1.19 ->Dimension: 1.17/1.19 1 1.17/1.19 ->Bound: 1.17/1.19 2 1.17/1.19 ->Interpretation: 1.17/1.19 1.17/1.19 [__](X1,X2) = 2.X1 + X2 + 2 1.17/1.19 [active](X) = X 1.17/1.19 [and](X1,X2) = 2.X1 + X2 1.17/1.19 [isList](X) = 2.X + 2 1.17/1.19 [isNeList](X) = 2.X + 1 1.17/1.19 [isNePal](X) = 2.X + 2 1.17/1.19 [isPal](X) = 2.X + 2 1.17/1.19 [isQid](X) = X + 1 1.17/1.19 [mark](X) = X 1.17/1.19 [a] = 2 1.17/1.19 [e] = 2 1.17/1.19 [fSNonEmpty] = 0 1.17/1.19 [i] = 2 1.17/1.19 [nil] = 1 1.17/1.19 [o] = 2 1.17/1.19 [tt] = 2 1.17/1.19 [u] = 1 1.17/1.19 [__#](X1,X2) = 0 1.17/1.19 [ACTIVE](X) = 2.X + 2 1.17/1.19 [AND](X1,X2) = 0 1.17/1.19 [ISLIST](X) = 0 1.17/1.19 [ISNELIST](X) = 0 1.17/1.19 [ISNEPAL](X) = 0 1.17/1.19 [ISPAL](X) = 0 1.17/1.19 [ISQID](X) = 0 1.17/1.19 [MARK](X) = 2.X + 2 1.17/1.19 1.17/1.19 Problem 1.8: 1.17/1.19 1.17/1.19 SCC Processor: 1.17/1.19 -> Pairs: 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isList(X:S)) -> ACTIVE(isList(X:S)) 1.17/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 -> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 ->Strongly Connected Components: 1.17/1.19 ->->Cycle: 1.17/1.19 ->->-> Pairs: 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 ->->-> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 1.17/1.19 Problem 1.8: 1.17/1.19 1.17/1.19 Reduction Pairs Processor: 1.17/1.19 -> Pairs: 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 -> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 -> Usable rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 ->Interpretation type: 1.17/1.19 Linear 1.17/1.19 ->Coefficients: 1.17/1.19 Natural Numbers 1.17/1.19 ->Dimension: 1.17/1.19 1 1.17/1.19 ->Bound: 1.17/1.19 2 1.17/1.19 ->Interpretation: 1.17/1.19 1.17/1.19 [__](X1,X2) = 2.X1 + X2 + 2 1.17/1.19 [active](X) = X 1.17/1.19 [and](X1,X2) = 2.X1 + X2 + 1 1.17/1.19 [isList](X) = 2.X + 1 1.17/1.19 [isNeList](X) = 2.X 1.17/1.19 [isNePal](X) = 2.X + 2 1.17/1.19 [isPal](X) = 2.X + 2 1.17/1.19 [isQid](X) = 2.X 1.17/1.19 [mark](X) = X 1.17/1.19 [a] = 2 1.17/1.19 [e] = 2 1.17/1.19 [fSNonEmpty] = 0 1.17/1.19 [i] = 0 1.17/1.19 [nil] = 2 1.17/1.19 [o] = 2 1.17/1.19 [tt] = 0 1.17/1.19 [u] = 2 1.17/1.19 [__#](X1,X2) = 0 1.17/1.19 [ACTIVE](X) = 2.X 1.17/1.19 [AND](X1,X2) = 0 1.17/1.19 [ISLIST](X) = 0 1.17/1.19 [ISNELIST](X) = 0 1.17/1.19 [ISNEPAL](X) = 0 1.17/1.19 [ISPAL](X) = 0 1.17/1.19 [ISQID](X) = 0 1.17/1.19 [MARK](X) = 2.X 1.17/1.19 1.17/1.19 Problem 1.8: 1.17/1.19 1.17/1.19 SCC Processor: 1.17/1.19 -> Pairs: 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 -> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 ->Strongly Connected Components: 1.17/1.19 ->->Cycle: 1.17/1.19 ->->-> Pairs: 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 ->->-> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 1.17/1.19 Problem 1.8: 1.17/1.19 1.17/1.19 Reduction Pairs Processor: 1.17/1.19 -> Pairs: 1.17/1.19 ACTIVE(isNeList(__(V1:S,V2:S))) -> MARK(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 -> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 -> Usable rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 ->Interpretation type: 1.17/1.19 Linear 1.17/1.19 ->Coefficients: 1.17/1.19 Natural Numbers 1.17/1.19 ->Dimension: 1.17/1.19 1 1.17/1.19 ->Bound: 1.17/1.19 2 1.17/1.19 ->Interpretation: 1.17/1.19 1.17/1.19 [__](X1,X2) = 2.X1 + X2 + 1 1.17/1.19 [active](X) = X 1.17/1.19 [and](X1,X2) = X1 + X2 1.17/1.19 [isList](X) = 2.X + 1 1.17/1.19 [isNeList](X) = 2.X + 1 1.17/1.19 [isNePal](X) = X + 2 1.17/1.19 [isPal](X) = X + 2 1.17/1.19 [isQid](X) = X + 1 1.17/1.19 [mark](X) = X 1.17/1.19 [a] = 1 1.17/1.19 [e] = 2 1.17/1.19 [fSNonEmpty] = 0 1.17/1.19 [i] = 2 1.17/1.19 [nil] = 1 1.17/1.19 [o] = 2 1.17/1.19 [tt] = 1 1.17/1.19 [u] = 2 1.17/1.19 [__#](X1,X2) = 0 1.17/1.19 [ACTIVE](X) = 2.X + 2 1.17/1.19 [AND](X1,X2) = 0 1.17/1.19 [ISLIST](X) = 0 1.17/1.19 [ISNELIST](X) = 0 1.17/1.19 [ISNEPAL](X) = 0 1.17/1.19 [ISPAL](X) = 0 1.17/1.19 [ISQID](X) = 0 1.17/1.19 [MARK](X) = 2.X + 2 1.17/1.19 1.17/1.19 Problem 1.8: 1.17/1.19 1.17/1.19 SCC Processor: 1.17/1.19 -> Pairs: 1.17/1.19 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 -> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 ->Strongly Connected Components: 1.17/1.19 ->->Cycle: 1.17/1.19 ->->-> Pairs: 1.17/1.19 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 ->->-> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 1.17/1.19 Problem 1.8: 1.17/1.19 1.17/1.19 Reduction Pairs Processor: 1.17/1.19 -> Pairs: 1.17/1.19 ACTIVE(isNeList(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 -> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 -> Usable rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 ->Interpretation type: 1.17/1.19 Linear 1.17/1.19 ->Coefficients: 1.17/1.19 Natural Numbers 1.17/1.19 ->Dimension: 1.17/1.19 1 1.17/1.19 ->Bound: 1.17/1.19 2 1.17/1.19 ->Interpretation: 1.17/1.19 1.17/1.19 [__](X1,X2) = 2.X1 + X2 + 2 1.17/1.19 [active](X) = X 1.17/1.19 [and](X1,X2) = 2.X1 + X2 1.17/1.19 [isList](X) = 2.X + 2 1.17/1.19 [isNeList](X) = 2.X + 2 1.17/1.19 [isNePal](X) = 2.X + 1 1.17/1.19 [isPal](X) = 2.X + 1 1.17/1.19 [isQid](X) = 2.X + 1 1.17/1.19 [mark](X) = X 1.17/1.19 [a] = 2 1.17/1.19 [e] = 0 1.17/1.19 [fSNonEmpty] = 0 1.17/1.19 [i] = 2 1.17/1.19 [nil] = 2 1.17/1.19 [o] = 2 1.17/1.19 [tt] = 0 1.17/1.19 [u] = 1 1.17/1.19 [__#](X1,X2) = 0 1.17/1.19 [ACTIVE](X) = 2.X + 1 1.17/1.19 [AND](X1,X2) = 0 1.17/1.19 [ISLIST](X) = 0 1.17/1.19 [ISNELIST](X) = 0 1.17/1.19 [ISNEPAL](X) = 0 1.17/1.19 [ISPAL](X) = 0 1.17/1.19 [ISQID](X) = 0 1.17/1.19 [MARK](X) = 2.X + 1 1.17/1.19 1.17/1.19 Problem 1.8: 1.17/1.19 1.17/1.19 SCC Processor: 1.17/1.19 -> Pairs: 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isNeList(X:S)) -> ACTIVE(isNeList(X:S)) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 -> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 ->Strongly Connected Components: 1.17/1.19 ->->Cycle: 1.17/1.19 ->->-> Pairs: 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 ->->-> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 1.17/1.19 Problem 1.8: 1.17/1.19 1.17/1.19 Reduction Pairs Processor: 1.17/1.19 -> Pairs: 1.17/1.19 ACTIVE(isNePal(__(I:S,__(P:S,I:S)))) -> MARK(and(isQid(I:S),isPal(P:S))) 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 -> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 -> Usable rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 ->Interpretation type: 1.17/1.19 Linear 1.17/1.19 ->Coefficients: 1.17/1.19 Natural Numbers 1.17/1.19 ->Dimension: 1.17/1.19 1 1.17/1.19 ->Bound: 1.17/1.19 2 1.17/1.19 ->Interpretation: 1.17/1.19 1.17/1.19 [__](X1,X2) = 2.X1 + X2 + 2 1.17/1.19 [active](X) = X 1.17/1.19 [and](X1,X2) = X1 + X2 + 1 1.17/1.19 [isList](X) = 2.X + 2 1.17/1.19 [isNeList](X) = 2.X + 2 1.17/1.19 [isNePal](X) = 2.X 1.17/1.19 [isPal](X) = 2.X 1.17/1.19 [isQid](X) = 2.X 1.17/1.19 [mark](X) = X 1.17/1.19 [a] = 1 1.17/1.19 [e] = 2 1.17/1.19 [fSNonEmpty] = 0 1.17/1.19 [i] = 2 1.17/1.19 [nil] = 2 1.17/1.19 [o] = 2 1.17/1.19 [tt] = 2 1.17/1.19 [u] = 1 1.17/1.19 [__#](X1,X2) = 0 1.17/1.19 [ACTIVE](X) = 2.X + 2 1.17/1.19 [AND](X1,X2) = 0 1.17/1.19 [ISLIST](X) = 0 1.17/1.19 [ISNELIST](X) = 0 1.17/1.19 [ISNEPAL](X) = 0 1.17/1.19 [ISPAL](X) = 0 1.17/1.19 [ISQID](X) = 0 1.17/1.19 [MARK](X) = 2.X + 2 1.17/1.19 1.17/1.19 Problem 1.8: 1.17/1.19 1.17/1.19 SCC Processor: 1.17/1.19 -> Pairs: 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 -> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 ->Strongly Connected Components: 1.17/1.19 ->->Cycle: 1.17/1.19 ->->-> Pairs: 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 ->->-> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.19 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.19 isList(active(X:S)) -> isList(X:S) 1.17/1.19 isList(mark(X:S)) -> isList(X:S) 1.17/1.19 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.19 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.19 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.19 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.19 isPal(active(X:S)) -> isPal(X:S) 1.17/1.19 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.19 isQid(active(X:S)) -> isQid(X:S) 1.17/1.19 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.19 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.19 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.19 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.19 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.19 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.19 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.19 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.19 mark(a) -> active(a) 1.17/1.19 mark(e) -> active(e) 1.17/1.19 mark(i) -> active(i) 1.17/1.19 mark(nil) -> active(nil) 1.17/1.19 mark(o) -> active(o) 1.17/1.19 mark(tt) -> active(tt) 1.17/1.19 mark(u) -> active(u) 1.17/1.19 1.17/1.19 Problem 1.8: 1.17/1.19 1.17/1.19 Reduction Pairs Processor: 1.17/1.19 -> Pairs: 1.17/1.19 ACTIVE(isNePal(V:S)) -> MARK(isQid(V:S)) 1.17/1.19 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.19 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.19 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.19 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.19 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.19 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.19 -> Rules: 1.17/1.19 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.19 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.19 active(__(nil,X:S)) -> mark(X:S) 1.17/1.19 active(__(X:S,nil)) -> mark(X:S) 1.17/1.19 active(and(tt,X:S)) -> mark(X:S) 1.17/1.19 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.19 active(isList(nil)) -> mark(tt) 1.17/1.19 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.19 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.19 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.19 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.19 active(isPal(nil)) -> mark(tt) 1.17/1.19 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.19 active(isQid(a)) -> mark(tt) 1.17/1.19 active(isQid(e)) -> mark(tt) 1.17/1.19 active(isQid(i)) -> mark(tt) 1.17/1.19 active(isQid(o)) -> mark(tt) 1.17/1.19 active(isQid(u)) -> mark(tt) 1.17/1.20 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 isList(active(X:S)) -> isList(X:S) 1.17/1.20 isList(mark(X:S)) -> isList(X:S) 1.17/1.20 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.20 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.20 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.20 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.20 isPal(active(X:S)) -> isPal(X:S) 1.17/1.20 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.20 isQid(active(X:S)) -> isQid(X:S) 1.17/1.20 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.20 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.20 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.20 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.20 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.20 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.20 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.20 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.20 mark(a) -> active(a) 1.17/1.20 mark(e) -> active(e) 1.17/1.20 mark(i) -> active(i) 1.17/1.20 mark(nil) -> active(nil) 1.17/1.20 mark(o) -> active(o) 1.17/1.20 mark(tt) -> active(tt) 1.17/1.20 mark(u) -> active(u) 1.17/1.20 -> Usable rules: 1.17/1.20 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.20 active(__(nil,X:S)) -> mark(X:S) 1.17/1.20 active(__(X:S,nil)) -> mark(X:S) 1.17/1.20 active(and(tt,X:S)) -> mark(X:S) 1.17/1.20 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.20 active(isList(nil)) -> mark(tt) 1.17/1.20 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.20 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.20 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isPal(nil)) -> mark(tt) 1.17/1.20 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.20 active(isQid(a)) -> mark(tt) 1.17/1.20 active(isQid(e)) -> mark(tt) 1.17/1.20 active(isQid(i)) -> mark(tt) 1.17/1.20 active(isQid(o)) -> mark(tt) 1.17/1.20 active(isQid(u)) -> mark(tt) 1.17/1.20 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 isList(active(X:S)) -> isList(X:S) 1.17/1.20 isList(mark(X:S)) -> isList(X:S) 1.17/1.20 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.20 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.20 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.20 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.20 isPal(active(X:S)) -> isPal(X:S) 1.17/1.20 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.20 isQid(active(X:S)) -> isQid(X:S) 1.17/1.20 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.20 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.20 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.20 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.20 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.20 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.20 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.20 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.20 mark(a) -> active(a) 1.17/1.20 mark(e) -> active(e) 1.17/1.20 mark(i) -> active(i) 1.17/1.20 mark(nil) -> active(nil) 1.17/1.20 mark(o) -> active(o) 1.17/1.20 mark(tt) -> active(tt) 1.17/1.20 mark(u) -> active(u) 1.17/1.20 ->Interpretation type: 1.17/1.20 Linear 1.17/1.20 ->Coefficients: 1.17/1.20 Natural Numbers 1.17/1.20 ->Dimension: 1.17/1.20 1 1.17/1.20 ->Bound: 1.17/1.20 2 1.17/1.20 ->Interpretation: 1.17/1.20 1.17/1.20 [__](X1,X2) = 2.X1 + X2 + 2 1.17/1.20 [active](X) = X 1.17/1.20 [and](X1,X2) = 2.X1 + 2.X2 1.17/1.20 [isList](X) = 0 1.17/1.20 [isNeList](X) = 0 1.17/1.20 [isNePal](X) = 2.X + 2 1.17/1.20 [isPal](X) = 2.X + 2 1.17/1.20 [isQid](X) = 0 1.17/1.20 [mark](X) = X 1.17/1.20 [a] = 0 1.17/1.20 [e] = 1 1.17/1.20 [fSNonEmpty] = 0 1.17/1.20 [i] = 0 1.17/1.20 [nil] = 2 1.17/1.20 [o] = 2 1.17/1.20 [tt] = 0 1.17/1.20 [u] = 2 1.17/1.20 [__#](X1,X2) = 0 1.17/1.20 [ACTIVE](X) = 2.X + 2 1.17/1.20 [AND](X1,X2) = 0 1.17/1.20 [ISLIST](X) = 0 1.17/1.20 [ISNELIST](X) = 0 1.17/1.20 [ISNEPAL](X) = 0 1.17/1.20 [ISPAL](X) = 0 1.17/1.20 [ISQID](X) = 0 1.17/1.20 [MARK](X) = 2.X + 2 1.17/1.20 1.17/1.20 Problem 1.8: 1.17/1.20 1.17/1.20 SCC Processor: 1.17/1.20 -> Pairs: 1.17/1.20 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.20 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.20 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.20 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.20 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.20 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.20 MARK(isNePal(X:S)) -> ACTIVE(isNePal(X:S)) 1.17/1.20 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.20 -> Rules: 1.17/1.20 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.20 active(__(nil,X:S)) -> mark(X:S) 1.17/1.20 active(__(X:S,nil)) -> mark(X:S) 1.17/1.20 active(and(tt,X:S)) -> mark(X:S) 1.17/1.20 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.20 active(isList(nil)) -> mark(tt) 1.17/1.20 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.20 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.20 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isPal(nil)) -> mark(tt) 1.17/1.20 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.20 active(isQid(a)) -> mark(tt) 1.17/1.20 active(isQid(e)) -> mark(tt) 1.17/1.20 active(isQid(i)) -> mark(tt) 1.17/1.20 active(isQid(o)) -> mark(tt) 1.17/1.20 active(isQid(u)) -> mark(tt) 1.17/1.20 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 isList(active(X:S)) -> isList(X:S) 1.17/1.20 isList(mark(X:S)) -> isList(X:S) 1.17/1.20 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.20 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.20 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.20 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.20 isPal(active(X:S)) -> isPal(X:S) 1.17/1.20 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.20 isQid(active(X:S)) -> isQid(X:S) 1.17/1.20 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.20 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.20 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.20 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.20 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.20 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.20 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.20 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.20 mark(a) -> active(a) 1.17/1.20 mark(e) -> active(e) 1.17/1.20 mark(i) -> active(i) 1.17/1.20 mark(nil) -> active(nil) 1.17/1.20 mark(o) -> active(o) 1.17/1.20 mark(tt) -> active(tt) 1.17/1.20 mark(u) -> active(u) 1.17/1.20 ->Strongly Connected Components: 1.17/1.20 ->->Cycle: 1.17/1.20 ->->-> Pairs: 1.17/1.20 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.20 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.20 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.20 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.20 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.20 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.20 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.20 ->->-> Rules: 1.17/1.20 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.20 active(__(nil,X:S)) -> mark(X:S) 1.17/1.20 active(__(X:S,nil)) -> mark(X:S) 1.17/1.20 active(and(tt,X:S)) -> mark(X:S) 1.17/1.20 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.20 active(isList(nil)) -> mark(tt) 1.17/1.20 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.20 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.20 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isPal(nil)) -> mark(tt) 1.17/1.20 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.20 active(isQid(a)) -> mark(tt) 1.17/1.20 active(isQid(e)) -> mark(tt) 1.17/1.20 active(isQid(i)) -> mark(tt) 1.17/1.20 active(isQid(o)) -> mark(tt) 1.17/1.20 active(isQid(u)) -> mark(tt) 1.17/1.20 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 isList(active(X:S)) -> isList(X:S) 1.17/1.20 isList(mark(X:S)) -> isList(X:S) 1.17/1.20 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.20 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.20 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.20 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.20 isPal(active(X:S)) -> isPal(X:S) 1.17/1.20 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.20 isQid(active(X:S)) -> isQid(X:S) 1.17/1.20 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.20 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.20 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.20 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.20 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.20 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.20 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.20 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.20 mark(a) -> active(a) 1.17/1.20 mark(e) -> active(e) 1.17/1.20 mark(i) -> active(i) 1.17/1.20 mark(nil) -> active(nil) 1.17/1.20 mark(o) -> active(o) 1.17/1.20 mark(tt) -> active(tt) 1.17/1.20 mark(u) -> active(u) 1.17/1.20 1.17/1.20 Problem 1.8: 1.17/1.20 1.17/1.20 Reduction Pairs Processor: 1.17/1.20 -> Pairs: 1.17/1.20 ACTIVE(isPal(V:S)) -> MARK(isNePal(V:S)) 1.17/1.20 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.20 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.20 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.20 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.20 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.20 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.20 -> Rules: 1.17/1.20 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.20 active(__(nil,X:S)) -> mark(X:S) 1.17/1.20 active(__(X:S,nil)) -> mark(X:S) 1.17/1.20 active(and(tt,X:S)) -> mark(X:S) 1.17/1.20 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.20 active(isList(nil)) -> mark(tt) 1.17/1.20 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.20 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.20 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isPal(nil)) -> mark(tt) 1.17/1.20 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.20 active(isQid(a)) -> mark(tt) 1.17/1.20 active(isQid(e)) -> mark(tt) 1.17/1.20 active(isQid(i)) -> mark(tt) 1.17/1.20 active(isQid(o)) -> mark(tt) 1.17/1.20 active(isQid(u)) -> mark(tt) 1.17/1.20 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 isList(active(X:S)) -> isList(X:S) 1.17/1.20 isList(mark(X:S)) -> isList(X:S) 1.17/1.20 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.20 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.20 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.20 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.20 isPal(active(X:S)) -> isPal(X:S) 1.17/1.20 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.20 isQid(active(X:S)) -> isQid(X:S) 1.17/1.20 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.20 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.20 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.20 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.20 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.20 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.20 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.20 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.20 mark(a) -> active(a) 1.17/1.20 mark(e) -> active(e) 1.17/1.20 mark(i) -> active(i) 1.17/1.20 mark(nil) -> active(nil) 1.17/1.20 mark(o) -> active(o) 1.17/1.20 mark(tt) -> active(tt) 1.17/1.20 mark(u) -> active(u) 1.17/1.20 -> Usable rules: 1.17/1.20 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.20 active(__(nil,X:S)) -> mark(X:S) 1.17/1.20 active(__(X:S,nil)) -> mark(X:S) 1.17/1.20 active(and(tt,X:S)) -> mark(X:S) 1.17/1.20 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.20 active(isList(nil)) -> mark(tt) 1.17/1.20 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.20 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.20 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isPal(nil)) -> mark(tt) 1.17/1.20 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.20 active(isQid(a)) -> mark(tt) 1.17/1.20 active(isQid(e)) -> mark(tt) 1.17/1.20 active(isQid(i)) -> mark(tt) 1.17/1.20 active(isQid(o)) -> mark(tt) 1.17/1.20 active(isQid(u)) -> mark(tt) 1.17/1.20 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 isList(active(X:S)) -> isList(X:S) 1.17/1.20 isList(mark(X:S)) -> isList(X:S) 1.17/1.20 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.20 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.20 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.20 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.20 isPal(active(X:S)) -> isPal(X:S) 1.17/1.20 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.20 isQid(active(X:S)) -> isQid(X:S) 1.17/1.20 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.20 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.20 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.20 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.20 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.20 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.20 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.20 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.20 mark(a) -> active(a) 1.17/1.20 mark(e) -> active(e) 1.17/1.20 mark(i) -> active(i) 1.17/1.20 mark(nil) -> active(nil) 1.17/1.20 mark(o) -> active(o) 1.17/1.20 mark(tt) -> active(tt) 1.17/1.20 mark(u) -> active(u) 1.17/1.20 ->Interpretation type: 1.17/1.20 Linear 1.17/1.20 ->Coefficients: 1.17/1.20 Natural Numbers 1.17/1.20 ->Dimension: 1.17/1.20 1 1.17/1.20 ->Bound: 1.17/1.20 2 1.17/1.20 ->Interpretation: 1.17/1.20 1.17/1.20 [__](X1,X2) = 2.X1 + X2 + 2 1.17/1.20 [active](X) = X 1.17/1.20 [and](X1,X2) = X1 + X2 + 2 1.17/1.20 [isList](X) = 2.X + 2 1.17/1.20 [isNeList](X) = 2.X + 2 1.17/1.20 [isNePal](X) = 2.X + 1 1.17/1.20 [isPal](X) = 2.X + 2 1.17/1.20 [isQid](X) = 2.X + 1 1.17/1.20 [mark](X) = X 1.17/1.20 [a] = 2 1.17/1.20 [e] = 2 1.17/1.20 [fSNonEmpty] = 0 1.17/1.20 [i] = 2 1.17/1.20 [nil] = 2 1.17/1.20 [o] = 2 1.17/1.20 [tt] = 0 1.17/1.20 [u] = 2 1.17/1.20 [__#](X1,X2) = 0 1.17/1.20 [ACTIVE](X) = 2.X 1.17/1.20 [AND](X1,X2) = 0 1.17/1.20 [ISLIST](X) = 0 1.17/1.20 [ISNELIST](X) = 0 1.17/1.20 [ISNEPAL](X) = 0 1.17/1.20 [ISPAL](X) = 0 1.17/1.20 [ISQID](X) = 0 1.17/1.20 [MARK](X) = 2.X + 1 1.17/1.20 1.17/1.20 Problem 1.8: 1.17/1.20 1.17/1.20 SCC Processor: 1.17/1.20 -> Pairs: 1.17/1.20 MARK(__(X1:S,X2:S)) -> ACTIVE(__(mark(X1:S),mark(X2:S))) 1.17/1.20 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.20 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.20 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 1.17/1.20 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.20 MARK(isPal(X:S)) -> ACTIVE(isPal(X:S)) 1.17/1.20 -> Rules: 1.17/1.20 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.20 active(__(nil,X:S)) -> mark(X:S) 1.17/1.20 active(__(X:S,nil)) -> mark(X:S) 1.17/1.20 active(and(tt,X:S)) -> mark(X:S) 1.17/1.20 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.20 active(isList(nil)) -> mark(tt) 1.17/1.20 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.20 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.20 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isPal(nil)) -> mark(tt) 1.17/1.20 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.20 active(isQid(a)) -> mark(tt) 1.17/1.20 active(isQid(e)) -> mark(tt) 1.17/1.20 active(isQid(i)) -> mark(tt) 1.17/1.20 active(isQid(o)) -> mark(tt) 1.17/1.20 active(isQid(u)) -> mark(tt) 1.17/1.20 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 isList(active(X:S)) -> isList(X:S) 1.17/1.20 isList(mark(X:S)) -> isList(X:S) 1.17/1.20 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.20 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.20 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.20 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.20 isPal(active(X:S)) -> isPal(X:S) 1.17/1.20 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.20 isQid(active(X:S)) -> isQid(X:S) 1.17/1.20 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.20 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.20 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.20 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.20 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.20 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.20 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.20 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.20 mark(a) -> active(a) 1.17/1.20 mark(e) -> active(e) 1.17/1.20 mark(i) -> active(i) 1.17/1.20 mark(nil) -> active(nil) 1.17/1.20 mark(o) -> active(o) 1.17/1.20 mark(tt) -> active(tt) 1.17/1.20 mark(u) -> active(u) 1.17/1.20 ->Strongly Connected Components: 1.17/1.20 ->->Cycle: 1.17/1.20 ->->-> Pairs: 1.17/1.20 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.20 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.20 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.20 ->->-> Rules: 1.17/1.20 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.20 active(__(nil,X:S)) -> mark(X:S) 1.17/1.20 active(__(X:S,nil)) -> mark(X:S) 1.17/1.20 active(and(tt,X:S)) -> mark(X:S) 1.17/1.20 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.20 active(isList(nil)) -> mark(tt) 1.17/1.20 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.20 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.20 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isPal(nil)) -> mark(tt) 1.17/1.20 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.20 active(isQid(a)) -> mark(tt) 1.17/1.20 active(isQid(e)) -> mark(tt) 1.17/1.20 active(isQid(i)) -> mark(tt) 1.17/1.20 active(isQid(o)) -> mark(tt) 1.17/1.20 active(isQid(u)) -> mark(tt) 1.17/1.20 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 isList(active(X:S)) -> isList(X:S) 1.17/1.20 isList(mark(X:S)) -> isList(X:S) 1.17/1.20 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.20 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.20 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.20 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.20 isPal(active(X:S)) -> isPal(X:S) 1.17/1.20 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.20 isQid(active(X:S)) -> isQid(X:S) 1.17/1.20 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.20 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.20 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.20 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.20 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.20 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.20 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.20 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.20 mark(a) -> active(a) 1.17/1.20 mark(e) -> active(e) 1.17/1.20 mark(i) -> active(i) 1.17/1.20 mark(nil) -> active(nil) 1.17/1.20 mark(o) -> active(o) 1.17/1.20 mark(tt) -> active(tt) 1.17/1.20 mark(u) -> active(u) 1.17/1.20 1.17/1.20 Problem 1.8: 1.17/1.20 1.17/1.20 Subterm Processor: 1.17/1.20 -> Pairs: 1.17/1.20 MARK(__(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.20 MARK(__(X1:S,X2:S)) -> MARK(X2:S) 1.17/1.20 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 1.17/1.20 -> Rules: 1.17/1.20 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.20 active(__(nil,X:S)) -> mark(X:S) 1.17/1.20 active(__(X:S,nil)) -> mark(X:S) 1.17/1.20 active(and(tt,X:S)) -> mark(X:S) 1.17/1.20 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.20 active(isList(nil)) -> mark(tt) 1.17/1.20 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.20 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.20 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isPal(nil)) -> mark(tt) 1.17/1.20 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.20 active(isQid(a)) -> mark(tt) 1.17/1.20 active(isQid(e)) -> mark(tt) 1.17/1.20 active(isQid(i)) -> mark(tt) 1.17/1.20 active(isQid(o)) -> mark(tt) 1.17/1.20 active(isQid(u)) -> mark(tt) 1.17/1.20 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 isList(active(X:S)) -> isList(X:S) 1.17/1.20 isList(mark(X:S)) -> isList(X:S) 1.17/1.20 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.20 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.20 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.20 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.20 isPal(active(X:S)) -> isPal(X:S) 1.17/1.20 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.20 isQid(active(X:S)) -> isQid(X:S) 1.17/1.20 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.20 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.20 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.20 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.20 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.20 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.20 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.20 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.20 mark(a) -> active(a) 1.17/1.20 mark(e) -> active(e) 1.17/1.20 mark(i) -> active(i) 1.17/1.20 mark(nil) -> active(nil) 1.17/1.20 mark(o) -> active(o) 1.17/1.20 mark(tt) -> active(tt) 1.17/1.20 mark(u) -> active(u) 1.17/1.20 ->Projection: 1.17/1.20 pi(MARK) = 1 1.17/1.20 1.17/1.20 Problem 1.8: 1.17/1.20 1.17/1.20 SCC Processor: 1.17/1.20 -> Pairs: 1.17/1.20 Empty 1.17/1.20 -> Rules: 1.17/1.20 __(active(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(mark(X1:S),X2:S) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,active(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 __(X1:S,mark(X2:S)) -> __(X1:S,X2:S) 1.17/1.20 active(__(__(X:S,Y:S),Z:S)) -> mark(__(X:S,__(Y:S,Z:S))) 1.17/1.20 active(__(nil,X:S)) -> mark(X:S) 1.17/1.20 active(__(X:S,nil)) -> mark(X:S) 1.17/1.20 active(and(tt,X:S)) -> mark(X:S) 1.17/1.20 active(isList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isList(V2:S))) 1.17/1.20 active(isList(nil)) -> mark(tt) 1.17/1.20 active(isList(V:S)) -> mark(isNeList(V:S)) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isList(V1:S),isNeList(V2:S))) 1.17/1.20 active(isNeList(__(V1:S,V2:S))) -> mark(and(isNeList(V1:S),isList(V2:S))) 1.17/1.20 active(isNeList(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isNePal(__(I:S,__(P:S,I:S)))) -> mark(and(isQid(I:S),isPal(P:S))) 1.17/1.20 active(isNePal(V:S)) -> mark(isQid(V:S)) 1.17/1.20 active(isPal(nil)) -> mark(tt) 1.17/1.20 active(isPal(V:S)) -> mark(isNePal(V:S)) 1.17/1.20 active(isQid(a)) -> mark(tt) 1.17/1.20 active(isQid(e)) -> mark(tt) 1.17/1.20 active(isQid(i)) -> mark(tt) 1.17/1.20 active(isQid(o)) -> mark(tt) 1.17/1.20 active(isQid(u)) -> mark(tt) 1.17/1.20 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 1.17/1.20 isList(active(X:S)) -> isList(X:S) 1.17/1.20 isList(mark(X:S)) -> isList(X:S) 1.17/1.20 isNeList(active(X:S)) -> isNeList(X:S) 1.17/1.20 isNeList(mark(X:S)) -> isNeList(X:S) 1.17/1.20 isNePal(active(X:S)) -> isNePal(X:S) 1.17/1.20 isNePal(mark(X:S)) -> isNePal(X:S) 1.17/1.20 isPal(active(X:S)) -> isPal(X:S) 1.17/1.20 isPal(mark(X:S)) -> isPal(X:S) 1.17/1.20 isQid(active(X:S)) -> isQid(X:S) 1.17/1.20 isQid(mark(X:S)) -> isQid(X:S) 1.17/1.20 mark(__(X1:S,X2:S)) -> active(__(mark(X1:S),mark(X2:S))) 1.17/1.20 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 1.17/1.20 mark(isList(X:S)) -> active(isList(X:S)) 1.17/1.20 mark(isNeList(X:S)) -> active(isNeList(X:S)) 1.17/1.20 mark(isNePal(X:S)) -> active(isNePal(X:S)) 1.17/1.20 mark(isPal(X:S)) -> active(isPal(X:S)) 1.17/1.20 mark(isQid(X:S)) -> active(isQid(X:S)) 1.17/1.20 mark(a) -> active(a) 1.17/1.20 mark(e) -> active(e) 1.17/1.20 mark(i) -> active(i) 1.17/1.20 mark(nil) -> active(nil) 1.17/1.20 mark(o) -> active(o) 1.17/1.20 mark(tt) -> active(tt) 1.17/1.20 mark(u) -> active(u) 1.17/1.20 ->Strongly Connected Components: 1.17/1.20 There is no strongly connected component 1.17/1.20 1.17/1.20 The problem is finite. 1.17/1.20 EOF