(STRATEGY INNERMOST) (VAR @l @l1 @l2 @l3 @x @xs @y @ys @z @zs) (DATATYPES A = µX.< ::(X, X), nil, tuple#3(X, X, X) >) (SIGNATURES group3 :: [A] -> A group3#1 :: [A] -> A group3#2 :: [A x A] -> A group3#3 :: [A x A x A] -> A zip3 :: [A x A x A] -> A zip3#1 :: [A x A x A] -> A zip3#2 :: [A x A x A x A] -> A zip3#3 :: [A x A x A x A x A] -> A) (RULES group3(@l) -> group3#1(@l) group3#1(::(@x,@xs)) -> group3#2(@xs,@x) group3#1(nil()) -> nil() group3#2(::(@y,@ys),@x) -> group3#3(@ys,@x,@y) group3#2(nil(),@x) -> nil() group3#3(::(@z,@zs),@x,@y) -> ::(tuple#3(@x,@y,@z) ,group3(@zs)) group3#3(nil(),@x,@y) -> nil() zip3(@l1,@l2,@l3) -> zip3#1(@l1 ,@l2 ,@l3) zip3#1(::(@x,@xs),@l2,@l3) -> zip3#2(@l2,@l3,@x,@xs) zip3#1(nil(),@l2,@l3) -> nil() zip3#2(::(@y,@ys),@l3,@x,@xs) -> zip3#3(@l3,@x,@xs,@y,@ys) zip3#2(nil(),@l3,@x,@xs) -> nil() zip3#3(::(@z,@zs) ,@x ,@xs ,@y ,@ys) -> ::(tuple#3(@x,@y,@z) ,zip3(@xs,@ys,@zs)) zip3#3(nil(),@x,@xs,@y,@ys) -> nil())