YES TRS: merge(nil(),y) -> y merge(x,nil()) -> x merge(.(x,y),.(u,v)) -> if(<(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v))) ++(nil(),y) -> y ++(.(x,y),z) -> .(x,++(y,z)) if(true(),x,y) -> x if(false(),x,y) -> x max/plus interpretations on N: merge_A(x1,x2) = max{10, 4 + x1, 1 + x2} merge#_A(x1,x2) = max{2, 7, 1} nil_A = 0 nil#_A = 0 ._A(x1,x2) = max{11, 9, 7} .#_A(x1,x2) = max{6, 4, 3} if_A(x1,x2,x3) = max{14, 11, 3 + x2, 8} if#_A(x1,x2,x3) = max{0, 0, 3, 0} <_A(x1,x2) = max{1, 1 + x1, 1 + x2} <#_A(x1,x2) = max{6, 0, 0} ++_A(x1,x2) = max{11, 9, 6 + x2} ++#_A(x1,x2) = max{7, 7, 5} true_A = 0 true#_A = 0 false_A = 0 false#_A = 0 precedence: merge = ++ > nil = . = if = < = true = false