Termination proof

1: switching to dependency pairs

The following set of initial dependency pairs has been identified.

a__and#( tt , X ) mark#( X )
a__plus#( N , 0 ) mark#( N )
a__plus#( N , s( M ) ) a__plus#( mark( N ) , mark( M ) )
a__plus#( N , s( M ) ) mark#( N )
a__plus#( N , s( M ) ) mark#( M )
mark#( and( X1 , X2 ) ) a__and#( mark( X1 ) , X2 )
mark#( and( X1 , X2 ) ) mark#( X1 )
mark#( plus( X1 , X2 ) ) a__plus#( mark( X1 ) , mark( X2 ) )
mark#( plus( X1 , X2 ) ) mark#( X1 )
mark#( plus( X1 , X2 ) ) mark#( X2 )
mark#( s( X ) ) mark#( X )

1.1: reduction pair processor

Using the following reduction pair

Linear polynomial interpretation over the naturals
[mark (x1) ] = x1
[and (x1, x2) ] = x1 + x2
[plus (x1, x2) ] = x1 + x2
[a__and# (x1, x2) ] = x1
[mark# (x1) ] = x1
[0] = 1
[s (x1) ] = x1 + 1
[a__plus (x1, x2) ] = x1 + x2
[a__plus# (x1, x2) ] = x1 + x2
[tt] = 0
[a__and (x1, x2) ] = x1 + x2
[f(x1, ..., xn)] = x1 + ... + xn + 1 for all other symbols f of arity n

one remains with the following pair(s).

a__and#( tt , X ) mark#( X )
mark#( and( X1 , X2 ) ) a__and#( mark( X1 ) , X2 )
mark#( and( X1 , X2 ) ) mark#( X1 )
mark#( plus( X1 , X2 ) ) a__plus#( mark( X1 ) , mark( X2 ) )
mark#( plus( X1 , X2 ) ) mark#( X1 )
mark#( plus( X1 , X2 ) ) mark#( X2 )

1.1.1: dependency graph processor

The dependency pairs are split into 1 component(s).