MAYBE

Problem:
 and(true(),X) -> X
 and(false(),Y) -> false()
 if(true(),X,Y) -> X
 if(false(),X,Y) -> Y
 add(0(),X) -> X
 add(s(X),Y) -> s(add(X,Y))
 first(0(),X) -> nil()
 first(s(X),cons(Y,Z)) -> cons(Y,first(X,Z))
 from(X) -> cons(X,from(s(X)))

Proof:
 DP Processor:
  DPs:
   add#(s(X),Y) -> add#(X,Y)
   first#(s(X),cons(Y,Z)) -> first#(X,Z)
   from#(X) -> from#(s(X))
  TRS:
   and(true(),X) -> X
   and(false(),Y) -> false()
   if(true(),X,Y) -> X
   if(false(),X,Y) -> Y
   add(0(),X) -> X
   add(s(X),Y) -> s(add(X,Y))
   first(0(),X) -> nil()
   first(s(X),cons(Y,Z)) -> cons(Y,first(X,Z))
   from(X) -> cons(X,from(s(X)))
  Usable Rule Processor:
   DPs:
    add#(s(X),Y) -> add#(X,Y)
    first#(s(X),cons(Y,Z)) -> first#(X,Z)
    from#(X) -> from#(s(X))
   TRS:
    
   TDG Processor:
    DPs:
     add#(s(X),Y) -> add#(X,Y)
     first#(s(X),cons(Y,Z)) -> first#(X,Z)
     from#(X) -> from#(s(X))
    TRS:
     
    graph:
     from#(X) -> from#(s(X)) -> from#(X) -> from#(s(X))
     first#(s(X),cons(Y,Z)) -> first#(X,Z) ->
     first#(s(X),cons(Y,Z)) -> first#(X,Z)
     add#(s(X),Y) -> add#(X,Y) -> add#(s(X),Y) -> add#(X,Y)
    CDG Processor:
     DPs:
      add#(s(X),Y) -> add#(X,Y)
      first#(s(X),cons(Y,Z)) -> first#(X,Z)
      from#(X) -> from#(s(X))
     TRS:
      
     graph:
      from#(X) -> from#(s(X)) -> from#(X) -> from#(s(X))
     Restore Modifier:
      DPs:
       add#(s(X),Y) -> add#(X,Y)
       first#(s(X),cons(Y,Z)) -> first#(X,Z)
       from#(X) -> from#(s(X))
      TRS:
       and(true(),X) -> X
       and(false(),Y) -> false()
       if(true(),X,Y) -> X
       if(false(),X,Y) -> Y
       add(0(),X) -> X
       add(s(X),Y) -> s(add(X,Y))
       first(0(),X) -> nil()
       first(s(X),cons(Y,Z)) -> cons(Y,first(X,Z))
       from(X) -> cons(X,from(s(X)))
      SCC Processor:
       #sccs: 1
       #rules: 1
       #arcs: 1/9
       DPs:
        from#(X) -> from#(s(X))
       TRS:
        and(true(),X) -> X
        and(false(),Y) -> false()
        if(true(),X,Y) -> X
        if(false(),X,Y) -> Y
        add(0(),X) -> X
        add(s(X),Y) -> s(add(X,Y))
        first(0(),X) -> nil()
        first(s(X),cons(Y,Z)) -> cons(Y,first(X,Z))
        from(X) -> cons(X,from(s(X)))
       Open