YES Problem 1: (VAR v_NonEmpty:S x:S y:S z:S) (RULES ++(.(x:S,y:S),z:S) -> .(x:S,++(y:S,z:S)) ++(nil,y:S) -> y:S car(.(x:S,y:S)) -> x:S cdr(.(x:S,y:S)) -> y:S null(.(x:S,y:S)) -> ffalse null(nil) -> ttrue rev(.(x:S,y:S)) -> ++(rev(y:S),.(x:S,nil)) rev(nil) -> nil ) Problem 1: Innermost Equivalent Processor: -> Rules: ++(.(x:S,y:S),z:S) -> .(x:S,++(y:S,z:S)) ++(nil,y:S) -> y:S car(.(x:S,y:S)) -> x:S cdr(.(x:S,y:S)) -> y:S null(.(x:S,y:S)) -> ffalse null(nil) -> ttrue rev(.(x:S,y:S)) -> ++(rev(y:S),.(x:S,nil)) rev(nil) -> nil -> The term rewriting system is non-overlaping or locally confluent overlay system. Therefore, innermost termination implies termination. Problem 1: Dependency Pairs Processor: -> Pairs: ++#(.(x:S,y:S),z:S) -> ++#(y:S,z:S) REV(.(x:S,y:S)) -> ++#(rev(y:S),.(x:S,nil)) REV(.(x:S,y:S)) -> REV(y:S) -> Rules: ++(.(x:S,y:S),z:S) -> .(x:S,++(y:S,z:S)) ++(nil,y:S) -> y:S car(.(x:S,y:S)) -> x:S cdr(.(x:S,y:S)) -> y:S null(.(x:S,y:S)) -> ffalse null(nil) -> ttrue rev(.(x:S,y:S)) -> ++(rev(y:S),.(x:S,nil)) rev(nil) -> nil Problem 1: SCC Processor: -> Pairs: ++#(.(x:S,y:S),z:S) -> ++#(y:S,z:S) REV(.(x:S,y:S)) -> ++#(rev(y:S),.(x:S,nil)) REV(.(x:S,y:S)) -> REV(y:S) -> Rules: ++(.(x:S,y:S),z:S) -> .(x:S,++(y:S,z:S)) ++(nil,y:S) -> y:S car(.(x:S,y:S)) -> x:S cdr(.(x:S,y:S)) -> y:S null(.(x:S,y:S)) -> ffalse null(nil) -> ttrue rev(.(x:S,y:S)) -> ++(rev(y:S),.(x:S,nil)) rev(nil) -> nil ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: ++#(.(x:S,y:S),z:S) -> ++#(y:S,z:S) ->->-> Rules: ++(.(x:S,y:S),z:S) -> .(x:S,++(y:S,z:S)) ++(nil,y:S) -> y:S car(.(x:S,y:S)) -> x:S cdr(.(x:S,y:S)) -> y:S null(.(x:S,y:S)) -> ffalse null(nil) -> ttrue rev(.(x:S,y:S)) -> ++(rev(y:S),.(x:S,nil)) rev(nil) -> nil ->->Cycle: ->->-> Pairs: REV(.(x:S,y:S)) -> REV(y:S) ->->-> Rules: ++(.(x:S,y:S),z:S) -> .(x:S,++(y:S,z:S)) ++(nil,y:S) -> y:S car(.(x:S,y:S)) -> x:S cdr(.(x:S,y:S)) -> y:S null(.(x:S,y:S)) -> ffalse null(nil) -> ttrue rev(.(x:S,y:S)) -> ++(rev(y:S),.(x:S,nil)) rev(nil) -> nil The problem is decomposed in 2 subproblems. Problem 1.1: Subterm Processor: -> Pairs: ++#(.(x:S,y:S),z:S) -> ++#(y:S,z:S) -> Rules: ++(.(x:S,y:S),z:S) -> .(x:S,++(y:S,z:S)) ++(nil,y:S) -> y:S car(.(x:S,y:S)) -> x:S cdr(.(x:S,y:S)) -> y:S null(.(x:S,y:S)) -> ffalse null(nil) -> ttrue rev(.(x:S,y:S)) -> ++(rev(y:S),.(x:S,nil)) rev(nil) -> nil ->Projection: pi(++#) = 1 Problem 1.1: SCC Processor: -> Pairs: Empty -> Rules: ++(.(x:S,y:S),z:S) -> .(x:S,++(y:S,z:S)) ++(nil,y:S) -> y:S car(.(x:S,y:S)) -> x:S cdr(.(x:S,y:S)) -> y:S null(.(x:S,y:S)) -> ffalse null(nil) -> ttrue rev(.(x:S,y:S)) -> ++(rev(y:S),.(x:S,nil)) rev(nil) -> nil ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.2: Subterm Processor: -> Pairs: REV(.(x:S,y:S)) -> REV(y:S) -> Rules: ++(.(x:S,y:S),z:S) -> .(x:S,++(y:S,z:S)) ++(nil,y:S) -> y:S car(.(x:S,y:S)) -> x:S cdr(.(x:S,y:S)) -> y:S null(.(x:S,y:S)) -> ffalse null(nil) -> ttrue rev(.(x:S,y:S)) -> ++(rev(y:S),.(x:S,nil)) rev(nil) -> nil ->Projection: pi(REV) = 1 Problem 1.2: SCC Processor: -> Pairs: Empty -> Rules: ++(.(x:S,y:S),z:S) -> .(x:S,++(y:S,z:S)) ++(nil,y:S) -> y:S car(.(x:S,y:S)) -> x:S cdr(.(x:S,y:S)) -> y:S null(.(x:S,y:S)) -> ffalse null(nil) -> ttrue rev(.(x:S,y:S)) -> ++(rev(y:S),.(x:S,nil)) rev(nil) -> nil ->Strongly Connected Components: There is no strongly connected component The problem is finite.