0.65/0.68 YES 0.65/0.68 0.65/0.68 Problem 1: 0.65/0.68 0.65/0.68 (VAR v_NonEmpty:S X:S X1:S X2:S X3:S Y:S Z:S) 0.65/0.68 (RULES 0.65/0.68 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.68 active(add(0,X:S)) -> mark(X:S) 0.65/0.68 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.68 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.68 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.68 active(first(0,X:S)) -> mark(nil) 0.65/0.68 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.68 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.68 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.68 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.68 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.68 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.68 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.68 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.68 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.68 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.68 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.68 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.68 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.68 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.68 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.68 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.68 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.68 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.68 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.68 from(active(X:S)) -> from(X:S) 0.65/0.68 from(mark(X:S)) -> from(X:S) 0.65/0.68 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.68 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.68 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.68 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.68 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.68 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.68 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.68 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.68 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.68 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.68 mark(from(X:S)) -> active(from(X:S)) 0.65/0.68 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.68 mark(s(X:S)) -> active(s(X:S)) 0.65/0.68 mark(0) -> active(0) 0.65/0.68 mark(ffalse) -> active(ffalse) 0.65/0.68 mark(nil) -> active(nil) 0.65/0.68 mark(ttrue) -> active(ttrue) 0.65/0.68 s(active(X:S)) -> s(X:S) 0.65/0.68 s(mark(X:S)) -> s(X:S) 0.65/0.68 ) 0.65/0.68 (STRATEGY INNERMOST) 0.65/0.68 0.65/0.68 Problem 1: 0.65/0.68 0.65/0.68 Dependency Pairs Processor: 0.65/0.68 -> Pairs: 0.65/0.68 ACTIVE(add(s(X:S),Y:S)) -> ADD(X:S,Y:S) 0.65/0.68 ACTIVE(add(s(X:S),Y:S)) -> MARK(s(add(X:S,Y:S))) 0.65/0.68 ACTIVE(add(s(X:S),Y:S)) -> S(add(X:S,Y:S)) 0.65/0.68 ACTIVE(add(0,X:S)) -> MARK(X:S) 0.65/0.68 ACTIVE(and(ffalse,Y:S)) -> MARK(ffalse) 0.65/0.68 ACTIVE(and(ttrue,X:S)) -> MARK(X:S) 0.65/0.68 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> CONS(Y:S,first(X:S,Z:S)) 0.65/0.68 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> FIRST(X:S,Z:S) 0.65/0.68 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> MARK(cons(Y:S,first(X:S,Z:S))) 0.65/0.68 ACTIVE(first(0,X:S)) -> MARK(nil) 0.65/0.68 ACTIVE(from(X:S)) -> CONS(X:S,from(s(X:S))) 0.65/0.68 ACTIVE(from(X:S)) -> FROM(s(X:S)) 0.65/0.68 ACTIVE(from(X:S)) -> MARK(cons(X:S,from(s(X:S)))) 0.65/0.68 ACTIVE(from(X:S)) -> S(X:S) 0.65/0.68 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.68 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.68 ADD(active(X1:S),X2:S) -> ADD(X1:S,X2:S) 0.65/0.68 ADD(mark(X1:S),X2:S) -> ADD(X1:S,X2:S) 0.65/0.68 ADD(X1:S,active(X2:S)) -> ADD(X1:S,X2:S) 0.65/0.68 ADD(X1:S,mark(X2:S)) -> ADD(X1:S,X2:S) 0.65/0.68 AND(active(X1:S),X2:S) -> AND(X1:S,X2:S) 0.65/0.68 AND(mark(X1:S),X2:S) -> AND(X1:S,X2:S) 0.65/0.68 AND(X1:S,active(X2:S)) -> AND(X1:S,X2:S) 0.65/0.68 AND(X1:S,mark(X2:S)) -> AND(X1:S,X2:S) 0.65/0.68 CONS(active(X1:S),X2:S) -> CONS(X1:S,X2:S) 0.65/0.68 CONS(mark(X1:S),X2:S) -> CONS(X1:S,X2:S) 0.65/0.68 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 0.65/0.68 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 0.65/0.68 FIRST(active(X1:S),X2:S) -> FIRST(X1:S,X2:S) 0.65/0.68 FIRST(mark(X1:S),X2:S) -> FIRST(X1:S,X2:S) 0.65/0.68 FIRST(X1:S,active(X2:S)) -> FIRST(X1:S,X2:S) 0.65/0.68 FIRST(X1:S,mark(X2:S)) -> FIRST(X1:S,X2:S) 0.65/0.68 FROM(active(X:S)) -> FROM(X:S) 0.65/0.68 FROM(mark(X:S)) -> FROM(X:S) 0.65/0.68 IF(active(X1:S),X2:S,X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.68 IF(mark(X1:S),X2:S,X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.68 IF(X1:S,active(X2:S),X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.68 IF(X1:S,mark(X2:S),X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.68 IF(X1:S,X2:S,active(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.68 IF(X1:S,X2:S,mark(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.68 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.68 MARK(add(X1:S,X2:S)) -> ADD(mark(X1:S),X2:S) 0.65/0.68 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.68 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.68 MARK(and(X1:S,X2:S)) -> AND(mark(X1:S),X2:S) 0.65/0.68 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.68 MARK(cons(X1:S,X2:S)) -> ACTIVE(cons(X1:S,X2:S)) 0.65/0.69 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.69 MARK(first(X1:S,X2:S)) -> FIRST(mark(X1:S),mark(X2:S)) 0.65/0.69 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.69 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.69 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.69 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 MARK(if(X1:S,X2:S,X3:S)) -> IF(mark(X1:S),X2:S,X3:S) 0.65/0.69 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.69 MARK(s(X:S)) -> ACTIVE(s(X:S)) 0.65/0.69 S(active(X:S)) -> S(X:S) 0.65/0.69 S(mark(X:S)) -> S(X:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 0.65/0.69 Problem 1: 0.65/0.69 0.65/0.69 SCC Processor: 0.65/0.69 -> Pairs: 0.65/0.69 ACTIVE(add(s(X:S),Y:S)) -> ADD(X:S,Y:S) 0.65/0.69 ACTIVE(add(s(X:S),Y:S)) -> MARK(s(add(X:S,Y:S))) 0.65/0.69 ACTIVE(add(s(X:S),Y:S)) -> S(add(X:S,Y:S)) 0.65/0.69 ACTIVE(add(0,X:S)) -> MARK(X:S) 0.65/0.69 ACTIVE(and(ffalse,Y:S)) -> MARK(ffalse) 0.65/0.69 ACTIVE(and(ttrue,X:S)) -> MARK(X:S) 0.65/0.69 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> CONS(Y:S,first(X:S,Z:S)) 0.65/0.69 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> FIRST(X:S,Z:S) 0.65/0.69 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> MARK(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 ACTIVE(first(0,X:S)) -> MARK(nil) 0.65/0.69 ACTIVE(from(X:S)) -> CONS(X:S,from(s(X:S))) 0.65/0.69 ACTIVE(from(X:S)) -> FROM(s(X:S)) 0.65/0.69 ACTIVE(from(X:S)) -> MARK(cons(X:S,from(s(X:S)))) 0.65/0.69 ACTIVE(from(X:S)) -> S(X:S) 0.65/0.69 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.69 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.69 ADD(active(X1:S),X2:S) -> ADD(X1:S,X2:S) 0.65/0.69 ADD(mark(X1:S),X2:S) -> ADD(X1:S,X2:S) 0.65/0.69 ADD(X1:S,active(X2:S)) -> ADD(X1:S,X2:S) 0.65/0.69 ADD(X1:S,mark(X2:S)) -> ADD(X1:S,X2:S) 0.65/0.69 AND(active(X1:S),X2:S) -> AND(X1:S,X2:S) 0.65/0.69 AND(mark(X1:S),X2:S) -> AND(X1:S,X2:S) 0.65/0.69 AND(X1:S,active(X2:S)) -> AND(X1:S,X2:S) 0.65/0.69 AND(X1:S,mark(X2:S)) -> AND(X1:S,X2:S) 0.65/0.69 CONS(active(X1:S),X2:S) -> CONS(X1:S,X2:S) 0.65/0.69 CONS(mark(X1:S),X2:S) -> CONS(X1:S,X2:S) 0.65/0.69 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 0.65/0.69 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 0.65/0.69 FIRST(active(X1:S),X2:S) -> FIRST(X1:S,X2:S) 0.65/0.69 FIRST(mark(X1:S),X2:S) -> FIRST(X1:S,X2:S) 0.65/0.69 FIRST(X1:S,active(X2:S)) -> FIRST(X1:S,X2:S) 0.65/0.69 FIRST(X1:S,mark(X2:S)) -> FIRST(X1:S,X2:S) 0.65/0.69 FROM(active(X:S)) -> FROM(X:S) 0.65/0.69 FROM(mark(X:S)) -> FROM(X:S) 0.65/0.69 IF(active(X1:S),X2:S,X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(mark(X1:S),X2:S,X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,active(X2:S),X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,mark(X2:S),X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,X2:S,active(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,X2:S,mark(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.69 MARK(add(X1:S,X2:S)) -> ADD(mark(X1:S),X2:S) 0.65/0.69 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.69 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.69 MARK(and(X1:S,X2:S)) -> AND(mark(X1:S),X2:S) 0.65/0.69 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.69 MARK(cons(X1:S,X2:S)) -> ACTIVE(cons(X1:S,X2:S)) 0.65/0.69 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.69 MARK(first(X1:S,X2:S)) -> FIRST(mark(X1:S),mark(X2:S)) 0.65/0.69 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.69 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.69 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.69 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 MARK(if(X1:S,X2:S,X3:S)) -> IF(mark(X1:S),X2:S,X3:S) 0.65/0.69 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.69 MARK(s(X:S)) -> ACTIVE(s(X:S)) 0.65/0.69 S(active(X:S)) -> S(X:S) 0.65/0.69 S(mark(X:S)) -> S(X:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Strongly Connected Components: 0.65/0.69 ->->Cycle: 0.65/0.69 ->->-> Pairs: 0.65/0.69 S(active(X:S)) -> S(X:S) 0.65/0.69 S(mark(X:S)) -> S(X:S) 0.65/0.69 ->->-> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->->Cycle: 0.65/0.69 ->->-> Pairs: 0.65/0.69 IF(active(X1:S),X2:S,X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(mark(X1:S),X2:S,X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,active(X2:S),X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,mark(X2:S),X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,X2:S,active(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,X2:S,mark(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 ->->-> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->->Cycle: 0.65/0.69 ->->-> Pairs: 0.65/0.69 FROM(active(X:S)) -> FROM(X:S) 0.65/0.69 FROM(mark(X:S)) -> FROM(X:S) 0.65/0.69 ->->-> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->->Cycle: 0.65/0.69 ->->-> Pairs: 0.65/0.69 FIRST(active(X1:S),X2:S) -> FIRST(X1:S,X2:S) 0.65/0.69 FIRST(mark(X1:S),X2:S) -> FIRST(X1:S,X2:S) 0.65/0.69 FIRST(X1:S,active(X2:S)) -> FIRST(X1:S,X2:S) 0.65/0.69 FIRST(X1:S,mark(X2:S)) -> FIRST(X1:S,X2:S) 0.65/0.69 ->->-> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->->Cycle: 0.65/0.69 ->->-> Pairs: 0.65/0.69 CONS(active(X1:S),X2:S) -> CONS(X1:S,X2:S) 0.65/0.69 CONS(mark(X1:S),X2:S) -> CONS(X1:S,X2:S) 0.65/0.69 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 0.65/0.69 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 0.65/0.69 ->->-> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->->Cycle: 0.65/0.69 ->->-> Pairs: 0.65/0.69 AND(active(X1:S),X2:S) -> AND(X1:S,X2:S) 0.65/0.69 AND(mark(X1:S),X2:S) -> AND(X1:S,X2:S) 0.65/0.69 AND(X1:S,active(X2:S)) -> AND(X1:S,X2:S) 0.65/0.69 AND(X1:S,mark(X2:S)) -> AND(X1:S,X2:S) 0.65/0.69 ->->-> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->->Cycle: 0.65/0.69 ->->-> Pairs: 0.65/0.69 ADD(active(X1:S),X2:S) -> ADD(X1:S,X2:S) 0.65/0.69 ADD(mark(X1:S),X2:S) -> ADD(X1:S,X2:S) 0.65/0.69 ADD(X1:S,active(X2:S)) -> ADD(X1:S,X2:S) 0.65/0.69 ADD(X1:S,mark(X2:S)) -> ADD(X1:S,X2:S) 0.65/0.69 ->->-> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->->Cycle: 0.65/0.69 ->->-> Pairs: 0.65/0.69 ACTIVE(add(s(X:S),Y:S)) -> MARK(s(add(X:S,Y:S))) 0.65/0.69 ACTIVE(add(0,X:S)) -> MARK(X:S) 0.65/0.69 ACTIVE(and(ttrue,X:S)) -> MARK(X:S) 0.65/0.69 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> MARK(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 ACTIVE(from(X:S)) -> MARK(cons(X:S,from(s(X:S)))) 0.65/0.69 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.69 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.69 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.69 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.69 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.69 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.69 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.69 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.69 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.69 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.69 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.69 ->->-> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 0.65/0.69 0.65/0.69 The problem is decomposed in 8 subproblems. 0.65/0.69 0.65/0.69 Problem 1.1: 0.65/0.69 0.65/0.69 Subterm Processor: 0.65/0.69 -> Pairs: 0.65/0.69 S(active(X:S)) -> S(X:S) 0.65/0.69 S(mark(X:S)) -> S(X:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Projection: 0.65/0.69 pi(S) = 1 0.65/0.69 0.65/0.69 Problem 1.1: 0.65/0.69 0.65/0.69 SCC Processor: 0.65/0.69 -> Pairs: 0.65/0.69 Empty 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Strongly Connected Components: 0.65/0.69 There is no strongly connected component 0.65/0.69 0.65/0.69 The problem is finite. 0.65/0.69 0.65/0.69 Problem 1.2: 0.65/0.69 0.65/0.69 Subterm Processor: 0.65/0.69 -> Pairs: 0.65/0.69 IF(active(X1:S),X2:S,X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(mark(X1:S),X2:S,X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,active(X2:S),X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,mark(X2:S),X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,X2:S,active(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,X2:S,mark(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Projection: 0.65/0.69 pi(IF) = 1 0.65/0.69 0.65/0.69 Problem 1.2: 0.65/0.69 0.65/0.69 SCC Processor: 0.65/0.69 -> Pairs: 0.65/0.69 IF(X1:S,active(X2:S),X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,mark(X2:S),X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,X2:S,active(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,X2:S,mark(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Strongly Connected Components: 0.65/0.69 ->->Cycle: 0.65/0.69 ->->-> Pairs: 0.65/0.69 IF(X1:S,active(X2:S),X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,mark(X2:S),X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,X2:S,active(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,X2:S,mark(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 ->->-> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 0.65/0.69 Problem 1.2: 0.65/0.69 0.65/0.69 Subterm Processor: 0.65/0.69 -> Pairs: 0.65/0.69 IF(X1:S,active(X2:S),X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,mark(X2:S),X3:S) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,X2:S,active(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,X2:S,mark(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Projection: 0.65/0.69 pi(IF) = 2 0.65/0.69 0.65/0.69 Problem 1.2: 0.65/0.69 0.65/0.69 SCC Processor: 0.65/0.69 -> Pairs: 0.65/0.69 IF(X1:S,X2:S,active(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,X2:S,mark(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Strongly Connected Components: 0.65/0.69 ->->Cycle: 0.65/0.69 ->->-> Pairs: 0.65/0.69 IF(X1:S,X2:S,active(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,X2:S,mark(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 ->->-> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 0.65/0.69 Problem 1.2: 0.65/0.69 0.65/0.69 Subterm Processor: 0.65/0.69 -> Pairs: 0.65/0.69 IF(X1:S,X2:S,active(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 IF(X1:S,X2:S,mark(X3:S)) -> IF(X1:S,X2:S,X3:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Projection: 0.65/0.69 pi(IF) = 3 0.65/0.69 0.65/0.69 Problem 1.2: 0.65/0.69 0.65/0.69 SCC Processor: 0.65/0.69 -> Pairs: 0.65/0.69 Empty 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Strongly Connected Components: 0.65/0.69 There is no strongly connected component 0.65/0.69 0.65/0.69 The problem is finite. 0.65/0.69 0.65/0.69 Problem 1.3: 0.65/0.69 0.65/0.69 Subterm Processor: 0.65/0.69 -> Pairs: 0.65/0.69 FROM(active(X:S)) -> FROM(X:S) 0.65/0.69 FROM(mark(X:S)) -> FROM(X:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Projection: 0.65/0.69 pi(FROM) = 1 0.65/0.69 0.65/0.69 Problem 1.3: 0.65/0.69 0.65/0.69 SCC Processor: 0.65/0.69 -> Pairs: 0.65/0.69 Empty 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Strongly Connected Components: 0.65/0.69 There is no strongly connected component 0.65/0.69 0.65/0.69 The problem is finite. 0.65/0.69 0.65/0.69 Problem 1.4: 0.65/0.69 0.65/0.69 Subterm Processor: 0.65/0.69 -> Pairs: 0.65/0.69 FIRST(active(X1:S),X2:S) -> FIRST(X1:S,X2:S) 0.65/0.69 FIRST(mark(X1:S),X2:S) -> FIRST(X1:S,X2:S) 0.65/0.69 FIRST(X1:S,active(X2:S)) -> FIRST(X1:S,X2:S) 0.65/0.69 FIRST(X1:S,mark(X2:S)) -> FIRST(X1:S,X2:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Projection: 0.65/0.69 pi(FIRST) = 1 0.65/0.69 0.65/0.69 Problem 1.4: 0.65/0.69 0.65/0.69 SCC Processor: 0.65/0.69 -> Pairs: 0.65/0.69 FIRST(X1:S,active(X2:S)) -> FIRST(X1:S,X2:S) 0.65/0.69 FIRST(X1:S,mark(X2:S)) -> FIRST(X1:S,X2:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Strongly Connected Components: 0.65/0.69 ->->Cycle: 0.65/0.69 ->->-> Pairs: 0.65/0.69 FIRST(X1:S,active(X2:S)) -> FIRST(X1:S,X2:S) 0.65/0.69 FIRST(X1:S,mark(X2:S)) -> FIRST(X1:S,X2:S) 0.65/0.69 ->->-> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 0.65/0.69 Problem 1.4: 0.65/0.69 0.65/0.69 Subterm Processor: 0.65/0.69 -> Pairs: 0.65/0.69 FIRST(X1:S,active(X2:S)) -> FIRST(X1:S,X2:S) 0.65/0.69 FIRST(X1:S,mark(X2:S)) -> FIRST(X1:S,X2:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Projection: 0.65/0.69 pi(FIRST) = 2 0.65/0.69 0.65/0.69 Problem 1.4: 0.65/0.69 0.65/0.69 SCC Processor: 0.65/0.69 -> Pairs: 0.65/0.69 Empty 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Strongly Connected Components: 0.65/0.69 There is no strongly connected component 0.65/0.69 0.65/0.69 The problem is finite. 0.65/0.69 0.65/0.69 Problem 1.5: 0.65/0.69 0.65/0.69 Subterm Processor: 0.65/0.69 -> Pairs: 0.65/0.69 CONS(active(X1:S),X2:S) -> CONS(X1:S,X2:S) 0.65/0.69 CONS(mark(X1:S),X2:S) -> CONS(X1:S,X2:S) 0.65/0.69 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 0.65/0.69 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Projection: 0.65/0.69 pi(CONS) = 1 0.65/0.69 0.65/0.69 Problem 1.5: 0.65/0.69 0.65/0.69 SCC Processor: 0.65/0.69 -> Pairs: 0.65/0.69 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 0.65/0.69 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Strongly Connected Components: 0.65/0.69 ->->Cycle: 0.65/0.69 ->->-> Pairs: 0.65/0.69 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 0.65/0.69 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 0.65/0.69 ->->-> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 0.65/0.69 Problem 1.5: 0.65/0.69 0.65/0.69 Subterm Processor: 0.65/0.69 -> Pairs: 0.65/0.69 CONS(X1:S,active(X2:S)) -> CONS(X1:S,X2:S) 0.65/0.69 CONS(X1:S,mark(X2:S)) -> CONS(X1:S,X2:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Projection: 0.65/0.69 pi(CONS) = 2 0.65/0.69 0.65/0.69 Problem 1.5: 0.65/0.69 0.65/0.69 SCC Processor: 0.65/0.69 -> Pairs: 0.65/0.69 Empty 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Strongly Connected Components: 0.65/0.69 There is no strongly connected component 0.65/0.69 0.65/0.69 The problem is finite. 0.65/0.69 0.65/0.69 Problem 1.6: 0.65/0.69 0.65/0.69 Subterm Processor: 0.65/0.69 -> Pairs: 0.65/0.69 AND(active(X1:S),X2:S) -> AND(X1:S,X2:S) 0.65/0.69 AND(mark(X1:S),X2:S) -> AND(X1:S,X2:S) 0.65/0.69 AND(X1:S,active(X2:S)) -> AND(X1:S,X2:S) 0.65/0.69 AND(X1:S,mark(X2:S)) -> AND(X1:S,X2:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Projection: 0.65/0.69 pi(AND) = 1 0.65/0.69 0.65/0.69 Problem 1.6: 0.65/0.69 0.65/0.69 SCC Processor: 0.65/0.69 -> Pairs: 0.65/0.69 AND(X1:S,active(X2:S)) -> AND(X1:S,X2:S) 0.65/0.69 AND(X1:S,mark(X2:S)) -> AND(X1:S,X2:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Strongly Connected Components: 0.65/0.69 ->->Cycle: 0.65/0.69 ->->-> Pairs: 0.65/0.69 AND(X1:S,active(X2:S)) -> AND(X1:S,X2:S) 0.65/0.69 AND(X1:S,mark(X2:S)) -> AND(X1:S,X2:S) 0.65/0.69 ->->-> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 0.65/0.69 Problem 1.6: 0.65/0.69 0.65/0.69 Subterm Processor: 0.65/0.69 -> Pairs: 0.65/0.69 AND(X1:S,active(X2:S)) -> AND(X1:S,X2:S) 0.65/0.69 AND(X1:S,mark(X2:S)) -> AND(X1:S,X2:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Projection: 0.65/0.69 pi(AND) = 2 0.65/0.69 0.65/0.69 Problem 1.6: 0.65/0.69 0.65/0.69 SCC Processor: 0.65/0.69 -> Pairs: 0.65/0.69 Empty 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.69 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.69 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.69 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.69 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.69 mark(from(X:S)) -> active(from(X:S)) 0.65/0.69 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.69 mark(s(X:S)) -> active(s(X:S)) 0.65/0.69 mark(0) -> active(0) 0.65/0.69 mark(ffalse) -> active(ffalse) 0.65/0.69 mark(nil) -> active(nil) 0.65/0.69 mark(ttrue) -> active(ttrue) 0.65/0.69 s(active(X:S)) -> s(X:S) 0.65/0.69 s(mark(X:S)) -> s(X:S) 0.65/0.69 ->Strongly Connected Components: 0.65/0.69 There is no strongly connected component 0.65/0.69 0.65/0.69 The problem is finite. 0.65/0.69 0.65/0.69 Problem 1.7: 0.65/0.69 0.65/0.69 Subterm Processor: 0.65/0.69 -> Pairs: 0.65/0.69 ADD(active(X1:S),X2:S) -> ADD(X1:S,X2:S) 0.65/0.69 ADD(mark(X1:S),X2:S) -> ADD(X1:S,X2:S) 0.65/0.69 ADD(X1:S,active(X2:S)) -> ADD(X1:S,X2:S) 0.65/0.69 ADD(X1:S,mark(X2:S)) -> ADD(X1:S,X2:S) 0.65/0.69 -> Rules: 0.65/0.69 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.69 active(add(0,X:S)) -> mark(X:S) 0.65/0.69 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.69 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.69 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.69 active(first(0,X:S)) -> mark(nil) 0.65/0.69 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.69 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.69 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.69 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.69 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.69 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.69 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.69 from(active(X:S)) -> from(X:S) 0.65/0.69 from(mark(X:S)) -> from(X:S) 0.65/0.69 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.69 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Projection: 0.65/0.70 pi(ADD) = 1 0.65/0.70 0.65/0.70 Problem 1.7: 0.65/0.70 0.65/0.70 SCC Processor: 0.65/0.70 -> Pairs: 0.65/0.70 ADD(X1:S,active(X2:S)) -> ADD(X1:S,X2:S) 0.65/0.70 ADD(X1:S,mark(X2:S)) -> ADD(X1:S,X2:S) 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Strongly Connected Components: 0.65/0.70 ->->Cycle: 0.65/0.70 ->->-> Pairs: 0.65/0.70 ADD(X1:S,active(X2:S)) -> ADD(X1:S,X2:S) 0.65/0.70 ADD(X1:S,mark(X2:S)) -> ADD(X1:S,X2:S) 0.65/0.70 ->->-> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 0.65/0.70 Problem 1.7: 0.65/0.70 0.65/0.70 Subterm Processor: 0.65/0.70 -> Pairs: 0.65/0.70 ADD(X1:S,active(X2:S)) -> ADD(X1:S,X2:S) 0.65/0.70 ADD(X1:S,mark(X2:S)) -> ADD(X1:S,X2:S) 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Projection: 0.65/0.70 pi(ADD) = 2 0.65/0.70 0.65/0.70 Problem 1.7: 0.65/0.70 0.65/0.70 SCC Processor: 0.65/0.70 -> Pairs: 0.65/0.70 Empty 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Strongly Connected Components: 0.65/0.70 There is no strongly connected component 0.65/0.70 0.65/0.70 The problem is finite. 0.65/0.70 0.65/0.70 Problem 1.8: 0.65/0.70 0.65/0.70 Reduction Pairs Processor: 0.65/0.70 -> Pairs: 0.65/0.70 ACTIVE(add(s(X:S),Y:S)) -> MARK(s(add(X:S,Y:S))) 0.65/0.70 ACTIVE(add(0,X:S)) -> MARK(X:S) 0.65/0.70 ACTIVE(and(ttrue,X:S)) -> MARK(X:S) 0.65/0.70 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> MARK(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 ACTIVE(from(X:S)) -> MARK(cons(X:S,from(s(X:S)))) 0.65/0.70 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 -> Usable rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Interpretation type: 0.65/0.70 Linear 0.65/0.70 ->Coefficients: 0.65/0.70 Natural Numbers 0.65/0.70 ->Dimension: 0.65/0.70 1 0.65/0.70 ->Bound: 0.65/0.70 2 0.65/0.70 ->Interpretation: 0.65/0.70 0.65/0.70 [active](X) = X 0.65/0.70 [add](X1,X2) = 2.X1 + 2.X2 + 2 0.65/0.70 [and](X1,X2) = 2.X1 + 2.X2 + 2 0.65/0.70 [cons](X1,X2) = 0 0.65/0.70 [first](X1,X2) = X1 + 2.X2 + 2 0.65/0.70 [from](X) = X + 2 0.65/0.70 [if](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 1 0.65/0.70 [mark](X) = 2.X + 1 0.65/0.70 [s](X) = 2 0.65/0.70 [0] = 2 0.65/0.70 [fSNonEmpty] = 0 0.65/0.70 [false] = 2 0.65/0.70 [nil] = 1 0.65/0.70 [true] = 0 0.65/0.70 [ACTIVE](X) = X + 1 0.65/0.70 [ADD](X1,X2) = 0 0.65/0.70 [AND](X1,X2) = 0 0.65/0.70 [CONS](X1,X2) = 0 0.65/0.70 [FIRST](X1,X2) = 0 0.65/0.70 [FROM](X) = 0 0.65/0.70 [IF](X1,X2,X3) = 0 0.65/0.70 [MARK](X) = 2.X + 2 0.65/0.70 [S](X) = 0 0.65/0.70 0.65/0.70 Problem 1.8: 0.65/0.70 0.65/0.70 SCC Processor: 0.65/0.70 -> Pairs: 0.65/0.70 ACTIVE(add(0,X:S)) -> MARK(X:S) 0.65/0.70 ACTIVE(and(ttrue,X:S)) -> MARK(X:S) 0.65/0.70 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> MARK(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 ACTIVE(from(X:S)) -> MARK(cons(X:S,from(s(X:S)))) 0.65/0.70 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Strongly Connected Components: 0.65/0.70 ->->Cycle: 0.65/0.70 ->->-> Pairs: 0.65/0.70 ACTIVE(add(0,X:S)) -> MARK(X:S) 0.65/0.70 ACTIVE(and(ttrue,X:S)) -> MARK(X:S) 0.65/0.70 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> MARK(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 ACTIVE(from(X:S)) -> MARK(cons(X:S,from(s(X:S)))) 0.65/0.70 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 ->->-> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 0.65/0.70 Problem 1.8: 0.65/0.70 0.65/0.70 Reduction Pairs Processor: 0.65/0.70 -> Pairs: 0.65/0.70 ACTIVE(add(0,X:S)) -> MARK(X:S) 0.65/0.70 ACTIVE(and(ttrue,X:S)) -> MARK(X:S) 0.65/0.70 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> MARK(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 ACTIVE(from(X:S)) -> MARK(cons(X:S,from(s(X:S)))) 0.65/0.70 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 -> Usable rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Interpretation type: 0.65/0.70 Linear 0.65/0.70 ->Coefficients: 0.65/0.70 Natural Numbers 0.65/0.70 ->Dimension: 0.65/0.70 1 0.65/0.70 ->Bound: 0.65/0.70 2 0.65/0.70 ->Interpretation: 0.65/0.70 0.65/0.70 [active](X) = X 0.65/0.70 [add](X1,X2) = 2.X1 + 2.X2 + 1 0.65/0.70 [and](X1,X2) = X1 + 2.X2 + 2 0.65/0.70 [cons](X1,X2) = 0 0.65/0.70 [first](X1,X2) = 2.X1 + 2.X2 + 2 0.65/0.70 [from](X) = 2.X + 2 0.65/0.70 [if](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 1 0.65/0.70 [mark](X) = 2.X 0.65/0.70 [s](X) = 2 0.65/0.70 [0] = 2 0.65/0.70 [fSNonEmpty] = 0 0.65/0.70 [false] = 2 0.65/0.70 [nil] = 0 0.65/0.70 [true] = 2 0.65/0.70 [ACTIVE](X) = X + 2 0.65/0.70 [ADD](X1,X2) = 0 0.65/0.70 [AND](X1,X2) = 0 0.65/0.70 [CONS](X1,X2) = 0 0.65/0.70 [FIRST](X1,X2) = 0 0.65/0.70 [FROM](X) = 0 0.65/0.70 [IF](X1,X2,X3) = 0 0.65/0.70 [MARK](X) = 2.X + 2 0.65/0.70 [S](X) = 0 0.65/0.70 0.65/0.70 Problem 1.8: 0.65/0.70 0.65/0.70 SCC Processor: 0.65/0.70 -> Pairs: 0.65/0.70 ACTIVE(and(ttrue,X:S)) -> MARK(X:S) 0.65/0.70 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> MARK(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 ACTIVE(from(X:S)) -> MARK(cons(X:S,from(s(X:S)))) 0.65/0.70 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Strongly Connected Components: 0.65/0.70 ->->Cycle: 0.65/0.70 ->->-> Pairs: 0.65/0.70 ACTIVE(and(ttrue,X:S)) -> MARK(X:S) 0.65/0.70 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> MARK(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 ACTIVE(from(X:S)) -> MARK(cons(X:S,from(s(X:S)))) 0.65/0.70 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 ->->-> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 0.65/0.70 Problem 1.8: 0.65/0.70 0.65/0.70 Reduction Pairs Processor: 0.65/0.70 -> Pairs: 0.65/0.70 ACTIVE(and(ttrue,X:S)) -> MARK(X:S) 0.65/0.70 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> MARK(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 ACTIVE(from(X:S)) -> MARK(cons(X:S,from(s(X:S)))) 0.65/0.70 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 -> Usable rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Interpretation type: 0.65/0.70 Linear 0.65/0.70 ->Coefficients: 0.65/0.70 Natural Numbers 0.65/0.70 ->Dimension: 0.65/0.70 1 0.65/0.70 ->Bound: 0.65/0.70 2 0.65/0.70 ->Interpretation: 0.65/0.70 0.65/0.70 [active](X) = X + 2 0.65/0.70 [add](X1,X2) = 2.X1 + 2.X2 + 2 0.65/0.70 [and](X1,X2) = 2.X1 + 2.X2 + 2 0.65/0.70 [cons](X1,X2) = X1 + 2 0.65/0.70 [first](X1,X2) = 2.X1 + 2.X2 + 2 0.65/0.70 [from](X) = 2.X + 2 0.65/0.70 [if](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 0.65/0.70 [mark](X) = 2.X 0.65/0.70 [s](X) = 2 0.65/0.70 [0] = 2 0.65/0.70 [fSNonEmpty] = 0 0.65/0.70 [false] = 2 0.65/0.70 [nil] = 2 0.65/0.70 [true] = 2 0.65/0.70 [ACTIVE](X) = X + 2 0.65/0.70 [ADD](X1,X2) = 0 0.65/0.70 [AND](X1,X2) = 0 0.65/0.70 [CONS](X1,X2) = 0 0.65/0.70 [FIRST](X1,X2) = 0 0.65/0.70 [FROM](X) = 0 0.65/0.70 [IF](X1,X2,X3) = 0 0.65/0.70 [MARK](X) = 2.X 0.65/0.70 [S](X) = 0 0.65/0.70 0.65/0.70 Problem 1.8: 0.65/0.70 0.65/0.70 SCC Processor: 0.65/0.70 -> Pairs: 0.65/0.70 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> MARK(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 ACTIVE(from(X:S)) -> MARK(cons(X:S,from(s(X:S)))) 0.65/0.70 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Strongly Connected Components: 0.65/0.70 ->->Cycle: 0.65/0.70 ->->-> Pairs: 0.65/0.70 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> MARK(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 ACTIVE(from(X:S)) -> MARK(cons(X:S,from(s(X:S)))) 0.65/0.70 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 ->->-> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 0.65/0.70 Problem 1.8: 0.65/0.70 0.65/0.70 Reduction Pairs Processor: 0.65/0.70 -> Pairs: 0.65/0.70 ACTIVE(first(s(X:S),cons(Y:S,Z:S))) -> MARK(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 ACTIVE(from(X:S)) -> MARK(cons(X:S,from(s(X:S)))) 0.65/0.70 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 -> Usable rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Interpretation type: 0.65/0.70 Linear 0.65/0.70 ->Coefficients: 0.65/0.70 Natural Numbers 0.65/0.70 ->Dimension: 0.65/0.70 1 0.65/0.70 ->Bound: 0.65/0.70 2 0.65/0.70 ->Interpretation: 0.65/0.70 0.65/0.70 [active](X) = X + 2 0.65/0.70 [add](X1,X2) = X1 + 2.X2 + 2 0.65/0.70 [and](X1,X2) = 2.X1 + 2.X2 + 2 0.65/0.70 [cons](X1,X2) = X1 + 2 0.65/0.70 [first](X1,X2) = 2.X1 + 2.X2 + 2 0.65/0.70 [from](X) = 2.X + 2 0.65/0.70 [if](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 0.65/0.70 [mark](X) = 2.X 0.65/0.70 [s](X) = 2 0.65/0.70 [0] = 2 0.65/0.70 [fSNonEmpty] = 0 0.65/0.70 [false] = 2 0.65/0.70 [nil] = 2 0.65/0.70 [true] = 2 0.65/0.70 [ACTIVE](X) = X + 2 0.65/0.70 [ADD](X1,X2) = 0 0.65/0.70 [AND](X1,X2) = 0 0.65/0.70 [CONS](X1,X2) = 0 0.65/0.70 [FIRST](X1,X2) = 0 0.65/0.70 [FROM](X) = 0 0.65/0.70 [IF](X1,X2,X3) = 0 0.65/0.70 [MARK](X) = 2.X 0.65/0.70 [S](X) = 0 0.65/0.70 0.65/0.70 Problem 1.8: 0.65/0.70 0.65/0.70 SCC Processor: 0.65/0.70 -> Pairs: 0.65/0.70 ACTIVE(from(X:S)) -> MARK(cons(X:S,from(s(X:S)))) 0.65/0.70 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Strongly Connected Components: 0.65/0.70 ->->Cycle: 0.65/0.70 ->->-> Pairs: 0.65/0.70 ACTIVE(from(X:S)) -> MARK(cons(X:S,from(s(X:S)))) 0.65/0.70 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 ->->-> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 0.65/0.70 Problem 1.8: 0.65/0.70 0.65/0.70 Reduction Pairs Processor: 0.65/0.70 -> Pairs: 0.65/0.70 ACTIVE(from(X:S)) -> MARK(cons(X:S,from(s(X:S)))) 0.65/0.70 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 -> Usable rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Interpretation type: 0.65/0.70 Linear 0.65/0.70 ->Coefficients: 0.65/0.70 Natural Numbers 0.65/0.70 ->Dimension: 0.65/0.70 1 0.65/0.70 ->Bound: 0.65/0.70 2 0.65/0.70 ->Interpretation: 0.65/0.70 0.65/0.70 [active](X) = X 0.65/0.70 [add](X1,X2) = 2.X1 + 2.X2 + 1 0.65/0.70 [and](X1,X2) = 2.X1 + 2.X2 + 2 0.65/0.70 [cons](X1,X2) = 0 0.65/0.70 [first](X1,X2) = 2.X1 + X2 + 2 0.65/0.70 [from](X) = 2 0.65/0.70 [if](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 0.65/0.70 [mark](X) = 2.X + 1 0.65/0.70 [s](X) = 1 0.65/0.70 [0] = 2 0.65/0.70 [fSNonEmpty] = 0 0.65/0.70 [false] = 2 0.65/0.70 [nil] = 2 0.65/0.70 [true] = 1 0.65/0.70 [ACTIVE](X) = X + 1 0.65/0.70 [ADD](X1,X2) = 0 0.65/0.70 [AND](X1,X2) = 0 0.65/0.70 [CONS](X1,X2) = 0 0.65/0.70 [FIRST](X1,X2) = 0 0.65/0.70 [FROM](X) = 0 0.65/0.70 [IF](X1,X2,X3) = 0 0.65/0.70 [MARK](X) = 2.X + 2 0.65/0.70 [S](X) = 0 0.65/0.70 0.65/0.70 Problem 1.8: 0.65/0.70 0.65/0.70 SCC Processor: 0.65/0.70 -> Pairs: 0.65/0.70 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(from(X:S)) -> ACTIVE(from(X:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Strongly Connected Components: 0.65/0.70 ->->Cycle: 0.65/0.70 ->->-> Pairs: 0.65/0.70 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 ->->-> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 0.65/0.70 Problem 1.8: 0.65/0.70 0.65/0.70 Reduction Pairs Processor: 0.65/0.70 -> Pairs: 0.65/0.70 ACTIVE(if(ffalse,X:S,Y:S)) -> MARK(Y:S) 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 -> Usable rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Interpretation type: 0.65/0.70 Linear 0.65/0.70 ->Coefficients: 0.65/0.70 Natural Numbers 0.65/0.70 ->Dimension: 0.65/0.70 1 0.65/0.70 ->Bound: 0.65/0.70 2 0.65/0.70 ->Interpretation: 0.65/0.70 0.65/0.70 [active](X) = X 0.65/0.70 [add](X1,X2) = 2.X1 + 2.X2 + 2 0.65/0.70 [and](X1,X2) = 2.X1 + 2.X2 + 2 0.65/0.70 [cons](X1,X2) = 0 0.65/0.70 [first](X1,X2) = X1 + X2 + 2 0.65/0.70 [from](X) = 2 0.65/0.70 [if](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 0.65/0.70 [mark](X) = 2.X + 2 0.65/0.70 [s](X) = 2 0.65/0.70 [0] = 2 0.65/0.70 [fSNonEmpty] = 0 0.65/0.70 [false] = 2 0.65/0.70 [nil] = 1 0.65/0.70 [true] = 2 0.65/0.70 [ACTIVE](X) = X 0.65/0.70 [ADD](X1,X2) = 0 0.65/0.70 [AND](X1,X2) = 0 0.65/0.70 [CONS](X1,X2) = 0 0.65/0.70 [FIRST](X1,X2) = 0 0.65/0.70 [FROM](X) = 0 0.65/0.70 [IF](X1,X2,X3) = 0 0.65/0.70 [MARK](X) = 2.X + 2 0.65/0.70 [S](X) = 0 0.65/0.70 0.65/0.70 Problem 1.8: 0.65/0.70 0.65/0.70 SCC Processor: 0.65/0.70 -> Pairs: 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Strongly Connected Components: 0.65/0.70 ->->Cycle: 0.65/0.70 ->->-> Pairs: 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 ->->-> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 0.65/0.70 Problem 1.8: 0.65/0.70 0.65/0.70 Reduction Pairs Processor: 0.65/0.70 -> Pairs: 0.65/0.70 ACTIVE(if(ttrue,X:S,Y:S)) -> MARK(X:S) 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 -> Usable rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Interpretation type: 0.65/0.70 Linear 0.65/0.70 ->Coefficients: 0.65/0.70 Natural Numbers 0.65/0.70 ->Dimension: 0.65/0.70 1 0.65/0.70 ->Bound: 0.65/0.70 2 0.65/0.70 ->Interpretation: 0.65/0.70 0.65/0.70 [active](X) = X 0.65/0.70 [add](X1,X2) = X1 + 2.X2 + 2 0.65/0.70 [and](X1,X2) = 2.X1 + 2.X2 + 2 0.65/0.70 [cons](X1,X2) = X1 + 1 0.65/0.70 [first](X1,X2) = 2.X1 + 2.X2 + 2 0.65/0.70 [from](X) = 2.X + 2 0.65/0.70 [if](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 0.65/0.70 [mark](X) = 2.X 0.65/0.70 [s](X) = 2 0.65/0.70 [0] = 2 0.65/0.70 [fSNonEmpty] = 0 0.65/0.70 [false] = 0 0.65/0.70 [nil] = 2 0.65/0.70 [true] = 2 0.65/0.70 [ACTIVE](X) = X + 2 0.65/0.70 [ADD](X1,X2) = 0 0.65/0.70 [AND](X1,X2) = 0 0.65/0.70 [CONS](X1,X2) = 0 0.65/0.70 [FIRST](X1,X2) = 0 0.65/0.70 [FROM](X) = 0 0.65/0.70 [IF](X1,X2,X3) = 0 0.65/0.70 [MARK](X) = 2.X + 1 0.65/0.70 [S](X) = 0 0.65/0.70 0.65/0.70 Problem 1.8: 0.65/0.70 0.65/0.70 SCC Processor: 0.65/0.70 -> Pairs: 0.65/0.70 MARK(add(X1:S,X2:S)) -> ACTIVE(add(mark(X1:S),X2:S)) 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> ACTIVE(and(mark(X1:S),X2:S)) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> ACTIVE(first(mark(X1:S),mark(X2:S))) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> ACTIVE(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 -> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.70 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.70 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.70 mark(from(X:S)) -> active(from(X:S)) 0.65/0.70 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.70 mark(s(X:S)) -> active(s(X:S)) 0.65/0.70 mark(0) -> active(0) 0.65/0.70 mark(ffalse) -> active(ffalse) 0.65/0.70 mark(nil) -> active(nil) 0.65/0.70 mark(ttrue) -> active(ttrue) 0.65/0.70 s(active(X:S)) -> s(X:S) 0.65/0.70 s(mark(X:S)) -> s(X:S) 0.65/0.70 ->Strongly Connected Components: 0.65/0.70 ->->Cycle: 0.65/0.70 ->->-> Pairs: 0.65/0.70 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.70 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.70 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.70 ->->-> Rules: 0.65/0.70 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.70 active(add(0,X:S)) -> mark(X:S) 0.65/0.70 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.70 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.70 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.70 active(first(0,X:S)) -> mark(nil) 0.65/0.70 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.70 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.70 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.70 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.70 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.70 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.70 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.70 from(active(X:S)) -> from(X:S) 0.65/0.70 from(mark(X:S)) -> from(X:S) 0.65/0.70 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.70 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.70 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.71 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.71 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.71 mark(from(X:S)) -> active(from(X:S)) 0.65/0.71 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.71 mark(s(X:S)) -> active(s(X:S)) 0.65/0.71 mark(0) -> active(0) 0.65/0.71 mark(ffalse) -> active(ffalse) 0.65/0.71 mark(nil) -> active(nil) 0.65/0.71 mark(ttrue) -> active(ttrue) 0.65/0.71 s(active(X:S)) -> s(X:S) 0.65/0.71 s(mark(X:S)) -> s(X:S) 0.65/0.71 0.65/0.71 Problem 1.8: 0.65/0.71 0.65/0.71 Subterm Processor: 0.65/0.71 -> Pairs: 0.65/0.71 MARK(add(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.71 MARK(and(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.71 MARK(first(X1:S,X2:S)) -> MARK(X1:S) 0.65/0.71 MARK(first(X1:S,X2:S)) -> MARK(X2:S) 0.65/0.71 MARK(if(X1:S,X2:S,X3:S)) -> MARK(X1:S) 0.65/0.71 -> Rules: 0.65/0.71 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.71 active(add(0,X:S)) -> mark(X:S) 0.65/0.71 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.71 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.71 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.71 active(first(0,X:S)) -> mark(nil) 0.65/0.71 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.71 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.71 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.71 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.71 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.71 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.71 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.71 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.71 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.71 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.71 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.71 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.71 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.71 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.71 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.71 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.71 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.71 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.71 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.71 from(active(X:S)) -> from(X:S) 0.65/0.71 from(mark(X:S)) -> from(X:S) 0.65/0.71 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.71 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.71 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.71 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.71 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.71 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.71 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.71 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.71 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.71 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.71 mark(from(X:S)) -> active(from(X:S)) 0.65/0.71 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.71 mark(s(X:S)) -> active(s(X:S)) 0.65/0.71 mark(0) -> active(0) 0.65/0.71 mark(ffalse) -> active(ffalse) 0.65/0.71 mark(nil) -> active(nil) 0.65/0.71 mark(ttrue) -> active(ttrue) 0.65/0.71 s(active(X:S)) -> s(X:S) 0.65/0.71 s(mark(X:S)) -> s(X:S) 0.65/0.71 ->Projection: 0.65/0.71 pi(MARK) = 1 0.65/0.71 0.65/0.71 Problem 1.8: 0.65/0.71 0.65/0.71 SCC Processor: 0.65/0.71 -> Pairs: 0.65/0.71 Empty 0.65/0.71 -> Rules: 0.65/0.71 active(add(s(X:S),Y:S)) -> mark(s(add(X:S,Y:S))) 0.65/0.71 active(add(0,X:S)) -> mark(X:S) 0.65/0.71 active(and(ffalse,Y:S)) -> mark(ffalse) 0.65/0.71 active(and(ttrue,X:S)) -> mark(X:S) 0.65/0.71 active(first(s(X:S),cons(Y:S,Z:S))) -> mark(cons(Y:S,first(X:S,Z:S))) 0.65/0.71 active(first(0,X:S)) -> mark(nil) 0.65/0.71 active(from(X:S)) -> mark(cons(X:S,from(s(X:S)))) 0.65/0.71 active(if(ffalse,X:S,Y:S)) -> mark(Y:S) 0.65/0.71 active(if(ttrue,X:S,Y:S)) -> mark(X:S) 0.65/0.71 add(active(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.71 add(mark(X1:S),X2:S) -> add(X1:S,X2:S) 0.65/0.71 add(X1:S,active(X2:S)) -> add(X1:S,X2:S) 0.65/0.71 add(X1:S,mark(X2:S)) -> add(X1:S,X2:S) 0.65/0.71 and(active(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.71 and(mark(X1:S),X2:S) -> and(X1:S,X2:S) 0.65/0.71 and(X1:S,active(X2:S)) -> and(X1:S,X2:S) 0.65/0.71 and(X1:S,mark(X2:S)) -> and(X1:S,X2:S) 0.65/0.71 cons(active(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.71 cons(mark(X1:S),X2:S) -> cons(X1:S,X2:S) 0.65/0.71 cons(X1:S,active(X2:S)) -> cons(X1:S,X2:S) 0.65/0.71 cons(X1:S,mark(X2:S)) -> cons(X1:S,X2:S) 0.65/0.71 first(active(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.71 first(mark(X1:S),X2:S) -> first(X1:S,X2:S) 0.65/0.71 first(X1:S,active(X2:S)) -> first(X1:S,X2:S) 0.65/0.71 first(X1:S,mark(X2:S)) -> first(X1:S,X2:S) 0.65/0.71 from(active(X:S)) -> from(X:S) 0.65/0.71 from(mark(X:S)) -> from(X:S) 0.65/0.71 if(active(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.71 if(mark(X1:S),X2:S,X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.71 if(X1:S,active(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.71 if(X1:S,mark(X2:S),X3:S) -> if(X1:S,X2:S,X3:S) 0.65/0.71 if(X1:S,X2:S,active(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.71 if(X1:S,X2:S,mark(X3:S)) -> if(X1:S,X2:S,X3:S) 0.65/0.71 mark(add(X1:S,X2:S)) -> active(add(mark(X1:S),X2:S)) 0.65/0.71 mark(and(X1:S,X2:S)) -> active(and(mark(X1:S),X2:S)) 0.65/0.71 mark(cons(X1:S,X2:S)) -> active(cons(X1:S,X2:S)) 0.65/0.71 mark(first(X1:S,X2:S)) -> active(first(mark(X1:S),mark(X2:S))) 0.65/0.71 mark(from(X:S)) -> active(from(X:S)) 0.65/0.71 mark(if(X1:S,X2:S,X3:S)) -> active(if(mark(X1:S),X2:S,X3:S)) 0.65/0.71 mark(s(X:S)) -> active(s(X:S)) 0.65/0.71 mark(0) -> active(0) 0.65/0.71 mark(ffalse) -> active(ffalse) 0.65/0.71 mark(nil) -> active(nil) 0.65/0.71 mark(ttrue) -> active(ttrue) 0.65/0.71 s(active(X:S)) -> s(X:S) 0.65/0.71 s(mark(X:S)) -> s(X:S) 0.65/0.71 ->Strongly Connected Components: 0.65/0.71 There is no strongly connected component 0.65/0.71 0.65/0.71 The problem is finite. 0.65/0.71 EOF