YES Termination Proof using AProVETerm Rewriting System R:
[V2, L, N, V1, V]
zeros -> cons(0, zeros)
U11(tt) -> tt
U21(tt) -> tt
U31(tt) -> tt
U41(tt, V2) -> U42(isNatIList(V2))
U42(tt) -> tt
U51(tt, V2) -> U52(isNatList(V2))
U52(tt) -> tt
U61(tt, L, N) -> U62(isNat(N), L)
U62(tt, L) -> s(length(L))
isNat(0) -> tt
isNat(length(V1)) -> U11(isNatList(V1))
isNat(s(V1)) -> U21(isNat(V1))
isNatIList(V) -> U31(isNatList(V))
isNatIList(zeros) -> tt
isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2)
isNatList(nil) -> tt
isNatList(cons(V1, V2)) -> U51(isNat(V1), V2)
length(nil) -> 0
length(cons(N, L)) -> U61(isNatList(L), L, N)

Termination of R to be shown.



   TRS
CSR to TRS Transformation




incomplete Giesl-Middeldorp-Transformation successful.
Replacement map:
isNatList(1)
U31(1)
U42(1)
U52(1)
U11(1)
isNat(1)
U51(1, 2)
U62(1, 2)
U41(1, 2)
cons(1, 2)
U21(1)
U61(1, 2, 3)
s(1)
length(1)
isNatIList(1)

Old CSR:

zeros -> cons(0, zeros)
U11(tt) -> tt
U21(tt) -> tt
U31(tt) -> tt
U41(tt, V2) -> U42(isNatIList(V2))
U42(tt) -> tt
U51(tt, V2) -> U52(isNatList(V2))
U52(tt) -> tt
U61(tt, L, N) -> U62(isNat(N), L)
U62(tt, L) -> s(length(L))
isNat(0) -> tt
isNat(length(V1)) -> U11(isNatList(V1))
isNat(s(V1)) -> U21(isNat(V1))
isNatIList(V) -> U31(isNatList(V))
isNatIList(zeros) -> tt
isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2)
isNatList(nil) -> tt
isNatList(cons(V1, V2)) -> U51(isNat(V1), V2)
length(nil) -> 0
length(cons(N, L)) -> U61(isNatList(L), L, N)

new TRS:

zeros -> cons(0, zeros)
zeros -> zeros
U11(tt) -> tt
U11(x0) -> U11(x0)
U21(tt) -> tt
U21(x0) -> U21(x0)
U31(tt) -> tt
U31(x0) -> U31(x0)
U41(tt, V2) -> U42(isNatIList(V2))
U41(x0, x1) -> U41(x0, x1)
U42(tt) -> tt
U42(x0) -> U42(x0)
isNatIList(V) -> U31(isNatList(V))
isNatIList(zeros) -> tt
isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2)
isNatIList(x0) -> isNatIList(x0)
U51(tt, V2) -> U52(isNatList(V2))
U51(x0, x1) -> U51(x0, x1)
U52(tt) -> tt
U52(x0) -> U52(x0)
isNatList(nil) -> tt
isNatList(cons(V1, V2)) -> U51(isNat(V1), V2)
isNatList(x0) -> isNatList(x0)
U61(tt, L, N) -> U62(isNat(N), L)
U61(x0, x1, x2) -> U61(x0, x1, x2)
U62(tt, L) -> s(length(mark(L)))
U62(x0, x1) -> U62(x0, x1)
isNat(0) -> tt
isNat(length(V1)) -> U11(isNatList(V1))
isNat(s(V1)) -> U21(isNat(V1))
isNat(x0) -> isNat(x0)
length(nil) -> 0
length(cons(N, L)) -> U61(isNatList(L), L, N)
length(x0) -> length(x0)
mark(isNatList(x0)) -> isNatList(x0)
mark(U31(x0)) -> U31(mark(x0))
mark(U42(x0)) -> U42(mark(x0))
mark(U52(x0)) -> U52(mark(x0))
mark(U11(x0)) -> U11(mark(x0))
mark(isNat(x0)) -> isNat(x0)
mark(U51(x0, x1)) -> U51(mark(x0), x1)
mark(U62(x0, x1)) -> U62(mark(x0), x1)
mark(U41(x0, x1)) -> U41(mark(x0), x1)
mark(U21(x0)) -> U21(mark(x0))
mark(U61(x0, x1, x2)) -> U61(mark(x0), x1, x2)
mark(zeros) -> zeros
mark(length(x0)) -> length(mark(x0))
mark(isNatIList(x0)) -> isNatIList(x0)
mark(cons(x0, x1)) -> cons(mark(x0), x1)
mark(0) -> 0
mark(tt) -> tt
mark(s(x0)) -> s(mark(x0))
mark(nil) -> nil



   TRS
