YES Problem 1: (VAR v_NonEmpty:S @l:S @l1:S @l2:S @l3:S @x:S @xs:S @y:S @ys:S @z:S @zs:S) (RULES group3(@l:S) -> group3#1(@l:S) group3#1(::(@x:S,@xs:S)) -> group3#2(@xs:S,@x:S) group3#1(nil) -> nil group3#2(::(@y:S,@ys:S),@x:S) -> group3#3(@ys:S,@x:S,@y:S) group3#2(nil,@x:S) -> nil group3#3(::(@z:S,@zs:S),@x:S,@y:S) -> ::(tuple#3(@x:S,@y:S,@z:S),group3(@zs:S)) group3#3(nil,@x:S,@y:S) -> nil zip3(@l1:S,@l2:S,@l3:S) -> zip3#1(@l1:S,@l2:S,@l3:S) zip3#1(::(@x:S,@xs:S),@l2:S,@l3:S) -> zip3#2(@l2:S,@l3:S,@x:S,@xs:S) zip3#1(nil,@l2:S,@l3:S) -> nil zip3#2(::(@y:S,@ys:S),@l3:S,@x:S,@xs:S) -> zip3#3(@l3:S,@x:S,@xs:S,@y:S,@ys:S) zip3#2(nil,@l3:S,@x:S,@xs:S) -> nil zip3#3(::(@z:S,@zs:S),@x:S,@xs:S,@y:S,@ys:S) -> ::(tuple#3(@x:S,@y:S,@z:S),zip3(@xs:S,@ys:S,@zs:S)) zip3#3(nil,@x:S,@xs:S,@y:S,@ys:S) -> nil ) (STRATEGY INNERMOST) Problem 1: Dependency Pairs Processor: -> Pairs: GROUP3(@l:S) -> GROUP3#1(@l:S) GROUP3#1(::(@x:S,@xs:S)) -> GROUP3#2(@xs:S,@x:S) GROUP3#2(::(@y:S,@ys:S),@x:S) -> GROUP3#3(@ys:S,@x:S,@y:S) GROUP3#3(::(@z:S,@zs:S),@x:S,@y:S) -> GROUP3(@zs:S) ZIP3(@l1:S,@l2:S,@l3:S) -> ZIP3#1(@l1:S,@l2:S,@l3:S) ZIP3#1(::(@x:S,@xs:S),@l2:S,@l3:S) -> ZIP3#2(@l2:S,@l3:S,@x:S,@xs:S) ZIP3#2(::(@y:S,@ys:S),@l3:S,@x:S,@xs:S) -> ZIP3#3(@l3:S,@x:S,@xs:S,@y:S,@ys:S) ZIP3#3(::(@z:S,@zs:S),@x:S,@xs:S,@y:S,@ys:S) -> ZIP3(@xs:S,@ys:S,@zs:S) -> Rules: group3(@l:S) -> group3#1(@l:S) group3#1(::(@x:S,@xs:S)) -> group3#2(@xs:S,@x:S) group3#1(nil) -> nil group3#2(::(@y:S,@ys:S),@x:S) -> group3#3(@ys:S,@x:S,@y:S) group3#2(nil,@x:S) -> nil group3#3(::(@z:S,@zs:S),@x:S,@y:S) -> ::(tuple#3(@x:S,@y:S,@z:S),group3(@zs:S)) group3#3(nil,@x:S,@y:S) -> nil zip3(@l1:S,@l2:S,@l3:S) -> zip3#1(@l1:S,@l2:S,@l3:S) zip3#1(::(@x:S,@xs:S),@l2:S,@l3:S) -> zip3#2(@l2:S,@l3:S,@x:S,@xs:S) zip3#1(nil,@l2:S,@l3:S) -> nil zip3#2(::(@y:S,@ys:S),@l3:S,@x:S,@xs:S) -> zip3#3(@l3:S,@x:S,@xs:S,@y:S,@ys:S) zip3#2(nil,@l3:S,@x:S,@xs:S) -> nil zip3#3(::(@z:S,@zs:S),@x:S,@xs:S,@y:S,@ys:S) -> ::(tuple#3(@x:S,@y:S,@z:S),zip3(@xs:S,@ys:S,@zs:S)) zip3#3(nil,@x:S,@xs:S,@y:S,@ys:S) -> nil Problem 1: SCC Processor: -> Pairs: GROUP3(@l:S) -> GROUP3#1(@l:S) GROUP3#1(::(@x:S,@xs:S)) -> GROUP3#2(@xs:S,@x:S) GROUP3#2(::(@y:S,@ys:S),@x:S) -> GROUP3#3(@ys:S,@x:S,@y:S) GROUP3#3(::(@z:S,@zs:S),@x:S,@y:S) -> GROUP3(@zs:S) ZIP3(@l1:S,@l2:S,@l3:S) -> ZIP3#1(@l1:S,@l2:S,@l3:S) ZIP3#1(::(@x:S,@xs:S),@l2:S,@l3:S) -> ZIP3#2(@l2:S,@l3:S,@x:S,@xs:S) ZIP3#2(::(@y:S,@ys:S),@l3:S,@x:S,@xs:S) -> ZIP3#3(@l3:S,@x:S,@xs:S,@y:S,@ys:S) ZIP3#3(::(@z:S,@zs:S),@x:S,@xs:S,@y:S,@ys:S) -> ZIP3(@xs:S,@ys:S,@zs:S) -> Rules: group3(@l:S) -> group3#1(@l:S) group3#1(::(@x:S,@xs:S)) -> group3#2(@xs:S,@x:S) group3#1(nil) -> nil group3#2(::(@y:S,@ys:S),@x:S) -> group3#3(@ys:S,@x:S,@y:S) group3#2(nil,@x:S) -> nil group3#3(::(@z:S,@zs:S),@x:S,@y:S) -> ::(tuple#3(@x:S,@y:S,@z:S),group3(@zs:S)) group3#3(nil,@x:S,@y:S) -> nil zip3(@l1:S,@l2:S,@l3:S) -> zip3#1(@l1:S,@l2:S,@l3:S) zip3#1(::(@x:S,@xs:S),@l2:S,@l3:S) -> zip3#2(@l2:S,@l3:S,@x:S,@xs:S) zip3#1(nil,@l2:S,@l3:S) -> nil zip3#2(::(@y:S,@ys:S),@l3:S,@x:S,@xs:S) -> zip3#3(@l3:S,@x:S,@xs:S,@y:S,@ys:S) zip3#2(nil,@l3:S,@x:S,@xs:S) -> nil zip3#3(::(@z:S,@zs:S),@x:S,@xs:S,@y:S,@ys:S) -> ::(tuple#3(@x:S,@y:S,@z:S),zip3(@xs:S,@ys:S,@zs:S)) zip3#3(nil,@x:S,@xs:S,@y:S,@ys:S) -> nil ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: ZIP3(@l1:S,@l2:S,@l3:S) -> ZIP3#1(@l1:S,@l2:S,@l3:S) ZIP3#1(::(@x:S,@xs:S),@l2:S,@l3:S) -> ZIP3#2(@l2:S,@l3:S,@x:S,@xs:S) ZIP3#2(::(@y:S,@ys:S),@l3:S,@x:S,@xs:S) -> ZIP3#3(@l3:S,@x:S,@xs:S,@y:S,@ys:S) ZIP3#3(::(@z:S,@zs:S),@x:S,@xs:S,@y:S,@ys:S) -> ZIP3(@xs:S,@ys:S,@zs:S) ->->-> Rules: group3(@l:S) -> group3#1(@l:S) group3#1(::(@x:S,@xs:S)) -> group3#2(@xs:S,@x:S) group3#1(nil) -> nil group3#2(::(@y:S,@ys:S),@x:S) -> group3#3(@ys:S,@x:S,@y:S) group3#2(nil,@x:S) -> nil group3#3(::(@z:S,@zs:S),@x:S,@y:S) -> ::(tuple#3(@x:S,@y:S,@z:S),group3(@zs:S)) group3#3(nil,@x:S,@y:S) -> nil zip3(@l1:S,@l2:S,@l3:S) -> zip3#1(@l1:S,@l2:S,@l3:S) zip3#1(::(@x:S,@xs:S),@l2:S,@l3:S) -> zip3#2(@l2:S,@l3:S,@x:S,@xs:S) zip3#1(nil,@l2:S,@l3:S) -> nil zip3#2(::(@y:S,@ys:S),@l3:S,@x:S,@xs:S) -> zip3#3(@l3:S,@x:S,@xs:S,@y:S,@ys:S) zip3#2(nil,@l3:S,@x:S,@xs:S) -> nil zip3#3(::(@z:S,@zs:S),@x:S,@xs:S,@y:S,@ys:S) -> ::(tuple#3(@x:S,@y:S,@z:S),zip3(@xs:S,@ys:S,@zs:S)) zip3#3(nil,@x:S,@xs:S,@y:S,@ys:S) -> nil ->->Cycle: ->->-> Pairs: GROUP3(@l:S) -> GROUP3#1(@l:S) GROUP3#1(::(@x:S,@xs:S)) -> GROUP3#2(@xs:S,@x:S) GROUP3#2(::(@y:S,@ys:S),@x:S) -> GROUP3#3(@ys:S,@x:S,@y:S) GROUP3#3(::(@z:S,@zs:S),@x:S,@y:S) -> GROUP3(@zs:S) ->->-> Rules: group3(@l:S) -> group3#1(@l:S) group3#1(::(@x:S,@xs:S)) -> group3#2(@xs:S,@x:S) group3#1(nil) -> nil group3#2(::(@y:S,@ys:S),@x:S) -> group3#3(@ys:S,@x:S,@y:S) group3#2(nil,@x:S) -> nil group3#3(::(@z:S,@zs:S),@x:S,@y:S) -> ::(tuple#3(@x:S,@y:S,@z:S),group3(@zs:S)) group3#3(nil,@x:S,@y:S) -> nil zip3(@l1:S,@l2:S,@l3:S) -> zip3#1(@l1:S,@l2:S,@l3:S) zip3#1(::(@x:S,@xs:S),@l2:S,@l3:S) -> zip3#2(@l2:S,@l3:S,@x:S,@xs:S) zip3#1(nil,@l2:S,@l3:S) -> nil zip3#2(::(@y:S,@ys:S),@l3:S,@x:S,@xs:S) -> zip3#3(@l3:S,@x:S,@xs:S,@y:S,@ys:S) zip3#2(nil,@l3:S,@x:S,@xs:S) -> nil zip3#3(::(@z:S,@zs:S),@x:S,@xs:S,@y:S,@ys:S) -> ::(tuple#3(@x:S,@y:S,@z:S),zip3(@xs:S,@ys:S,@zs:S)) zip3#3(nil,@x:S,@xs:S,@y:S,@ys:S) -> nil The problem is decomposed in 2 subproblems. Problem 1.1: Subterm Processor: -> Pairs: ZIP3(@l1:S,@l2:S,@l3:S) -> ZIP3#1(@l1:S,@l2:S,@l3:S) ZIP3#1(::(@x:S,@xs:S),@l2:S,@l3:S) -> ZIP3#2(@l2:S,@l3:S,@x:S,@xs:S) ZIP3#2(::(@y:S,@ys:S),@l3:S,@x:S,@xs:S) -> ZIP3#3(@l3:S,@x:S,@xs:S,@y:S,@ys:S) ZIP3#3(::(@z:S,@zs:S),@x:S,@xs:S,@y:S,@ys:S) -> ZIP3(@xs:S,@ys:S,@zs:S) -> Rules: group3(@l:S) -> group3#1(@l:S) group3#1(::(@x:S,@xs:S)) -> group3#2(@xs:S,@x:S) group3#1(nil) -> nil group3#2(::(@y:S,@ys:S),@x:S) -> group3#3(@ys:S,@x:S,@y:S) group3#2(nil,@x:S) -> nil group3#3(::(@z:S,@zs:S),@x:S,@y:S) -> ::(tuple#3(@x:S,@y:S,@z:S),group3(@zs:S)) group3#3(nil,@x:S,@y:S) -> nil zip3(@l1:S,@l2:S,@l3:S) -> zip3#1(@l1:S,@l2:S,@l3:S) zip3#1(::(@x:S,@xs:S),@l2:S,@l3:S) -> zip3#2(@l2:S,@l3:S,@x:S,@xs:S) zip3#1(nil,@l2:S,@l3:S) -> nil zip3#2(::(@y:S,@ys:S),@l3:S,@x:S,@xs:S) -> zip3#3(@l3:S,@x:S,@xs:S,@y:S,@ys:S) zip3#2(nil,@l3:S,@x:S,@xs:S) -> nil zip3#3(::(@z:S,@zs:S),@x:S,@xs:S,@y:S,@ys:S) -> ::(tuple#3(@x:S,@y:S,@z:S),zip3(@xs:S,@ys:S,@zs:S)) zip3#3(nil,@x:S,@xs:S,@y:S,@ys:S) -> nil ->Projection: pi(ZIP3) = 1 pi(ZIP3#1) = 1 pi(ZIP3#2) = 4 pi(ZIP3#3) = 3 Problem 1.1: SCC Processor: -> Pairs: ZIP3(@l1:S,@l2:S,@l3:S) -> ZIP3#1(@l1:S,@l2:S,@l3:S) ZIP3#2(::(@y:S,@ys:S),@l3:S,@x:S,@xs:S) -> ZIP3#3(@l3:S,@x:S,@xs:S,@y:S,@ys:S) ZIP3#3(::(@z:S,@zs:S),@x:S,@xs:S,@y:S,@ys:S) -> ZIP3(@xs:S,@ys:S,@zs:S) -> Rules: group3(@l:S) -> group3#1(@l:S) group3#1(::(@x:S,@xs:S)) -> group3#2(@xs:S,@x:S) group3#1(nil) -> nil group3#2(::(@y:S,@ys:S),@x:S) -> group3#3(@ys:S,@x:S,@y:S) group3#2(nil,@x:S) -> nil group3#3(::(@z:S,@zs:S),@x:S,@y:S) -> ::(tuple#3(@x:S,@y:S,@z:S),group3(@zs:S)) group3#3(nil,@x:S,@y:S) -> nil zip3(@l1:S,@l2:S,@l3:S) -> zip3#1(@l1:S,@l2:S,@l3:S) zip3#1(::(@x:S,@xs:S),@l2:S,@l3:S) -> zip3#2(@l2:S,@l3:S,@x:S,@xs:S) zip3#1(nil,@l2:S,@l3:S) -> nil zip3#2(::(@y:S,@ys:S),@l3:S,@x:S,@xs:S) -> zip3#3(@l3:S,@x:S,@xs:S,@y:S,@ys:S) zip3#2(nil,@l3:S,@x:S,@xs:S) -> nil zip3#3(::(@z:S,@zs:S),@x:S,@xs:S,@y:S,@ys:S) -> ::(tuple#3(@x:S,@y:S,@z:S),zip3(@xs:S,@ys:S,@zs:S)) zip3#3(nil,@x:S,@xs:S,@y:S,@ys:S) -> nil ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.2: Subterm Processor: -> Pairs: GROUP3(@l:S) -> GROUP3#1(@l:S) GROUP3#1(::(@x:S,@xs:S)) -> GROUP3#2(@xs:S,@x:S) GROUP3#2(::(@y:S,@ys:S),@x:S) -> GROUP3#3(@ys:S,@x:S,@y:S) GROUP3#3(::(@z:S,@zs:S),@x:S,@y:S) -> GROUP3(@zs:S) -> Rules: group3(@l:S) -> group3#1(@l:S) group3#1(::(@x:S,@xs:S)) -> group3#2(@xs:S,@x:S) group3#1(nil) -> nil group3#2(::(@y:S,@ys:S),@x:S) -> group3#3(@ys:S,@x:S,@y:S) group3#2(nil,@x:S) -> nil group3#3(::(@z:S,@zs:S),@x:S,@y:S) -> ::(tuple#3(@x:S,@y:S,@z:S),group3(@zs:S)) group3#3(nil,@x:S,@y:S) -> nil zip3(@l1:S,@l2:S,@l3:S) -> zip3#1(@l1:S,@l2:S,@l3:S) zip3#1(::(@x:S,@xs:S),@l2:S,@l3:S) -> zip3#2(@l2:S,@l3:S,@x:S,@xs:S) zip3#1(nil,@l2:S,@l3:S) -> nil zip3#2(::(@y:S,@ys:S),@l3:S,@x:S,@xs:S) -> zip3#3(@l3:S,@x:S,@xs:S,@y:S,@ys:S) zip3#2(nil,@l3:S,@x:S,@xs:S) -> nil zip3#3(::(@z:S,@zs:S),@x:S,@xs:S,@y:S,@ys:S) -> ::(tuple#3(@x:S,@y:S,@z:S),zip3(@xs:S,@ys:S,@zs:S)) zip3#3(nil,@x:S,@xs:S,@y:S,@ys:S) -> nil ->Projection: pi(GROUP3) = 1 pi(GROUP3#1) = 1 pi(GROUP3#2) = 1 pi(GROUP3#3) = 1 Problem 1.2: SCC Processor: -> Pairs: GROUP3(@l:S) -> GROUP3#1(@l:S) -> Rules: group3(@l:S) -> group3#1(@l:S) group3#1(::(@x:S,@xs:S)) -> group3#2(@xs:S,@x:S) group3#1(nil) -> nil group3#2(::(@y:S,@ys:S),@x:S) -> group3#3(@ys:S,@x:S,@y:S) group3#2(nil,@x:S) -> nil group3#3(::(@z:S,@zs:S),@x:S,@y:S) -> ::(tuple#3(@x:S,@y:S,@z:S),group3(@zs:S)) group3#3(nil,@x:S,@y:S) -> nil zip3(@l1:S,@l2:S,@l3:S) -> zip3#1(@l1:S,@l2:S,@l3:S) zip3#1(::(@x:S,@xs:S),@l2:S,@l3:S) -> zip3#2(@l2:S,@l3:S,@x:S,@xs:S) zip3#1(nil,@l2:S,@l3:S) -> nil zip3#2(::(@y:S,@ys:S),@l3:S,@x:S,@xs:S) -> zip3#3(@l3:S,@x:S,@xs:S,@y:S,@ys:S) zip3#2(nil,@l3:S,@x:S,@xs:S) -> nil zip3#3(::(@z:S,@zs:S),@x:S,@xs:S,@y:S,@ys:S) -> ::(tuple#3(@x:S,@y:S,@z:S),zip3(@xs:S,@ys:S,@zs:S)) zip3#3(nil,@x:S,@xs:S,@y:S,@ys:S) -> nil ->Strongly Connected Components: There is no strongly connected component The problem is finite.