MAYBE

Problem:
 even(0()) -> true()
 even(s(0())) -> false()
 even(s(s(x))) -> even(x)
 half(0()) -> 0()
 half(s(s(x))) -> s(half(x))
 plus(s(x),s(y)) -> s(s(plus(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y)))))
 plus(s(x),x) -> plus(if(gt(x,x),id(x),id(x)),s(x))
 plus(zero(),y) -> y
 plus(id(x),s(y)) -> s(plus(x,if(gt(s(y),y),y,s(y))))
 id(x) -> x
 if(true(),x,y) -> x
 if(false(),x,y) -> y
 not(x) -> if(x,false(),true())
 gt(s(x),zero()) -> true()
 gt(zero(),y) -> false()
 gt(s(x),s(y)) -> gt(x,y)
 times(0(),y) -> 0()
 times(s(x),y) -> if_times(even(s(x)),s(x),y)
 if_times(true(),s(x),y) -> plus(times(half(s(x)),y),times(half(s(x)),y))
 if_times(false(),s(x),y) -> plus(y,times(x,y))

Proof:
 DP Processor:
  DPs:
   even#(s(s(x))) -> even#(x)
   half#(s(s(x))) -> half#(x)
   plus#(s(x),s(y)) -> id#(y)
   plus#(s(x),s(y)) -> id#(x)
   plus#(s(x),s(y)) -> not#(gt(x,y))
   plus#(s(x),s(y)) -> if#(not(gt(x,y)),id(x),id(y))
   plus#(s(x),s(y)) -> gt#(x,y)
   plus#(s(x),s(y)) -> if#(gt(x,y),x,y)
   plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y)))
   plus#(s(x),x) -> id#(x)
   plus#(s(x),x) -> gt#(x,x)
   plus#(s(x),x) -> if#(gt(x,x),id(x),id(x))
   plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x))
   plus#(id(x),s(y)) -> gt#(s(y),y)
   plus#(id(x),s(y)) -> if#(gt(s(y),y),y,s(y))
   plus#(id(x),s(y)) -> plus#(x,if(gt(s(y),y),y,s(y)))
   not#(x) -> if#(x,false(),true())
   gt#(s(x),s(y)) -> gt#(x,y)
   times#(s(x),y) -> even#(s(x))
   times#(s(x),y) -> if_times#(even(s(x)),s(x),y)
   if_times#(true(),s(x),y) -> half#(s(x))
   if_times#(true(),s(x),y) -> times#(half(s(x)),y)
   if_times#(true(),s(x),y) -> plus#(times(half(s(x)),y),times(half(s(x)),y))
   if_times#(false(),s(x),y) -> times#(x,y)
   if_times#(false(),s(x),y) -> plus#(y,times(x,y))
  TRS:
   even(0()) -> true()
   even(s(0())) -> false()
   even(s(s(x))) -> even(x)
   half(0()) -> 0()
   half(s(s(x))) -> s(half(x))
   plus(s(x),s(y)) -> s(s(plus(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y)))))
   plus(s(x),x) -> plus(if(gt(x,x),id(x),id(x)),s(x))
   plus(zero(),y) -> y
   plus(id(x),s(y)) -> s(plus(x,if(gt(s(y),y),y,s(y))))
   id(x) -> x
   if(true(),x,y) -> x
   if(false(),x,y) -> y
   not(x) -> if(x,false(),true())
   gt(s(x),zero()) -> true()
   gt(zero(),y) -> false()
   gt(s(x),s(y)) -> gt(x,y)
   times(0(),y) -> 0()
   times(s(x),y) -> if_times(even(s(x)),s(x),y)
   if_times(true(),s(x),y) -> plus(times(half(s(x)),y),times(half(s(x)),y))
   if_times(false(),s(x),y) -> plus(y,times(x,y))
  EDG Processor:
   DPs:
    even#(s(s(x))) -> even#(x)
    half#(s(s(x))) -> half#(x)
    plus#(s(x),s(y)) -> id#(y)
    plus#(s(x),s(y)) -> id#(x)
    plus#(s(x),s(y)) -> not#(gt(x,y))
    plus#(s(x),s(y)) -> if#(not(gt(x,y)),id(x),id(y))
    plus#(s(x),s(y)) -> gt#(x,y)
    plus#(s(x),s(y)) -> if#(gt(x,y),x,y)
    plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y)))
    plus#(s(x),x) -> id#(x)
    plus#(s(x),x) -> gt#(x,x)
    plus#(s(x),x) -> if#(gt(x,x),id(x),id(x))
    plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x))
    plus#(id(x),s(y)) -> gt#(s(y),y)
    plus#(id(x),s(y)) -> if#(gt(s(y),y),y,s(y))
    plus#(id(x),s(y)) -> plus#(x,if(gt(s(y),y),y,s(y)))
    not#(x) -> if#(x,false(),true())
    gt#(s(x),s(y)) -> gt#(x,y)
    times#(s(x),y) -> even#(s(x))
    times#(s(x),y) -> if_times#(even(s(x)),s(x),y)
    if_times#(true(),s(x),y) -> half#(s(x))
    if_times#(true(),s(x),y) -> times#(half(s(x)),y)
    if_times#(true(),s(x),y) -> plus#(times(half(s(x)),y),times(half(s(x)),y))
    if_times#(false(),s(x),y) -> times#(x,y)
    if_times#(false(),s(x),y) -> plus#(y,times(x,y))
   TRS:
    even(0()) -> true()
    even(s(0())) -> false()
    even(s(s(x))) -> even(x)
    half(0()) -> 0()
    half(s(s(x))) -> s(half(x))
    plus(s(x),s(y)) -> s(s(plus(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y)))))
    plus(s(x),x) -> plus(if(gt(x,x),id(x),id(x)),s(x))
    plus(zero(),y) -> y
    plus(id(x),s(y)) -> s(plus(x,if(gt(s(y),y),y,s(y))))
    id(x) -> x
    if(true(),x,y) -> x
    if(false(),x,y) -> y
    not(x) -> if(x,false(),true())
    gt(s(x),zero()) -> true()
    gt(zero(),y) -> false()
    gt(s(x),s(y)) -> gt(x,y)
    times(0(),y) -> 0()
    times(s(x),y) -> if_times(even(s(x)),s(x),y)
    if_times(true(),s(x),y) -> plus(times(half(s(x)),y),times(half(s(x)),y))
    if_times(false(),s(x),y) -> plus(y,times(x,y))
   graph:
    if_times#(false(),s(x),y) -> times#(x,y) ->
    times#(s(x),y) -> even#(s(x))
    if_times#(false(),s(x),y) -> times#(x,y) ->
    times#(s(x),y) -> if_times#(even(s(x)),s(x),y)
    if_times#(false(),s(x),y) -> plus#(y,times(x,y)) ->
    plus#(s(x),s(y)) -> id#(y)
    if_times#(false(),s(x),y) -> plus#(y,times(x,y)) ->
    plus#(s(x),s(y)) -> id#(x)
    if_times#(false(),s(x),y) -> plus#(y,times(x,y)) ->
    plus#(s(x),s(y)) -> not#(gt(x,y))
    if_times#(false(),s(x),y) -> plus#(y,times(x,y)) ->
    plus#(s(x),s(y)) -> if#(not(gt(x,y)),id(x),id(y))
    if_times#(false(),s(x),y) -> plus#(y,times(x,y)) ->
    plus#(s(x),s(y)) -> gt#(x,y)
    if_times#(false(),s(x),y) -> plus#(y,times(x,y)) ->
    plus#(s(x),s(y)) -> if#(gt(x,y),x,y)
    if_times#(false(),s(x),y) -> plus#(y,times(x,y)) ->
    plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y)))
    if_times#(false(),s(x),y) -> plus#(y,times(x,y)) ->
    plus#(s(x),x) -> id#(x)
    if_times#(false(),s(x),y) -> plus#(y,times(x,y)) ->
    plus#(s(x),x) -> gt#(x,x)
    if_times#(false(),s(x),y) -> plus#(y,times(x,y)) ->
    plus#(s(x),x) -> if#(gt(x,x),id(x),id(x))
    if_times#(false(),s(x),y) -> plus#(y,times(x,y)) ->
    plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x))
    if_times#(true(),s(x),y) -> half#(s(x)) ->
    half#(s(s(x))) -> half#(x)
    times#(s(x),y) -> if_times#(even(s(x)),s(x),y) ->
    if_times#(true(),s(x),y) -> half#(s(x))
    times#(s(x),y) -> if_times#(even(s(x)),s(x),y) ->
    if_times#(true(),s(x),y) -> times#(half(s(x)),y)
    times#(s(x),y) -> if_times#(even(s(x)),s(x),y) ->
    if_times#(true(),s(x),y) -> plus#(times(half(s(x)),y),times(half(s(x)),y))
    times#(s(x),y) -> if_times#(even(s(x)),s(x),y) ->
    if_times#(false(),s(x),y) -> times#(x,y)
    times#(s(x),y) -> if_times#(even(s(x)),s(x),y) ->
    if_times#(false(),s(x),y) -> plus#(y,times(x,y))
    times#(s(x),y) -> even#(s(x)) -> even#(s(s(x))) -> even#(x)
    gt#(s(x),s(y)) -> gt#(x,y) -> gt#(s(x),s(y)) -> gt#(x,y)
    plus#(s(x),s(y)) -> gt#(x,y) -> gt#(s(x),s(y)) -> gt#(x,y)
    plus#(s(x),s(y)) -> not#(gt(x,y)) ->
    not#(x) -> if#(x,false(),true())
    plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y))) ->
    plus#(s(x),s(y)) -> id#(y)
    plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y))) ->
    plus#(s(x),s(y)) -> id#(x)
    plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y))) ->
    plus#(s(x),s(y)) -> not#(gt(x,y))
    plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y))) ->
    plus#(s(x),s(y)) -> if#(not(gt(x,y)),id(x),id(y))
    plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y))) ->
    plus#(s(x),s(y)) -> gt#(x,y)
    plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y))) ->
    plus#(s(x),s(y)) -> if#(gt(x,y),x,y)
    plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y))) ->
    plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y)))
    plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y))) ->
    plus#(s(x),x) -> id#(x)
    plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y))) ->
    plus#(s(x),x) -> gt#(x,x)
    plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y))) ->
    plus#(s(x),x) -> if#(gt(x,x),id(x),id(x))
    plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y))) ->
    plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x))
    plus#(s(x),x) -> gt#(x,x) ->
    gt#(s(x),s(y)) -> gt#(x,y)
    plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x)) ->
    plus#(s(x),s(y)) -> id#(y)
    plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x)) ->
    plus#(s(x),s(y)) -> id#(x)
    plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x)) ->
    plus#(s(x),s(y)) -> not#(gt(x,y))
    plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x)) ->
    plus#(s(x),s(y)) -> if#(not(gt(x,y)),id(x),id(y))
    plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x)) ->
    plus#(s(x),s(y)) -> gt#(x,y)
    plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x)) ->
    plus#(s(x),s(y)) -> if#(gt(x,y),x,y)
    plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x)) ->
    plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y)))
    plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x)) ->
    plus#(s(x),x) -> id#(x)
    plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x)) ->
    plus#(s(x),x) -> gt#(x,x)
    plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x)) ->
    plus#(s(x),x) -> if#(gt(x,x),id(x),id(x))
    plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x)) ->
    plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x))
    half#(s(s(x))) -> half#(x) -> half#(s(s(x))) -> half#(x)
    even#(s(s(x))) -> even#(x) -> even#(s(s(x))) -> even#(x)
   Restore Modifier:
    DPs:
     even#(s(s(x))) -> even#(x)
     half#(s(s(x))) -> half#(x)
     plus#(s(x),s(y)) -> id#(y)
     plus#(s(x),s(y)) -> id#(x)
     plus#(s(x),s(y)) -> not#(gt(x,y))
     plus#(s(x),s(y)) -> if#(not(gt(x,y)),id(x),id(y))
     plus#(s(x),s(y)) -> gt#(x,y)
     plus#(s(x),s(y)) -> if#(gt(x,y),x,y)
     plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y)))
     plus#(s(x),x) -> id#(x)
     plus#(s(x),x) -> gt#(x,x)
     plus#(s(x),x) -> if#(gt(x,x),id(x),id(x))
     plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x))
     plus#(id(x),s(y)) -> gt#(s(y),y)
     plus#(id(x),s(y)) -> if#(gt(s(y),y),y,s(y))
     plus#(id(x),s(y)) -> plus#(x,if(gt(s(y),y),y,s(y)))
     not#(x) -> if#(x,false(),true())
     gt#(s(x),s(y)) -> gt#(x,y)
     times#(s(x),y) -> even#(s(x))
     times#(s(x),y) -> if_times#(even(s(x)),s(x),y)
     if_times#(true(),s(x),y) -> half#(s(x))
     if_times#(true(),s(x),y) -> times#(half(s(x)),y)
     if_times#(true(),s(x),y) -> plus#(times(half(s(x)),y),times(half(s(x)),y))
     if_times#(false(),s(x),y) -> times#(x,y)
     if_times#(false(),s(x),y) -> plus#(y,times(x,y))
    TRS:
     even(0()) -> true()
     even(s(0())) -> false()
     even(s(s(x))) -> even(x)
     half(0()) -> 0()
     half(s(s(x))) -> s(half(x))
     plus(s(x),s(y)) -> s(s(plus(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y)))))
     plus(s(x),x) -> plus(if(gt(x,x),id(x),id(x)),s(x))
     plus(zero(),y) -> y
     plus(id(x),s(y)) -> s(plus(x,if(gt(s(y),y),y,s(y))))
     id(x) -> x
     if(true(),x,y) -> x
     if(false(),x,y) -> y
     not(x) -> if(x,false(),true())
     gt(s(x),zero()) -> true()
     gt(zero(),y) -> false()
     gt(s(x),s(y)) -> gt(x,y)
     times(0(),y) -> 0()
     times(s(x),y) -> if_times(even(s(x)),s(x),y)
     if_times(true(),s(x),y) -> plus(times(half(s(x)),y),times(half(s(x)),y))
     if_times(false(),s(x),y) -> plus(y,times(x,y))
    SCC Processor:
     #sccs: 5
     #rules: 7
     #arcs: 48/625
     DPs:
      if_times#(false(),s(x),y) -> times#(x,y)
      times#(s(x),y) -> if_times#(even(s(x)),s(x),y)
     TRS:
      even(0()) -> true()
      even(s(0())) -> false()
      even(s(s(x))) -> even(x)
      half(0()) -> 0()
      half(s(s(x))) -> s(half(x))
      plus(s(x),s(y)) -> s(s(plus(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y)))))
      plus(s(x),x) -> plus(if(gt(x,x),id(x),id(x)),s(x))
      plus(zero(),y) -> y
      plus(id(x),s(y)) -> s(plus(x,if(gt(s(y),y),y,s(y))))
      id(x) -> x
      if(true(),x,y) -> x
      if(false(),x,y) -> y
      not(x) -> if(x,false(),true())
      gt(s(x),zero()) -> true()
      gt(zero(),y) -> false()
      gt(s(x),s(y)) -> gt(x,y)
      times(0(),y) -> 0()
      times(s(x),y) -> if_times(even(s(x)),s(x),y)
      if_times(true(),s(x),y) -> plus(times(half(s(x)),y),times(half(s(x)),y))
      if_times(false(),s(x),y) -> plus(y,times(x,y))
     Open
     
     DPs:
      even#(s(s(x))) -> even#(x)
     TRS:
      even(0()) -> true()
      even(s(0())) -> false()
      even(s(s(x))) -> even(x)
      half(0()) -> 0()
      half(s(s(x))) -> s(half(x))
      plus(s(x),s(y)) -> s(s(plus(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y)))))
      plus(s(x),x) -> plus(if(gt(x,x),id(x),id(x)),s(x))
      plus(zero(),y) -> y
      plus(id(x),s(y)) -> s(plus(x,if(gt(s(y),y),y,s(y))))
      id(x) -> x
      if(true(),x,y) -> x
      if(false(),x,y) -> y
      not(x) -> if(x,false(),true())
      gt(s(x),zero()) -> true()
      gt(zero(),y) -> false()
      gt(s(x),s(y)) -> gt(x,y)
      times(0(),y) -> 0()
      times(s(x),y) -> if_times(even(s(x)),s(x),y)
      if_times(true(),s(x),y) -> plus(times(half(s(x)),y),times(half(s(x)),y))
      if_times(false(),s(x),y) -> plus(y,times(x,y))
     Open
     
     DPs:
      half#(s(s(x))) -> half#(x)
     TRS:
      even(0()) -> true()
      even(s(0())) -> false()
      even(s(s(x))) -> even(x)
      half(0()) -> 0()
      half(s(s(x))) -> s(half(x))
      plus(s(x),s(y)) -> s(s(plus(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y)))))
      plus(s(x),x) -> plus(if(gt(x,x),id(x),id(x)),s(x))
      plus(zero(),y) -> y
      plus(id(x),s(y)) -> s(plus(x,if(gt(s(y),y),y,s(y))))
      id(x) -> x
      if(true(),x,y) -> x
      if(false(),x,y) -> y
      not(x) -> if(x,false(),true())
      gt(s(x),zero()) -> true()
      gt(zero(),y) -> false()
      gt(s(x),s(y)) -> gt(x,y)
      times(0(),y) -> 0()
      times(s(x),y) -> if_times(even(s(x)),s(x),y)
      if_times(true(),s(x),y) -> plus(times(half(s(x)),y),times(half(s(x)),y))
      if_times(false(),s(x),y) -> plus(y,times(x,y))
     Open
     
     DPs:
      plus#(s(x),x) -> plus#(if(gt(x,x),id(x),id(x)),s(x))
      plus#(s(x),s(y)) -> plus#(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y)))
     TRS:
      even(0()) -> true()
      even(s(0())) -> false()
      even(s(s(x))) -> even(x)
      half(0()) -> 0()
      half(s(s(x))) -> s(half(x))
      plus(s(x),s(y)) -> s(s(plus(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y)))))
      plus(s(x),x) -> plus(if(gt(x,x),id(x),id(x)),s(x))
      plus(zero(),y) -> y
      plus(id(x),s(y)) -> s(plus(x,if(gt(s(y),y),y,s(y))))
      id(x) -> x
      if(true(),x,y) -> x
      if(false(),x,y) -> y
      not(x) -> if(x,false(),true())
      gt(s(x),zero()) -> true()
      gt(zero(),y) -> false()
      gt(s(x),s(y)) -> gt(x,y)
      times(0(),y) -> 0()
      times(s(x),y) -> if_times(even(s(x)),s(x),y)
      if_times(true(),s(x),y) -> plus(times(half(s(x)),y),times(half(s(x)),y))
      if_times(false(),s(x),y) -> plus(y,times(x,y))
     Open
     
     DPs:
      gt#(s(x),s(y)) -> gt#(x,y)
     TRS:
      even(0()) -> true()
      even(s(0())) -> false()
      even(s(s(x))) -> even(x)
      half(0()) -> 0()
      half(s(s(x))) -> s(half(x))
      plus(s(x),s(y)) -> s(s(plus(if(gt(x,y),x,y),if(not(gt(x,y)),id(x),id(y)))))
      plus(s(x),x) -> plus(if(gt(x,x),id(x),id(x)),s(x))
      plus(zero(),y) -> y
      plus(id(x),s(y)) -> s(plus(x,if(gt(s(y),y),y,s(y))))
      id(x) -> x
      if(true(),x,y) -> x
      if(false(),x,y) -> y
      not(x) -> if(x,false(),true())
      gt(s(x),zero()) -> true()
      gt(zero(),y) -> false()
      gt(s(x),s(y)) -> gt(x,y)
      times(0(),y) -> 0()
      times(s(x),y) -> if_times(even(s(x)),s(x),y)
      if_times(true(),s(x),y) -> plus(times(half(s(x)),y),times(half(s(x)),y))
      if_times(false(),s(x),y) -> plus(y,times(x,y))
     Open