CSRtoTRS
       →TRS1
Removing Redundant Rules



Removing the following rules from R which fullfill a polynomial ordering:

zeros -> cons(0, zeros)
zeros -> zeros
isNatIList(V) -> U31(isNatList(V))
isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2)
isNatIList(x0) -> isNatIList(x0)
U51(tt, V2) -> U52(isNatList(V2))
mark(isNatList(x0)) -> isNatList(x0)
mark(isNat(x0)) -> isNat(x0)
mark(isNatIList(x0)) -> isNatIList(x0)
mark(0) -> 0
mark(tt) -> tt
mark(nil) -> nil

where the Polynomial interpretation:
  POL(_U61_(x1, x2, x3))=  x1 + x2 + x3  
  POL(_U41_(x1, x2))=  x1 + x2  
  POL(isNatList(x1))=  x1  
  POL(_isNatList_(x1))=  x1  
  POL(_length_(x1))=  x1  
  POL(_U52_(x1))=  x1  
  POL(_U31_(x1))=  x1  
  POL(_isNat_(x1))=  x1  
  POL(U42(x1))=  x1  
  POL(U52(x1))=  x1  
  POL(*mark*(x1))=  2 + x1  
  POL(U11(x1))=  x1  
  POL(U51(x1, x2))=  x1 + x2  
  POL(U62(x1, x2))=  1 + x1 + x2  
  POL(_zeros_)=  2  
  POL(_U11_(x1))=  x1  
  POL(cons(x1, x2))=  x1 + 2·x2  
  POL(U21(x1))=  x1  
  POL(_U42_(x1))=  x1  
  POL(_U51_(x1, x2))=  x1 + x2  
  POL(nil)=  1  
  POL(zeros)=  0  
  POL(length(x1))=  x1  
  POL(_isNatIList_(x1))=  1 + x1  
  POL(_U21_(x1))=  x1  
  POL(U31(x1))=  x1  
  POL(_U62_(x1, x2))=  1 + x1 + x2  
  POL(isNat(x1))=  x1  
  POL(U41(x1, x2))=  x1 + x2  
  POL(0)=  1  
  POL(tt)=  1  
  POL(U61(x1, x2, x3))=  x1 + x2 + x3  
  POL(s(x1))=  x1  
  POL(isNatIList(x1))=  x1  
was used.

Not all Rules of R can be deleted, so we still have to regard a part of R.


   TRS
CSRtoTRS
       →TRS1
RRRPolo
           →TRS2
Removing Redundant Rules



Removing the following rules from R which fullfill a polynomial ordering:

isNat(s(V1)) -> U21(isNat(V1))
isNatList(cons(V1, V2)) -> U51(isNat(V1), V2)

where the Polynomial interpretation:
  POL(_U61_(x1, x2, x3))=  1 + x1 + x2 + x3  
  POL(_U41_(x1, x2))=  x1 + x2  
  POL(_isNatList_(x1))=  x1  
  POL(_length_(x1))=  x1  
  POL(isNatList(x1))=  x1  
  POL(_U52_(x1))=  x1  
  POL(_U31_(x1))=  x1  
  POL(_isNat_(x1))=  x1  
  POL(U42(x1))=  x1  
  POL(U52(x1))=  x1  
  POL(*mark*(x1))=  x1  
  POL(U11(x1))=  x1  
  POL(U51(x1, x2))=  x1 + x2  
  POL(U62(x1, x2))=  1 + x1 + x2  
  POL(_zeros_)=  0  
  POL(cons(x1, x2))=  1 + x1 + 2·x2  
  POL(_U11_(x1))=  x1  
  POL(U21(x1))=  x1  
  POL(_U42_(x1))=  x1  
  POL(_U51_(x1, x2))=  x1 + x2  
  POL(nil)=  0  
  POL(zeros)=  0  
  POL(_isNatIList_(x1))=  x1  
  POL(length(x1))=  x1  
  POL(_U21_(x1))=  x1  
  POL(U31(x1))=  x1  
  POL(_U62_(x1, x2))=  1 + x1 + x2  
  POL(isNat(x1))=  x1  
  POL(U41(x1, x2))=  x1 + x2  
  POL(0)=  0  
  POL(tt)=  0  
  POL(U61(x1, x2, x3))=  1 + x1 + x2 + x3  
  POL(s(x1))=  1 + x1  
