MAYBE Problem: active(f(X)) -> mark(if(X,c(),f(true()))) active(if(true(),X,Y)) -> mark(X) active(if(false(),X,Y)) -> mark(Y) mark(f(X)) -> active(f(mark(X))) mark(if(X1,X2,X3)) -> active(if(mark(X1),mark(X2),X3)) mark(c()) -> active(c()) mark(true()) -> active(true()) mark(false()) -> active(false()) f(mark(X)) -> f(X) f(active(X)) -> f(X) if(mark(X1),X2,X3) -> if(X1,X2,X3) if(X1,mark(X2),X3) -> if(X1,X2,X3) if(X1,X2,mark(X3)) -> if(X1,X2,X3) if(active(X1),X2,X3) -> if(X1,X2,X3) if(X1,active(X2),X3) -> if(X1,X2,X3) if(X1,X2,active(X3)) -> if(X1,X2,X3) Proof: DP Processor: DPs: active#(f(X)) -> f#(true()) active#(f(X)) -> if#(X,c(),f(true())) active#(f(X)) -> mark#(if(X,c(),f(true()))) active#(if(true(),X,Y)) -> mark#(X) active#(if(false(),X,Y)) -> mark#(Y) mark#(f(X)) -> mark#(X) mark#(f(X)) -> f#(mark(X)) mark#(f(X)) -> active#(f(mark(X))) mark#(if(X1,X2,X3)) -> mark#(X2) mark#(if(X1,X2,X3)) -> mark#(X1) mark#(if(X1,X2,X3)) -> if#(mark(X1),mark(X2),X3) mark#(if(X1,X2,X3)) -> active#(if(mark(X1),mark(X2),X3)) mark#(c()) -> active#(c()) mark#(true()) -> active#(true()) mark#(false()) -> active#(false()) f#(mark(X)) -> f#(X) f#(active(X)) -> f#(X) if#(mark(X1),X2,X3) -> if#(X1,X2,X3) if#(X1,mark(X2),X3) -> if#(X1,X2,X3) if#(X1,X2,mark(X3)) -> if#(X1,X2,X3) if#(active(X1),X2,X3) -> if#(X1,X2,X3) if#(X1,active(X2),X3) -> if#(X1,X2,X3) if#(X1,X2,active(X3)) -> if#(X1,X2,X3) TRS: active(f(X)) -> mark(if(X,c(),f(true()))) active(if(true(),X,Y)) -> mark(X) active(if(false(),X,Y)) -> mark(Y) mark(f(X)) -> active(f(mark(X))) mark(if(X1,X2,X3)) -> active(if(mark(X1),mark(X2),X3)) mark(c()) -> active(c()) mark(true()) -> active(true()) mark(false()) -> active(false()) f(mark(X)) -> f(X) f(active(X)) -> f(X) if(mark(X1),X2,X3) -> if(X1,X2,X3) if(X1,mark(X2),X3) -> if(X1,X2,X3) if(X1,X2,mark(X3)) -> if(X1,X2,X3) if(active(X1),X2,X3) -> if(X1,X2,X3) if(X1,active(X2),X3) -> if(X1,X2,X3) if(X1,X2,active(X3)) -> if(X1,X2,X3) EDG Processor: DPs: active#(f(X)) -> f#(true()) active#(f(X)) -> if#(X,c(),f(true())) active#(f(X)) -> mark#(if(X,c(),f(true()))) active#(if(true(),X,Y)) -> mark#(X) active#(if(false(),X,Y)) -> mark#(Y) mark#(f(X)) -> mark#(X) mark#(f(X)) -> f#(mark(X)) mark#(f(X)) -> active#(f(mark(X))) mark#(if(X1,X2,X3)) -> mark#(X2) mark#(if(X1,X2,X3)) -> mark#(X1) mark#(if(X1,X2,X3)) -> if#(mark(X1),mark(X2),X3) mark#(if(X1,X2,X3)) -> active#(if(mark(X1),mark(X2),X3)) mark#(c()) -> active#(c()) mark#(true()) -> active#(true()) mark#(false()) -> active#(false()) f#(mark(X)) -> f#(X) f#(active(X)) -> f#(X) if#(mark(X1),X2,X3) -> if#(X1,X2,X3) if#(X1,mark(X2),X3) -> if#(X1,X2,X3) if#(X1,X2,mark(X3)) -> if#(X1,X2,X3) if#(active(X1),X2,X3) -> if#(X1,X2,X3) if#(X1,active(X2),X3) -> if#(X1,X2,X3) if#(X1,X2,active(X3)) -> if#(X1,X2,X3) TRS: active(f(X)) -> mark(if(X,c(),f(true()))) active(if(true(),X,Y)) -> mark(X) active(if(false(),X,Y)) -> mark(Y) mark(f(X)) -> active(f(mark(X))) mark(if(X1,X2,X3)) -> active(if(mark(X1),mark(X2),X3)) mark(c()) -> active(c()) mark(true()) -> active(true()) mark(false()) -> active(false()) f(mark(X)) -> f(X) f(active(X)) -> f(X) if(mark(X1),X2,X3) -> if(X1,X2,X3) if(X1,mark(X2),X3) -> if(X1,X2,X3) if(X1,X2,mark(X3)) -> if(X1,X2,X3) if(active(X1),X2,X3) -> if(X1,X2,X3) if(X1,active(X2),X3) -> if(X1,X2,X3) if(X1,X2,active(X3)) -> if(X1,X2,X3) graph: mark#(if(X1,X2,X3)) -> mark#(X2) -> mark#(f(X)) -> mark#(X) mark#(if(X1,X2,X3)) -> mark#(X2) -> mark#(f(X)) -> f#(mark(X)) mark#(if(X1,X2,X3)) -> mark#(X2) -> mark#(f(X)) -> active#(f(mark(X))) mark#(if(X1,X2,X3)) -> mark#(X2) -> mark#(if(X1,X2,X3)) -> mark#(X2) mark#(if(X1,X2,X3)) -> mark#(X2) -> mark#(if(X1,X2,X3)) -> mark#(X1) mark#(if(X1,X2,X3)) -> mark#(X2) -> mark#(if(X1,X2,X3)) -> if#(mark(X1),mark(X2),X3) mark#(if(X1,X2,X3)) -> mark#(X2) -> mark#(if(X1,X2,X3)) -> active#(if(mark(X1),mark(X2),X3)) mark#(if(X1,X2,X3)) -> mark#(X2) -> mark#(c()) -> active#(c()) mark#(if(X1,X2,X3)) -> mark#(X2) -> mark#(true()) -> active#(true()) mark#(if(X1,X2,X3)) -> mark#(X2) -> mark#(false()) -> active#(false()) mark#(if(X1,X2,X3)) -> mark#(X1) -> mark#(f(X)) -> mark#(X) mark#(if(X1,X2,X3)) -> mark#(X1) -> mark#(f(X)) -> f#(mark(X)) mark#(if(X1,X2,X3)) -> mark#(X1) -> mark#(f(X)) -> active#(f(mark(X))) mark#(if(X1,X2,X3)) -> mark#(X1) -> mark#(if(X1,X2,X3)) -> mark#(X2) mark#(if(X1,X2,X3)) -> mark#(X1) -> mark#(if(X1,X2,X3)) -> mark#(X1) mark#(if(X1,X2,X3)) -> mark#(X1) -> mark#(if(X1,X2,X3)) -> if#(mark(X1),mark(X2),X3) mark#(if(X1,X2,X3)) -> mark#(X1) -> mark#(if(X1,X2,X3)) -> active#(if(mark(X1),mark(X2),X3)) mark#(if(X1,X2,X3)) -> mark#(X1) -> mark#(c()) -> active#(c()) mark#(if(X1,X2,X3)) -> mark#(X1) -> mark#(true()) -> active#(true()) mark#(if(X1,X2,X3)) -> mark#(X1) -> mark#(false()) -> active#(false()) mark#(if(X1,X2,X3)) -> if#(mark(X1),mark(X2),X3) -> if#(mark(X1),X2,X3) -> if#(X1,X2,X3) mark#(if(X1,X2,X3)) -> if#(mark(X1),mark(X2),X3) -> if#(X1,mark(X2),X3) -> if#(X1,X2,X3) mark#(if(X1,X2,X3)) -> if#(mark(X1),mark(X2),X3) -> if#(active(X1),X2,X3) -> if#(X1,X2,X3) mark#(if(X1,X2,X3)) -> if#(mark(X1),mark(X2),X3) -> if#(X1,active(X2),X3) -> if#(X1,X2,X3) mark#(if(X1,X2,X3)) -> active#(if(mark(X1),mark(X2),X3)) -> active#(f(X)) -> f#(true()) mark#(if(X1,X2,X3)) -> active#(if(mark(X1),mark(X2),X3)) -> active#(f(X)) -> if#(X,c(),f(true())) mark#(if(X1,X2,X3)) -> active#(if(mark(X1),mark(X2),X3)) -> active#(f(X)) -> mark#(if(X,c(),f(true()))) mark#(if(X1,X2,X3)) -> active#(if(mark(X1),mark(X2),X3)) -> active#(if(true(),X,Y)) -> mark#(X) mark#(if(X1,X2,X3)) -> active#(if(mark(X1),mark(X2),X3)) -> active#(if(false(),X,Y)) -> mark#(Y) mark#(f(X)) -> mark#(X) -> mark#(f(X)) -> mark#(X) mark#(f(X)) -> mark#(X) -> mark#(f(X)) -> f#(mark(X)) mark#(f(X)) -> mark#(X) -> mark#(f(X)) -> active#(f(mark(X))) mark#(f(X)) -> mark#(X) -> mark#(if(X1,X2,X3)) -> mark#(X2) mark#(f(X)) -> mark#(X) -> mark#(if(X1,X2,X3)) -> mark#(X1) mark#(f(X)) -> mark#(X) -> mark#(if(X1,X2,X3)) -> if#(mark(X1),mark(X2),X3) mark#(f(X)) -> mark#(X) -> mark#(if(X1,X2,X3)) -> active#(if(mark(X1),mark(X2),X3)) mark#(f(X)) -> mark#(X) -> mark#(c()) -> active#(c()) mark#(f(X)) -> mark#(X) -> mark#(true()) -> active#(true()) mark#(f(X)) -> mark#(X) -> mark#(false()) -> active#(false()) mark#(f(X)) -> f#(mark(X)) -> f#(mark(X)) -> f#(X) mark#(f(X)) -> f#(mark(X)) -> f#(active(X)) -> f#(X) mark#(f(X)) -> active#(f(mark(X))) -> active#(f(X)) -> f#(true()) mark#(f(X)) -> active#(f(mark(X))) -> active#(f(X)) -> if#(X,c(),f(true())) mark#(f(X)) -> active#(f(mark(X))) -> active#(f(X)) -> mark#(if(X,c(),f(true()))) mark#(f(X)) -> active#(f(mark(X))) -> active#(if(true(),X,Y)) -> mark#(X) mark#(f(X)) -> active#(f(mark(X))) -> active#(if(false(),X,Y)) -> mark#(Y) if#(mark(X1),X2,X3) -> if#(X1,X2,X3) -> if#(mark(X1),X2,X3) -> if#(X1,X2,X3) if#(mark(X1),X2,X3) -> if#(X1,X2,X3) -> if#(X1,mark(X2),X3) -> if#(X1,X2,X3) if#(mark(X1),X2,X3) -> if#(X1,X2,X3) -> if#(X1,X2,mark(X3)) -> if#(X1,X2,X3) if#(mark(X1),X2,X3) -> if#(X1,X2,X3) -> if#(active(X1),X2,X3) -> if#(X1,X2,X3) if#(mark(X1),X2,X3) -> if#(X1,X2,X3) -> if#(X1,active(X2),X3) -> if#(X1,X2,X3) if#(mark(X1),X2,X3) -> if#(X1,X2,X3) -> if#(X1,X2,active(X3)) -> if#(X1,X2,X3) if#(active(X1),X2,X3) -> if#(X1,X2,X3) -> if#(mark(X1),X2,X3) -> if#(X1,X2,X3) if#(active(X1),X2,X3) -> if#(X1,X2,X3) -> if#(X1,mark(X2),X3) -> if#(X1,X2,X3) if#(active(X1),X2,X3) -> if#(X1,X2,X3) -> if#(X1,X2,mark(X3)) -> if#(X1,X2,X3) if#(active(X1),X2,X3) -> if#(X1,X2,X3) -> if#(active(X1),X2,X3) -> if#(X1,X2,X3) if#(active(X1),X2,X3) -> if#(X1,X2,X3) -> if#(X1,active(X2),X3) -> if#(X1,X2,X3) if#(active(X1),X2,X3) -> if#(X1,X2,X3) -> if#(X1,X2,active(X3)) -> if#(X1,X2,X3) if#(X1,mark(X2),X3) -> if#(X1,X2,X3) -> if#(mark(X1),X2,X3) -> if#(X1,X2,X3) if#(X1,mark(X2),X3) -> if#(X1,X2,X3) -> if#(X1,mark(X2),X3) -> if#(X1,X2,X3) if#(X1,mark(X2),X3) -> if#(X1,X2,X3) -> if#(X1,X2,mark(X3)) -> if#(X1,X2,X3) if#(X1,mark(X2),X3) -> if#(X1,X2,X3) -> if#(active(X1),X2,X3) -> if#(X1,X2,X3) if#(X1,mark(X2),X3) -> if#(X1,X2,X3) -> if#(X1,active(X2),X3) -> if#(X1,X2,X3) if#(X1,mark(X2),X3) -> if#(X1,X2,X3) -> if#(X1,X2,active(X3)) -> if#(X1,X2,X3) if#(X1,active(X2),X3) -> if#(X1,X2,X3) -> if#(mark(X1),X2,X3) -> if#(X1,X2,X3) if#(X1,active(X2),X3) -> if#(X1,X2,X3) -> if#(X1,mark(X2),X3) -> if#(X1,X2,X3) if#(X1,active(X2),X3) -> if#(X1,X2,X3) -> if#(X1,X2,mark(X3)) -> if#(X1,X2,X3) if#(X1,active(X2),X3) -> if#(X1,X2,X3) -> if#(active(X1),X2,X3) -> if#(X1,X2,X3) if#(X1,active(X2),X3) -> if#(X1,X2,X3) -> if#(X1,active(X2),X3) -> if#(X1,X2,X3) if#(X1,active(X2),X3) -> if#(X1,X2,X3) -> if#(X1,X2,active(X3)) -> if#(X1,X2,X3) if#(X1,X2,mark(X3)) -> if#(X1,X2,X3) -> if#(mark(X1),X2,X3) -> if#(X1,X2,X3) if#(X1,X2,mark(X3)) -> if#(X1,X2,X3) -> if#(X1,mark(X2),X3) -> if#(X1,X2,X3) if#(X1,X2,mark(X3)) -> if#(X1,X2,X3) -> if#(X1,X2,mark(X3)) -> if#(X1,X2,X3) if#(X1,X2,mark(X3)) -> if#(X1,X2,X3) -> if#(active(X1),X2,X3) -> if#(X1,X2,X3) if#(X1,X2,mark(X3)) -> if#(X1,X2,X3) -> if#(X1,active(X2),X3) -> if#(X1,X2,X3) if#(X1,X2,mark(X3)) -> if#(X1,X2,X3) -> if#(X1,X2,active(X3)) -> if#(X1,X2,X3) if#(X1,X2,active(X3)) -> if#(X1,X2,X3) -> if#(mark(X1),X2,X3) -> if#(X1,X2,X3) if#(X1,X2,active(X3)) -> if#(X1,X2,X3) -> if#(X1,mark(X2),X3) -> if#(X1,X2,X3) if#(X1,X2,active(X3)) -> if#(X1,X2,X3) -> if#(X1,X2,mark(X3)) -> if#(X1,X2,X3) if#(X1,X2,active(X3)) -> if#(X1,X2,X3) -> if#(active(X1),X2,X3) -> if#(X1,X2,X3) if#(X1,X2,active(X3)) -> if#(X1,X2,X3) -> if#(X1,active(X2),X3) -> if#(X1,X2,X3) if#(X1,X2,active(X3)) -> if#(X1,X2,X3) -> if#(X1,X2,active(X3)) -> if#(X1,X2,X3) f#(mark(X)) -> f#(X) -> f#(mark(X)) -> f#(X) f#(mark(X)) -> f#(X) -> f#(active(X)) -> f#(X) f#(active(X)) -> f#(X) -> f#(mark(X)) -> f#(X) f#(active(X)) -> f#(X) -> f#(active(X)) -> f#(X) active#(if(false(),X,Y)) -> mark#(Y) -> mark#(f(X)) -> mark#(X) active#(if(false(),X,Y)) -> mark#(Y) -> mark#(f(X)) -> f#(mark(X)) active#(if(false(),X,Y)) -> mark#(Y) -> mark#(f(X)) -> active#(f(mark(X))) active#(if(false(),X,Y)) -> mark#(Y) -> mark#(if(X1,X2,X3)) -> mark#(X2) active#(if(false(),X,Y)) -> mark#(Y) -> mark#(if(X1,X2,X3)) -> mark#(X1) active#(if(false(),X,Y)) -> mark#(Y) -> mark#(if(X1,X2,X3)) -> if#(mark(X1),mark(X2),X3) active#(if(false(),X,Y)) -> mark#(Y) -> mark#(if(X1,X2,X3)) -> active#(if(mark(X1),mark(X2),X3)) active#(if(false(),X,Y)) -> mark#(Y) -> mark#(c()) -> active#(c()) active#(if(false(),X,Y)) -> mark#(Y) -> mark#(true()) -> active#(true()) active#(if(false(),X,Y)) -> mark#(Y) -> mark#(false()) -> active#(false()) active#(if(true(),X,Y)) -> mark#(X) -> mark#(f(X)) -> mark#(X) active#(if(true(),X,Y)) -> mark#(X) -> mark#(f(X)) -> f#(mark(X)) active#(if(true(),X,Y)) -> mark#(X) -> mark#(f(X)) -> active#(f(mark(X))) active#(if(true(),X,Y)) -> mark#(X) -> mark#(if(X1,X2,X3)) -> mark#(X2) active#(if(true(),X,Y)) -> mark#(X) -> mark#(if(X1,X2,X3)) -> mark#(X1) active#(if(true(),X,Y)) -> mark#(X) -> mark#(if(X1,X2,X3)) -> if#(mark(X1),mark(X2),X3) active#(if(true(),X,Y)) -> mark#(X) -> mark#(if(X1,X2,X3)) -> active#(if(mark(X1),mark(X2),X3)) active#(if(true(),X,Y)) -> mark#(X) -> mark#(c()) -> active#(c()) active#(if(true(),X,Y)) -> mark#(X) -> mark#(true()) -> active#(true()) active#(if(true(),X,Y)) -> mark#(X) -> mark#(false()) -> active#(false()) active#(f(X)) -> mark#(if(X,c(),f(true()))) -> mark#(f(X)) -> mark#(X) active#(f(X)) -> mark#(if(X,c(),f(true()))) -> mark#(f(X)) -> f#(mark(X)) active#(f(X)) -> mark#(if(X,c(),f(true()))) -> mark#(f(X)) -> active#(f(mark(X))) active#(f(X)) -> mark#(if(X,c(),f(true()))) -> mark#(if(X1,X2,X3)) -> mark#(X2) active#(f(X)) -> mark#(if(X,c(),f(true()))) -> mark#(if(X1,X2,X3)) -> mark#(X1) active#(f(X)) -> mark#(if(X,c(),f(true()))) -> mark#(if(X1,X2,X3)) -> if#(mark(X1),mark(X2),X3) active#(f(X)) -> mark#(if(X,c(),f(true()))) -> mark#(if(X1,X2,X3)) -> active#(if(mark(X1),mark(X2),X3)) SCC Processor: #sccs: 3 #rules: 16 #arcs: 113/529 DPs: mark#(if(X1,X2,X3)) -> mark#(X2) mark#(if(X1,X2,X3)) -> active#(if(mark(X1),mark(X2),X3)) active#(if(false(),X,Y)) -> mark#(Y) mark#(if(X1,X2,X3)) -> mark#(X1) mark#(f(X)) -> active#(f(mark(X))) active#(if(true(),X,Y)) -> mark#(X) mark#(f(X)) -> mark#(X) active#(f(X)) -> mark#(if(X,c(),f(true()))) TRS: active(f(X)) -> mark(if(X,c(),f(true()))) active(if(true(),X,Y)) -> mark(X) active(if(false(),X,Y)) -> mark(Y) mark(f(X)) -> active(f(mark(X))) mark(if(X1,X2,X3)) -> active(if(mark(X1),mark(X2),X3)) mark(c()) -> active(c()) mark(true()) -> active(true()) mark(false()) -> active(false()) f(mark(X)) -> f(X) f(active(X)) -> f(X) if(mark(X1),X2,X3) -> if(X1,X2,X3) if(X1,mark(X2),X3) -> if(X1,X2,X3) if(X1,X2,mark(X3)) -> if(X1,X2,X3) if(active(X1),X2,X3) -> if(X1,X2,X3) if(X1,active(X2),X3) -> if(X1,X2,X3) if(X1,X2,active(X3)) -> if(X1,X2,X3) Matrix Interpretation Processor: dimension: 1 interpretation: [mark#](x0) = x0, [active#](x0) = x0, [false] = 1, [mark](x0) = x0, [if](x0, x1, x2) = x0 + x1 + x2, [true] = 0, [c] = 0, [active](x0) = x0, [f](x0) = x0 orientation: mark#(if(X1,X2,X3)) = X1 + X2 + X3 >= X2 = mark#(X2) mark#(if(X1,X2,X3)) = X1 + X2 + X3 >= X1 + X2 + X3 = active#(if(mark(X1),mark(X2),X3)) active#(if(false(),X,Y)) = X + Y + 1 >= Y = mark#(Y) mark#(if(X1,X2,X3)) = X1 + X2 + X3 >= X1 = mark#(X1) mark#(f(X)) = X >= X = active#(f(mark(X))) active#(if(true(),X,Y)) = X + Y >= X = mark#(X) mark#(f(X)) = X >= X = mark#(X) active#(f(X)) = X >= X = mark#(if(X,c(),f(true()))) active(f(X)) = X >= X = mark(if(X,c(),f(true()))) active(if(true(),X,Y)) = X + Y >= X = mark(X) active(if(false(),X,Y)) = X + Y + 1 >= Y = mark(Y) mark(f(X)) = X >= X = active(f(mark(X))) mark(if(X1,X2,X3)) = X1 + X2 + X3 >= X1 + X2 + X3 = active(if(mark(X1),mark(X2),X3)) mark(c()) = 0 >= 0 = active(c()) mark(true()) = 0 >= 0 = active(true()) mark(false()) = 1 >= 1 = active(false()) f(mark(X)) = X >= X = f(X) f(active(X)) = X >= X = f(X) if(mark(X1),X2,X3) = X1 + X2 + X3 >= X1 + X2 + X3 = if(X1,X2,X3) if(X1,mark(X2),X3) = X1 + X2 + X3 >= X1 + X2 + X3 = if(X1,X2,X3) if(X1,X2,mark(X3)) = X1 + X2 + X3 >= X1 + X2 + X3 = if(X1,X2,X3) if(active(X1),X2,X3) = X1 + X2 + X3 >= X1 + X2 + X3 = if(X1,X2,X3) if(X1,active(X2),X3) = X1 + X2 + X3 >= X1 + X2 + X3 = if(X1,X2,X3) if(X1,X2,active(X3)) = X1 + X2 + X3 >= X1 + X2 + X3 = if(X1,X2,X3) problem: DPs: mark#(if(X1,X2,X3)) -> mark#(X2) mark#(if(X1,X2,X3)) -> active#(if(mark(X1),mark(X2),X3)) mark#(if(X1,X2,X3)) -> mark#(X1) mark#(f(X)) -> active#(f(mark(X))) active#(if(true(),X,Y)) -> mark#(X) mark#(f(X)) -> mark#(X) active#(f(X)) -> mark#(if(X,c(),f(true()))) TRS: active(f(X)) -> mark(if(X,c(),f(true()))) active(if(true(),X,Y)) -> mark(X) active(if(false(),X,Y)) -> mark(Y) mark(f(X)) -> active(f(mark(X))) mark(if(X1,X2,X3)) -> active(if(mark(X1),mark(X2),X3)) mark(c()) -> active(c()) mark(true()) -> active(true()) mark(false()) -> active(false()) f(mark(X)) -> f(X) f(active(X)) -> f(X) if(mark(X1),X2,X3) -> if(X1,X2,X3) if(X1,mark(X2),X3) -> if(X1,X2,X3) if(X1,X2,mark(X3)) -> if(X1,X2,X3) if(active(X1),X2,X3) -> if(X1,X2,X3) if(X1,active(X2),X3) -> if(X1,X2,X3) if(X1,X2,active(X3)) -> if(X1,X2,X3) Matrix Interpretation Processor: dimension: 1 interpretation: [mark#](x0) = x0 + 1, [active#](x0) = x0 + 1, [false] = 0, [mark](x0) = x0, [if](x0, x1, x2) = x0 + x1 + x2, [true] = 0, [c] = 0, [active](x0) = x0, [f](x0) = x0 + 1 orientation: mark#(if(X1,X2,X3)) = X1 + X2 + X3 + 1 >= X2 + 1 = mark#(X2) mark#(if(X1,X2,X3)) = X1 + X2 + X3 + 1 >= X1 + X2 + X3 + 1 = active#(if(mark(X1),mark(X2),X3)) mark#(if(X1,X2,X3)) = X1 + X2 + X3 + 1 >= X1 + 1 = mark#(X1) mark#(f(X)) = X + 2 >= X + 2 = active#(f(mark(X))) active#(if(true(),X,Y)) = X + Y + 1 >= X + 1 = mark#(X) mark#(f(X)) = X + 2 >= X + 1 = mark#(X) active#(f(X)) = X + 2 >= X + 2 = mark#(if(X,c(),f(true()))) active(f(X)) = X + 1 >= X + 1 = mark(if(X,c(),f(true()))) active(if(true(),X,Y)) = X + Y >= X = mark(X) active(if(false(),X,Y)) = X + Y >= Y = mark(Y) mark(f(X)) = X + 1 >= X + 1 = active(f(mark(X))) mark(if(X1,X2,X3)) = X1 + X2 + X3 >= X1 + X2 + X3 = active(if(mark(X1),mark(X2),X3)) mark(c()) = 0 >= 0 = active(c()) mark(true()) = 0 >= 0 = active(true()) mark(false()) = 0 >= 0 = active(false()) f(mark(X)) = X + 1 >= X + 1 = f(X) f(active(X)) = X + 1 >= X + 1 = f(X) if(mark(X1),X2,X3) = X1 + X2 + X3 >= X1 + X2 + X3 = if(X1,X2,X3) if(X1,mark(X2),X3) = X1 + X2 + X3 >= X1 + X2 + X3 = if(X1,X2,X3) if(X1,X2,mark(X3)) = X1 + X2 + X3 >= X1 + X2 + X3 = if(X1,X2,X3) if(active(X1),X2,X3) = X1 + X2 + X3 >= X1 + X2 + X3 = if(X1,X2,X3) if(X1,active(X2),X3) = X1 + X2 + X3 >= X1 + X2 + X3 = if(X1,X2,X3) if(X1,X2,active(X3)) = X1 + X2 + X3 >= X1 + X2 + X3 = if(X1,X2,X3) problem: DPs: mark#(if(X1,X2,X3)) -> mark#(X2) mark#(if(X1,X2,X3)) -> active#(if(mark(X1),mark(X2),X3)) mark#(if(X1,X2,X3)) -> mark#(X1) mark#(f(X)) -> active#(f(mark(X))) active#(if(true(),X,Y)) -> mark#(X) active#(f(X)) -> mark#(if(X,c(),f(true()))) TRS: active(f(X)) -> mark(if(X,c(),f(true()))) active(if(true(),X,Y)) -> mark(X) active(if(false(),X,Y)) -> mark(Y) mark(f(X)) -> active(f(mark(X))) mark(if(X1,X2,X3)) -> active(if(mark(X1),mark(X2),X3)) mark(c()) -> active(c()) mark(true()) -> active(true()) mark(false()) -> active(false()) f(mark(X)) -> f(X) f(active(X)) -> f(X) if(mark(X1),X2,X3) -> if(X1,X2,X3) if(X1,mark(X2),X3) -> if(X1,X2,X3) if(X1,X2,mark(X3)) -> if(X1,X2,X3) if(active(X1),X2,X3) -> if(X1,X2,X3) if(X1,active(X2),X3) -> if(X1,X2,X3) if(X1,X2,active(X3)) -> if(X1,X2,X3) Open DPs: f#(active(X)) -> f#(X) f#(mark(X)) -> f#(X) TRS: active(f(X)) -> mark(if(X,c(),f(true()))) active(if(true(),X,Y)) -> mark(X) active(if(false(),X,Y)) -> mark(Y) mark(f(X)) -> active(f(mark(X))) mark(if(X1,X2,X3)) -> active(if(mark(X1),mark(X2),X3)) mark(c()) -> active(c()) mark(true()) -> active(true()) mark(false()) -> active(false()) f(mark(X)) -> f(X) f(active(X)) -> f(X) if(mark(X1),X2,X3) -> if(X1,X2,X3) if(X1,mark(X2),X3) -> if(X1,X2,X3) if(X1,X2,mark(X3)) -> if(X1,X2,X3) if(active(X1),X2,X3) -> if(X1,X2,X3) if(X1,active(X2),X3) -> if(X1,X2,X3) if(X1,X2,active(X3)) -> if(X1,X2,X3) Open DPs: if#(X1,active(X2),X3) -> if#(X1,X2,X3) if#(X1,X2,active(X3)) -> if#(X1,X2,X3) if#(active(X1),X2,X3) -> if#(X1,X2,X3) if#(X1,X2,mark(X3)) -> if#(X1,X2,X3) if#(X1,mark(X2),X3) -> if#(X1,X2,X3) if#(mark(X1),X2,X3) -> if#(X1,X2,X3) TRS: active(f(X)) -> mark(if(X,c(),f(true()))) active(if(true(),X,Y)) -> mark(X) active(if(false(),X,Y)) -> mark(Y) mark(f(X)) -> active(f(mark(X))) mark(if(X1,X2,X3)) -> active(if(mark(X1),mark(X2),X3)) mark(c()) -> active(c()) mark(true()) -> active(true()) mark(false()) -> active(false()) f(mark(X)) -> f(X) f(active(X)) -> f(X) if(mark(X1),X2,X3) -> if(X1,X2,X3) if(X1,mark(X2),X3) -> if(X1,X2,X3) if(X1,X2,mark(X3)) -> if(X1,X2,X3) if(active(X1),X2,X3) -> if(X1,X2,X3) if(X1,active(X2),X3) -> if(X1,X2,X3) if(X1,X2,active(X3)) -> if(X1,X2,X3) Open