Termination proof

1: switching to dependency pairs

The following set of initial dependency pairs has been identified.

a__filter#( cons( X , Y ) , s( N ) , M ) mark#( X )
a__sieve#( cons( s( N ) , Y ) ) mark#( N )
a__nats#( N ) mark#( N )
a__zprimes# a__sieve#( a__nats( s( s( 0 ) ) ) )
a__zprimes# a__nats#( s( s( 0 ) ) )
mark#( filter( X1 , X2 , X3 ) ) a__filter#( mark( X1 ) , mark( X2 ) , mark( X3 ) )
mark#( filter( X1 , X2 , X3 ) ) mark#( X1 )
mark#( filter( X1 , X2 , X3 ) ) mark#( X2 )
mark#( filter( X1 , X2 , X3 ) ) mark#( X3 )
mark#( sieve( X ) ) a__sieve#( mark( X ) )
mark#( sieve( X ) ) mark#( X )
mark#( nats( X ) ) a__nats#( mark( X ) )
mark#( nats( X ) ) mark#( X )
mark#( zprimes ) a__zprimes#
mark#( cons( X1 , X2 ) ) mark#( X1 )
mark#( s( X ) ) mark#( X )

1.1: reduction pair processor

Using the following reduction pair

Linear polynomial interpretation over the naturals
[a__nats# (x1) ] = 2 x1
[filter (x1, x2, x3) ] = x1 + x2 + x3 + 2
[mark (x1) ] = x1
[sieve (x1) ] = 2 x1 + 2
[a__sieve# (x1) ] = x1
[a__filter# (x1, x2, x3) ] = x1 + 3
[a__zprimes#] = 0
[mark# (x1) ] = 2 x1
[0] = 0
[a__sieve (x1) ] = 2 x1 + 2
[cons (x1, x2) ] = 2 x1
[nats (x1) ] = 2 x1
[a__zprimes] = 2
[zprimes] = 2
[a__filter (x1, x2, x3) ] = x1 + x2 + x3 + 2
[s (x1) ] = 2 x1
[a__nats (x1) ] = 2 x1
[f(x1, ..., xn)] = x1 + ... + xn + 1 for all other symbols f of arity n

one remains with the following pair(s).

a__sieve#( cons( s( N ) , Y ) ) mark#( N )
a__nats#( N ) mark#( N )
a__zprimes# a__sieve#( a__nats( s( s( 0 ) ) ) )
a__zprimes# a__nats#( s( s( 0 ) ) )
mark#( nats( X ) ) a__nats#( mark( X ) )
mark#( nats( X ) ) mark#( X )
mark#( cons( X1 , X2 ) ) mark#( X1 )
mark#( s( X ) ) mark#( X )

1.1.1: dependency graph processor

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