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).