YES Problem: if(true(),x,y) -> x if(false(),x,y) -> y if(x,y,y) -> y if(if(x,y,z),u,v) -> if(x,if(y,u,v),if(z,u,v)) if(x,if(x,y,z),z) -> if(x,y,z) if(x,y,if(x,y,z)) -> if(x,y,z) Proof: DP Processor: DPs: if#(if(x,y,z),u,v) -> if#(z,u,v) if#(if(x,y,z),u,v) -> if#(y,u,v) if#(if(x,y,z),u,v) -> if#(x,if(y,u,v),if(z,u,v)) TRS: if(true(),x,y) -> x if(false(),x,y) -> y if(x,y,y) -> y if(if(x,y,z),u,v) -> if(x,if(y,u,v),if(z,u,v)) if(x,if(x,y,z),z) -> if(x,y,z) if(x,y,if(x,y,z)) -> if(x,y,z) KBO Processor: argument filtering: pi(true) = [] pi(if) = [0,1,2] pi(false) = [] pi(if#) = 0 usable rules: weight function: w0 = 1 w(if#) = w(false) = w(if) = w(true) = 1 precedence: if# ~ false ~ if ~ true problem: DPs: TRS: if(true(),x,y) -> x if(false(),x,y) -> y if(x,y,y) -> y if(if(x,y,z),u,v) -> if(x,if(y,u,v),if(z,u,v)) if(x,if(x,y,z),z) -> if(x,y,z) if(x,y,if(x,y,z)) -> if(x,y,z) Qed