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