was used.

Not all Rules of R can be deleted, so we still have to regard a part of R.


   TRS
CSRtoTRS
       →TRS1
RRRPolo
           →TRS2
RRRPolo
             ...
               →TRS3
Removing Redundant Rules



Removing the following rules from R which fullfill a polynomial ordering:

length(nil) -> 0
isNatList(nil) -> tt

where the Polynomial interpretation:
  POL(_U61_(x1, x2, x3))=  x1 + x2 + x3  
  POL(_U41_(x1, x2))=  x1 + x2  
  POL(_length_(x1))=  x1  
  POL(_isNatList_(x1))=  x1  
  POL(isNatList(x1))=  x1  
  POL(_U31_(x1))=  x1  
  POL(_U52_(x1))=  x1  
  POL(U42(x1))=  x1  
  POL(_isNat_(x1))=  x1  
  POL(U52(x1))=  x1  
  POL(*mark*(x1))=  x1  
  POL(U11(x1))=  x1  
  POL(U51(x1, x2))=  x1 + x2  
  POL(U62(x1, x2))=  x1 + x2  
  POL(_zeros_)=  0  
  POL(cons(x1, x2))=  x1 + 2·x2  
  POL(_U11_(x1))=  x1  
  POL(U21(x1))=  x1  
  POL(nil)=  1  
  POL(_U42_(x1))=  x1  
  POL(_U51_(x1, x2))=  x1 + x2  
  POL(zeros)=  0  
  POL(_isNatIList_(x1))=  x1  
  POL(length(x1))=  x1  
  POL(_U21_(x1))=  x1  
  POL(U31(x1))=  x1  
  POL(_U62_(x1, x2))=  x1 + x2  
  POL(isNat(x1))=  x1  
  POL(U41(x1, x2))=  x1 + x2  
  POL(0)=  0  
  POL(tt)=  0  
  POL(s(x1))=  x1  
  POL(U61(x1, x2, x3))=  x1 + x2 + x3  
was used.

Not all Rules of R can be deleted, so we still have to regard a part of R.


   TRS
CSRtoTRS
       →TRS1
RRRPolo
           →TRS2
RRRPolo
             ...
               →TRS4
Dependency Pair Analysis



R contains the following Dependency Pairs:

MARK(U31(x0)) -> U31'(mark(x0))
MARK(U31(x0)) -> MARK(x0)
MARK(U21(x0)) -> U21'(mark(x0))
MARK(U21(x0)) -> MARK(x0)
MARK(U61(x0, x1, x2)) -> U61'(mark(x0), x1, x2)
MARK(U61(x0, x1, x2)) -> MARK(x0)
MARK(U52(x0)) -> U52'(mark(x0))
MARK(U52(x0)) -> MARK(x0)
MARK(U62(x0, x1)) -> U62'(mark(x0), x1)
MARK(U62(x0, x1)) -> MARK(x0)
MARK(U41(x0, x1)) -> U41'(mark(x0), x1)
MARK(U41(x0, x1)) -> MARK(x0)
MARK(U51(x0, x1)) -> U51'(mark(x0), x1)
MARK(U51(x0, x1)) -> MARK(x0)
MARK(s(x0)) -> MARK(x0)
MARK(length(x0)) -> LENGTH(mark(x0))
MARK(length(x0)) -> MARK(x0)
MARK(U11(x0)) -> U11'(mark(x0))
MARK(U11(x0)) -> MARK(x0)
MARK(cons(x0, x1)) -> MARK(x0)
MARK(U42(x0)) -> U42'(mark(x0))
MARK(U42(x0)) -> MARK(x0)
U61'(tt, L, N) -> U62'(isNat(N), L)
U61'(tt, L, N) -> ISNAT(N)
U62'(tt, L) -> LENGTH(mark(L))
U62'(tt, L) -> MARK(L)
LENGTH(cons(N, L)) -> U61'(isNatList(L), L, N)
LENGTH(cons(N, L)) -> ISNATLIST(L)
ISNAT(length(V1)) -> U11'(isNatList(V1))
ISNAT(length(V1)) -> ISNATLIST(V1)
U41'(tt, V2) -> U42'(isNatIList(V2))
U41'(tt, V2) -> ISNATILIST(V2)

