YES Problem 1: (VAR v_NonEmpty:S a:S b:S c:S t:S x:S y:S z:S) (RULES f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldf(triple(cons(A,a:S),nil,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,cons(C,c:S)) f''(triple(a:S,b:S,c:S)) -> foldf(triple(a:S,b:S,nil),c:S) foldf(x:S,cons(y:S,z:S)) -> f(foldf(x:S,z:S),y:S) foldf(x:S,nil) -> x:S 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''(foldf(triple(cons(A,a:S),nil,c:S),b:S)) F'(triple(a:S,b:S,c:S),A) -> FOLDF(triple(cons(A,a:S),nil,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)) -> FOLDF(triple(a:S,b:S,nil),c:S) FOLDF(x:S,cons(y:S,z:S)) -> F(foldf(x:S,z:S),y:S) FOLDF(x:S,cons(y:S,z:S)) -> FOLDF(x:S,z:S) -> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldf(triple(cons(A,a:S),nil,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,cons(C,c:S)) f''(triple(a:S,b:S,c:S)) -> foldf(triple(a:S,b:S,nil),c:S) foldf(x:S,cons(y:S,z:S)) -> f(foldf(x:S,z:S),y:S) foldf(x:S,nil) -> x:S 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''(foldf(triple(cons(A,a:S),nil,c:S),b:S)) F'(triple(a:S,b:S,c:S),A) -> FOLDF(triple(cons(A,a:S),nil,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)) -> FOLDF(triple(a:S,b:S,nil),c:S) FOLDF(x:S,cons(y:S,z:S)) -> F(foldf(x:S,z:S),y:S) FOLDF(x:S,cons(y:S,z:S)) -> FOLDF(x:S,z:S) -> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldf(triple(cons(A,a:S),nil,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,cons(C,c:S)) f''(triple(a:S,b:S,c:S)) -> foldf(triple(a:S,b:S,nil),c:S) foldf(x:S,cons(y:S,z:S)) -> f(foldf(x:S,z:S),y:S) foldf(x:S,nil) -> x:S 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''(foldf(triple(cons(A,a:S),nil,c:S),b:S)) F'(triple(a:S,b:S,c:S),A) -> FOLDF(triple(cons(A,a:S),nil,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)) -> FOLDF(triple(a:S,b:S,nil),c:S) FOLDF(x:S,cons(y:S,z:S)) -> F(foldf(x:S,z:S),y:S) FOLDF(x:S,cons(y:S,z:S)) -> FOLDF(x:S,z:S) ->->-> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldf(triple(cons(A,a:S),nil,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,cons(C,c:S)) f''(triple(a:S,b:S,c:S)) -> foldf(triple(a:S,b:S,nil),c:S) foldf(x:S,cons(y:S,z:S)) -> f(foldf(x:S,z:S),y:S) foldf(x:S,nil) -> x:S 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''(foldf(triple(cons(A,a:S),nil,c:S),b:S)) F'(triple(a:S,b:S,c:S),A) -> FOLDF(triple(cons(A,a:S),nil,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)) -> FOLDF(triple(a:S,b:S,nil),c:S) FOLDF(x:S,cons(y:S,z:S)) -> F(foldf(x:S,z:S),y:S) FOLDF(x:S,cons(y:S,z:S)) -> FOLDF(x:S,z:S) -> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldf(triple(cons(A,a:S),nil,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,cons(C,c:S)) f''(triple(a:S,b:S,c:S)) -> foldf(triple(a:S,b:S,nil),c:S) foldf(x:S,cons(y:S,z:S)) -> f(foldf(x:S,z:S),y:S) foldf(x:S,nil) -> x:S 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''(foldf(triple(cons(A,a:S),nil,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,cons(C,c:S)) f''(triple(a:S,b:S,c:S)) -> foldf(triple(a:S,b:S,nil),c:S) foldf(x:S,cons(y:S,z:S)) -> f(foldf(x:S,z:S),y:S) foldf(x:S,nil) -> x:S 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 + 2.X2 + 2 [f'](X1,X2) = X1 + 2.X2 + 2 [f''](X) = X + 2 [foldf](X1,X2) = X1 + X2 [g](X) = X [A] = 0 [B] = 2 [C] = 2 [cons](X1,X2) = 2.X1 + X2 + 2 [nil] = 0 [triple](X1,X2,X3) = 2.X2 + X3 + 2 [F](X1,X2) = X1 + 2.X2 + 2 [F'](X1,X2) = X1 + 2.X2 + 1 [F''](X) = X + 1 [FOLDF](X1,X2) = X1 + X2 + 1 Problem 1: SCC Processor: -> Pairs: F'(triple(a:S,b:S,c:S),A) -> F''(foldf(triple(cons(A,a:S),nil,c:S),b:S)) F'(triple(a:S,b:S,c:S),A) -> FOLDF(triple(cons(A,a:S),nil,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)) -> FOLDF(triple(a:S,b:S,nil),c:S) FOLDF(x:S,cons(y:S,z:S)) -> F(foldf(x:S,z:S),y:S) FOLDF(x:S,cons(y:S,z:S)) -> FOLDF(x:S,z:S) -> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldf(triple(cons(A,a:S),nil,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,cons(C,c:S)) f''(triple(a:S,b:S,c:S)) -> foldf(triple(a:S,b:S,nil),c:S) foldf(x:S,cons(y:S,z:S)) -> f(foldf(x:S,z:S),y:S) foldf(x:S,nil) -> x:S g(A) -> A g(B) -> A g(B) -> B g(C) -> A g(C) -> B g(C) -> C ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: FOLDF(x:S,cons(y:S,z:S)) -> FOLDF(x:S,z:S) ->->-> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldf(triple(cons(A,a:S),nil,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,cons(C,c:S)) f''(triple(a:S,b:S,c:S)) -> foldf(triple(a:S,b:S,nil),c:S) foldf(x:S,cons(y:S,z:S)) -> f(foldf(x:S,z:S),y:S) foldf(x:S,nil) -> x:S g(A) -> A g(B) -> A g(B) -> B g(C) -> A g(C) -> B g(C) -> C Problem 1: Subterm Processor: -> Pairs: FOLDF(x:S,cons(y:S,z:S)) -> FOLDF(x:S,z:S) -> Rules: f(t:S,x:S) -> f'(t:S,g(x:S)) f'(triple(a:S,b:S,c:S),A) -> f''(foldf(triple(cons(A,a:S),nil,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,cons(C,c:S)) f''(triple(a:S,b:S,c:S)) -> foldf(triple(a:S,b:S,nil),c:S) foldf(x:S,cons(y:S,z:S)) -> f(foldf(x:S,z:S),y:S) foldf(x:S,nil) -> x:S g(A) -> A g(B) -> A g(B) -> B g(C) -> A g(C) -> B g(C) -> C ->Projection: pi(FOLDF) = 2 Problem 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''(foldf(triple(cons(A,a:S),nil,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,cons(C,c:S)) f''(triple(a:S,b:S,c:S)) -> foldf(triple(a:S,b:S,nil),c:S) foldf(x:S,cons(y:S,z:S)) -> f(foldf(x:S,z:S),y:S) foldf(x:S,nil) -> x:S 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.