Term Rewriting System R: [X, Y, Z, X1, X2] a__first(0, X) -> nil a__first(s(X), cons(Y, Z)) -> cons(mark(Y), first(X, Z)) a__first(X1, X2) -> first(X1, X2) a__from(X) -> cons(mark(X), from(s(X))) a__from(X) -> from(X) mark(first(X1, X2)) -> a__first(mark(X1), mark(X2)) mark(from(X)) -> a__from(mark(X)) mark(0) -> 0 mark(nil) -> nil mark(s(X)) -> s(mark(X)) mark(cons(X1, X2)) -> cons(mark(X1), X2) Termination of R to be shown. R contains the following Dependency Pairs: A__FIRST(s(X), cons(Y, Z)) -> MARK(Y) A__FROM(X) -> MARK(X) MARK(s(X)) -> MARK(X) MARK(first(X1, X2)) -> A__FIRST(mark(X1), mark(X2)) MARK(first(X1, X2)) -> MARK(X1) MARK(first(X1, X2)) -> MARK(X2) MARK(cons(X1, X2)) -> MARK(X1) MARK(from(X)) -> A__FROM(mark(X)) MARK(from(X)) -> MARK(X) Furthermore, R contains one SCC. SCC1: MARK(from(X)) -> MARK(X) A__FROM(X) -> MARK(X) MARK(from(X)) -> A__FROM(mark(X)) MARK(cons(X1, X2)) -> MARK(X1) MARK(first(X1, X2)) -> MARK(X2) MARK(first(X1, X2)) -> MARK(X1) MARK(first(X1, X2)) -> A__FIRST(mark(X1), mark(X2)) MARK(s(X)) -> MARK(X) A__FIRST(s(X), cons(Y, Z)) -> MARK(Y) By using a polynomial ordering, at least one Dependency Pair of this SCC can be strictly oriented. Additionally, the following rules can be oriented: a__from(X) -> cons(mark(X), from(s(X))) a__from(X) -> from(X) mark(s(X)) -> s(mark(X)) mark(first(X1, X2)) -> a__first(mark(X1), mark(X2)) mark(nil) -> nil mark(0) -> 0 mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(from(X)) -> a__from(mark(X)) a__first(0, X) -> nil a__first(X1, X2) -> first(X1, X2) a__first(s(X), cons(Y, Z)) -> cons(mark(Y), first(X, Z)) Used ordering: Polynomial ordering with Polynomial interpretation: POL(first(x_1, x_2)) = x_1 + x_2 POL(nil) = 0 POL(s(x_1)) = x_1 POL(A__FROM(x_1)) = x_1 POL(A__FIRST(x_1, x_2)) = x_2 POL(a__from(x_1)) = 1 + x_1 POL(mark(x_1)) = x_1 POL(MARK(x_1)) = x_1 POL(from(x_1)) = 1 + x_1 POL(a__first(x_1, x_2)) = x_1 + x_2 POL(0) = 0 POL(cons(x_1, x_2)) = x_1 resulting in one subcycle. SCC1.Polo1: MARK(cons(X1, X2)) -> MARK(X1) MARK(first(X1, X2)) -> MARK(X2) MARK(first(X1, X2)) -> MARK(X1) A__FIRST(s(X), cons(Y, Z)) -> MARK(Y) MARK(first(X1, X2)) -> A__FIRST(mark(X1), mark(X2)) MARK(s(X)) -> MARK(X) By using a polynomial ordering, at least one Dependency Pair of this SCC can be strictly oriented. Additionally, the following rules can be oriented: a__from(X) -> cons(mark(X), from(s(X))) a__from(X) -> from(X) mark(s(X)) -> s(mark(X)) mark(first(X1, X2)) -> a__first(mark(X1), mark(X2)) mark(nil) -> nil mark(0) -> 0 mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(from(X)) -> a__from(mark(X)) a__first(0, X) -> nil a__first(X1, X2) -> first(X1, X2) a__first(s(X), cons(Y, Z)) -> cons(mark(Y), first(X, Z)) Used ordering: Polynomial ordering with Polynomial interpretation: POL(first(x_1, x_2)) = 1 + x_1 + x_2 POL(nil) = 0 POL(s(x_1)) = 1 + x_1 POL(A__FIRST(x_1, x_2)) = x_2 POL(a__from(x_1)) = 1 + x_1 POL(mark(x_1)) = x_1 POL(MARK(x_1)) = x_1 POL(from(x_1)) = 1 + x_1 POL(a__first(x_1, x_2)) = 1 + x_1 + x_2 POL(0) = 0 POL(cons(x_1, x_2)) = 1 + x_1 resulting in no subcycles. Termination of R successfully shown. Duration: 1.285 seconds.