Furthermore, R contains one SCC.


   TRS
CSRtoTRS
       →TRS1
RRRPolo
           →TRS2
RRRPolo
             ...
               →DP Problem 1
Negative Polynomial Order


Dependency Pairs:

MARK(U42(x0)) -> MARK(x0)
MARK(cons(x0, x1)) -> MARK(x0)
MARK(U11(x0)) -> MARK(x0)
MARK(length(x0)) -> MARK(x0)
MARK(length(x0)) -> LENGTH(mark(x0))
MARK(s(x0)) -> MARK(x0)
MARK(U51(x0, x1)) -> MARK(x0)
MARK(U41(x0, x1)) -> MARK(x0)
MARK(U62(x0, x1)) -> MARK(x0)
MARK(U62(x0, x1)) -> U62'(mark(x0), x1)
MARK(U52(x0)) -> MARK(x0)
MARK(U61(x0, x1, x2)) -> MARK(x0)
U62'(tt, L) -> MARK(L)
LENGTH(cons(N, L)) -> U61'(isNatList(L), L, N)
U62'(tt, L) -> LENGTH(mark(L))
U61'(tt, L, N) -> U62'(isNat(N), L)
MARK(U61(x0, x1, x2)) -> U61'(mark(x0), x1, x2)
MARK(U21(x0)) -> MARK(x0)
MARK(U31(x0)) -> MARK(x0)


Rules:


mark(U31(x0)) -> U31(mark(x0))
mark(U21(x0)) -> U21(mark(x0))
mark(U61(x0, x1, x2)) -> U61(mark(x0), x1, x2)
mark(U52(x0)) -> U52(mark(x0))
mark(U62(x0, x1)) -> U62(mark(x0), x1)
mark(zeros) -> zeros
mark(U41(x0, x1)) -> U41(mark(x0), x1)
mark(U51(x0, x1)) -> U51(mark(x0), x1)
mark(s(x0)) -> s(mark(x0))
mark(length(x0)) -> length(mark(x0))
mark(U11(x0)) -> U11(mark(x0))
mark(cons(x0, x1)) -> cons(mark(x0), x1)
mark(U42(x0)) -> U42(mark(x0))
U31(x0) -> U31(x0)
U31(tt) -> tt
U42(tt) -> tt
U42(x0) -> U42(x0)
U21(x0) -> U21(x0)
U21(tt) -> tt
U61(x0, x1, x2) -> U61(x0, x1, x2)
U61(tt, L, N) -> U62(isNat(N), L)
U62(tt, L) -> s(length(mark(L)))
U62(x0, x1) -> U62(x0, x1)
length(cons(N, L)) -> U61(isNatList(L), L, N)
length(x0) -> length(x0)
U52(x0) -> U52(x0)
U52(tt) -> tt
isNat(x0) -> isNat(x0)
isNat(length(V1)) -> U11(isNatList(V1))
isNat(0) -> tt
U11(x0) -> U11(x0)
U11(tt) -> tt
U51(x0, x1) -> U51(x0, x1)
U41(tt, V2) -> U42(isNatIList(V2))
U41(x0, x1) -> U41(x0, x1)
isNatList(x0) -> isNatList(x0)
isNatIList(zeros) -> tt





The following Dependency Pairs can be strictly oriented using the given order.

MARK(U42(x0)) -> MARK(x0)
MARK(U41(x0, x1)) -> MARK(x0)


Moreover, the following usable rules (regarding the implicit AFS) are oriented.

