Problem: 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() Proof: Complexity Transformation Processor: strict: 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() weak: Matrix Interpretation Processor: dimension: 1 max_matrix: 1 interpretation: [zip3#3](x0, x1, x2, x3, x4) = x0 + x1 + x2 + x3 + x4 + 1, [zip3#2](x0, x1, x2, x3) = x0 + x1 + x2 + x3, [zip3#1](x0, x1, x2) = x0 + x1 + x2, [zip3](x0, x1, x2) = x0 + x1 + x2, [tuple#3](x0, x1, x2) = x0 + x1 + x2, [group3#3](x0, x1, x2) = x0 + x1 + x2, [nil] = 12, [group3#2](x0, x1) = x0 + x1, [::](x0, x1) = x0 + x1, [group3#1](x0) = x0 + 4, [group3](x0) = x0 orientation: group3(@l) = @l >= @l + 4 = group3#1(@l) group3#1(::(@x,@xs)) = @x + @xs + 4 >= @x + @xs = group3#2(@xs,@x) group3#1(nil()) = 16 >= 12 = nil() group3#2(::(@y,@ys),@x) = @x + @y + @ys >= @x + @y + @ys = group3#3(@ys,@x,@y) group3#2(nil(),@x) = @x + 12 >= 12 = nil() group3#3(::(@z,@zs),@x,@y) = @x + @y + @z + @zs >= @x + @y + @z + @zs = ::(tuple#3(@x,@y,@z),group3(@zs)) group3#3(nil(),@x,@y) = @x + @y + 12 >= 12 = nil() zip3(@l1,@l2,@l3) = @l1 + @l2 + @l3 >= @l1 + @l2 + @l3 = zip3#1(@l1,@l2,@l3) zip3#1(::(@x,@xs),@l2,@l3) = @l2 + @l3 + @x + @xs >= @l2 + @l3 + @x + @xs = zip3#2(@l2,@l3,@x,@xs) zip3#1(nil(),@l2,@l3) = @l2 + @l3 + 12 >= 12 = nil() zip3#2(::(@y,@ys),@l3,@x,@xs) = @l3 + @x + @xs + @y + @ys >= @l3 + @x + @xs + @y + @ys + 1 = zip3#3(@l3,@x,@xs,@y,@ys) zip3#2(nil(),@l3,@x,@xs) = @l3 + @x + @xs + 12 >= 12 = nil() zip3#3(::(@z,@zs),@x,@xs,@y,@ys) = @x + @xs + @y + @ys + @z + @zs + 1 >= @x + @xs + @y + @ys + @z + @zs = ::(tuple#3(@x,@y,@z),zip3(@xs,@ys,@zs)) zip3#3(nil(),@x,@xs,@y,@ys) = @x + @xs + @y + @ys + 13 >= 12 = nil() problem: strict: group3(@l) -> group3#1(@l) 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() weak: group3#1(::(@x,@xs)) -> group3#2(@xs,@x) group3#1(nil()) -> 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() Matrix Interpretation Processor: dimension: 1 max_matrix: 1 interpretation: [zip3#3](x0, x1, x2, x3, x4) = x0 + x1 + x2 + x3 + x4 + 5, [zip3#2](x0, x1, x2, x3) = x0 + x1 + x2 + x3 + 8, [zip3#1](x0, x1, x2) = x0 + x1 + x2 + 6, [zip3](x0, x1, x2) = x0 + x1 + x2, [tuple#3](x0, x1, x2) = x0 + x1 + x2 + 4, [group3#3](x0, x1, x2) = x0 + x1 + x2, [nil] = 0, [group3#2](x0, x1) = x0 + x1 + 4, [::](x0, x1) = x0 + x1 + 4, [group3#1](x0) = x0, [group3](x0) = x0 + 9 orientation: group3(@l) = @l + 9 >= @l = group3#1(@l) group3#2(::(@y,@ys),@x) = @x + @y + @ys + 8 >= @x + @y + @ys = group3#3(@ys,@x,@y) group3#2(nil(),@x) = @x + 4 >= 0 = nil() group3#3(::(@z,@zs),@x,@y) = @x + @y + @z + @zs + 4 >= @x + @y + @z + @zs + 17 = ::(tuple#3(@x,@y,@z),group3(@zs)) group3#3(nil(),@x,@y) = @x + @y >= 0 = nil() zip3(@l1,@l2,@l3) = @l1 + @l2 + @l3 >= @l1 + @l2 + @l3 + 6 = zip3#1(@l1,@l2,@l3) zip3#1(::(@x,@xs),@l2,@l3) = @l2 + @l3 + @x + @xs + 10 >= @l2 + @l3 + @x + @xs + 8 = zip3#2(@l2,@l3,@x,@xs) zip3#1(nil(),@l2,@l3) = @l2 + @l3 + 6 >= 0 = nil() zip3#2(::(@y,@ys),@l3,@x,@xs) = @l3 + @x + @xs + @y + @ys + 12 >= @l3 + @x + @xs + @y + @ys + 5 = zip3#3(@l3,@x,@xs,@y,@ys) zip3#2(nil(),@l3,@x,@xs) = @l3 + @x + @xs + 8 >= 0 = nil() group3#1(::(@x,@xs)) = @x + @xs + 4 >= @x + @xs + 4 = group3#2(@xs,@x) group3#1(nil()) = 0 >= 0 = nil() zip3#3(::(@z,@zs),@x,@xs,@y,@ys) = @x + @xs + @y + @ys + @z + @zs + 9 >= @x + @xs + @y + @ys + @z + @zs + 8 = ::(tuple#3(@x,@y,@z),zip3(@xs,@ys,@zs)) zip3#3(nil(),@x,@xs,@y,@ys) = @x + @xs + @y + @ys + 5 >= 0 = nil() problem: strict: 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) weak: group3(@l) -> group3#1(@l) group3#2(::(@y,@ys),@x) -> group3#3(@ys,@x,@y) group3#2(nil(),@x) -> nil() 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() group3#1(::(@x,@xs)) -> group3#2(@xs,@x) group3#1(nil()) -> 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() Matrix Interpretation Processor: dimension: 1 max_matrix: 1 interpretation: [zip3#3](x0, x1, x2, x3, x4) = x0 + x1 + x2 + x3 + x4 + 1, [zip3#2](x0, x1, x2, x3) = x0 + x1 + x2 + x3 + 3, [zip3#1](x0, x1, x2) = x0 + x1 + x2, [zip3](x0, x1, x2) = x0 + x1 + x2 + 1, [tuple#3](x0, x1, x2) = x0 + x1 + x2, [group3#3](x0, x1, x2) = x0 + x1 + x2 + 4, [nil] = 2, [group3#2](x0, x1) = x0 + x1, [::](x0, x1) = x0 + x1 + 4, [group3#1](x0) = x0 + 7, [group3](x0) = x0 + 7 orientation: group3#3(::(@z,@zs),@x,@y) = @x + @y + @z + @zs + 8 >= @x + @y + @z + @zs + 11 = ::(tuple#3(@x,@y,@z),group3(@zs)) group3#3(nil(),@x,@y) = @x + @y + 6 >= 2 = nil() zip3(@l1,@l2,@l3) = @l1 + @l2 + @l3 + 1 >= @l1 + @l2 + @l3 = zip3#1(@l1,@l2,@l3) group3(@l) = @l + 7 >= @l + 7 = group3#1(@l) group3#2(::(@y,@ys),@x) = @x + @y + @ys + 4 >= @x + @y + @ys + 4 = group3#3(@ys,@x,@y) group3#2(nil(),@x) = @x + 2 >= 2 = nil() zip3#1(::(@x,@xs),@l2,@l3) = @l2 + @l3 + @x + @xs + 4 >= @l2 + @l3 + @x + @xs + 3 = zip3#2(@l2,@l3,@x,@xs) zip3#1(nil(),@l2,@l3) = @l2 + @l3 + 2 >= 2 = nil() zip3#2(::(@y,@ys),@l3,@x,@xs) = @l3 + @x + @xs + @y + @ys + 7 >= @l3 + @x + @xs + @y + @ys + 1 = zip3#3(@l3,@x,@xs,@y,@ys) zip3#2(nil(),@l3,@x,@xs) = @l3 + @x + @xs + 5 >= 2 = nil() group3#1(::(@x,@xs)) = @x + @xs + 11 >= @x + @xs = group3#2(@xs,@x) group3#1(nil()) = 9 >= 2 = nil() zip3#3(::(@z,@zs),@x,@xs,@y,@ys) = @x + @xs + @y + @ys + @z + @zs + 5 >= @x + @xs + @y + @ys + @z + @zs + 5 = ::(tuple#3(@x,@y,@z),zip3(@xs,@ys,@zs)) zip3#3(nil(),@x,@xs,@y,@ys) = @x + @xs + @y + @ys + 3 >= 2 = nil() problem: strict: group3#3(::(@z,@zs),@x,@y) -> ::(tuple#3(@x,@y,@z),group3(@zs)) weak: group3#3(nil(),@x,@y) -> nil() zip3(@l1,@l2,@l3) -> zip3#1(@l1,@l2,@l3) group3(@l) -> group3#1(@l) group3#2(::(@y,@ys),@x) -> group3#3(@ys,@x,@y) group3#2(nil(),@x) -> nil() 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() group3#1(::(@x,@xs)) -> group3#2(@xs,@x) group3#1(nil()) -> 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() Matrix Interpretation Processor: dimension: 1 max_matrix: 1 interpretation: [zip3#3](x0, x1, x2, x3, x4) = x0 + x1 + x2 + x3 + x4, [zip3#2](x0, x1, x2, x3) = x0 + x1 + x2 + x3 + 6, [zip3#1](x0, x1, x2) = x0 + x1 + x2, [zip3](x0, x1, x2) = x0 + x1 + x2, [tuple#3](x0, x1, x2) = x0 + x1 + x2, [group3#3](x0, x1, x2) = x0 + x1 + x2 + 8, [nil] = 14, [group3#2](x0, x1) = x0 + x1 + 8, [::](x0, x1) = x0 + x1 + 11, [group3#1](x0) = x0 + 4, [group3](x0) = x0 + 7 orientation: group3#3(::(@z,@zs),@x,@y) = @x + @y + @z + @zs + 19 >= @x + @y + @z + @zs + 18 = ::(tuple#3(@x,@y,@z),group3(@zs)) group3#3(nil(),@x,@y) = @x + @y + 22 >= 14 = nil() zip3(@l1,@l2,@l3) = @l1 + @l2 + @l3 >= @l1 + @l2 + @l3 = zip3#1(@l1,@l2,@l3) group3(@l) = @l + 7 >= @l + 4 = group3#1(@l) group3#2(::(@y,@ys),@x) = @x + @y + @ys + 19 >= @x + @y + @ys + 8 = group3#3(@ys,@x,@y) group3#2(nil(),@x) = @x + 22 >= 14 = nil() zip3#1(::(@x,@xs),@l2,@l3) = @l2 + @l3 + @x + @xs + 11 >= @l2 + @l3 + @x + @xs + 6 = zip3#2(@l2,@l3,@x,@xs) zip3#1(nil(),@l2,@l3) = @l2 + @l3 + 14 >= 14 = nil() zip3#2(::(@y,@ys),@l3,@x,@xs) = @l3 + @x + @xs + @y + @ys + 17 >= @l3 + @x + @xs + @y + @ys = zip3#3(@l3,@x,@xs,@y,@ys) zip3#2(nil(),@l3,@x,@xs) = @l3 + @x + @xs + 20 >= 14 = nil() group3#1(::(@x,@xs)) = @x + @xs + 15 >= @x + @xs + 8 = group3#2(@xs,@x) group3#1(nil()) = 18 >= 14 = nil() zip3#3(::(@z,@zs),@x,@xs,@y,@ys) = @x + @xs + @y + @ys + @z + @zs + 11 >= @x + @xs + @y + @ys + @z + @zs + 11 = ::(tuple#3(@x,@y,@z),zip3(@xs,@ys,@zs)) zip3#3(nil(),@x,@xs,@y,@ys) = @x + @xs + @y + @ys + 14 >= 14 = nil() problem: strict: weak: 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) group3(@l) -> group3#1(@l) group3#2(::(@y,@ys),@x) -> group3#3(@ys,@x,@y) group3#2(nil(),@x) -> nil() 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() group3#1(::(@x,@xs)) -> group3#2(@xs,@x) group3#1(nil()) -> 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() Qed