Termination proof

1: switching to dependency pairs

The following set of initial dependency pairs has been identified.

active#( filter( cons( X , Y ) , 0 , M ) ) mark#( cons( 0 , filter( Y , M , M ) ) )
active#( filter( cons( X , Y ) , 0 , M ) ) cons#( 0 , filter( Y , M , M ) )
active#( filter( cons( X , Y ) , 0 , M ) ) filter#( Y , M , M )
active#( filter( cons( X , Y ) , s( N ) , M ) ) mark#( cons( X , filter( Y , N , M ) ) )
active#( filter( cons( X , Y ) , s( N ) , M ) ) cons#( X , filter( Y , N , M ) )
active#( filter( cons( X , Y ) , s( N ) , M ) ) filter#( Y , N , M )
active#( sieve( cons( 0 , Y ) ) ) mark#( cons( 0 , sieve( Y ) ) )
active#( sieve( cons( 0 , Y ) ) ) cons#( 0 , sieve( Y ) )
active#( sieve( cons( 0 , Y ) ) ) sieve#( Y )
active#( sieve( cons( s( N ) , Y ) ) ) mark#( cons( s( N ) , sieve( filter( Y , N , N ) ) ) )
active#( sieve( cons( s( N ) , Y ) ) ) cons#( s( N ) , sieve( filter( Y , N , N ) ) )
active#( sieve( cons( s( N ) , Y ) ) ) s#( N )
active#( sieve( cons( s( N ) , Y ) ) ) sieve#( filter( Y , N , N ) )
active#( sieve( cons( s( N ) , Y ) ) ) filter#( Y , N , N )
active#( nats( N ) ) mark#( cons( N , nats( s( N ) ) ) )
active#( nats( N ) ) cons#( N , nats( s( N ) ) )
active#( nats( N ) ) nats#( s( N ) )
active#( nats( N ) ) s#( N )
active#( zprimes ) mark#( sieve( nats( s( s( 0 ) ) ) ) )
active#( zprimes ) sieve#( nats( s( s( 0 ) ) ) )
active#( zprimes ) nats#( s( s( 0 ) ) )
active#( zprimes ) s#( s( 0 ) )
active#( zprimes ) s#( 0 )
mark#( filter( X1 , X2 , X3 ) ) active#( filter( mark( X1 ) , mark( X2 ) , mark( X3 ) ) )
mark#( filter( X1 , X2 , X3 ) ) 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#( cons( X1 , X2 ) ) active#( cons( mark( X1 ) , X2 ) )
mark#( cons( X1 , X2 ) ) cons#( mark( X1 ) , X2 )
mark#( cons( X1 , X2 ) ) mark#( X1 )
mark#( 0 ) active#( 0 )
mark#( s( X ) ) active#( s( mark( X ) ) )
mark#( s( X ) ) s#( mark( X ) )
mark#( s( X ) ) mark#( X )
mark#( sieve( X ) ) active#( sieve( mark( X ) ) )
mark#( sieve( X ) ) sieve#( mark( X ) )
mark#( sieve( X ) ) mark#( X )
mark#( nats( X ) ) active#( nats( mark( X ) ) )
mark#( nats( X ) ) nats#( mark( X ) )
mark#( nats( X ) ) mark#( X )
mark#( zprimes ) active#( zprimes )
filter#( mark( X1 ) , X2 , X3 ) filter#( X1 , X2 , X3 )
filter#( X1 , mark( X2 ) , X3 ) filter#( X1 , X2 , X3 )
filter#( X1 , X2 , mark( X3 ) ) filter#( X1 , X2 , X3 )
filter#( active( X1 ) , X2 , X3 ) filter#( X1 , X2 , X3 )
filter#( X1 , active( X2 ) , X3 ) filter#( X1 , X2 , X3 )
filter#( X1 , X2 , active( X3 ) ) filter#( X1 , X2 , X3 )
cons#( mark( X1 ) , X2 ) cons#( X1 , X2 )
cons#( X1 , mark( X2 ) ) cons#( X1 , X2 )
cons#( active( X1 ) , X2 ) cons#( X1 , X2 )
cons#( X1 , active( X2 ) ) cons#( X1 , X2 )
s#( mark( X ) ) s#( X )
s#( active( X ) ) s#( X )
sieve#( mark( X ) ) sieve#( X )
sieve#( active( X ) ) sieve#( X )
nats#( mark( X ) ) nats#( X )
nats#( active( X ) ) nats#( X )

1.1: dependency graph processor

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