mark(U31(x0)) -> U31(mark(x0))
mark(U21(x0)) -> U21(mark(x0))
mark(U61(x0, x1, x2)) -> U61(mark(x0), x1, x2)
mark(U52(x0)) -> U52(mark(x0))
mark(U62(x0, x1)) -> U62(mark(x0), x1)
mark(zeros) -> zeros
mark(U41(x0, x1)) -> U41(mark(x0), x1)
mark(U51(x0, x1)) -> U51(mark(x0), x1)
mark(s(x0)) -> s(mark(x0))
mark(length(x0)) -> length(mark(x0))
mark(U11(x0)) -> U11(mark(x0))
mark(cons(x0, x1)) -> cons(mark(x0), x1)
mark(U42(x0)) -> U42(mark(x0))
isNatList(x0) -> isNatList(x0)
isNat(x0) -> isNat(x0)
isNat(length(V1)) -> U11(isNatList(V1))
isNat(0) -> tt
U31(x0) -> U31(x0)
U31(tt) -> tt
U21(x0) -> U21(x0)
U21(tt) -> tt
U61(x0, x1, x2) -> U61(x0, x1, x2)
U61(tt, L, N) -> U62(isNat(N), L)
U52(x0) -> U52(x0)
U52(tt) -> tt
U62(tt, L) -> s(length(mark(L)))
U62(x0, x1) -> U62(x0, x1)
U41(tt, V2) -> U42(isNatIList(V2))
U41(x0, x1) -> U41(x0, x1)
U51(x0, x1) -> U51(x0, x1)
length(cons(N, L)) -> U61(isNatList(L), L, N)
length(x0) -> length(x0)
U11(x0) -> U11(x0)
U11(tt) -> tt
U42(tt) -> tt
U42(x0) -> U42(x0)
isNatIList(zeros) -> tt


Used ordering:
Polynomial Order with Interpretation:

POL( MARK(x1) ) = x1


POL( U42(x1) ) = x1 + 1


POL( LENGTH(x1) ) = x1


POL( cons(x1, x2) ) = x1 + x2


