YES Problem: fst(0(),Z) -> nil() fst(s(),cons(Y)) -> cons(Y) from(X) -> cons(X) add(0(),X) -> X add(s(),Y) -> s() len(nil()) -> 0() len(cons(X)) -> s() Proof: Matrix Interpretation Processor: dim=3 interpretation: [1 0 0] [1] [len](x0) = [0 1 0]x0 + [0] [0 1 0] [0], [1 0 0] [1 1 1] [1] [add](x0, x1) = [0 1 0]x0 + [1 1 1]x1 + [0] [0 1 0] [1 1 1] [0], [1 0 0] [1] [from](x0) = [0 0 0]x0 + [0] [0 0 0] [0], [1 0 0] [cons](x0) = [0 0 0]x0 [0 0 0] , [0] [s] = [0] [0], [0] [nil] = [1] [0], [1 0 0] [1 0 0] [1] [fst](x0, x1) = [0 1 0]x0 + [0 0 0]x1 + [0] [0 0 0] [0 0 0] [0], [0] [0] = [1] [1] orientation: [1 0 0] [1] [0] fst(0(),Z) = [0 0 0]Z + [1] >= [1] = nil() [0 0 0] [0] [0] [1 0 0] [1] [1 0 0] fst(s(),cons(Y)) = [0 0 0]Y + [0] >= [0 0 0]Y = cons(Y) [0 0 0] [0] [0 0 0] [1 0 0] [1] [1 0 0] from(X) = [0 0 0]X + [0] >= [0 0 0]X = cons(X) [0 0 0] [0] [0 0 0] [1 1 1] [1] add(0(),X) = [1 1 1]X + [1] >= X = X [1 1 1] [1] [1 1 1] [1] [0] add(s(),Y) = [1 1 1]Y + [0] >= [0] = s() [1 1 1] [0] [0] [1] [0] len(nil()) = [1] >= [1] = 0() [1] [1] [1 0 0] [1] [0] len(cons(X)) = [0 0 0]X + [0] >= [0] = s() [0 0 0] [0] [0] problem: Qed