Termination proof

1: switching to dependency pairs

The following set of initial dependency pairs has been identified.

a__U11#( tt , N ) mark#( N )
a__U21#( tt , M , N ) a__plus#( mark( N ) , mark( M ) )
a__U21#( tt , M , N ) mark#( N )
a__U21#( tt , M , N ) mark#( M )
a__and#( tt , X ) mark#( X )
a__isNat#( plus( V1 , V2 ) ) a__and#( a__isNat( V1 ) , isNat( V2 ) )
a__isNat#( plus( V1 , V2 ) ) a__isNat#( V1 )
a__isNat#( s( V1 ) ) a__isNat#( V1 )
a__plus#( N , 0 ) a__U11#( a__isNat( N ) , N )
a__plus#( N , 0 ) a__isNat#( N )
a__plus#( N , s( M ) ) a__U21#( a__and( a__isNat( M ) , isNat( N ) ) , M , N )
a__plus#( N , s( M ) ) a__and#( a__isNat( M ) , isNat( N ) )
a__plus#( N , s( M ) ) a__isNat#( M )
mark#( U11( X1 , X2 ) ) a__U11#( mark( X1 ) , X2 )
mark#( U11( X1 , X2 ) ) mark#( X1 )
mark#( U21( X1 , X2 , X3 ) ) a__U21#( mark( X1 ) , X2 , X3 )
mark#( U21( X1 , X2 , X3 ) ) 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#( and( X1 , X2 ) ) a__and#( mark( X1 ) , X2 )
mark#( and( X1 , X2 ) ) mark#( X1 )
mark#( isNat( X ) ) a__isNat#( X )
mark#( s( X ) ) mark#( X )

1.1: reduction pair processor

Using the following reduction pair

Linear polynomial interpretation over the naturals
[a__U11 (x1, x2) ] = 2 x1 + x2 + 3
[mark (x1) ] = x1
[a__U21# (x1, x2, x3) ] = x1 + x2 + 1
[U21 (x1, x2, x3) ] = 2 x1 + x2 + x3 + 3
[a__and# (x1, x2) ] = 2 x1 + 1
[mark# (x1) ] = x1 + 1
[a__plus (x1, x2) ] = x1 + x2 + 3
[0] = 3
[tt] = 0
[a__isNat# (x1) ] = 1
[a__and (x1, x2) ] = x1 + 2 x2
[isNat (x1) ] = 0
[U11 (x1, x2) ] = 2 x1 + x2 + 3
[and (x1, x2) ] = x1 + 2 x2
[a__U21 (x1, x2, x3) ] = 2 x1 + x2 + x3 + 3
[plus (x1, x2) ] = x1 + x2 + 3
[a__U11# (x1, x2) ] = x1 + 3
[s (x1) ] = x1
[a__isNat (x1) ] = 0
[a__plus# (x1, x2) ] = x1 + x2 + 1
[f(x1, ..., xn)] = x1 + ... + xn + 1 for all other symbols f of arity n

one remains with the following pair(s).

a__U21#( tt , M , N ) a__plus#( mark( N ) , mark( M ) )
a__U21#( tt , M , N ) mark#( N )
a__U21#( tt , M , N ) mark#( M )
a__and#( tt , X ) mark#( X )
a__isNat#( plus( V1 , V2 ) ) a__and#( a__isNat( V1 ) , isNat( V2 ) )
a__isNat#( plus( V1 , V2 ) ) a__isNat#( V1 )
a__isNat#( s( V1 ) ) a__isNat#( V1 )
a__plus#( N , s( M ) ) a__U21#( a__and( a__isNat( M ) , isNat( N ) ) , M , N )
a__plus#( N , s( M ) ) a__and#( a__isNat( M ) , isNat( N ) )
a__plus#( N , s( M ) ) a__isNat#( M )
mark#( and( X1 , X2 ) ) a__and#( mark( X1 ) , X2 )
mark#( and( X1 , X2 ) ) mark#( X1 )
mark#( isNat( X ) ) a__isNat#( X )
mark#( s( X ) ) mark#( X )

1.1.1: dependency graph processor

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