POL( U61'(x1, ..., x3) ) = x2


POL( U52(x1) ) = x1


POL( s(x1) ) = x1


POL( U21(x1) ) = x1


POL( U61(x1, ..., x3) ) = x1 + x2


POL( U62(x1, x2) ) = x1 + x2


POL( U62'(x1, x2) ) = x2


POL( mark(x1) ) = x1


POL( length(x1) ) = x1


POL( U11(x1) ) = x1


POL( U31(x1) ) = x1


POL( U41(x1, x2) ) = x1 + 1


POL( U51(x1, x2) ) = x1


POL( U31(x1) ) = x1


POL( U21(x1) ) = x1


POL( U61(x1, ..., x3) ) = x1 + x2


POL( U52(x1) ) = x1


POL( U62(x1, x2) ) = x1 + x2


POL( zeros ) = 0


POL( zeros ) = 0


POL( U41(x1, x2) ) = x1 + 1


POL( U51(x1, x2) ) = x1


POL( length(x1) ) = x1


POL( U11(x1) ) = x1


POL( U42(x1) ) = x1 + 1


POL( isNatList(x1) ) = 0


POL( isNatList(x1) ) = 0


POL( isNat(x1) ) = 0


POL( isNat(x1) ) = 0


POL( tt ) = 0


POL( isNatIList(x1) ) = 0



This results in one new DP problem.


   TRS
CSRtoTRS
       →TRS1
RRRPolo
           →TRS2
RRRPolo
             ...
               →DP Problem 2
Negative Polynomial Order


Dependency Pairs:

MARK(cons(x0, x1)) -> MARK(x0)
MARK(U11(x0)) -> MARK(x0)
MARK(length(x0)) -> MARK(x0)
MARK(length(x0)) -> LENGTH(mark(x0))
MARK(s(x0)) -> MARK(x0)
MARK(U51(x0, x1)) -> MARK(x0)
MARK(U62(x0, x1)) -> MARK(x0)
MARK(U62(x0, x1)) -> U62'(mark(x0), x1)
MARK(U52(x0)) -> MARK(x0)
MARK(U61(x0, x1, x2)) -> MARK(x0)
U62'(tt, L) -> MARK(L)
LENGTH(cons(N, L)) -> U61'(isNatList(L), L, N)
U62'(tt, L) -> LENGTH(mark(L))
U61'(tt, L, N) -> U62'(isNat(N), L)
MARK(U61(x0, x1, x2)) -> U61'(mark(x0), x1, x2)
MARK(U21(x0)) -> MARK(x0)
MARK(U31(x0)) -> MARK(x0)


Rules:


mark(U31(x0)) -> U31(mark(x0))
mark(U21(x0)) -> U21(mark(x0))
mark(U61(x0, x1, x2)) -> U61(mark(x0), x1, x2)
mark(U52(x0)) -> U52(mark(x0))
mark(U62(x0, x1)) -> U62(mark(x0), x1)
mark(zeros) -> zeros
mark(U41(x0, x1)) -> U41(mark(x0), x1)
mark(U51(x0, x1)) -> U51(mark(x0), x1)
mark(s(x0)) -> s(mark(x0))
mark(length(x0)) -> length(mark(x0))
mark(U11(x0)) -> U11(mark(x0))
mark(cons(x0, x1)) -> cons(mark(x0), x1)
mark(U42(x0)) -> U42(mark(x0))
U31(x0) -> U31(x0)
U31(tt) -> tt
U42(tt) -> tt
U42(x0) -> U42(x0)
U21(x0) -> U21(x0)
U21(tt) -> tt
U61(x0, x1, x2) -> U61(x0, x1, x2)
U61(tt, L, N) -> U62(isNat(N), L)
U62(tt, L) -> s(length(mark(L)))
U62(x0, x1) -> U62(x0, x1)
length(cons(N, L)) -> U61(isNatList(L), L, N)
length(x0) -> length(x0)
U52(x0) -> U52(x0)
U52(tt) -> tt
isNat(x0) -> isNat(x0)
isNat(length(V1)) -> U11(isNatList(V1))
isNat(0) -> tt
U11(x0) -> U11(x0)
U11(tt) -> tt
U51(x0, x1) -> U51(x0, x1)
U41(tt, V2) -> U42(isNatIList(V2))
U41(x0, x1) -> U41(x0, x1)
isNatList(x0) -> isNatList(x0)
isNatIList(zeros) -> tt





The following Dependency Pairs can be strictly oriented using the given order.

MARK(cons(x0, x1)) -> MARK(x0)
LENGTH(cons(N, L)) -> U61'(isNatList(L), L, N)


Moreover, the following usable rules (regarding the implicit AFS) are oriented.

mark(U31(x0)) -> U31(mark(x0))
mark(U21(x0)) -> U21(mark(x0))
mark(U61(x0, x1, x2)) -> U61(mark(x0), x1, x2)
mark(U52(x0)) -> U52(mark(x0))
mark(U62(x0, x1)) -> U62(mark(x0), x1)
mark(zeros) -> zeros
mark(U41(x0, x1)) -> U41(mark(x0), x1)
mark(U51(x0, x1)) -> U51(mark(x0), x1)
mark(s(x0)) -> s(mark(x0))
mark(length(x0)) -> length(mark(x0))
mark(U11(x0)) -> U11(mark(x0))
mark(cons(x0, x1)) -> cons(mark(x0), x1)
mark(U42(x0)) -> U42(mark(x0))
isNatList(x0) -> isNatList(x0)
isNat(x0) -> isNat(x0)
isNat(length(V1)) -> U11(isNatList(V1))
isNat(0) -> tt
U31(x0) -> U31(x0)
U31(tt) -> tt
U21(x0) -> U21(x0)
U21(tt) -> tt
U61(x0, x1, x2) -> U61(x0, x1, x2)
U61(tt, L, N) -> U62(isNat(N), L)
U52(x0) -> U52(x0)
U52(tt) -> tt
U62(tt, L) -> s(length(mark(L)))
U62(x0, x1) -> U62(x0, x1)
U41(tt, V2) -> U42(isNatIList(V2))
U41(x0, x1) -> U41(x0, x1)
U51(x0, x1) -> U51(x0, x1)
length(cons(N, L)) -> U61(isNatList(L), L, N)
length(x0) -> length(x0)
U11(x0) -> U11(x0)
U11(tt) -> tt
U42(tt) -> tt
U42(x0) -> U42(x0)
isNatIList(zeros) -> tt


Used ordering:
Polynomial Order with Interpretation:

POL( MARK(x1) ) = x1


POL( cons(x1, x2) ) = x1 + x2 + 1


POL( LENGTH(x1) ) = x1


POL( U61'(x1, ..., x3) ) = x2


POL( U52(x1) ) = x1


POL( s(x1) ) = x1


POL( U21(x1) ) = x1


POL( U61(x1, ..., x3) ) = x1 + x2


POL( U62(x1, x2) ) = x1 + x2


POL( U62'(x1, x2) ) = x2


POL( mark(x1) ) = x1


POL( length(x1) ) = x1


POL( U11(x1) ) = x1


POL( U31(x1) ) = x1


POL( U51(x1, x2) ) = x1


POL( U31(x1) ) = x1


POL( U21(x1) ) = x1


POL( U61(x1, ..., x3) ) = x1 + x2


POL( U52(x1) ) = x1


POL( U62(x1, x2) ) = x1 + x2


POL( zeros ) = 0


POL( zeros ) = 0


POL( U41(x1, x2) ) = 0


POL( U41(x1, x2) ) = 0


POL( U51(x1, x2) ) = x1


POL( length(x1) ) = x1


POL( U11(x1) ) = x1


POL( U42(x1) ) = 0


POL( U42(x1) ) = 0


POL( isNatList(x1) ) = 0


POL( isNatList(x1) ) = 0


POL( isNat(x1) ) = 0


POL( isNat(x1) ) = 0


POL( tt ) = 0



This results in one new DP problem.


   TRS
CSRtoTRS
       →TRS1
RRRPolo
           →TRS2
RRRPolo
             ...
               →DP Problem 3
Dependency Graph


Dependency Pairs:

MARK(U11(x0)) -> MARK(x0)
MARK(length(x0)) -> MARK(x0)
MARK(length(x0)) -> LENGTH(mark(x0))
MARK(s(x0)) -> MARK(x0)
MARK(U51(x0, x1)) -> MARK(x0)
MARK(U62(x0, x1)) -> MARK(x0)
MARK(U62(x0, x1)) -> U62'(mark(x0), x1)
MARK(U52(x0)) -> MARK(x0)
MARK(U61(x0, x1, x2)) -> MARK(x0)
U62'(tt, L) -> MARK(L)
U62'(tt, L) -> LENGTH(mark(L))
U61'(tt, L, N) -> U62'(isNat(N), L)
MARK(U61(x0, x1, x2)) -> U61'(mark(x0), x1, x2)
MARK(U21(x0)) -> MARK(x0)
MARK(U31(x0)) -> MARK(x0)


Rules:


mark(U31(x0)) -> U31(mark(x0))
mark(U21(x0)) -> U21(mark(x0))
mark(U61(x0, x1, x2)) -> U61(mark(x0), x1, x2)
mark(U52(x0)) -> U52(mark(x0))
mark(U62(x0, x1)) -> U62(mark(x0), x1)
mark(zeros) -> zeros
mark(U41(x0, x1)) -> U41(mark(x0), x1)
mark(U51(x0, x1)) -> U51(mark(x0), x1)
mark(s(x0)) -> s(mark(x0))
mark(length(x0)) -> length(mark(x0))
mark(U11(x0)) -> U11(mark(x0))
mark(cons(x0, x1)) -> cons(mark(x0), x1)
mark(U42(x0)) -> U42(mark(x0))
U31(x0) -> U31(x0)
U31(tt) -> tt
U42(tt) -> tt
U42(x0) -> U42(x0)
U21(x0) -> U21(x0)
U21(tt) -> tt
U61(x0, x1, x2) -> U61(x0, x1, x2)
U61(tt, L, N) -> U62(isNat(N), L)
U62(tt, L) -> s(length(mark(L)))
U62(x0, x1) -> U62(x0, x1)
length(cons(N, L)) -> U61(isNatList(L), L, N)
length(x0) -> length(x0)
U52(x0) -> U52(x0)
U52(tt) -> tt
isNat(x0) -> isNat(x0)
isNat(length(V1)) -> U11(isNatList(V1))
isNat(0) -> tt
U11(x0) -> U11(x0)
U11(tt) -> tt
U51(x0, x1) -> U51(x0, x1)
U41(tt, V2) -> U42(isNatIList(V2))
U41(x0, x1) -> U41(x0, x1)
isNatList(x0) -> isNatList(x0)
isNatIList(zeros) -> tt





Using the Dependency Graph the DP problem was split into 1 DP problems.


   TRS
CSRtoTRS
       →TRS1
RRRPolo
           →TRS2
RRRPolo
             ...
               →DP Problem 4
Size-Change Principle


Dependency Pairs:

MARK(length(x0)) -> MARK(x0)
MARK(s(x0)) -> MARK(x0)
MARK(U51(x0, x1)) -> MARK(x0)
MARK(U62(x0, x1)) -> MARK(x0)
MARK(U62(x0, x1)) -> U62'(mark(x0), x1)
MARK(U52(x0)) -> MARK(x0)
MARK(U61(x0, x1, x2)) -> MARK(x0)
U62'(tt, L) -> MARK(L)
U61'(tt, L, N) -> U62'(isNat(N), L)
MARK(U61(x0, x1, x2)) -> U61'(mark(x0), x1, x2)
MARK(U21(x0)) -> MARK(x0)
MARK(U31(x0)) -> MARK(x0)
MARK(U11(x0)) -> MARK(x0)


Rules:


mark(U31(x0)) -> U31(mark(x0))
mark(U21(x0)) -> U21(mark(x0))
mark(U61(x0, x1, x2)) -> U61(mark(x0), x1, x2)
mark(U52(x0)) -> U52(mark(x0))
mark(U62(x0, x1)) -> U62(mark(x0), x1)
mark(zeros) -> zeros
mark(U41(x0, x1)) -> U41(mark(x0), x1)
mark(U51(x0, x1)) -> U51(mark(x0), x1)
mark(s(x0)) -> s(mark(x0))
mark(length(x0)) -> length(mark(x0))
mark(U11(x0)) -> U11(mark(x0))
mark(cons(x0, x1)) -> cons(mark(x0), x1)
mark(U42(x0)) -> U42(mark(x0))
U31(x0) -> U31(x0)
U31(tt) -> tt
U42(tt) -> tt
U42(x0) -> U42(x0)
U21(x0) -> U21(x0)
U21(tt) -> tt
U61(x0, x1, x2) -> U61(x0, x1, x2)
U61(tt, L, N) -> U62(isNat(N), L)
U62(tt, L) -> s(length(mark(L)))
U62(x0, x1) -> U62(x0, x1)
length(cons(N, L)) -> U61(isNatList(L), L, N)
length(x0) -> length(x0)
U52(x0) -> U52(x0)
U52(tt) -> tt
isNat(x0) -> isNat(x0)
isNat(length(V1)) -> U11(isNatList(V1))
isNat(0) -> tt
U11(x0) -> U11(x0)
U11(tt) -> tt
U51(x0, x1) -> U51(x0, x1)
U41(tt, V2) -> U42(isNatIList(V2))
U41(x0, x1) -> U41(x0, x1)
isNatList(x0) -> isNatList(x0)
isNatIList(zeros) -> tt





We number the DPs as follows:
  1. MARK(length(x0)) -> MARK(x0)
  2. MARK(s(x0)) -> MARK(x0)
  3. MARK(U51(x0, x1)) -> MARK(x0)
  4. MARK(U62(x0, x1)) -> MARK(x0)
  5. MARK(U62(x0, x1)) -> U62'(mark(x0), x1)
  6. MARK(U52(x0)) -> MARK(x0)
  7. MARK(U61(x0, x1, x2)) -> MARK(x0)
  8. U62'(tt, L) -> MARK(L)
  9. U61'(tt, L, N) -> U62'(isNat(N), L)
  10. MARK(U61(x0, x1, x2)) -> U61'(mark(x0), x1, x2)
  11. MARK(U21(x0)) -> MARK(x0)
  12. MARK(U31(x0)) -> MARK(x0)
  13. MARK(U11(x0)) -> MARK(x0)
and get the following Size-Change Graph(s):
{12, 11, 7, 6, 4, 3, 2, 1, 13} , {12, 11, 7, 6, 4, 3, 2, 1, 13}
1>1
{5} , {5}
1>2
{8} , {8}
2=1
{9} , {9}
2=2
{10} , {10}
1>2
1>3

which lead(s) to this/these maximal multigraph(s):
{12, 11, 7, 6, 4, 3, 2, 1, 13} , {12, 11, 7, 6, 4, 3, 2, 1, 13}
1>1
{8} , {5}
2>2
{5} , {8}
1>1
{5} , {12, 11, 7, 6, 4, 3, 2, 1, 13}
1>1
{8} , {9}
2>2
{10} , {8}
1>1
{9} , {10}
2>2
2>3
{12, 11, 7, 6, 4, 3, 2, 1, 13} , {8}
1>1
{10} , {12, 11, 7, 6, 4, 3, 2, 1, 13}
1>1

DP: empty set
Oriented Rules: none

We used the order Homeomorphic Embedding Order with Non-Strict Precedence.
trivial

with Argument Filtering System:
U51(x1, x2) -> U51(x1, x2)
U62(x1, x2) -> U62(x1, x2)
U31(x1) -> U31(x1)
U21(x1) -> U21(x1)
U52(x1) -> U52(x1)
U61(x1, x2, x3) -> U61(x1, x2, x3)
s(x1) -> s(x1)
U11(x1) -> U11(x1)
length(x1) -> length(x1)

We obtain no new DP problems.

Termination of R successfully shown.
Duration:
0:27 minutes