YES Problem: rec[foldr_0][3](Nil()) -> fleft_0() rec[foldr_0][3](Cons(x40,x14)) -> step_x_f(x40,rec[foldr_0][3](x14)) step_x_f[1](x4,step_x_f(x3,x2),x1) -> step_x_f[1](x3,x2,rev_0[2](x1,x4)) step_x_f[1](x11,fleft_0(),x7) -> rev_0[2](x7,x11) rev_0[2](x6,x10) -> Cons(x10,x6) main(Nil()) -> Nil() main(Cons(x20,x25)) -> step_x_f[1](x20,rec[foldr_0][3](x25),Nil()) Proof: Matrix Interpretation Processor: dim=1 interpretation: [main](x0) = 5x0 + 4, [rev_0[2]](x0, x1) = x0 + 4x1 + 4, [step_x_f[1]](x0, x1, x2) = 4x0 + 2x1 + x2 + 2, [step_x_f](x0, x1) = 2x0 + x1 + 2, [Cons](x0, x1) = x0 + x1 + 1, [fleft_0] = 1, [rec[foldr_0][3]](x0) = 2x0 + 1, [Nil] = 0 orientation: rec[foldr_0][3](Nil()) = 1 >= 1 = fleft_0() rec[foldr_0][3](Cons(x40,x14)) = 2x14 + 2x40 + 3 >= 2x14 + 2x40 + 3 = step_x_f(x40,rec[foldr_0][3](x14)) step_x_f[1](x4,step_x_f(x3,x2),x1) = x1 + 2x2 + 4x3 + 4x4 + 6 >= x1 + 2x2 + 4x3 + 4x4 + 6 = step_x_f[1](x3,x2,rev_0[2](x1,x4)) step_x_f[1](x11,fleft_0(),x7) = 4x11 + x7 + 4 >= 4x11 + x7 + 4 = rev_0[2](x7,x11) rev_0[2](x6,x10) = 4x10 + x6 + 4 >= x10 + x6 + 1 = Cons(x10,x6) main(Nil()) = 4 >= 0 = Nil() main(Cons(x20,x25)) = 5x20 + 5x25 + 9 >= 4x20 + 4x25 + 4 = step_x_f[1](x20,rec[foldr_0][3](x25),Nil()) problem: rec[foldr_0][3](Nil()) -> fleft_0() rec[foldr_0][3](Cons(x40,x14)) -> step_x_f(x40,rec[foldr_0][3](x14)) step_x_f[1](x4,step_x_f(x3,x2),x1) -> step_x_f[1](x3,x2,rev_0[2](x1,x4)) step_x_f[1](x11,fleft_0(),x7) -> rev_0[2](x7,x11) Matrix Interpretation Processor: dim=1 interpretation: [rev_0[2]](x0, x1) = x0 + x1, [step_x_f[1]](x0, x1, x2) = 4x0 + 5x1 + 4x2 + 4, [step_x_f](x0, x1) = 4x0 + 5x1, [Cons](x0, x1) = 4x0 + 5x1, [fleft_0] = 1, [rec[foldr_0][3]](x0) = x0, [Nil] = 1 orientation: rec[foldr_0][3](Nil()) = 1 >= 1 = fleft_0() rec[foldr_0][3](Cons(x40,x14)) = 5x14 + 4x40 >= 5x14 + 4x40 = step_x_f(x40,rec[foldr_0][3](x14)) step_x_f[1](x4,step_x_f(x3,x2),x1) = 4x1 + 25x2 + 20x3 + 4x4 + 4 >= 4x1 + 5x2 + 4x3 + 4x4 + 4 = step_x_f[1](x3,x2,rev_0[2](x1,x4)) step_x_f[1](x11,fleft_0(),x7) = 4x11 + 4x7 + 9 >= x11 + x7 = rev_0[2](x7,x11) problem: rec[foldr_0][3](Nil()) -> fleft_0() rec[foldr_0][3](Cons(x40,x14)) -> step_x_f(x40,rec[foldr_0][3](x14)) step_x_f[1](x4,step_x_f(x3,x2),x1) -> step_x_f[1](x3,x2,rev_0[2](x1,x4)) Matrix Interpretation Processor: dim=1 interpretation: [rev_0[2]](x0, x1) = x0 + x1, [step_x_f[1]](x0, x1, x2) = 4x0 + x1 + 4x2, [step_x_f](x0, x1) = 4x0 + x1 + 5, [Cons](x0, x1) = 4x0 + x1 + 5, [fleft_0] = 0, [rec[foldr_0][3]](x0) = x0, [Nil] = 0 orientation: rec[foldr_0][3](Nil()) = 0 >= 0 = fleft_0() rec[foldr_0][3](Cons(x40,x14)) = x14 + 4x40 + 5 >= x14 + 4x40 + 5 = step_x_f(x40,rec[foldr_0][3](x14)) step_x_f[1](x4,step_x_f(x3,x2),x1) = 4x1 + x2 + 4x3 + 4x4 + 5 >= 4x1 + x2 + 4x3 + 4x4 = step_x_f[1](x3,x2,rev_0[2](x1,x4)) problem: rec[foldr_0][3](Nil()) -> fleft_0() rec[foldr_0][3](Cons(x40,x14)) -> step_x_f(x40,rec[foldr_0][3](x14)) Matrix Interpretation Processor: dim=3 interpretation: [1 0 0] [1 0 0] [step_x_f](x0, x1) = [0 0 0]x0 + [0 0 0]x1 [0 0 0] [0 1 0] , [1 0 0] [1 0 1] [0] [Cons](x0, x1) = [0 1 0]x0 + [0 0 1]x1 + [0] [0 0 0] [0 0 0] [1], [0] [fleft_0] = [0] [0], [1 0 1] [rec[foldr_0][3]](x0) = [0 0 1]x0 [0 1 1] , [1] [Nil] = [0] [0] orientation: [1] [0] rec[foldr_0][3](Nil()) = [0] >= [0] = fleft_0() [0] [0] [1 0 1] [1 0 0] [1] [1 0 1] [1 0 0] rec[foldr_0][3](Cons(x40,x14)) = [0 0 0]x14 + [0 0 0]x40 + [1] >= [0 0 0]x14 + [0 0 0]x40 = step_x_f(x40,rec[foldr_0][3](x14)) [0 0 1] [0 1 0] [1] [0 0 1] [0 0 0] problem: Qed