YES Problem 1: (VAR v_NonEmpty:S l:S l1:S l2:S x:S) (RULES append(l1:S,l2:S) -> ifappend(l1:S,l2:S,is_empty(l1:S)) hd(cons(x:S,l:S)) -> x:S ifappend(l1:S,l2:S,ffalse) -> cons(hd(l1:S),append(tl(l1:S),l2:S)) ifappend(l1:S,l2:S,ttrue) -> l2:S is_empty(cons(x:S,l:S)) -> ffalse is_empty(nil) -> ttrue tl(cons(x:S,l:S)) -> l:S ) Problem 1: Innermost Equivalent Processor: -> Rules: append(l1:S,l2:S) -> ifappend(l1:S,l2:S,is_empty(l1:S)) hd(cons(x:S,l:S)) -> x:S ifappend(l1:S,l2:S,ffalse) -> cons(hd(l1:S),append(tl(l1:S),l2:S)) ifappend(l1:S,l2:S,ttrue) -> l2:S is_empty(cons(x:S,l:S)) -> ffalse is_empty(nil) -> ttrue tl(cons(x:S,l:S)) -> l:S -> The term rewriting system is non-overlaping or locally confluent overlay system. Therefore, innermost termination implies termination. Problem 1: Dependency Pairs Processor: -> Pairs: APPEND(l1:S,l2:S) -> IFAPPEND(l1:S,l2:S,is_empty(l1:S)) APPEND(l1:S,l2:S) -> IS_EMPTY(l1:S) IFAPPEND(l1:S,l2:S,ffalse) -> APPEND(tl(l1:S),l2:S) IFAPPEND(l1:S,l2:S,ffalse) -> HD(l1:S) IFAPPEND(l1:S,l2:S,ffalse) -> TL(l1:S) -> Rules: append(l1:S,l2:S) -> ifappend(l1:S,l2:S,is_empty(l1:S)) hd(cons(x:S,l:S)) -> x:S ifappend(l1:S,l2:S,ffalse) -> cons(hd(l1:S),append(tl(l1:S),l2:S)) ifappend(l1:S,l2:S,ttrue) -> l2:S is_empty(cons(x:S,l:S)) -> ffalse is_empty(nil) -> ttrue tl(cons(x:S,l:S)) -> l:S Problem 1: SCC Processor: -> Pairs: APPEND(l1:S,l2:S) -> IFAPPEND(l1:S,l2:S,is_empty(l1:S)) APPEND(l1:S,l2:S) -> IS_EMPTY(l1:S) IFAPPEND(l1:S,l2:S,ffalse) -> APPEND(tl(l1:S),l2:S) IFAPPEND(l1:S,l2:S,ffalse) -> HD(l1:S) IFAPPEND(l1:S,l2:S,ffalse) -> TL(l1:S) -> Rules: append(l1:S,l2:S) -> ifappend(l1:S,l2:S,is_empty(l1:S)) hd(cons(x:S,l:S)) -> x:S ifappend(l1:S,l2:S,ffalse) -> cons(hd(l1:S),append(tl(l1:S),l2:S)) ifappend(l1:S,l2:S,ttrue) -> l2:S is_empty(cons(x:S,l:S)) -> ffalse is_empty(nil) -> ttrue tl(cons(x:S,l:S)) -> l:S ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: APPEND(l1:S,l2:S) -> IFAPPEND(l1:S,l2:S,is_empty(l1:S)) IFAPPEND(l1:S,l2:S,ffalse) -> APPEND(tl(l1:S),l2:S) ->->-> Rules: append(l1:S,l2:S) -> ifappend(l1:S,l2:S,is_empty(l1:S)) hd(cons(x:S,l:S)) -> x:S ifappend(l1:S,l2:S,ffalse) -> cons(hd(l1:S),append(tl(l1:S),l2:S)) ifappend(l1:S,l2:S,ttrue) -> l2:S is_empty(cons(x:S,l:S)) -> ffalse is_empty(nil) -> ttrue tl(cons(x:S,l:S)) -> l:S Problem 1: Reduction Pairs Processor: -> Pairs: APPEND(l1:S,l2:S) -> IFAPPEND(l1:S,l2:S,is_empty(l1:S)) IFAPPEND(l1:S,l2:S,ffalse) -> APPEND(tl(l1:S),l2:S) -> Rules: append(l1:S,l2:S) -> ifappend(l1:S,l2:S,is_empty(l1:S)) hd(cons(x:S,l:S)) -> x:S ifappend(l1:S,l2:S,ffalse) -> cons(hd(l1:S),append(tl(l1:S),l2:S)) ifappend(l1:S,l2:S,ttrue) -> l2:S is_empty(cons(x:S,l:S)) -> ffalse is_empty(nil) -> ttrue tl(cons(x:S,l:S)) -> l:S -> Usable rules: is_empty(cons(x:S,l:S)) -> ffalse is_empty(nil) -> ttrue tl(cons(x:S,l:S)) -> l:S ->Interpretation type: Linear ->Coefficients: All rationals ->Dimension: 1 ->Bound: 2 ->Interpretation: [append](X1,X2) = 0 [hd](X) = 0 [ifappend](X1,X2,X3) = 0 [is_empty](X) = X [tl](X) = 1/2.X [cons](X1,X2) = 2.X2 + 2 [fSNonEmpty] = 0 [false] = 1/2 [nil] = 1/2 [true] = 1/2 [APPEND](X1,X2) = 2.X1 + 1 [HD](X) = 0 [IFAPPEND](X1,X2,X3) = X1 + X3 + 1/2 [IS_EMPTY](X) = 0 [TL](X) = 0 Problem 1: SCC Processor: -> Pairs: IFAPPEND(l1:S,l2:S,ffalse) -> APPEND(tl(l1:S),l2:S) -> Rules: append(l1:S,l2:S) -> ifappend(l1:S,l2:S,is_empty(l1:S)) hd(cons(x:S,l:S)) -> x:S ifappend(l1:S,l2:S,ffalse) -> cons(hd(l1:S),append(tl(l1:S),l2:S)) ifappend(l1:S,l2:S,ttrue) -> l2:S is_empty(cons(x:S,l:S)) -> ffalse is_empty(nil) -> ttrue tl(cons(x:S,l:S)) -> l:S ->Strongly Connected Components: There is no strongly connected component The problem is finite.