YES Problem 1: (VAR v_NonEmpty:S a:S b:S c:S n:S t:S x:S) (RULES f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldB(triple(s(a:S),0,c:S),b:S)) f'(triple(a:S,b:S,c:S),B) -> f(triple(a:S,b:S,c:S),A) f'(triple(a:S,b:S,c:S),C) -> triple(a:S,b:S,s(c:S)) f''(triple(a:S,b:S,c:S)) -> foldC(triple(a:S,b:S,0),c:S) foldB(t:S,0) -> t:S foldB(t:S,s(n:S)) -> f(foldB(t:S,n:S),B) foldC(t:S,0) -> t:S foldC(t:S,s(n:S)) -> f(foldC(t:S,n:S),C) g(A) -> A g(B) -> A g(B) -> B g(C) -> A g(C) -> B g(C) -> C ) Problem 1: Dependency Pairs Processor: -> Pairs: F(t:S,x:S) -> F'(t:S,g(x:S)) F(t:S,x:S) -> G(x:S) F'(triple(a:S,b:S,c:S),A) -> F''(foldB(triple(s(a:S),0,c:S),b:S)) F'(triple(a:S,b:S,c:S),A) -> FOLDB(triple(s(a:S),0,c:S),b:S) F'(triple(a:S,b:S,c:S),B) -> F(triple(a:S,b:S,c:S),A) F''(triple(a:S,b:S,c:S)) -> FOLDC(triple(a:S,b:S,0),c:S) FOLDB(t:S,s(n:S)) -> F(foldB(t:S,n:S),B) FOLDB(t:S,s(n:S)) -> FOLDB(t:S,n:S) FOLDC(t:S,s(n:S)) -> F(foldC(t:S,n:S),C) FOLDC(t:S,s(n:S)) -> FOLDC(t:S,n:S) -> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldB(triple(s(a:S),0,c:S),b:S)) f'(triple(a:S,b:S,c:S),B) -> f(triple(a:S,b:S,c:S),A) f'(triple(a:S,b:S,c:S),C) -> triple(a:S,b:S,s(c:S)) f''(triple(a:S,b:S,c:S)) -> foldC(triple(a:S,b:S,0),c:S) foldB(t:S,0) -> t:S foldB(t:S,s(n:S)) -> f(foldB(t:S,n:S),B) foldC(t:S,0) -> t:S foldC(t:S,s(n:S)) -> f(foldC(t:S,n:S),C) g(A) -> A g(B) -> A g(B) -> B g(C) -> A g(C) -> B g(C) -> C Problem 1: SCC Processor: -> Pairs: F(t:S,x:S) -> F'(t:S,g(x:S)) F(t:S,x:S) -> G(x:S) F'(triple(a:S,b:S,c:S),A) -> F''(foldB(triple(s(a:S),0,c:S),b:S)) F'(triple(a:S,b:S,c:S),A) -> FOLDB(triple(s(a:S),0,c:S),b:S) F'(triple(a:S,b:S,c:S),B) -> F(triple(a:S,b:S,c:S),A) F''(triple(a:S,b:S,c:S)) -> FOLDC(triple(a:S,b:S,0),c:S) FOLDB(t:S,s(n:S)) -> F(foldB(t:S,n:S),B) FOLDB(t:S,s(n:S)) -> FOLDB(t:S,n:S) FOLDC(t:S,s(n:S)) -> F(foldC(t:S,n:S),C) FOLDC(t:S,s(n:S)) -> FOLDC(t:S,n:S) -> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldB(triple(s(a:S),0,c:S),b:S)) f'(triple(a:S,b:S,c:S),B) -> f(triple(a:S,b:S,c:S),A) f'(triple(a:S,b:S,c:S),C) -> triple(a:S,b:S,s(c:S)) f''(triple(a:S,b:S,c:S)) -> foldC(triple(a:S,b:S,0),c:S) foldB(t:S,0) -> t:S foldB(t:S,s(n:S)) -> f(foldB(t:S,n:S),B) foldC(t:S,0) -> t:S foldC(t:S,s(n:S)) -> f(foldC(t:S,n:S),C) g(A) -> A g(B) -> A g(B) -> B g(C) -> A g(C) -> B g(C) -> C ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: F(t:S,x:S) -> F'(t:S,g(x:S)) F'(triple(a:S,b:S,c:S),A) -> F''(foldB(triple(s(a:S),0,c:S),b:S)) F'(triple(a:S,b:S,c:S),A) -> FOLDB(triple(s(a:S),0,c:S),b:S) F'(triple(a:S,b:S,c:S),B) -> F(triple(a:S,b:S,c:S),A) F''(triple(a:S,b:S,c:S)) -> FOLDC(triple(a:S,b:S,0),c:S) FOLDB(t:S,s(n:S)) -> F(foldB(t:S,n:S),B) FOLDB(t:S,s(n:S)) -> FOLDB(t:S,n:S) FOLDC(t:S,s(n:S)) -> F(foldC(t:S,n:S),C) FOLDC(t:S,s(n:S)) -> FOLDC(t:S,n:S) ->->-> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldB(triple(s(a:S),0,c:S),b:S)) f'(triple(a:S,b:S,c:S),B) -> f(triple(a:S,b:S,c:S),A) f'(triple(a:S,b:S,c:S),C) -> triple(a:S,b:S,s(c:S)) f''(triple(a:S,b:S,c:S)) -> foldC(triple(a:S,b:S,0),c:S) foldB(t:S,0) -> t:S foldB(t:S,s(n:S)) -> f(foldB(t:S,n:S),B) foldC(t:S,0) -> t:S foldC(t:S,s(n:S)) -> f(foldC(t:S,n:S),C) g(A) -> A g(B) -> A g(B) -> B g(C) -> A g(C) -> B g(C) -> C Problem 1: Reduction Pair Processor: -> Pairs: F(t:S,x:S) -> F'(t:S,g(x:S)) F'(triple(a:S,b:S,c:S),A) -> F''(foldB(triple(s(a:S),0,c:S),b:S)) F'(triple(a:S,b:S,c:S),A) -> FOLDB(triple(s(a:S),0,c:S),b:S) F'(triple(a:S,b:S,c:S),B) -> F(triple(a:S,b:S,c:S),A) F''(triple(a:S,b:S,c:S)) -> FOLDC(triple(a:S,b:S,0),c:S) FOLDB(t:S,s(n:S)) -> F(foldB(t:S,n:S),B) FOLDB(t:S,s(n:S)) -> FOLDB(t:S,n:S) FOLDC(t:S,s(n:S)) -> F(foldC(t:S,n:S),C) FOLDC(t:S,s(n:S)) -> FOLDC(t:S,n:S) -> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldB(triple(s(a:S),0,c:S),b:S)) f'(triple(a:S,b:S,c:S),B) -> f(triple(a:S,b:S,c:S),A) f'(triple(a:S,b:S,c:S),C) -> triple(a:S,b:S,s(c:S)) f''(triple(a:S,b:S,c:S)) -> foldC(triple(a:S,b:S,0),c:S) foldB(t:S,0) -> t:S foldB(t:S,s(n:S)) -> f(foldB(t:S,n:S),B) foldC(t:S,0) -> t:S foldC(t:S,s(n:S)) -> f(foldC(t:S,n:S),C) g(A) -> A g(B) -> A g(B) -> B g(C) -> A g(C) -> B g(C) -> C -> Usable rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldB(triple(s(a:S),0,c:S),b:S)) f'(triple(a:S,b:S,c:S),B) -> f(triple(a:S,b:S,c:S),A) f'(triple(a:S,b:S,c:S),C) -> triple(a:S,b:S,s(c:S)) f''(triple(a:S,b:S,c:S)) -> foldC(triple(a:S,b:S,0),c:S) foldB(t:S,0) -> t:S foldB(t:S,s(n:S)) -> f(foldB(t:S,n:S),B) foldC(t:S,0) -> t:S foldC(t:S,s(n:S)) -> f(foldC(t:S,n:S),C) g(A) -> A g(B) -> A g(B) -> B g(C) -> A g(C) -> B g(C) -> C ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [f](X1,X2) = X1 + X2 + 2 [f'](X1,X2) = X1 + X2 + 2 [f''](X) = X + 2 [foldB](X1,X2) = X1 + 2.X2 [foldC](X1,X2) = X1 + 2.X2 [g](X) = X [0] = 0 [A] = 1 [B] = 2 [C] = 2 [s](X) = X + 2 [triple](X1,X2,X3) = 2.X2 + 2.X3 + 2 [F](X1,X2) = X1 + 2.X2 + 2 [F'](X1,X2) = X1 + 2.X2 + 1 [F''](X) = X + 2 [FOLDB](X1,X2) = X1 + 2.X2 + 2 [FOLDC](X1,X2) = X1 + 2.X2 + 2 Problem 1: SCC Processor: -> Pairs: F'(triple(a:S,b:S,c:S),A) -> F''(foldB(triple(s(a:S),0,c:S),b:S)) F'(triple(a:S,b:S,c:S),A) -> FOLDB(triple(s(a:S),0,c:S),b:S) F'(triple(a:S,b:S,c:S),B) -> F(triple(a:S,b:S,c:S),A) F''(triple(a:S,b:S,c:S)) -> FOLDC(triple(a:S,b:S,0),c:S) FOLDB(t:S,s(n:S)) -> F(foldB(t:S,n:S),B) FOLDB(t:S,s(n:S)) -> FOLDB(t:S,n:S) FOLDC(t:S,s(n:S)) -> F(foldC(t:S,n:S),C) FOLDC(t:S,s(n:S)) -> FOLDC(t:S,n:S) -> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldB(triple(s(a:S),0,c:S),b:S)) f'(triple(a:S,b:S,c:S),B) -> f(triple(a:S,b:S,c:S),A) f'(triple(a:S,b:S,c:S),C) -> triple(a:S,b:S,s(c:S)) f''(triple(a:S,b:S,c:S)) -> foldC(triple(a:S,b:S,0),c:S) foldB(t:S,0) -> t:S foldB(t:S,s(n:S)) -> f(foldB(t:S,n:S),B) foldC(t:S,0) -> t:S foldC(t:S,s(n:S)) -> f(foldC(t:S,n:S),C) g(A) -> A g(B) -> A g(B) -> B g(C) -> A g(C) -> B g(C) -> C ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: FOLDC(t:S,s(n:S)) -> FOLDC(t:S,n:S) ->->-> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldB(triple(s(a:S),0,c:S),b:S)) f'(triple(a:S,b:S,c:S),B) -> f(triple(a:S,b:S,c:S),A) f'(triple(a:S,b:S,c:S),C) -> triple(a:S,b:S,s(c:S)) f''(triple(a:S,b:S,c:S)) -> foldC(triple(a:S,b:S,0),c:S) foldB(t:S,0) -> t:S foldB(t:S,s(n:S)) -> f(foldB(t:S,n:S),B) foldC(t:S,0) -> t:S foldC(t:S,s(n:S)) -> f(foldC(t:S,n:S),C) g(A) -> A g(B) -> A g(B) -> B g(C) -> A g(C) -> B g(C) -> C ->->Cycle: ->->-> Pairs: FOLDB(t:S,s(n:S)) -> FOLDB(t:S,n:S) ->->-> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldB(triple(s(a:S),0,c:S),b:S)) f'(triple(a:S,b:S,c:S),B) -> f(triple(a:S,b:S,c:S),A) f'(triple(a:S,b:S,c:S),C) -> triple(a:S,b:S,s(c:S)) f''(triple(a:S,b:S,c:S)) -> foldC(triple(a:S,b:S,0),c:S) foldB(t:S,0) -> t:S foldB(t:S,s(n:S)) -> f(foldB(t:S,n:S),B) foldC(t:S,0) -> t:S foldC(t:S,s(n:S)) -> f(foldC(t:S,n:S),C) g(A) -> A g(B) -> A g(B) -> B g(C) -> A g(C) -> B g(C) -> C The problem is decomposed in 2 subproblems. Problem 1.1: Subterm Processor: -> Pairs: FOLDC(t:S,s(n:S)) -> FOLDC(t:S,n:S) -> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldB(triple(s(a:S),0,c:S),b:S)) f'(triple(a:S,b:S,c:S),B) -> f(triple(a:S,b:S,c:S),A) f'(triple(a:S,b:S,c:S),C) -> triple(a:S,b:S,s(c:S)) f''(triple(a:S,b:S,c:S)) -> foldC(triple(a:S,b:S,0),c:S) foldB(t:S,0) -> t:S foldB(t:S,s(n:S)) -> f(foldB(t:S,n:S),B) foldC(t:S,0) -> t:S foldC(t:S,s(n:S)) -> f(foldC(t:S,n:S),C) g(A) -> A g(B) -> A g(B) -> B g(C) -> A g(C) -> B g(C) -> C ->Projection: pi(FOLDC) = 2 Problem 1.1: SCC Processor: -> Pairs: Empty -> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldB(triple(s(a:S),0,c:S),b:S)) f'(triple(a:S,b:S,c:S),B) -> f(triple(a:S,b:S,c:S),A) f'(triple(a:S,b:S,c:S),C) -> triple(a:S,b:S,s(c:S)) f''(triple(a:S,b:S,c:S)) -> foldC(triple(a:S,b:S,0),c:S) foldB(t:S,0) -> t:S foldB(t:S,s(n:S)) -> f(foldB(t:S,n:S),B) foldC(t:S,0) -> t:S foldC(t:S,s(n:S)) -> f(foldC(t:S,n:S),C) g(A) -> A g(B) -> A g(B) -> B g(C) -> A g(C) -> B g(C) -> C ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.2: Subterm Processor: -> Pairs: FOLDB(t:S,s(n:S)) -> FOLDB(t:S,n:S) -> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldB(triple(s(a:S),0,c:S),b:S)) f'(triple(a:S,b:S,c:S),B) -> f(triple(a:S,b:S,c:S),A) f'(triple(a:S,b:S,c:S),C) -> triple(a:S,b:S,s(c:S)) f''(triple(a:S,b:S,c:S)) -> foldC(triple(a:S,b:S,0),c:S) foldB(t:S,0) -> t:S foldB(t:S,s(n:S)) -> f(foldB(t:S,n:S),B) foldC(t:S,0) -> t:S foldC(t:S,s(n:S)) -> f(foldC(t:S,n:S),C) g(A) -> A g(B) -> A g(B) -> B g(C) -> A g(C) -> B g(C) -> C ->Projection: pi(FOLDB) = 2 Problem 1.2: SCC Processor: -> Pairs: Empty -> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldB(triple(s(a:S),0,c:S),b:S)) f'(triple(a:S,b:S,c:S),B) -> f(triple(a:S,b:S,c:S),A) f'(triple(a:S,b:S,c:S),C) -> triple(a:S,b:S,s(c:S)) f''(triple(a:S,b:S,c:S)) -> foldC(triple(a:S,b:S,0),c:S) foldB(t:S,0) -> t:S foldB(t:S,s(n:S)) -> f(foldB(t:S,n:S),B) foldC(t:S,0) -> t:S foldC(t:S,s(n:S)) -> f(foldC(t:S,n:S),C) g(A) -> A g(B) -> A g(B) -> B g(C) -> A g(C) -> B g(C) -> C ->Strongly Connected Components: There is no strongly connected component The problem is finite.