YES Problem 1: (VAR A B V1 V2 X Y) (THEORY (AC mult plus union)) (RULES 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X ) Problem 1: Dependency Pairs Processor: -> FAxioms: MULT(mult(x6,x7),x8) = MULT(x6,mult(x7,x8)) MULT(x6,x7) = MULT(x7,x6) PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) UNION(union(x6,x7),x8) = UNION(x6,union(x7,x8)) UNION(x6,x7) = UNION(x7,x6) -> Pairs: U101#(tt,X,Y) -> 0#(mult(X,Y)) U101#(tt,X,Y) -> MULT(X,Y) U11#(tt,V1) -> U12#(isBin(V1)) U11#(tt,V1) -> ISBIN(V1) U111#(tt,X,Y) -> 0#(mult(X,Y)) U111#(tt,X,Y) -> MULT(X,Y) U111#(tt,X,Y) -> PLUS(0(mult(X,Y)),Y) U131#(tt,X,Y) -> 0#(plus(X,Y)) U131#(tt,X,Y) -> PLUS(X,Y) U141#(tt,X,Y) -> PLUS(X,Y) U151#(tt,X,Y) -> 0#(plus(plus(X,Y),1(z))) U151#(tt,X,Y) -> PLUS(plus(X,Y),1(z)) U151#(tt,X,Y) -> PLUS(X,Y) U171#(tt,A,B) -> MULT(prod(A),prod(B)) U171#(tt,A,B) -> PROD(A) U171#(tt,A,B) -> PROD(B) U191#(tt,A,B) -> PLUS(sum(A),sum(B)) U191#(tt,A,B) -> SUM(A) U191#(tt,A,B) -> SUM(B) U21#(tt,V1,V2) -> U22#(isBag(V1),V2) U21#(tt,V1,V2) -> ISBAG(V1) U22#(tt,V2) -> U23#(isBag(V2)) U22#(tt,V2) -> ISBAG(V2) U31#(tt,V1) -> U32#(isBin(V1)) U31#(tt,V1) -> ISBIN(V1) U41#(tt,V1) -> U42#(isBin(V1)) U41#(tt,V1) -> ISBIN(V1) U51#(tt,V1,V2) -> U52#(isBin(V1),V2) U51#(tt,V1,V2) -> ISBIN(V1) U52#(tt,V2) -> U53#(isBin(V2)) U52#(tt,V2) -> ISBIN(V2) U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> U63#(isBin(V2)) U62#(tt,V2) -> ISBIN(V2) U71#(tt,V1) -> U72#(isBag(V1)) U71#(tt,V1) -> ISBAG(V1) U81#(tt,V1) -> U82#(isBag(V1)) U81#(tt,V1) -> ISBAG(V1) ISBAG(union(V1,V2)) -> U21#(and(isBagKind(V1),isBagKind(V2)),V1,V2) ISBAG(union(V1,V2)) -> AND(isBagKind(V1),isBagKind(V2)) ISBAG(union(V1,V2)) -> ISBAGKIND(V1) ISBAG(union(V1,V2)) -> ISBAGKIND(V2) ISBAG(singl(V1)) -> U11#(isBinKind(V1),V1) ISBAG(singl(V1)) -> ISBINKIND(V1) ISBAGKIND(union(V1,V2)) -> AND(isBagKind(V1),isBagKind(V2)) ISBAGKIND(union(V1,V2)) -> ISBAGKIND(V1) ISBAGKIND(union(V1,V2)) -> ISBAGKIND(V2) ISBAGKIND(singl(V1)) -> ISBINKIND(V1) ISBIN(0(V1)) -> U31#(isBinKind(V1),V1) ISBIN(0(V1)) -> ISBINKIND(V1) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(mult(V1,V2)) -> AND(isBinKind(V1),isBinKind(V2)) ISBIN(mult(V1,V2)) -> ISBINKIND(V1) ISBIN(mult(V1,V2)) -> ISBINKIND(V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> AND(isBinKind(V1),isBinKind(V2)) ISBIN(plus(V1,V2)) -> ISBINKIND(V1) ISBIN(plus(V1,V2)) -> ISBINKIND(V2) ISBIN(prod(V1)) -> U71#(isBagKind(V1),V1) ISBIN(prod(V1)) -> ISBAGKIND(V1) ISBIN(sum(V1)) -> U81#(isBagKind(V1),V1) ISBIN(sum(V1)) -> ISBAGKIND(V1) ISBIN(1(V1)) -> U41#(isBinKind(V1),V1) ISBIN(1(V1)) -> ISBINKIND(V1) ISBINKIND(0(V1)) -> ISBINKIND(V1) ISBINKIND(mult(V1,V2)) -> AND(isBinKind(V1),isBinKind(V2)) ISBINKIND(mult(V1,V2)) -> ISBINKIND(V1) ISBINKIND(mult(V1,V2)) -> ISBINKIND(V2) ISBINKIND(plus(V1,V2)) -> AND(isBinKind(V1),isBinKind(V2)) ISBINKIND(plus(V1,V2)) -> ISBINKIND(V1) ISBINKIND(plus(V1,V2)) -> ISBINKIND(V2) ISBINKIND(prod(V1)) -> ISBAGKIND(V1) ISBINKIND(sum(V1)) -> ISBAGKIND(V1) ISBINKIND(1(V1)) -> ISBINKIND(V1) MULT(0(X),Y) -> U101#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(0(X),Y) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) MULT(0(X),Y) -> AND(isBin(X),isBinKind(X)) MULT(0(X),Y) -> AND(isBin(Y),isBinKind(Y)) MULT(0(X),Y) -> ISBIN(X) MULT(0(X),Y) -> ISBIN(Y) MULT(0(X),Y) -> ISBINKIND(X) MULT(0(X),Y) -> ISBINKIND(Y) MULT(mult(0(X),Y),x6) -> U101#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(mult(0(X),Y),x6) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) MULT(mult(0(X),Y),x6) -> AND(isBin(X),isBinKind(X)) MULT(mult(0(X),Y),x6) -> AND(isBin(Y),isBinKind(Y)) MULT(mult(0(X),Y),x6) -> ISBIN(X) MULT(mult(0(X),Y),x6) -> ISBIN(Y) MULT(mult(0(X),Y),x6) -> ISBINKIND(X) MULT(mult(0(X),Y),x6) -> ISBINKIND(Y) MULT(mult(0(X),Y),x6) -> MULT(U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(1(X),Y),x6) -> U111#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(mult(1(X),Y),x6) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) MULT(mult(1(X),Y),x6) -> AND(isBin(X),isBinKind(X)) MULT(mult(1(X),Y),x6) -> AND(isBin(Y),isBinKind(Y)) MULT(mult(1(X),Y),x6) -> ISBIN(X) MULT(mult(1(X),Y),x6) -> ISBIN(Y) MULT(mult(1(X),Y),x6) -> ISBINKIND(X) MULT(mult(1(X),Y),x6) -> ISBINKIND(Y) MULT(mult(1(X),Y),x6) -> MULT(U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(z,X),x6) -> U91#(and(isBin(X),isBinKind(X))) MULT(mult(z,X),x6) -> AND(isBin(X),isBinKind(X)) MULT(mult(z,X),x6) -> ISBIN(X) MULT(mult(z,X),x6) -> ISBINKIND(X) MULT(mult(z,X),x6) -> MULT(U91(and(isBin(X),isBinKind(X))),x6) MULT(1(X),Y) -> U111#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(1(X),Y) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) MULT(1(X),Y) -> AND(isBin(X),isBinKind(X)) MULT(1(X),Y) -> AND(isBin(Y),isBinKind(Y)) MULT(1(X),Y) -> ISBIN(X) MULT(1(X),Y) -> ISBIN(Y) MULT(1(X),Y) -> ISBINKIND(X) MULT(1(X),Y) -> ISBINKIND(Y) MULT(z,X) -> U91#(and(isBin(X),isBinKind(X))) MULT(z,X) -> AND(isBin(X),isBinKind(X)) MULT(z,X) -> ISBIN(X) MULT(z,X) -> ISBINKIND(X) PLUS(0(X),0(Y)) -> U131#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(0(X),0(Y)) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) PLUS(0(X),0(Y)) -> AND(isBin(X),isBinKind(X)) PLUS(0(X),0(Y)) -> AND(isBin(Y),isBinKind(Y)) PLUS(0(X),0(Y)) -> ISBIN(X) PLUS(0(X),0(Y)) -> ISBIN(Y) PLUS(0(X),0(Y)) -> ISBINKIND(X) PLUS(0(X),0(Y)) -> ISBINKIND(Y) PLUS(0(X),1(Y)) -> U141#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(0(X),1(Y)) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) PLUS(0(X),1(Y)) -> AND(isBin(X),isBinKind(X)) PLUS(0(X),1(Y)) -> AND(isBin(Y),isBinKind(Y)) PLUS(0(X),1(Y)) -> ISBIN(X) PLUS(0(X),1(Y)) -> ISBIN(Y) PLUS(0(X),1(Y)) -> ISBINKIND(X) PLUS(0(X),1(Y)) -> ISBINKIND(Y) PLUS(plus(0(X),0(Y)),x6) -> U131#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),0(Y)),x6) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) PLUS(plus(0(X),0(Y)),x6) -> AND(isBin(X),isBinKind(X)) PLUS(plus(0(X),0(Y)),x6) -> AND(isBin(Y),isBinKind(Y)) PLUS(plus(0(X),0(Y)),x6) -> ISBIN(X) PLUS(plus(0(X),0(Y)),x6) -> ISBIN(Y) PLUS(plus(0(X),0(Y)),x6) -> ISBINKIND(X) PLUS(plus(0(X),0(Y)),x6) -> ISBINKIND(Y) PLUS(plus(0(X),0(Y)),x6) -> PLUS(U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(0(X),1(Y)),x6) -> U141#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),1(Y)),x6) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) PLUS(plus(0(X),1(Y)),x6) -> AND(isBin(X),isBinKind(X)) PLUS(plus(0(X),1(Y)),x6) -> AND(isBin(Y),isBinKind(Y)) PLUS(plus(0(X),1(Y)),x6) -> ISBIN(X) PLUS(plus(0(X),1(Y)),x6) -> ISBIN(Y) PLUS(plus(0(X),1(Y)),x6) -> ISBINKIND(X) PLUS(plus(0(X),1(Y)),x6) -> ISBINKIND(Y) PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(1(X),1(Y)),x6) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) PLUS(plus(1(X),1(Y)),x6) -> AND(isBin(X),isBinKind(X)) PLUS(plus(1(X),1(Y)),x6) -> AND(isBin(Y),isBinKind(Y)) PLUS(plus(1(X),1(Y)),x6) -> ISBIN(X) PLUS(plus(1(X),1(Y)),x6) -> ISBIN(Y) PLUS(plus(1(X),1(Y)),x6) -> ISBINKIND(X) PLUS(plus(1(X),1(Y)),x6) -> ISBINKIND(Y) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> U121#(and(isBin(X),isBinKind(X)),X) PLUS(plus(z,X),x6) -> AND(isBin(X),isBinKind(X)) PLUS(plus(z,X),x6) -> ISBIN(X) PLUS(plus(z,X),x6) -> ISBINKIND(X) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) PLUS(1(X),1(Y)) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(1(X),1(Y)) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) PLUS(1(X),1(Y)) -> AND(isBin(X),isBinKind(X)) PLUS(1(X),1(Y)) -> AND(isBin(Y),isBinKind(Y)) PLUS(1(X),1(Y)) -> ISBIN(X) PLUS(1(X),1(Y)) -> ISBIN(Y) PLUS(1(X),1(Y)) -> ISBINKIND(X) PLUS(1(X),1(Y)) -> ISBINKIND(Y) PLUS(z,X) -> U121#(and(isBin(X),isBinKind(X)),X) PLUS(z,X) -> AND(isBin(X),isBinKind(X)) PLUS(z,X) -> ISBIN(X) PLUS(z,X) -> ISBINKIND(X) PROD(union(A,B)) -> U171#(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) PROD(union(A,B)) -> AND(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))) PROD(union(A,B)) -> AND(isBag(A),isBagKind(A)) PROD(union(A,B)) -> AND(isBag(B),isBagKind(B)) PROD(union(A,B)) -> ISBAG(A) PROD(union(A,B)) -> ISBAG(B) PROD(union(A,B)) -> ISBAGKIND(A) PROD(union(A,B)) -> ISBAGKIND(B) PROD(singl(X)) -> U161#(and(isBin(X),isBinKind(X)),X) PROD(singl(X)) -> AND(isBin(X),isBinKind(X)) PROD(singl(X)) -> ISBIN(X) PROD(singl(X)) -> ISBINKIND(X) SUM(union(A,B)) -> U191#(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) SUM(union(A,B)) -> AND(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))) SUM(union(A,B)) -> AND(isBag(A),isBagKind(A)) SUM(union(A,B)) -> AND(isBag(B),isBagKind(B)) SUM(union(A,B)) -> ISBAG(A) SUM(union(A,B)) -> ISBAG(B) SUM(union(A,B)) -> ISBAGKIND(A) SUM(union(A,B)) -> ISBAGKIND(B) SUM(empty) -> 0#(z) SUM(singl(X)) -> U181#(and(isBin(X),isBinKind(X)),X) SUM(singl(X)) -> AND(isBin(X),isBinKind(X)) SUM(singl(X)) -> ISBIN(X) SUM(singl(X)) -> ISBINKIND(X) UNION(union(empty,X),x6) -> UNION(X,x6) UNION(union(X,empty),x6) -> UNION(X,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) UNION(union(x6,x7),x8) -> UNION(x6,x7) UNION(x6,union(x7,x8)) -> UNION(x7,x8) Problem 1: SCC Processor: -> FAxioms: MULT(mult(x6,x7),x8) = MULT(x6,mult(x7,x8)) MULT(x6,x7) = MULT(x7,x6) PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) UNION(union(x6,x7),x8) = UNION(x6,union(x7,x8)) UNION(x6,x7) = UNION(x7,x6) -> Pairs: U101#(tt,X,Y) -> 0#(mult(X,Y)) U101#(tt,X,Y) -> MULT(X,Y) U11#(tt,V1) -> U12#(isBin(V1)) U11#(tt,V1) -> ISBIN(V1) U111#(tt,X,Y) -> 0#(mult(X,Y)) U111#(tt,X,Y) -> MULT(X,Y) U111#(tt,X,Y) -> PLUS(0(mult(X,Y)),Y) U131#(tt,X,Y) -> 0#(plus(X,Y)) U131#(tt,X,Y) -> PLUS(X,Y) U141#(tt,X,Y) -> PLUS(X,Y) U151#(tt,X,Y) -> 0#(plus(plus(X,Y),1(z))) U151#(tt,X,Y) -> PLUS(plus(X,Y),1(z)) U151#(tt,X,Y) -> PLUS(X,Y) U171#(tt,A,B) -> MULT(prod(A),prod(B)) U171#(tt,A,B) -> PROD(A) U171#(tt,A,B) -> PROD(B) U191#(tt,A,B) -> PLUS(sum(A),sum(B)) U191#(tt,A,B) -> SUM(A) U191#(tt,A,B) -> SUM(B) U21#(tt,V1,V2) -> U22#(isBag(V1),V2) U21#(tt,V1,V2) -> ISBAG(V1) U22#(tt,V2) -> U23#(isBag(V2)) U22#(tt,V2) -> ISBAG(V2) U31#(tt,V1) -> U32#(isBin(V1)) U31#(tt,V1) -> ISBIN(V1) U41#(tt,V1) -> U42#(isBin(V1)) U41#(tt,V1) -> ISBIN(V1) U51#(tt,V1,V2) -> U52#(isBin(V1),V2) U51#(tt,V1,V2) -> ISBIN(V1) U52#(tt,V2) -> U53#(isBin(V2)) U52#(tt,V2) -> ISBIN(V2) U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> U63#(isBin(V2)) U62#(tt,V2) -> ISBIN(V2) U71#(tt,V1) -> U72#(isBag(V1)) U71#(tt,V1) -> ISBAG(V1) U81#(tt,V1) -> U82#(isBag(V1)) U81#(tt,V1) -> ISBAG(V1) ISBAG(union(V1,V2)) -> U21#(and(isBagKind(V1),isBagKind(V2)),V1,V2) ISBAG(union(V1,V2)) -> AND(isBagKind(V1),isBagKind(V2)) ISBAG(union(V1,V2)) -> ISBAGKIND(V1) ISBAG(union(V1,V2)) -> ISBAGKIND(V2) ISBAG(singl(V1)) -> U11#(isBinKind(V1),V1) ISBAG(singl(V1)) -> ISBINKIND(V1) ISBAGKIND(union(V1,V2)) -> AND(isBagKind(V1),isBagKind(V2)) ISBAGKIND(union(V1,V2)) -> ISBAGKIND(V1) ISBAGKIND(union(V1,V2)) -> ISBAGKIND(V2) ISBAGKIND(singl(V1)) -> ISBINKIND(V1) ISBIN(0(V1)) -> U31#(isBinKind(V1),V1) ISBIN(0(V1)) -> ISBINKIND(V1) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(mult(V1,V2)) -> AND(isBinKind(V1),isBinKind(V2)) ISBIN(mult(V1,V2)) -> ISBINKIND(V1) ISBIN(mult(V1,V2)) -> ISBINKIND(V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> AND(isBinKind(V1),isBinKind(V2)) ISBIN(plus(V1,V2)) -> ISBINKIND(V1) ISBIN(plus(V1,V2)) -> ISBINKIND(V2) ISBIN(prod(V1)) -> U71#(isBagKind(V1),V1) ISBIN(prod(V1)) -> ISBAGKIND(V1) ISBIN(sum(V1)) -> U81#(isBagKind(V1),V1) ISBIN(sum(V1)) -> ISBAGKIND(V1) ISBIN(1(V1)) -> U41#(isBinKind(V1),V1) ISBIN(1(V1)) -> ISBINKIND(V1) ISBINKIND(0(V1)) -> ISBINKIND(V1) ISBINKIND(mult(V1,V2)) -> AND(isBinKind(V1),isBinKind(V2)) ISBINKIND(mult(V1,V2)) -> ISBINKIND(V1) ISBINKIND(mult(V1,V2)) -> ISBINKIND(V2) ISBINKIND(plus(V1,V2)) -> AND(isBinKind(V1),isBinKind(V2)) ISBINKIND(plus(V1,V2)) -> ISBINKIND(V1) ISBINKIND(plus(V1,V2)) -> ISBINKIND(V2) ISBINKIND(prod(V1)) -> ISBAGKIND(V1) ISBINKIND(sum(V1)) -> ISBAGKIND(V1) ISBINKIND(1(V1)) -> ISBINKIND(V1) MULT(0(X),Y) -> U101#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(0(X),Y) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) MULT(0(X),Y) -> AND(isBin(X),isBinKind(X)) MULT(0(X),Y) -> AND(isBin(Y),isBinKind(Y)) MULT(0(X),Y) -> ISBIN(X) MULT(0(X),Y) -> ISBIN(Y) MULT(0(X),Y) -> ISBINKIND(X) MULT(0(X),Y) -> ISBINKIND(Y) MULT(mult(0(X),Y),x6) -> U101#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(mult(0(X),Y),x6) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) MULT(mult(0(X),Y),x6) -> AND(isBin(X),isBinKind(X)) MULT(mult(0(X),Y),x6) -> AND(isBin(Y),isBinKind(Y)) MULT(mult(0(X),Y),x6) -> ISBIN(X) MULT(mult(0(X),Y),x6) -> ISBIN(Y) MULT(mult(0(X),Y),x6) -> ISBINKIND(X) MULT(mult(0(X),Y),x6) -> ISBINKIND(Y) MULT(mult(0(X),Y),x6) -> MULT(U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(1(X),Y),x6) -> U111#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(mult(1(X),Y),x6) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) MULT(mult(1(X),Y),x6) -> AND(isBin(X),isBinKind(X)) MULT(mult(1(X),Y),x6) -> AND(isBin(Y),isBinKind(Y)) MULT(mult(1(X),Y),x6) -> ISBIN(X) MULT(mult(1(X),Y),x6) -> ISBIN(Y) MULT(mult(1(X),Y),x6) -> ISBINKIND(X) MULT(mult(1(X),Y),x6) -> ISBINKIND(Y) MULT(mult(1(X),Y),x6) -> MULT(U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(z,X),x6) -> U91#(and(isBin(X),isBinKind(X))) MULT(mult(z,X),x6) -> AND(isBin(X),isBinKind(X)) MULT(mult(z,X),x6) -> ISBIN(X) MULT(mult(z,X),x6) -> ISBINKIND(X) MULT(mult(z,X),x6) -> MULT(U91(and(isBin(X),isBinKind(X))),x6) MULT(1(X),Y) -> U111#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(1(X),Y) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) MULT(1(X),Y) -> AND(isBin(X),isBinKind(X)) MULT(1(X),Y) -> AND(isBin(Y),isBinKind(Y)) MULT(1(X),Y) -> ISBIN(X) MULT(1(X),Y) -> ISBIN(Y) MULT(1(X),Y) -> ISBINKIND(X) MULT(1(X),Y) -> ISBINKIND(Y) MULT(z,X) -> U91#(and(isBin(X),isBinKind(X))) MULT(z,X) -> AND(isBin(X),isBinKind(X)) MULT(z,X) -> ISBIN(X) MULT(z,X) -> ISBINKIND(X) PLUS(0(X),0(Y)) -> U131#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(0(X),0(Y)) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) PLUS(0(X),0(Y)) -> AND(isBin(X),isBinKind(X)) PLUS(0(X),0(Y)) -> AND(isBin(Y),isBinKind(Y)) PLUS(0(X),0(Y)) -> ISBIN(X) PLUS(0(X),0(Y)) -> ISBIN(Y) PLUS(0(X),0(Y)) -> ISBINKIND(X) PLUS(0(X),0(Y)) -> ISBINKIND(Y) PLUS(0(X),1(Y)) -> U141#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(0(X),1(Y)) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) PLUS(0(X),1(Y)) -> AND(isBin(X),isBinKind(X)) PLUS(0(X),1(Y)) -> AND(isBin(Y),isBinKind(Y)) PLUS(0(X),1(Y)) -> ISBIN(X) PLUS(0(X),1(Y)) -> ISBIN(Y) PLUS(0(X),1(Y)) -> ISBINKIND(X) PLUS(0(X),1(Y)) -> ISBINKIND(Y) PLUS(plus(0(X),0(Y)),x6) -> U131#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),0(Y)),x6) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) PLUS(plus(0(X),0(Y)),x6) -> AND(isBin(X),isBinKind(X)) PLUS(plus(0(X),0(Y)),x6) -> AND(isBin(Y),isBinKind(Y)) PLUS(plus(0(X),0(Y)),x6) -> ISBIN(X) PLUS(plus(0(X),0(Y)),x6) -> ISBIN(Y) PLUS(plus(0(X),0(Y)),x6) -> ISBINKIND(X) PLUS(plus(0(X),0(Y)),x6) -> ISBINKIND(Y) PLUS(plus(0(X),0(Y)),x6) -> PLUS(U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(0(X),1(Y)),x6) -> U141#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),1(Y)),x6) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) PLUS(plus(0(X),1(Y)),x6) -> AND(isBin(X),isBinKind(X)) PLUS(plus(0(X),1(Y)),x6) -> AND(isBin(Y),isBinKind(Y)) PLUS(plus(0(X),1(Y)),x6) -> ISBIN(X) PLUS(plus(0(X),1(Y)),x6) -> ISBIN(Y) PLUS(plus(0(X),1(Y)),x6) -> ISBINKIND(X) PLUS(plus(0(X),1(Y)),x6) -> ISBINKIND(Y) PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(1(X),1(Y)),x6) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) PLUS(plus(1(X),1(Y)),x6) -> AND(isBin(X),isBinKind(X)) PLUS(plus(1(X),1(Y)),x6) -> AND(isBin(Y),isBinKind(Y)) PLUS(plus(1(X),1(Y)),x6) -> ISBIN(X) PLUS(plus(1(X),1(Y)),x6) -> ISBIN(Y) PLUS(plus(1(X),1(Y)),x6) -> ISBINKIND(X) PLUS(plus(1(X),1(Y)),x6) -> ISBINKIND(Y) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> U121#(and(isBin(X),isBinKind(X)),X) PLUS(plus(z,X),x6) -> AND(isBin(X),isBinKind(X)) PLUS(plus(z,X),x6) -> ISBIN(X) PLUS(plus(z,X),x6) -> ISBINKIND(X) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) PLUS(1(X),1(Y)) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(1(X),1(Y)) -> AND(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))) PLUS(1(X),1(Y)) -> AND(isBin(X),isBinKind(X)) PLUS(1(X),1(Y)) -> AND(isBin(Y),isBinKind(Y)) PLUS(1(X),1(Y)) -> ISBIN(X) PLUS(1(X),1(Y)) -> ISBIN(Y) PLUS(1(X),1(Y)) -> ISBINKIND(X) PLUS(1(X),1(Y)) -> ISBINKIND(Y) PLUS(z,X) -> U121#(and(isBin(X),isBinKind(X)),X) PLUS(z,X) -> AND(isBin(X),isBinKind(X)) PLUS(z,X) -> ISBIN(X) PLUS(z,X) -> ISBINKIND(X) PROD(union(A,B)) -> U171#(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) PROD(union(A,B)) -> AND(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))) PROD(union(A,B)) -> AND(isBag(A),isBagKind(A)) PROD(union(A,B)) -> AND(isBag(B),isBagKind(B)) PROD(union(A,B)) -> ISBAG(A) PROD(union(A,B)) -> ISBAG(B) PROD(union(A,B)) -> ISBAGKIND(A) PROD(union(A,B)) -> ISBAGKIND(B) PROD(singl(X)) -> U161#(and(isBin(X),isBinKind(X)),X) PROD(singl(X)) -> AND(isBin(X),isBinKind(X)) PROD(singl(X)) -> ISBIN(X) PROD(singl(X)) -> ISBINKIND(X) SUM(union(A,B)) -> U191#(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) SUM(union(A,B)) -> AND(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))) SUM(union(A,B)) -> AND(isBag(A),isBagKind(A)) SUM(union(A,B)) -> AND(isBag(B),isBagKind(B)) SUM(union(A,B)) -> ISBAG(A) SUM(union(A,B)) -> ISBAG(B) SUM(union(A,B)) -> ISBAGKIND(A) SUM(union(A,B)) -> ISBAGKIND(B) SUM(empty) -> 0#(z) SUM(singl(X)) -> U181#(and(isBin(X),isBinKind(X)),X) SUM(singl(X)) -> AND(isBin(X),isBinKind(X)) SUM(singl(X)) -> ISBIN(X) SUM(singl(X)) -> ISBINKIND(X) UNION(union(empty,X),x6) -> UNION(X,x6) UNION(union(X,empty),x6) -> UNION(X,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) UNION(union(x6,x7),x8) -> UNION(x6,x7) UNION(x6,union(x7,x8)) -> UNION(x7,x8) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: UNION(union(empty,X),x6) -> UNION(X,x6) UNION(union(X,empty),x6) -> UNION(X,x6) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) UNION(union(x6,x7),x8) -> UNION(x6,union(x7,x8)) UNION(x6,x7) -> UNION(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: UNION(union(x6,x7),x8) -> UNION(x6,x7) UNION(x6,union(x7,x8)) -> UNION(x7,x8) ->->Cycle: ->->-> Pairs: ISBAGKIND(union(V1,V2)) -> ISBAGKIND(V1) ISBAGKIND(union(V1,V2)) -> ISBAGKIND(V2) ISBAGKIND(singl(V1)) -> ISBINKIND(V1) ISBINKIND(0(V1)) -> ISBINKIND(V1) ISBINKIND(mult(V1,V2)) -> ISBINKIND(V1) ISBINKIND(mult(V1,V2)) -> ISBINKIND(V2) ISBINKIND(plus(V1,V2)) -> ISBINKIND(V1) ISBINKIND(plus(V1,V2)) -> ISBINKIND(V2) ISBINKIND(prod(V1)) -> ISBAGKIND(V1) ISBINKIND(sum(V1)) -> ISBAGKIND(V1) ISBINKIND(1(V1)) -> ISBINKIND(V1) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->->Cycle: ->->-> Pairs: U11#(tt,V1) -> ISBIN(V1) U21#(tt,V1,V2) -> U22#(isBag(V1),V2) U21#(tt,V1,V2) -> ISBAG(V1) U22#(tt,V2) -> ISBAG(V2) U31#(tt,V1) -> ISBIN(V1) U41#(tt,V1) -> ISBIN(V1) U51#(tt,V1,V2) -> U52#(isBin(V1),V2) U51#(tt,V1,V2) -> ISBIN(V1) U52#(tt,V2) -> ISBIN(V2) U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) U71#(tt,V1) -> ISBAG(V1) U81#(tt,V1) -> ISBAG(V1) ISBAG(union(V1,V2)) -> U21#(and(isBagKind(V1),isBagKind(V2)),V1,V2) ISBAG(singl(V1)) -> U11#(isBinKind(V1),V1) ISBIN(0(V1)) -> U31#(isBinKind(V1),V1) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(prod(V1)) -> U71#(isBagKind(V1),V1) ISBIN(sum(V1)) -> U81#(isBagKind(V1),V1) ISBIN(1(V1)) -> U41#(isBinKind(V1),V1) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->->Cycle: ->->-> Pairs: U131#(tt,X,Y) -> PLUS(X,Y) U141#(tt,X,Y) -> PLUS(X,Y) U151#(tt,X,Y) -> PLUS(plus(X,Y),1(z)) U151#(tt,X,Y) -> PLUS(X,Y) PLUS(0(X),0(Y)) -> U131#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(0(X),1(Y)) -> U141#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),0(Y)),x6) -> U131#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),0(Y)),x6) -> PLUS(U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(0(X),1(Y)),x6) -> U141#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) PLUS(1(X),1(Y)) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) PLUS(plus(x6,x7),x8) -> PLUS(x6,plus(x7,x8)) PLUS(x6,x7) -> PLUS(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->->Cycle: ->->-> Pairs: U191#(tt,A,B) -> SUM(A) U191#(tt,A,B) -> SUM(B) SUM(union(A,B)) -> U191#(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->->Cycle: ->->-> Pairs: U101#(tt,X,Y) -> MULT(X,Y) U111#(tt,X,Y) -> MULT(X,Y) MULT(0(X),Y) -> U101#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(mult(0(X),Y),x6) -> U101#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(mult(0(X),Y),x6) -> MULT(U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(1(X),Y),x6) -> U111#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(mult(1(X),Y),x6) -> MULT(U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(z,X),x6) -> MULT(U91(and(isBin(X),isBinKind(X))),x6) MULT(1(X),Y) -> U111#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) MULT(mult(x6,x7),x8) -> MULT(x6,mult(x7,x8)) MULT(x6,x7) -> MULT(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) ->->Cycle: ->->-> Pairs: U171#(tt,A,B) -> PROD(A) U171#(tt,A,B) -> PROD(B) PROD(union(A,B)) -> U171#(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty The problem is decomposed in 7 subproblems. Problem 1.1: Reduction Pairs Processor: -> FAxioms: UNION(union(x6,x7),x8) = UNION(x6,union(x7,x8)) UNION(x6,x7) = UNION(x7,x6) -> Pairs: UNION(union(empty,X),x6) -> UNION(X,x6) UNION(union(X,empty),x6) -> UNION(X,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: union(empty,X) -> X union(X,empty) -> X -> SRules: UNION(union(x6,x7),x8) -> UNION(x6,x7) UNION(x6,union(x7,x8)) -> UNION(x7,x8) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = 0 [U101](X1,X2,X3) = 0 [U11](X1,X2) = 0 [U111](X1,X2,X3) = 0 [U12](X) = 0 [U121](X1,X2) = 0 [U131](X1,X2,X3) = 0 [U141](X1,X2,X3) = 0 [U151](X1,X2,X3) = 0 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = 0 [U22](X1,X2) = 0 [U23](X) = 0 [U31](X1,X2) = 0 [U32](X) = 0 [U41](X1,X2) = 0 [U42](X) = 0 [U51](X1,X2,X3) = 0 [U52](X1,X2) = 0 [U53](X) = 0 [U61](X1,X2,X3) = 0 [U62](X1,X2) = 0 [U63](X) = 0 [U71](X1,X2) = 0 [U72](X) = 0 [U81](X1,X2) = 0 [U82](X) = 0 [U91](X) = 0 [and](X1,X2) = 0 [isBag](X) = 0 [isBagKind](X) = 0 [isBin](X) = 0 [isBinKind](X) = 0 [mult](X1,X2) = 0 [plus](X1,X2) = 0 [prod](X) = 0 [sum](X) = 0 [union](X1,X2) = X1 + X2 [1](X) = 0 [empty] = 2 [singl](X) = 0 [tt] = 0 [z] = 0 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 0 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 2.X1 + 2.X2 Problem 1.1: SCC Processor: -> FAxioms: UNION(union(x6,x7),x8) = UNION(x6,union(x7,x8)) UNION(x6,x7) = UNION(x7,x6) -> Pairs: UNION(union(X,empty),x6) -> UNION(X,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: UNION(union(x6,x7),x8) -> UNION(x6,x7) UNION(x6,union(x7,x8)) -> UNION(x7,x8) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: UNION(union(X,empty),x6) -> UNION(X,x6) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) UNION(union(x6,x7),x8) -> UNION(x6,union(x7,x8)) UNION(x6,x7) -> UNION(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: UNION(union(x6,x7),x8) -> UNION(x6,x7) UNION(x6,union(x7,x8)) -> UNION(x7,x8) Problem 1.1: Reduction Pairs Processor: -> FAxioms: UNION(union(x6,x7),x8) = UNION(x6,union(x7,x8)) UNION(x6,x7) = UNION(x7,x6) -> Pairs: UNION(union(X,empty),x6) -> UNION(X,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: union(empty,X) -> X union(X,empty) -> X -> SRules: UNION(union(x6,x7),x8) -> UNION(x6,x7) UNION(x6,union(x7,x8)) -> UNION(x7,x8) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = 0 [U101](X1,X2,X3) = 0 [U11](X1,X2) = 0 [U111](X1,X2,X3) = 0 [U12](X) = 0 [U121](X1,X2) = 0 [U131](X1,X2,X3) = 0 [U141](X1,X2,X3) = 0 [U151](X1,X2,X3) = 0 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = 0 [U22](X1,X2) = 0 [U23](X) = 0 [U31](X1,X2) = 0 [U32](X) = 0 [U41](X1,X2) = 0 [U42](X) = 0 [U51](X1,X2,X3) = 0 [U52](X1,X2) = 0 [U53](X) = 0 [U61](X1,X2,X3) = 0 [U62](X1,X2) = 0 [U63](X) = 0 [U71](X1,X2) = 0 [U72](X) = 0 [U81](X1,X2) = 0 [U82](X) = 0 [U91](X) = 0 [and](X1,X2) = 0 [isBag](X) = 0 [isBagKind](X) = 0 [isBin](X) = 0 [isBinKind](X) = 0 [mult](X1,X2) = 0 [plus](X1,X2) = 0 [prod](X) = 0 [sum](X) = 0 [union](X1,X2) = X1 + X2 + 2 [1](X) = 0 [empty] = 2 [singl](X) = 0 [tt] = 0 [z] = 0 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 0 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 2.X1 + 2.X2 Problem 1.1: SCC Processor: -> FAxioms: UNION(union(x6,x7),x8) = UNION(x6,union(x7,x8)) UNION(x6,x7) = UNION(x7,x6) -> Pairs: Empty -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: UNION(union(x6,x7),x8) -> UNION(x6,x7) UNION(x6,union(x7,x8)) -> UNION(x7,x8) ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.2: Subterm Processor: -> FAxioms: Empty -> Pairs: ISBAGKIND(union(V1,V2)) -> ISBAGKIND(V1) ISBAGKIND(union(V1,V2)) -> ISBAGKIND(V2) ISBAGKIND(singl(V1)) -> ISBINKIND(V1) ISBINKIND(0(V1)) -> ISBINKIND(V1) ISBINKIND(mult(V1,V2)) -> ISBINKIND(V1) ISBINKIND(mult(V1,V2)) -> ISBINKIND(V2) ISBINKIND(plus(V1,V2)) -> ISBINKIND(V1) ISBINKIND(plus(V1,V2)) -> ISBINKIND(V2) ISBINKIND(prod(V1)) -> ISBAGKIND(V1) ISBINKIND(sum(V1)) -> ISBAGKIND(V1) ISBINKIND(1(V1)) -> ISBINKIND(V1) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Projection: pi(ISBAGKIND) = [1] pi(ISBINKIND) = [1] Problem 1.2: SCC Processor: -> FAxioms: Empty -> Pairs: Empty -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.3: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: U11#(tt,V1) -> ISBIN(V1) U21#(tt,V1,V2) -> U22#(isBag(V1),V2) U21#(tt,V1,V2) -> ISBAG(V1) U22#(tt,V2) -> ISBAG(V2) U31#(tt,V1) -> ISBIN(V1) U41#(tt,V1) -> ISBIN(V1) U51#(tt,V1,V2) -> U52#(isBin(V1),V2) U51#(tt,V1,V2) -> ISBIN(V1) U52#(tt,V2) -> ISBIN(V2) U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) U71#(tt,V1) -> ISBAG(V1) U81#(tt,V1) -> ISBAG(V1) ISBAG(union(V1,V2)) -> U21#(and(isBagKind(V1),isBagKind(V2)),V1,V2) ISBAG(singl(V1)) -> U11#(isBinKind(V1),V1) ISBIN(0(V1)) -> U31#(isBinKind(V1),V1) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(prod(V1)) -> U71#(isBagKind(V1),V1) ISBIN(sum(V1)) -> U81#(isBagKind(V1),V1) ISBIN(1(V1)) -> U41#(isBinKind(V1),V1) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: Empty -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = 2.X [U101](X1,X2,X3) = 0 [U11](X1,X2) = 2.X1 + 2.X2 [U111](X1,X2,X3) = 0 [U12](X) = X + 2 [U121](X1,X2) = 0 [U131](X1,X2,X3) = 0 [U141](X1,X2,X3) = 0 [U151](X1,X2,X3) = 0 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 [U22](X1,X2) = 2.X1 + X2 [U23](X) = X + 1 [U31](X1,X2) = 2 [U32](X) = 2 [U41](X1,X2) = X1 + 2.X2 + 2 [U42](X) = X + 2 [U51](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U52](X1,X2) = X1 + 2.X2 + 2 [U53](X) = X + 2 [U61](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U62](X1,X2) = X1 + 2.X2 + 2 [U63](X) = X + 1 [U71](X1,X2) = X1 + X2 + 2 [U72](X) = X + 2 [U81](X1,X2) = 2.X1 + 2.X2 [U82](X) = X + 2 [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = X + 2 [isBagKind](X) = 2 [isBin](X) = 2.X + 2 [isBinKind](X) = 2 [mult](X1,X2) = 2.X1 + 2.X2 + 2 [plus](X1,X2) = 2.X1 + 2.X2 + 2 [prod](X) = 2.X + 1 [sum](X) = 2.X + 2 [union](X1,X2) = 2.X1 + 2.X2 + 2 [1](X) = 2.X + 2 [empty] = 1 [singl](X) = 2.X + 2 [tt] = 2 [z] = 0 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 2.X1 + 2.X2 + 2 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U22#](X1,X2) = 2.X1 + 2.X2 + 2 [U23#](X) = 0 [U31#](X1,X2) = 2.X2 + 2 [U32#](X) = 0 [U41#](X1,X2) = 2.X2 + 2 [U42#](X) = 0 [U51#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U52#](X1,X2) = X1 + 2.X2 [U53#](X) = 0 [U61#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U62#](X1,X2) = X1 + 2.X2 + 2 [U63#](X) = 0 [U71#](X1,X2) = 2.X2 + 2 [U72#](X) = 0 [U81#](X1,X2) = 2.X2 + 2 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 2.X + 2 [ISBAGKIND](X) = 0 [ISBIN](X) = 2.X + 2 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 0 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.3: SCC Processor: -> FAxioms: Empty -> Pairs: U21#(tt,V1,V2) -> U22#(isBag(V1),V2) U21#(tt,V1,V2) -> ISBAG(V1) U22#(tt,V2) -> ISBAG(V2) U31#(tt,V1) -> ISBIN(V1) U41#(tt,V1) -> ISBIN(V1) U51#(tt,V1,V2) -> U52#(isBin(V1),V2) U51#(tt,V1,V2) -> ISBIN(V1) U52#(tt,V2) -> ISBIN(V2) U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) U71#(tt,V1) -> ISBAG(V1) U81#(tt,V1) -> ISBAG(V1) ISBAG(union(V1,V2)) -> U21#(and(isBagKind(V1),isBagKind(V2)),V1,V2) ISBAG(singl(V1)) -> U11#(isBinKind(V1),V1) ISBIN(0(V1)) -> U31#(isBinKind(V1),V1) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(prod(V1)) -> U71#(isBagKind(V1),V1) ISBIN(sum(V1)) -> U81#(isBagKind(V1),V1) ISBIN(1(V1)) -> U41#(isBinKind(V1),V1) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: U21#(tt,V1,V2) -> U22#(isBag(V1),V2) U21#(tt,V1,V2) -> ISBAG(V1) U22#(tt,V2) -> ISBAG(V2) ISBAG(union(V1,V2)) -> U21#(and(isBagKind(V1),isBagKind(V2)),V1,V2) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->->Cycle: ->->-> Pairs: U31#(tt,V1) -> ISBIN(V1) U41#(tt,V1) -> ISBIN(V1) U51#(tt,V1,V2) -> U52#(isBin(V1),V2) U51#(tt,V1,V2) -> ISBIN(V1) U52#(tt,V2) -> ISBIN(V2) U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) ISBIN(0(V1)) -> U31#(isBinKind(V1),V1) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(1(V1)) -> U41#(isBinKind(V1),V1) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty The problem is decomposed in 2 subproblems. Problem 1.3.1: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: U21#(tt,V1,V2) -> U22#(isBag(V1),V2) U21#(tt,V1,V2) -> ISBAG(V1) U22#(tt,V2) -> ISBAG(V2) ISBAG(union(V1,V2)) -> U21#(and(isBagKind(V1),isBagKind(V2)),V1,V2) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: Empty -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = X + 2 [U101](X1,X2,X3) = 0 [U11](X1,X2) = X1 + 2.X2 + 1 [U111](X1,X2,X3) = 0 [U12](X) = X [U121](X1,X2) = 0 [U131](X1,X2,X3) = 0 [U141](X1,X2,X3) = 0 [U151](X1,X2,X3) = 0 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = X1 + 2.X2 + X3 + 2 [U22](X1,X2) = X1 + 2 [U23](X) = 2 [U31](X1,X2) = X1 + 2 [U32](X) = 2 [U41](X1,X2) = X1 + 2.X2 + 2 [U42](X) = X [U51](X1,X2,X3) = 2.X1 + 2 [U52](X1,X2) = 2 [U53](X) = 2 [U61](X1,X2,X3) = 2.X1 + 2.X2 + 2 [U62](X1,X2) = X1 + 2 [U63](X) = 2 [U71](X1,X2) = X1 + 2.X2 + 2 [U72](X) = X + 1 [U81](X1,X2) = 2.X2 + 2 [U82](X) = X [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = 2.X + 2 [isBagKind](X) = 2.X + 2 [isBin](X) = 2.X + 2 [isBinKind](X) = 2.X + 2 [mult](X1,X2) = 2.X2 + 2 [plus](X1,X2) = 2.X1 + 2.X2 + 2 [prod](X) = 2.X + 2 [sum](X) = 2.X [union](X1,X2) = X1 + 2.X2 + 2 [1](X) = 2.X + 2 [empty] = 0 [singl](X) = 2.X + 2 [tt] = 2 [z] = 1 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = X1 + 2.X2 + 2.X3 [U22#](X1,X2) = 2.X2 + 1 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 2.X + 1 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 0 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.3.1: SCC Processor: -> FAxioms: Empty -> Pairs: U21#(tt,V1,V2) -> ISBAG(V1) U22#(tt,V2) -> ISBAG(V2) ISBAG(union(V1,V2)) -> U21#(and(isBagKind(V1),isBagKind(V2)),V1,V2) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: U21#(tt,V1,V2) -> ISBAG(V1) ISBAG(union(V1,V2)) -> U21#(and(isBagKind(V1),isBagKind(V2)),V1,V2) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty Problem 1.3.1: Subterm Processor: -> FAxioms: Empty -> Pairs: U21#(tt,V1,V2) -> ISBAG(V1) ISBAG(union(V1,V2)) -> U21#(and(isBagKind(V1),isBagKind(V2)),V1,V2) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Projection: pi(U21#) = [2] pi(ISBAG) = [1] Problem 1.3.1: SCC Processor: -> FAxioms: Empty -> Pairs: U21#(tt,V1,V2) -> ISBAG(V1) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.3.2: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: U31#(tt,V1) -> ISBIN(V1) U41#(tt,V1) -> ISBIN(V1) U51#(tt,V1,V2) -> U52#(isBin(V1),V2) U51#(tt,V1,V2) -> ISBIN(V1) U52#(tt,V2) -> ISBIN(V2) U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) ISBIN(0(V1)) -> U31#(isBinKind(V1),V1) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(1(V1)) -> U41#(isBinKind(V1),V1) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: Empty -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = 2.X + 1 [U101](X1,X2,X3) = 0 [U11](X1,X2) = 2 [U111](X1,X2,X3) = 0 [U12](X) = 2 [U121](X1,X2) = 0 [U131](X1,X2,X3) = 0 [U141](X1,X2,X3) = 0 [U151](X1,X2,X3) = 0 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = 2 [U22](X1,X2) = 2 [U23](X) = X [U31](X1,X2) = X1 + 2.X2 [U32](X) = X + 2 [U41](X1,X2) = 2.X1 [U42](X) = 2 [U51](X1,X2,X3) = 2.X1 + 2 [U52](X1,X2) = 2 [U53](X) = 2 [U61](X1,X2,X3) = 2.X2 + X3 + 2 [U62](X1,X2) = X1 + 2 [U63](X) = 2 [U71](X1,X2) = X1 + 2.X2 + 1 [U72](X) = X [U81](X1,X2) = 2.X1 + 2 [U82](X) = X + 2 [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = 2 [isBagKind](X) = 2.X + 1 [isBin](X) = 2.X [isBinKind](X) = 2.X + 1 [mult](X1,X2) = 2.X1 + 2.X2 + 2 [plus](X1,X2) = X1 + 2.X2 + 2 [prod](X) = 2.X + 2 [sum](X) = 2.X + 2 [union](X1,X2) = 2.X1 + 2.X2 [1](X) = 2.X + 2 [empty] = 2 [singl](X) = X + 1 [tt] = 2 [z] = 2 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 2.X2 + 2 [U32#](X) = 0 [U41#](X1,X2) = X1 + 2.X2 + 1 [U42#](X) = 0 [U51#](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 [U52#](X1,X2) = X1 + 2.X2 + 1 [U53#](X) = 0 [U61#](X1,X2,X3) = 2.X2 + 2.X3 + 2 [U62#](X1,X2) = X1 + 2.X2 + 2 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 2.X + 1 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 0 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.3.2: SCC Processor: -> FAxioms: Empty -> Pairs: U41#(tt,V1) -> ISBIN(V1) U51#(tt,V1,V2) -> U52#(isBin(V1),V2) U51#(tt,V1,V2) -> ISBIN(V1) U52#(tt,V2) -> ISBIN(V2) U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) ISBIN(0(V1)) -> U31#(isBinKind(V1),V1) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(1(V1)) -> U41#(isBinKind(V1),V1) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: U41#(tt,V1) -> ISBIN(V1) U51#(tt,V1,V2) -> U52#(isBin(V1),V2) U51#(tt,V1,V2) -> ISBIN(V1) U52#(tt,V2) -> ISBIN(V2) U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(1(V1)) -> U41#(isBinKind(V1),V1) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty Problem 1.3.2: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: U41#(tt,V1) -> ISBIN(V1) U51#(tt,V1,V2) -> U52#(isBin(V1),V2) U51#(tt,V1,V2) -> ISBIN(V1) U52#(tt,V2) -> ISBIN(V2) U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(1(V1)) -> U41#(isBinKind(V1),V1) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: Empty -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = 2.X + 2 [U101](X1,X2,X3) = 0 [U11](X1,X2) = X1 + 2.X2 + 2 [U111](X1,X2,X3) = 0 [U12](X) = 2 [U121](X1,X2) = 0 [U131](X1,X2,X3) = 0 [U141](X1,X2,X3) = 0 [U151](X1,X2,X3) = 0 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = 2.X1 [U22](X1,X2) = 2 [U23](X) = 2 [U31](X1,X2) = X1 + 2 [U32](X) = 2 [U41](X1,X2) = 2.X1 + X2 [U42](X) = 2 [U51](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 [U52](X1,X2) = X1 + 2.X2 [U53](X) = X [U61](X1,X2,X3) = 2.X2 + 2.X3 + 2 [U62](X1,X2) = X2 + 2 [U63](X) = 2 [U71](X1,X2) = X1 + 2 [U72](X) = 2 [U81](X1,X2) = X1 + 2.X2 + 2 [U82](X) = X [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = 2.X + 2 [isBagKind](X) = 2.X + 2 [isBin](X) = 2.X + 2 [isBinKind](X) = X + 2 [mult](X1,X2) = 2.X1 + 2.X2 + 2 [plus](X1,X2) = X1 + 2.X2 + 2 [prod](X) = 2.X + 1 [sum](X) = 2.X + 2 [union](X1,X2) = 2.X2 + 1 [1](X) = 2.X + 2 [empty] = 2 [singl](X) = 2.X + 2 [tt] = 2 [z] = 1 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 2.X1 + 2.X2 + 2 [U42#](X) = 0 [U51#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U52#](X1,X2) = X1 + 2.X2 + 2 [U53#](X) = 0 [U61#](X1,X2,X3) = 2.X2 + 2.X3 + 2 [U62#](X1,X2) = 2.X2 + 2 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 2.X + 2 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 0 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.3.2: SCC Processor: -> FAxioms: Empty -> Pairs: U51#(tt,V1,V2) -> U52#(isBin(V1),V2) U51#(tt,V1,V2) -> ISBIN(V1) U52#(tt,V2) -> ISBIN(V2) U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(1(V1)) -> U41#(isBinKind(V1),V1) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: U51#(tt,V1,V2) -> U52#(isBin(V1),V2) U51#(tt,V1,V2) -> ISBIN(V1) U52#(tt,V2) -> ISBIN(V2) U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty Problem 1.3.2: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: U51#(tt,V1,V2) -> U52#(isBin(V1),V2) U51#(tt,V1,V2) -> ISBIN(V1) U52#(tt,V2) -> ISBIN(V2) U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: Empty -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = 2.X + 2 [U101](X1,X2,X3) = 0 [U11](X1,X2) = X1 + 2.X2 + 2 [U111](X1,X2,X3) = 0 [U12](X) = X + 2 [U121](X1,X2) = 0 [U131](X1,X2,X3) = 0 [U141](X1,X2,X3) = 0 [U151](X1,X2,X3) = 0 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = 2.X3 + 2 [U22](X1,X2) = 2.X2 + 2 [U23](X) = 2 [U31](X1,X2) = 2.X1 + 2 [U32](X) = 2 [U41](X1,X2) = X1 + 2 [U42](X) = 2 [U51](X1,X2,X3) = 2.X1 + 2.X2 + 2 [U52](X1,X2) = 2.X1 + 2 [U53](X) = 2 [U61](X1,X2,X3) = 2.X1 + 2.X2 + 2 [U62](X1,X2) = 2.X1 + 2 [U63](X) = 2 [U71](X1,X2) = X1 + 2 [U72](X) = 2 [U81](X1,X2) = X1 [U82](X) = 2 [U91](X) = 0 [and](X1,X2) = X2 + 1 [isBag](X) = 2.X + 2 [isBagKind](X) = 2.X + 2 [isBin](X) = X + 2 [isBinKind](X) = X [mult](X1,X2) = 2.X1 + 2.X2 + 2 [plus](X1,X2) = 2.X1 + 2.X2 + 2 [prod](X) = 2.X + 2 [sum](X) = 2.X + 2 [union](X1,X2) = 2.X2 + 2 [1](X) = X [empty] = 2 [singl](X) = 2.X + 2 [tt] = 2 [z] = 2 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U52#](X1,X2) = 2.X1 + 2.X2 + 1 [U53#](X) = 0 [U61#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 [U62#](X1,X2) = X1 + 2.X2 + 2 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 2.X + 2 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 0 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.3.2: SCC Processor: -> FAxioms: Empty -> Pairs: U51#(tt,V1,V2) -> ISBIN(V1) U52#(tt,V2) -> ISBIN(V2) U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: U51#(tt,V1,V2) -> ISBIN(V1) U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty Problem 1.3.2: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: U51#(tt,V1,V2) -> ISBIN(V1) U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: Empty -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = 2.X + 2 [U101](X1,X2,X3) = 0 [U11](X1,X2) = 2.X1 + 2.X2 + 2 [U111](X1,X2,X3) = 0 [U12](X) = X [U121](X1,X2) = 0 [U131](X1,X2,X3) = 0 [U141](X1,X2,X3) = 0 [U151](X1,X2,X3) = 0 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = X1 + X3 + 2 [U22](X1,X2) = X2 + 2 [U23](X) = 2 [U31](X1,X2) = 2.X1 + 2.X2 + 2 [U32](X) = 2 [U41](X1,X2) = 2.X1 + X2 + 2 [U42](X) = 2 [U51](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U52](X1,X2) = 2.X2 + 2 [U53](X) = 2 [U61](X1,X2,X3) = 2.X1 + 2.X3 + 2 [U62](X1,X2) = 2.X2 + 2 [U63](X) = X [U71](X1,X2) = 2.X2 + 2 [U72](X) = X + 1 [U81](X1,X2) = 2.X1 + 2 [U82](X) = 1 [U91](X) = 0 [and](X1,X2) = X2 + 1 [isBag](X) = 2.X + 1 [isBagKind](X) = 2.X + 1 [isBin](X) = 2.X + 2 [isBinKind](X) = X + 1 [mult](X1,X2) = 2.X1 + 2.X2 + 2 [plus](X1,X2) = X1 + 2.X2 + 2 [prod](X) = 2.X + 2 [sum](X) = 2.X + 2 [union](X1,X2) = 2.X2 + 2 [1](X) = 2.X + 2 [empty] = 2 [singl](X) = 2.X + 2 [tt] = 0 [z] = 2 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 2.X2 + 2 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 [U62#](X1,X2) = 2.X2 + 2 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 2.X + 1 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 0 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.3.2: SCC Processor: -> FAxioms: Empty -> Pairs: U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) ISBIN(mult(V1,V2)) -> U51#(and(isBinKind(V1),isBinKind(V2)),V1,V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty Problem 1.3.2: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: U61#(tt,V1,V2) -> U62#(isBin(V1),V2) U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: Empty -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = 2.X + 2 [U101](X1,X2,X3) = 0 [U11](X1,X2) = 2.X1 + 2 [U111](X1,X2,X3) = 0 [U12](X) = 2 [U121](X1,X2) = 0 [U131](X1,X2,X3) = 0 [U141](X1,X2,X3) = 0 [U151](X1,X2,X3) = 0 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 [U22](X1,X2) = X1 + 2.X2 + 2 [U23](X) = X + 2 [U31](X1,X2) = X1 + 2.X2 + 2 [U32](X) = X + 2 [U41](X1,X2) = X1 + 2.X2 + 2 [U42](X) = X + 2 [U51](X1,X2,X3) = 2.X2 + 2.X3 + 2 [U52](X1,X2) = 2.X2 + 2 [U53](X) = 2 [U61](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 1 [U62](X1,X2) = X1 + 2.X2 + 2 [U63](X) = X + 2 [U71](X1,X2) = 2 [U72](X) = 2 [U81](X1,X2) = 2.X1 + 2.X2 [U82](X) = X + 2 [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = 2.X + 2 [isBagKind](X) = 2 [isBin](X) = 2.X [isBinKind](X) = 2 [mult](X1,X2) = 2.X1 + X2 + 2 [plus](X1,X2) = 2.X1 + 2.X2 + 2 [prod](X) = 2 [sum](X) = 2.X + 2 [union](X1,X2) = X1 + 2.X2 + 1 [1](X) = 2.X + 2 [empty] = 1 [singl](X) = 2 [tt] = 2 [z] = 2 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U62#](X1,X2) = X1 + 2.X2 + 2 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 2.X + 2 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 0 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.3.2: SCC Processor: -> FAxioms: Empty -> Pairs: U61#(tt,V1,V2) -> ISBIN(V1) U62#(tt,V2) -> ISBIN(V2) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: U61#(tt,V1,V2) -> ISBIN(V1) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty Problem 1.3.2: Subterm Processor: -> FAxioms: Empty -> Pairs: U61#(tt,V1,V2) -> ISBIN(V1) ISBIN(plus(V1,V2)) -> U61#(and(isBinKind(V1),isBinKind(V2)),V1,V2) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Projection: pi(U61#) = [2] pi(ISBIN) = [1] Problem 1.3.2: SCC Processor: -> FAxioms: Empty -> Pairs: U61#(tt,V1,V2) -> ISBIN(V1) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.4: Reduction Pairs Processor: -> FAxioms: PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) -> Pairs: U131#(tt,X,Y) -> PLUS(X,Y) U141#(tt,X,Y) -> PLUS(X,Y) U151#(tt,X,Y) -> PLUS(plus(X,Y),1(z)) U151#(tt,X,Y) -> PLUS(X,Y) PLUS(0(X),0(Y)) -> U131#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(0(X),1(Y)) -> U141#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),0(Y)),x6) -> U131#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),0(Y)),x6) -> PLUS(U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(0(X),1(Y)),x6) -> U141#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) PLUS(1(X),1(Y)) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: 0(z) -> z U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = X + 1 [U101](X1,X2,X3) = 0 [U11](X1,X2) = 2.X2 + 2 [U111](X1,X2,X3) = 0 [U12](X) = 2 [U121](X1,X2) = X2 [U131](X1,X2,X3) = X2 + X3 + 2 [U141](X1,X2,X3) = X2 + X3 + 2 [U151](X1,X2,X3) = X2 + X3 + 2 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = 2 [U22](X1,X2) = 2 [U23](X) = 2 [U31](X1,X2) = 2.X1 + 2.X2 [U32](X) = 2 [U41](X1,X2) = X1 + 2.X2 + 2 [U42](X) = X + 2 [U51](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U52](X1,X2) = X1 + 2.X2 + 2 [U53](X) = X + 1 [U61](X1,X2,X3) = 2.X2 + 2.X3 + 2 [U62](X1,X2) = 2.X2 + 2 [U63](X) = 2 [U71](X1,X2) = 2.X1 + 2 [U72](X) = 2 [U81](X1,X2) = 2.X1 + 1 [U82](X) = 2 [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = 2.X + 2 [isBagKind](X) = 2 [isBin](X) = 2.X + 2 [isBinKind](X) = 2 [mult](X1,X2) = 2.X1 + 2.X2 + 2 [plus](X1,X2) = X1 + X2 [prod](X) = 2.X + 2 [sum](X) = 2.X + 2 [union](X1,X2) = 2 [1](X) = X + 1 [empty] = 1 [singl](X) = 2.X + 2 [tt] = 2 [z] = 0 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 1 [U141#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U151#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 2.X1 + 2.X2 + 2 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.4: SCC Processor: -> FAxioms: PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) -> Pairs: U141#(tt,X,Y) -> PLUS(X,Y) U151#(tt,X,Y) -> PLUS(plus(X,Y),1(z)) U151#(tt,X,Y) -> PLUS(X,Y) PLUS(0(X),0(Y)) -> U131#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(0(X),1(Y)) -> U141#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),0(Y)),x6) -> U131#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),0(Y)),x6) -> PLUS(U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(0(X),1(Y)),x6) -> U141#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) PLUS(1(X),1(Y)) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: U141#(tt,X,Y) -> PLUS(X,Y) U151#(tt,X,Y) -> PLUS(plus(X,Y),1(z)) U151#(tt,X,Y) -> PLUS(X,Y) PLUS(0(X),1(Y)) -> U141#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),0(Y)),x6) -> PLUS(U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(0(X),1(Y)),x6) -> U141#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) PLUS(1(X),1(Y)) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) PLUS(plus(x6,x7),x8) -> PLUS(x6,plus(x7,x8)) PLUS(x6,x7) -> PLUS(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) Problem 1.4: Reduction Pairs Processor: -> FAxioms: PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) -> Pairs: U141#(tt,X,Y) -> PLUS(X,Y) U151#(tt,X,Y) -> PLUS(plus(X,Y),1(z)) U151#(tt,X,Y) -> PLUS(X,Y) PLUS(0(X),1(Y)) -> U141#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),0(Y)),x6) -> PLUS(U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(0(X),1(Y)),x6) -> U141#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) PLUS(1(X),1(Y)) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: 0(z) -> z U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = X [U101](X1,X2,X3) = 0 [U11](X1,X2) = 2.X1 + 2 [U111](X1,X2,X3) = 0 [U12](X) = 2.X + 2 [U121](X1,X2) = X2 + 1 [U131](X1,X2,X3) = X2 + X3 [U141](X1,X2,X3) = X2 + X3 + 1 [U151](X1,X2,X3) = X2 + X3 + 2 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = 2.X1 + 2.X2 [U22](X1,X2) = X1 + 2 [U23](X) = 2 [U31](X1,X2) = 2 [U32](X) = X [U41](X1,X2) = 2 [U42](X) = 2 [U51](X1,X2,X3) = 2 [U52](X1,X2) = X1 [U53](X) = 2 [U61](X1,X2,X3) = 2 [U62](X1,X2) = 2 [U63](X) = X [U71](X1,X2) = 2 [U72](X) = 2 [U81](X1,X2) = 2 [U82](X) = 2 [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = 2.X + 1 [isBagKind](X) = 2.X [isBin](X) = 2 [isBinKind](X) = 2.X [mult](X1,X2) = 2.X2 + 2 [plus](X1,X2) = X1 + X2 [prod](X) = 2.X [sum](X) = 2.X [union](X1,X2) = X1 + 2.X2 [1](X) = X + 1 [empty] = 2 [singl](X) = 2.X + 2 [tt] = 2 [z] = 1 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = X2 + X3 + 1 [U151#](X1,X2,X3) = X2 + X3 + 2 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = X1 + X2 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.4: SCC Processor: -> FAxioms: PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) -> Pairs: U151#(tt,X,Y) -> PLUS(plus(X,Y),1(z)) U151#(tt,X,Y) -> PLUS(X,Y) PLUS(0(X),1(Y)) -> U141#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),0(Y)),x6) -> PLUS(U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(0(X),1(Y)),x6) -> U141#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) PLUS(1(X),1(Y)) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: U151#(tt,X,Y) -> PLUS(plus(X,Y),1(z)) U151#(tt,X,Y) -> PLUS(X,Y) PLUS(plus(0(X),0(Y)),x6) -> PLUS(U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) PLUS(1(X),1(Y)) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) PLUS(plus(x6,x7),x8) -> PLUS(x6,plus(x7,x8)) PLUS(x6,x7) -> PLUS(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) Problem 1.4: Reduction Pairs Processor: -> FAxioms: PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) -> Pairs: U151#(tt,X,Y) -> PLUS(plus(X,Y),1(z)) U151#(tt,X,Y) -> PLUS(X,Y) PLUS(plus(0(X),0(Y)),x6) -> PLUS(U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) PLUS(1(X),1(Y)) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: 0(z) -> z U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = X + 2 [U101](X1,X2,X3) = 0 [U11](X1,X2) = X1 [U111](X1,X2,X3) = 0 [U12](X) = 2 [U121](X1,X2) = X2 [U131](X1,X2,X3) = X2 + X3 + 2 [U141](X1,X2,X3) = X2 + X3 + 2 [U151](X1,X2,X3) = 2.X1 + X2 + X3 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = X1 [U22](X1,X2) = 2 [U23](X) = X [U31](X1,X2) = 2.X1 + X2 [U32](X) = 2 [U41](X1,X2) = 2.X1 + 2.X2 [U42](X) = 2 [U51](X1,X2,X3) = X1 + 2 [U52](X1,X2) = 2 [U53](X) = 2 [U61](X1,X2,X3) = 2.X2 + 2.X3 + 2 [U62](X1,X2) = 2.X2 + 2 [U63](X) = 2 [U71](X1,X2) = 2.X1 + 2.X2 + 2 [U72](X) = 2 [U81](X1,X2) = 2.X1 + 2 [U82](X) = 2.X + 2 [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = 2 [isBagKind](X) = 2 [isBin](X) = 2.X + 2 [isBinKind](X) = 2 [mult](X1,X2) = 2 [plus](X1,X2) = X1 + X2 [prod](X) = 2.X + 2 [sum](X) = 2.X + 2 [union](X1,X2) = X1 + X2 + 2 [1](X) = X + 2 [empty] = 1 [singl](X) = 2.X [tt] = 2 [z] = 0 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 2.X1 + 2.X2 + 1 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.4: SCC Processor: -> FAxioms: PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) -> Pairs: U151#(tt,X,Y) -> PLUS(X,Y) PLUS(plus(0(X),0(Y)),x6) -> PLUS(U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) PLUS(1(X),1(Y)) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: U151#(tt,X,Y) -> PLUS(X,Y) PLUS(plus(0(X),0(Y)),x6) -> PLUS(U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) PLUS(1(X),1(Y)) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) PLUS(plus(x6,x7),x8) -> PLUS(x6,plus(x7,x8)) PLUS(x6,x7) -> PLUS(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) Problem 1.4: Reduction Pairs Processor: -> FAxioms: PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) -> Pairs: U151#(tt,X,Y) -> PLUS(X,Y) PLUS(plus(0(X),0(Y)),x6) -> PLUS(U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) PLUS(1(X),1(Y)) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: 0(z) -> z U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = X + 1 [U101](X1,X2,X3) = 0 [U11](X1,X2) = 2.X1 [U111](X1,X2,X3) = 0 [U12](X) = 2 [U121](X1,X2) = X2 + 1 [U131](X1,X2,X3) = X1 + X2 + X3 + 1 [U141](X1,X2,X3) = 2.X1 + X2 + X3 [U151](X1,X2,X3) = 2.X1 + X2 + X3 + 1 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = X1 + X3 + 2 [U22](X1,X2) = 2 [U23](X) = 2 [U31](X1,X2) = X1 + 2.X2 + 2 [U32](X) = X + 2 [U41](X1,X2) = 2.X1 + 2.X2 + 2 [U42](X) = X + 2 [U51](X1,X2,X3) = 2.X2 + 2 [U52](X1,X2) = X1 [U53](X) = 2 [U61](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 1 [U62](X1,X2) = X1 + 2.X2 + 1 [U63](X) = 2 [U71](X1,X2) = 2.X1 + 1 [U72](X) = 2 [U81](X1,X2) = 2.X1 + 2.X2 + 2 [U82](X) = 2.X + 2 [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = X + 2 [isBagKind](X) = 2 [isBin](X) = 2.X + 2 [isBinKind](X) = 2 [mult](X1,X2) = 2.X1 + 1 [plus](X1,X2) = X1 + X2 + 1 [prod](X) = 2 [sum](X) = X + 2 [union](X1,X2) = 2.X2 + 2 [1](X) = X + 2 [empty] = 2 [singl](X) = X + 2 [tt] = 2 [z] = 0 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 1 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 2.X1 + 2.X2 + 2 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.4: SCC Processor: -> FAxioms: PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) -> Pairs: PLUS(plus(0(X),0(Y)),x6) -> PLUS(U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) PLUS(1(X),1(Y)) -> U151#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: PLUS(plus(0(X),0(Y)),x6) -> PLUS(U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) PLUS(plus(x6,x7),x8) -> PLUS(x6,plus(x7,x8)) PLUS(x6,x7) -> PLUS(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) Problem 1.4: Reduction Pairs Processor: -> FAxioms: PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) -> Pairs: PLUS(plus(0(X),0(Y)),x6) -> PLUS(U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: 0(z) -> z U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = X + 1 [U101](X1,X2,X3) = 0 [U11](X1,X2) = X1 + 1 [U111](X1,X2,X3) = 0 [U12](X) = X + 1 [U121](X1,X2) = X2 [U131](X1,X2,X3) = X2 + X3 + 2 [U141](X1,X2,X3) = X1 + X2 + X3 + 2 [U151](X1,X2,X3) = 2.X1 + X2 + X3 + 1 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = 2.X2 + 2.X3 + 2 [U22](X1,X2) = 2.X1 + 2.X2 [U23](X) = 2.X + 2 [U31](X1,X2) = 2 [U32](X) = X [U41](X1,X2) = 2 [U42](X) = X [U51](X1,X2,X3) = X1 [U52](X1,X2) = X1 [U53](X) = 2 [U61](X1,X2,X3) = 2 [U62](X1,X2) = 2 [U63](X) = 2 [U71](X1,X2) = 2 [U72](X) = 2 [U81](X1,X2) = X1 [U82](X) = 2 [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = X + 1 [isBagKind](X) = 2 [isBin](X) = 2 [isBinKind](X) = 2 [mult](X1,X2) = X2 + 2 [plus](X1,X2) = X1 + X2 + 1 [prod](X) = X + 2 [sum](X) = 2 [union](X1,X2) = 2.X1 + 2.X2 + 1 [1](X) = X + 2 [empty] = 1 [singl](X) = X + 2 [tt] = 2 [z] = 0 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 2.X1 + 2.X2 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.4: SCC Processor: -> FAxioms: PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) -> Pairs: PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) PLUS(plus(x6,x7),x8) -> PLUS(x6,plus(x7,x8)) PLUS(x6,x7) -> PLUS(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) Problem 1.4: Reduction Pairs Processor: -> FAxioms: PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) -> Pairs: PLUS(plus(0(X),1(Y)),x6) -> PLUS(U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: 0(z) -> z U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = X + 1 [U101](X1,X2,X3) = 0 [U11](X1,X2) = 2.X1 [U111](X1,X2,X3) = 0 [U12](X) = 2 [U121](X1,X2) = X2 [U131](X1,X2,X3) = X2 + X3 + 2 [U141](X1,X2,X3) = X2 + X3 + 1 [U151](X1,X2,X3) = X2 + X3 + 2 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = 2.X2 + 2.X3 + 2 [U22](X1,X2) = X1 + 2.X2 + 2 [U23](X) = 2 [U31](X1,X2) = X1 + 2 [U32](X) = 2 [U41](X1,X2) = X1 [U42](X) = 2 [U51](X1,X2,X3) = X1 + 2.X3 [U52](X1,X2) = 2.X2 + 2 [U53](X) = 2 [U61](X1,X2,X3) = 2.X2 + 2.X3 + 2 [U62](X1,X2) = X1 + 2.X2 [U63](X) = 2 [U71](X1,X2) = 2.X1 + 2.X2 + 2 [U72](X) = X + 2 [U81](X1,X2) = 2.X2 + 2 [U82](X) = X + 1 [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = 2.X [isBagKind](X) = X [isBin](X) = 2.X + 2 [isBinKind](X) = 2.X + 2 [mult](X1,X2) = 2.X2 + 1 [plus](X1,X2) = X1 + X2 [prod](X) = 2.X + 2 [sum](X) = 2.X + 2 [union](X1,X2) = 2.X1 + 2.X2 + 2 [1](X) = X + 1 [empty] = 2 [singl](X) = 2.X + 2 [tt] = 2 [z] = 0 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 2.X1 + 2.X2 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.4: SCC Processor: -> FAxioms: PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) -> Pairs: PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) PLUS(plus(x6,x7),x8) -> PLUS(x6,plus(x7,x8)) PLUS(x6,x7) -> PLUS(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) Problem 1.4: Reduction Pairs Processor: -> FAxioms: PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) -> Pairs: PLUS(plus(1(X),1(Y)),x6) -> PLUS(U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: 0(z) -> z U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = 1 [U101](X1,X2,X3) = 0 [U11](X1,X2) = 2.X1 + 2.X2 + 2 [U111](X1,X2,X3) = 0 [U12](X) = X + 1 [U121](X1,X2) = X2 + 2 [U131](X1,X2,X3) = 1 [U141](X1,X2,X3) = 2 [U151](X1,X2,X3) = X1 + 2 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = 2.X1 + 2.X3 + 2 [U22](X1,X2) = X2 + 2 [U23](X) = 2 [U31](X1,X2) = 2.X1 + 1 [U32](X) = X [U41](X1,X2) = 2.X1 + 1 [U42](X) = 1 [U51](X1,X2,X3) = 2.X1 + 1 [U52](X1,X2) = X1 [U53](X) = 0 [U61](X1,X2,X3) = 2.X1 + 1 [U62](X1,X2) = 1 [U63](X) = 1 [U71](X1,X2) = 2.X1 + 1 [U72](X) = 1 [U81](X1,X2) = 2.X1 + 1 [U82](X) = 0 [U91](X) = 0 [and](X1,X2) = X1 + 2.X2 [isBag](X) = 2.X + 2 [isBagKind](X) = 0 [isBin](X) = 1 [isBinKind](X) = 0 [mult](X1,X2) = 2.X1 + 2.X2 [plus](X1,X2) = X1 + X2 + 2 [prod](X) = 2.X + 2 [sum](X) = 2.X + 2 [union](X1,X2) = X2 + 2 [1](X) = 2 [empty] = 2 [singl](X) = 2.X + 2 [tt] = 0 [z] = 0 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = X1 + X2 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.4: SCC Processor: -> FAxioms: PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) -> Pairs: PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) PLUS(plus(x6,x7),x8) -> PLUS(x6,plus(x7,x8)) PLUS(x6,x7) -> PLUS(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) Problem 1.4: Reduction Pairs Processor: -> FAxioms: PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) -> Pairs: PLUS(plus(z,X),x6) -> PLUS(U121(and(isBin(X),isBinKind(X)),X),x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: 0(z) -> z U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = 2 [U101](X1,X2,X3) = 0 [U11](X1,X2) = 2 [U111](X1,X2,X3) = 0 [U12](X) = 2 [U121](X1,X2) = X2 + 1 [U131](X1,X2,X3) = 2 [U141](X1,X2,X3) = 2.X1 + 2 [U151](X1,X2,X3) = 2 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = X1 [U22](X1,X2) = 2 [U23](X) = 2 [U31](X1,X2) = X1 + 2 [U32](X) = 2 [U41](X1,X2) = X1 [U42](X) = 2 [U51](X1,X2,X3) = 2.X1 [U52](X1,X2) = 2 [U53](X) = 2 [U61](X1,X2,X3) = X1 + X2 + X3 + 2 [U62](X1,X2) = X2 + 2 [U63](X) = 2 [U71](X1,X2) = X1 + 1 [U72](X) = 2 [U81](X1,X2) = 2 [U82](X) = X [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = 2 [isBagKind](X) = 2 [isBin](X) = X + 2 [isBinKind](X) = 2 [mult](X1,X2) = 2 [plus](X1,X2) = X1 + X2 + 2 [prod](X) = 1 [sum](X) = 0 [union](X1,X2) = 2.X1 + X2 [1](X) = 2 [empty] = 2 [singl](X) = 2.X [tt] = 2 [z] = 1 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 2.X1 + 2.X2 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.4: SCC Processor: -> FAxioms: PLUS(plus(x6,x7),x8) = PLUS(x6,plus(x7,x8)) PLUS(x6,x7) = PLUS(x7,x6) -> Pairs: Empty -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: PLUS(plus(x6,x7),x8) -> PLUS(x6,x7) PLUS(x6,plus(x7,x8)) -> PLUS(x7,x8) ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.5: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: U191#(tt,A,B) -> SUM(A) U191#(tt,A,B) -> SUM(B) SUM(union(A,B)) -> U191#(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: Empty -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = 1 [U101](X1,X2,X3) = 0 [U11](X1,X2) = X1 + 2 [U111](X1,X2,X3) = 0 [U12](X) = 2 [U121](X1,X2) = 0 [U131](X1,X2,X3) = 0 [U141](X1,X2,X3) = 0 [U151](X1,X2,X3) = 0 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 [U22](X1,X2) = X1 + 2.X2 [U23](X) = X + 1 [U31](X1,X2) = X1 [U32](X) = 2 [U41](X1,X2) = 2 [U42](X) = 2 [U51](X1,X2,X3) = 2.X3 + 2 [U52](X1,X2) = 2.X2 + 2 [U53](X) = 2 [U61](X1,X2,X3) = 2.X2 + 2.X3 + 2 [U62](X1,X2) = 2.X1 + 2.X2 [U63](X) = 2.X + 2 [U71](X1,X2) = 2.X2 [U72](X) = X [U81](X1,X2) = X1 + 1 [U82](X) = 2 [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = 2.X [isBagKind](X) = 2 [isBin](X) = X + 1 [isBinKind](X) = 2 [mult](X1,X2) = X1 + 2.X2 + 2 [plus](X1,X2) = 2.X1 + 2.X2 + 2 [prod](X) = 2.X [sum](X) = 2 [union](X1,X2) = 2.X1 + 2.X2 + 2 [1](X) = 2.X + 1 [empty] = 1 [singl](X) = 2.X + 2 [tt] = 2 [z] = 2 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 0 [PROD](X) = 0 [SUM](X) = 2.X + 2 [UNION](X1,X2) = 0 Problem 1.5: SCC Processor: -> FAxioms: Empty -> Pairs: U191#(tt,A,B) -> SUM(B) SUM(union(A,B)) -> U191#(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: U191#(tt,A,B) -> SUM(B) SUM(union(A,B)) -> U191#(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty Problem 1.5: Subterm Processor: -> FAxioms: Empty -> Pairs: U191#(tt,A,B) -> SUM(B) SUM(union(A,B)) -> U191#(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Projection: pi(U191#) = [3] pi(SUM) = [1] Problem 1.5: SCC Processor: -> FAxioms: Empty -> Pairs: U191#(tt,A,B) -> SUM(B) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.6: Reduction Pairs Processor: -> FAxioms: MULT(mult(x6,x7),x8) = MULT(x6,mult(x7,x8)) MULT(x6,x7) = MULT(x7,x6) -> Pairs: U101#(tt,X,Y) -> MULT(X,Y) U111#(tt,X,Y) -> MULT(X,Y) MULT(0(X),Y) -> U101#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(mult(0(X),Y),x6) -> U101#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(mult(0(X),Y),x6) -> MULT(U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(1(X),Y),x6) -> U111#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(mult(1(X),Y),x6) -> MULT(U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(z,X),x6) -> MULT(U91(and(isBin(X),isBinKind(X))),x6) MULT(1(X),Y) -> U111#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) ->Interpretation type: Simple mixed ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 1 ->Interpretation: [0](X) = X + 1 [U101](X1,X2,X3) = X1.X2 + X1.X3 + X2.X3 + X1 + X3 [U11](X1,X2) = X1.X2 + X1 + X2 + 1 [U111](X1,X2,X3) = X1.X2.X3 + X1.X2 + X1.X3 + X3 + 1 [U12](X) = 1 [U121](X1,X2) = X1.X2 [U131](X1,X2,X3) = X1.X2 + X1 + X3 + 1 [U141](X1,X2,X3) = X1 + X2 + X3 [U151](X1,X2,X3) = X1.X3 + X1 + X2 + 1 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = X1.X2.X3 + X1.X2 + X1.X3 + X2.X3 + X1 + X2 + X3 + 1 [U22](X1,X2) = X2 + 1 [U23](X) = 1 [U31](X1,X2) = X1.X2 + X1 + X2 + 1 [U32](X) = 1 [U41](X1,X2) = X1.X2 + X2 + 1 [U42](X) = 1 [U51](X1,X2,X3) = X1.X2.X3 + X1.X2 + X2.X3 + X3 + 1 [U52](X1,X2) = 1 [U53](X) = 1 [U61](X1,X2,X3) = X1.X2.X3 + X1.X2 + X2.X3 + X1 + X3 [U62](X1,X2) = X2 + 1 [U63](X) = 1 [U71](X1,X2) = X1.X2 + X1 [U72](X) = 1 [U81](X1,X2) = X1.X2 + 1 [U82](X) = 1 [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = X.X + 1 [isBagKind](X) = 1 [isBin](X) = X.X + X + 1 [isBinKind](X) = 1 [mult](X1,X2) = X1.X2 + X1 + X2 [plus](X1,X2) = X1 + X2 [prod](X) = X.X + X + 1 [sum](X) = X.X + X + 1 [union](X1,X2) = X1.X2 + X1 + X2 + 1 [1](X) = X + 1 [empty] = 0 [singl](X) = X.X + X + 1 [tt] = 1 [z] = 0 [0#](X) = 0 [U101#](X1,X2,X3) = X1.X2 + X2.X3 + X1 + X3 + 1 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = X1.X2 + X1.X3 + X2.X3 + X1 + 1 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = X1.X2 + X1 + X2 + 1 [PLUS](X1,X2) = 0 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.6: SCC Processor: -> FAxioms: MULT(mult(x6,x7),x8) = MULT(x6,mult(x7,x8)) MULT(x6,x7) = MULT(x7,x6) -> Pairs: U111#(tt,X,Y) -> MULT(X,Y) MULT(0(X),Y) -> U101#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(mult(0(X),Y),x6) -> U101#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(mult(0(X),Y),x6) -> MULT(U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(1(X),Y),x6) -> U111#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(mult(1(X),Y),x6) -> MULT(U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(z,X),x6) -> MULT(U91(and(isBin(X),isBinKind(X))),x6) MULT(1(X),Y) -> U111#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: U111#(tt,X,Y) -> MULT(X,Y) MULT(mult(0(X),Y),x6) -> MULT(U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(1(X),Y),x6) -> U111#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(mult(1(X),Y),x6) -> MULT(U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(z,X),x6) -> MULT(U91(and(isBin(X),isBinKind(X))),x6) MULT(1(X),Y) -> U111#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) MULT(mult(x6,x7),x8) -> MULT(x6,mult(x7,x8)) MULT(x6,x7) -> MULT(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) Problem 1.6: Reduction Pairs Processor: -> FAxioms: MULT(mult(x6,x7),x8) = MULT(x6,mult(x7,x8)) MULT(x6,x7) = MULT(x7,x6) -> Pairs: U111#(tt,X,Y) -> MULT(X,Y) MULT(mult(0(X),Y),x6) -> MULT(U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(1(X),Y),x6) -> U111#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(mult(1(X),Y),x6) -> MULT(U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(z,X),x6) -> MULT(U91(and(isBin(X),isBinKind(X))),x6) MULT(1(X),Y) -> U111#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) ->Interpretation type: Simple mixed ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 1 ->Interpretation: [0](X) = X + 1 [U101](X1,X2,X3) = X1.X2.X3 + X1.X2 + X3 + 1 [U11](X1,X2) = X1.X2 + X1 + X2 [U111](X1,X2,X3) = X1.X2.X3 + X1.X3 + X1 + X2 + X3 [U12](X) = 1 [U121](X1,X2) = X2 [U131](X1,X2,X3) = X1.X2 + X3 + 1 [U141](X1,X2,X3) = X1.X2 + X3 + 1 [U151](X1,X2,X3) = X1.X2 + X1.X3 + X1 + 1 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = X1.X2.X3 + X1.X2 + X2.X3 + X1 + X2 + X3 + 1 [U22](X1,X2) = X2 + 1 [U23](X) = 1 [U31](X1,X2) = X1.X2 + X1 + X2 + 1 [U32](X) = 1 [U41](X1,X2) = X1 + X2 + 1 [U42](X) = 1 [U51](X1,X2,X3) = X1.X2.X3 + X2.X3 + X2 + X3 + 1 [U52](X1,X2) = 1 [U53](X) = 1 [U61](X1,X2,X3) = X2.X3 + X2 + X3 + 1 [U62](X1,X2) = X2 + 1 [U63](X) = 1 [U71](X1,X2) = X1.X2 + 1 [U72](X) = 1 [U81](X1,X2) = X1.X2 + 1 [U82](X) = 1 [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = X.X + X + 1 [isBagKind](X) = 1 [isBin](X) = X.X + X + 1 [isBinKind](X) = 1 [mult](X1,X2) = X1.X2 + X1 + X2 [plus](X1,X2) = X1 + X2 [prod](X) = X.X + X + 1 [sum](X) = X + 1 [union](X1,X2) = X1.X2 + X1 + X2 + 1 [1](X) = X + 1 [empty] = 1 [singl](X) = X + 1 [tt] = 1 [z] = 0 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = X1.X2 + X1.X3 + X2.X3 + 1 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = X1.X2 + X1 + X2 [PLUS](X1,X2) = 0 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.6: SCC Processor: -> FAxioms: MULT(mult(x6,x7),x8) = MULT(x6,mult(x7,x8)) MULT(x6,x7) = MULT(x7,x6) -> Pairs: MULT(mult(0(X),Y),x6) -> MULT(U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(1(X),Y),x6) -> U111#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) MULT(mult(1(X),Y),x6) -> MULT(U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(z,X),x6) -> MULT(U91(and(isBin(X),isBinKind(X))),x6) MULT(1(X),Y) -> U111#(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: MULT(mult(0(X),Y),x6) -> MULT(U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(1(X),Y),x6) -> MULT(U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(z,X),x6) -> MULT(U91(and(isBin(X),isBinKind(X))),x6) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) MULT(mult(x6,x7),x8) -> MULT(x6,mult(x7,x8)) MULT(x6,x7) -> MULT(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) Problem 1.6: Reduction Pairs Processor: -> FAxioms: MULT(mult(x6,x7),x8) = MULT(x6,mult(x7,x8)) MULT(x6,x7) = MULT(x7,x6) -> Pairs: MULT(mult(0(X),Y),x6) -> MULT(U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(1(X),Y),x6) -> MULT(U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(z,X),x6) -> MULT(U91(and(isBin(X),isBinKind(X))),x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = 2 [U101](X1,X2,X3) = X3 + 2 [U11](X1,X2) = 2.X1 + 2.X2 + 2 [U111](X1,X2,X3) = 2.X1 + X3 [U12](X) = X + 2 [U121](X1,X2) = X2 + 2 [U131](X1,X2,X3) = 2.X1 + 2 [U141](X1,X2,X3) = 2.X1 + 2 [U151](X1,X2,X3) = 2.X1 + 2 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = 2.X1 + 2.X2 + 1 [U22](X1,X2) = X1 + 2 [U23](X) = 2 [U31](X1,X2) = 2 [U32](X) = 2 [U41](X1,X2) = 2.X1 + 1 [U42](X) = 2 [U51](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U52](X1,X2) = X1 + 2.X2 + 2 [U53](X) = X + 2 [U61](X1,X2,X3) = X1 + 2.X2 + X3 + 2 [U62](X1,X2) = 2 [U63](X) = 2 [U71](X1,X2) = 2.X1 + 2 [U72](X) = 2 [U81](X1,X2) = 2.X1 + 2.X2 + 2 [U82](X) = X + 2 [U91](X) = 2 [and](X1,X2) = X2 [isBag](X) = 2.X + 2 [isBagKind](X) = 2 [isBin](X) = 2.X + 2 [isBinKind](X) = 2 [mult](X1,X2) = X1 + X2 + 2 [plus](X1,X2) = X1 + X2 + 2 [prod](X) = X + 2 [sum](X) = 2.X + 2 [union](X1,X2) = 2.X1 + 2.X2 + 2 [1](X) = 2 [empty] = 2 [singl](X) = 2.X + 2 [tt] = 2 [z] = 1 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = 2.X1 + 2.X2 [PLUS](X1,X2) = 0 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.6: SCC Processor: -> FAxioms: MULT(mult(x6,x7),x8) = MULT(x6,mult(x7,x8)) MULT(x6,x7) = MULT(x7,x6) -> Pairs: MULT(mult(1(X),Y),x6) -> MULT(U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(z,X),x6) -> MULT(U91(and(isBin(X),isBinKind(X))),x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: MULT(mult(1(X),Y),x6) -> MULT(U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(z,X),x6) -> MULT(U91(and(isBin(X),isBinKind(X))),x6) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) MULT(mult(x6,x7),x8) -> MULT(x6,mult(x7,x8)) MULT(x6,x7) -> MULT(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) Problem 1.6: Reduction Pairs Processor: -> FAxioms: MULT(mult(x6,x7),x8) = MULT(x6,mult(x7,x8)) MULT(x6,x7) = MULT(x7,x6) -> Pairs: MULT(mult(1(X),Y),x6) -> MULT(U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y),x6) MULT(mult(z,X),x6) -> MULT(U91(and(isBin(X),isBinKind(X))),x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = 0 [U101](X1,X2,X3) = X3 + 2 [U11](X1,X2) = X1 + 2 [U111](X1,X2,X3) = X1 + X3 [U12](X) = 2 [U121](X1,X2) = X2 + 2 [U131](X1,X2,X3) = 2 [U141](X1,X2,X3) = 2.X1 [U151](X1,X2,X3) = 2.X1 + 2 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = X1 + 2.X3 + 2 [U22](X1,X2) = 2.X2 + 2 [U23](X) = X [U31](X1,X2) = X1 [U32](X) = 2 [U41](X1,X2) = 2 [U42](X) = 2 [U51](X1,X2,X3) = 2.X1 + 2.X2 + X3 + 2 [U52](X1,X2) = X2 + 2 [U53](X) = 2 [U61](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U62](X1,X2) = X1 + 2.X2 + 2 [U63](X) = X + 2 [U71](X1,X2) = 2.X1 + 1 [U72](X) = 2 [U81](X1,X2) = 2.X1 + 1 [U82](X) = 2 [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = 2.X + 2 [isBagKind](X) = 2 [isBin](X) = 2.X + 2 [isBinKind](X) = 2 [mult](X1,X2) = X1 + X2 + 2 [plus](X1,X2) = X1 + X2 + 2 [prod](X) = 2 [sum](X) = 2 [union](X1,X2) = 2.X2 + 2 [1](X) = 2 [empty] = 1 [singl](X) = 1 [tt] = 2 [z] = 0 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = 2.X1 + 2.X2 [PLUS](X1,X2) = 0 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.6: SCC Processor: -> FAxioms: MULT(mult(x6,x7),x8) = MULT(x6,mult(x7,x8)) MULT(x6,x7) = MULT(x7,x6) -> Pairs: MULT(mult(z,X),x6) -> MULT(U91(and(isBin(X),isBinKind(X))),x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: MULT(mult(z,X),x6) -> MULT(U91(and(isBin(X),isBinKind(X))),x6) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) MULT(mult(x6,x7),x8) -> MULT(x6,mult(x7,x8)) MULT(x6,x7) -> MULT(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) Problem 1.6: Reduction Pairs Processor: -> FAxioms: MULT(mult(x6,x7),x8) = MULT(x6,mult(x7,x8)) MULT(x6,x7) = MULT(x7,x6) -> Pairs: MULT(mult(z,X),x6) -> MULT(U91(and(isBin(X),isBinKind(X))),x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = 2 [U101](X1,X2,X3) = X1 + 2 [U11](X1,X2) = 2.X1 + 2.X2 + 2 [U111](X1,X2,X3) = X1 + X3 + 2 [U12](X) = 2 [U121](X1,X2) = X2 + 2 [U131](X1,X2,X3) = 2 [U141](X1,X2,X3) = X1 + 2 [U151](X1,X2,X3) = 2 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = X1 + X2 [U22](X1,X2) = 2 [U23](X) = 2 [U31](X1,X2) = 2.X1 + 2 [U32](X) = 2 [U41](X1,X2) = 2.X1 + 2 [U42](X) = 2 [U51](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U52](X1,X2) = X1 + 2 [U53](X) = 2 [U61](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 [U62](X1,X2) = X1 + 2 [U63](X) = 2 [U71](X1,X2) = 2.X1 + X2 + 2 [U72](X) = 2 [U81](X1,X2) = 2.X1 + 2.X2 + 2 [U82](X) = X + 1 [U91](X) = 2 [and](X1,X2) = X2 [isBag](X) = 2.X + 2 [isBagKind](X) = 2 [isBin](X) = 2.X + 2 [isBinKind](X) = 2 [mult](X1,X2) = X1 + X2 + 2 [plus](X1,X2) = X1 + X2 + 1 [prod](X) = 2.X + 2 [sum](X) = X + 2 [union](X1,X2) = X1 [1](X) = 2 [empty] = 2 [singl](X) = 2.X + 2 [tt] = 2 [z] = 2 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 0 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = 2.X1 + 2.X2 [PLUS](X1,X2) = 0 [PROD](X) = 0 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.6: SCC Processor: -> FAxioms: MULT(mult(x6,x7),x8) = MULT(x6,mult(x7,x8)) MULT(x6,x7) = MULT(x7,x6) -> Pairs: Empty -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: MULT(mult(x6,x7),x8) -> MULT(x6,x7) MULT(x6,mult(x7,x8)) -> MULT(x7,x8) ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.7: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: U171#(tt,A,B) -> PROD(A) U171#(tt,A,B) -> PROD(B) PROD(union(A,B)) -> U171#(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Usable Equations: Empty -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> Usable Rules: U11(tt,V1) -> U12(isBin(V1)) U12(tt) -> tt U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [0](X) = 1 [U101](X1,X2,X3) = 0 [U11](X1,X2) = X1 + 2 [U111](X1,X2,X3) = 0 [U12](X) = 2 [U121](X1,X2) = 0 [U131](X1,X2,X3) = 0 [U141](X1,X2,X3) = 0 [U151](X1,X2,X3) = 0 [U161](X1,X2) = 0 [U171](X1,X2,X3) = 0 [U181](X1,X2) = 0 [U191](X1,X2,X3) = 0 [U21](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 [U22](X1,X2) = X1 + 2.X2 [U23](X) = X + 1 [U31](X1,X2) = X1 [U32](X) = 2 [U41](X1,X2) = 2 [U42](X) = 2 [U51](X1,X2,X3) = 2.X3 + 2 [U52](X1,X2) = 2.X2 + 2 [U53](X) = 2 [U61](X1,X2,X3) = 2.X2 + 2.X3 + 2 [U62](X1,X2) = 2.X1 + 2.X2 [U63](X) = 2.X + 2 [U71](X1,X2) = 2.X2 [U72](X) = X [U81](X1,X2) = X1 + 1 [U82](X) = 2 [U91](X) = 0 [and](X1,X2) = X2 [isBag](X) = 2.X [isBagKind](X) = 2 [isBin](X) = X + 1 [isBinKind](X) = 2 [mult](X1,X2) = X1 + 2.X2 + 2 [plus](X1,X2) = 2.X1 + 2.X2 + 2 [prod](X) = 2.X [sum](X) = 2 [union](X1,X2) = 2.X1 + 2.X2 + 2 [1](X) = 2.X + 1 [empty] = 1 [singl](X) = 2.X + 2 [tt] = 2 [z] = 2 [0#](X) = 0 [U101#](X1,X2,X3) = 0 [U11#](X1,X2) = 0 [U111#](X1,X2,X3) = 0 [U12#](X) = 0 [U121#](X1,X2) = 0 [U131#](X1,X2,X3) = 0 [U141#](X1,X2,X3) = 0 [U151#](X1,X2,X3) = 0 [U161#](X1,X2) = 0 [U171#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 [U181#](X1,X2) = 0 [U191#](X1,X2,X3) = 0 [U21#](X1,X2,X3) = 0 [U22#](X1,X2) = 0 [U23#](X) = 0 [U31#](X1,X2) = 0 [U32#](X) = 0 [U41#](X1,X2) = 0 [U42#](X) = 0 [U51#](X1,X2,X3) = 0 [U52#](X1,X2) = 0 [U53#](X) = 0 [U61#](X1,X2,X3) = 0 [U62#](X1,X2) = 0 [U63#](X) = 0 [U71#](X1,X2) = 0 [U72#](X) = 0 [U81#](X1,X2) = 0 [U82#](X) = 0 [U91#](X) = 0 [AND](X1,X2) = 0 [ISBAG](X) = 0 [ISBAGKIND](X) = 0 [ISBIN](X) = 0 [ISBINKIND](X) = 0 [MULT](X1,X2) = 0 [PLUS](X1,X2) = 0 [PROD](X) = 2.X + 2 [SUM](X) = 0 [UNION](X1,X2) = 0 Problem 1.7: SCC Processor: -> FAxioms: Empty -> Pairs: U171#(tt,A,B) -> PROD(B) PROD(union(A,B)) -> U171#(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: U171#(tt,A,B) -> PROD(B) PROD(union(A,B)) -> U171#(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) -> FAxioms: mult(mult(x6,x7),x8) -> mult(x6,mult(x7,x8)) mult(x6,x7) -> mult(x7,x6) plus(plus(x6,x7),x8) -> plus(x6,plus(x7,x8)) plus(x6,x7) -> plus(x7,x6) union(union(x6,x7),x8) -> union(x6,union(x7,x8)) union(x6,x7) -> union(x7,x6) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) ->->-> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty Problem 1.7: Subterm Processor: -> FAxioms: Empty -> Pairs: U171#(tt,A,B) -> PROD(B) PROD(union(A,B)) -> U171#(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Projection: pi(U171#) = [3] pi(PROD) = [1] Problem 1.7: SCC Processor: -> FAxioms: Empty -> Pairs: U171#(tt,A,B) -> PROD(B) -> EAxioms: mult(mult(x6,x7),x8) = mult(x6,mult(x7,x8)) mult(x6,x7) = mult(x7,x6) plus(plus(x6,x7),x8) = plus(x6,plus(x7,x8)) plus(x6,x7) = plus(x7,x6) union(union(x6,x7),x8) = union(x6,union(x7,x8)) union(x6,x7) = union(x7,x6) -> Rules: 0(z) -> z U101(tt,X,Y) -> 0(mult(X,Y)) U11(tt,V1) -> U12(isBin(V1)) U111(tt,X,Y) -> plus(0(mult(X,Y)),Y) U12(tt) -> tt U121(tt,X) -> X U131(tt,X,Y) -> 0(plus(X,Y)) U141(tt,X,Y) -> 1(plus(X,Y)) U151(tt,X,Y) -> 0(plus(plus(X,Y),1(z))) U161(tt,X) -> X U171(tt,A,B) -> mult(prod(A),prod(B)) U181(tt,X) -> X U191(tt,A,B) -> plus(sum(A),sum(B)) U21(tt,V1,V2) -> U22(isBag(V1),V2) U22(tt,V2) -> U23(isBag(V2)) U23(tt) -> tt U31(tt,V1) -> U32(isBin(V1)) U32(tt) -> tt U41(tt,V1) -> U42(isBin(V1)) U42(tt) -> tt U51(tt,V1,V2) -> U52(isBin(V1),V2) U52(tt,V2) -> U53(isBin(V2)) U53(tt) -> tt U61(tt,V1,V2) -> U62(isBin(V1),V2) U62(tt,V2) -> U63(isBin(V2)) U63(tt) -> tt U71(tt,V1) -> U72(isBag(V1)) U72(tt) -> tt U81(tt,V1) -> U82(isBag(V1)) U82(tt) -> tt U91(tt) -> z and(tt,X) -> X isBag(union(V1,V2)) -> U21(and(isBagKind(V1),isBagKind(V2)),V1,V2) isBag(empty) -> tt isBag(singl(V1)) -> U11(isBinKind(V1),V1) isBagKind(union(V1,V2)) -> and(isBagKind(V1),isBagKind(V2)) isBagKind(empty) -> tt isBagKind(singl(V1)) -> isBinKind(V1) isBin(0(V1)) -> U31(isBinKind(V1),V1) isBin(mult(V1,V2)) -> U51(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(plus(V1,V2)) -> U61(and(isBinKind(V1),isBinKind(V2)),V1,V2) isBin(prod(V1)) -> U71(isBagKind(V1),V1) isBin(sum(V1)) -> U81(isBagKind(V1),V1) isBin(1(V1)) -> U41(isBinKind(V1),V1) isBin(z) -> tt isBinKind(0(V1)) -> isBinKind(V1) isBinKind(mult(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(plus(V1,V2)) -> and(isBinKind(V1),isBinKind(V2)) isBinKind(prod(V1)) -> isBagKind(V1) isBinKind(sum(V1)) -> isBagKind(V1) isBinKind(1(V1)) -> isBinKind(V1) isBinKind(z) -> tt mult(0(X),Y) -> U101(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(1(X),Y) -> U111(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) mult(z,X) -> U91(and(isBin(X),isBinKind(X))) plus(0(X),0(Y)) -> U131(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(0(X),1(Y)) -> U141(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(1(X),1(Y)) -> U151(and(and(isBin(X),isBinKind(X)),and(isBin(Y),isBinKind(Y))),X,Y) plus(z,X) -> U121(and(isBin(X),isBinKind(X)),X) prod(union(A,B)) -> U171(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) prod(empty) -> 1(z) prod(singl(X)) -> U161(and(isBin(X),isBinKind(X)),X) sum(union(A,B)) -> U191(and(and(isBag(A),isBagKind(A)),and(isBag(B),isBagKind(B))),A,B) sum(empty) -> 0(z) sum(singl(X)) -> U181(and(isBin(X),isBinKind(X)),X) union(empty,X) -> X union(X,empty) -> X -> SRules: Empty ->Strongly Connected Components: There is no strongly connected component The problem is finite.