5.00/5.14 YES 5.00/5.14 5.00/5.14 Problem 1: 5.00/5.14 5.00/5.14 (VAR X Y) 5.00/5.14 (STRATEGY CONTEXTSENSITIVE 5.00/5.14 (add 1 2) 5.00/5.14 (fact 1) 5.00/5.14 (if 1) 5.00/5.14 (p 1) 5.00/5.14 (prod 1 2) 5.00/5.14 (zero 1) 5.00/5.14 (0) 5.00/5.14 (false) 5.00/5.14 (s 1) 5.00/5.14 (true) 5.00/5.14 ) 5.00/5.14 (RULES 5.00/5.14 add(0,X) -> X 5.00/5.14 add(s(X),Y) -> s(add(X,Y)) 5.00/5.14 fact(X) -> if(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 if(false,X,Y) -> Y 5.00/5.14 if(true,X,Y) -> X 5.00/5.14 p(s(X)) -> X 5.00/5.14 prod(0,X) -> 0 5.00/5.14 prod(s(X),Y) -> add(Y,prod(X,Y)) 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 ) 5.00/5.14 5.00/5.14 Problem 1: 5.00/5.14 5.00/5.14 Innermost Equivalent Processor: 5.00/5.14 -> Rules: 5.00/5.14 add(0,X) -> X 5.00/5.14 add(s(X),Y) -> s(add(X,Y)) 5.00/5.14 fact(X) -> if(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 if(false,X,Y) -> Y 5.00/5.14 if(true,X,Y) -> X 5.00/5.14 p(s(X)) -> X 5.00/5.14 prod(0,X) -> 0 5.00/5.14 prod(s(X),Y) -> add(Y,prod(X,Y)) 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 -> The context-sensitive term rewriting system is an orthogonal system. Therefore, innermost cs-termination implies cs-termination. 5.00/5.14 5.00/5.14 5.00/5.14 Problem 1: 5.00/5.14 5.00/5.14 Dependency Pairs Processor: 5.00/5.14 -> Pairs: 5.00/5.14 ADD(s(X),Y) -> ADD(X,Y) 5.00/5.14 FACT(X) -> IF(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 FACT(X) -> ZERO(X) 5.00/5.14 IF(false,X,Y) -> Y 5.00/5.14 IF(true,X,Y) -> X 5.00/5.14 PROD(s(X),Y) -> ADD(Y,prod(X,Y)) 5.00/5.14 PROD(s(X),Y) -> PROD(X,Y) 5.00/5.14 -> Rules: 5.00/5.14 add(0,X) -> X 5.00/5.14 add(s(X),Y) -> s(add(X,Y)) 5.00/5.14 fact(X) -> if(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 if(false,X,Y) -> Y 5.00/5.14 if(true,X,Y) -> X 5.00/5.14 p(s(X)) -> X 5.00/5.14 prod(0,X) -> 0 5.00/5.14 prod(s(X),Y) -> add(Y,prod(X,Y)) 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 -> Unhiding Rules: 5.00/5.14 prod(X,fact(p(X))) -> FACT(p(X)) 5.00/5.14 prod(X,fact(p(X))) -> P(X) 5.00/5.14 prod(X,fact(p(X))) -> PROD(X,fact(p(X))) 5.00/5.14 5.00/5.14 Problem 1: 5.00/5.14 5.00/5.14 SCC Processor: 5.00/5.14 -> Pairs: 5.00/5.14 ADD(s(X),Y) -> ADD(X,Y) 5.00/5.14 FACT(X) -> IF(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 FACT(X) -> ZERO(X) 5.00/5.14 IF(false,X,Y) -> Y 5.00/5.14 IF(true,X,Y) -> X 5.00/5.14 PROD(s(X),Y) -> ADD(Y,prod(X,Y)) 5.00/5.14 PROD(s(X),Y) -> PROD(X,Y) 5.00/5.14 -> Rules: 5.00/5.14 add(0,X) -> X 5.00/5.14 add(s(X),Y) -> s(add(X,Y)) 5.00/5.14 fact(X) -> if(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 if(false,X,Y) -> Y 5.00/5.14 if(true,X,Y) -> X 5.00/5.14 p(s(X)) -> X 5.00/5.14 prod(0,X) -> 0 5.00/5.14 prod(s(X),Y) -> add(Y,prod(X,Y)) 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 -> Unhiding rules: 5.00/5.14 prod(X,fact(p(X))) -> FACT(p(X)) 5.00/5.14 prod(X,fact(p(X))) -> P(X) 5.00/5.14 prod(X,fact(p(X))) -> PROD(X,fact(p(X))) 5.00/5.14 ->Strongly Connected Components: 5.00/5.14 ->->Cycle: 5.00/5.14 ->->-> Pairs: 5.00/5.14 ADD(s(X),Y) -> ADD(X,Y) 5.00/5.14 ->->-> Rules: 5.00/5.14 add(0,X) -> X 5.00/5.14 add(s(X),Y) -> s(add(X,Y)) 5.00/5.14 fact(X) -> if(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 if(false,X,Y) -> Y 5.00/5.14 if(true,X,Y) -> X 5.00/5.14 p(s(X)) -> X 5.00/5.14 prod(0,X) -> 0 5.00/5.14 prod(s(X),Y) -> add(Y,prod(X,Y)) 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 ->->-> Unhiding rules: 5.00/5.14 Empty 5.00/5.14 ->->Cycle: 5.00/5.14 ->->-> Pairs: 5.00/5.14 PROD(s(X),Y) -> PROD(X,Y) 5.00/5.14 ->->-> Rules: 5.00/5.14 add(0,X) -> X 5.00/5.14 add(s(X),Y) -> s(add(X,Y)) 5.00/5.14 fact(X) -> if(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 if(false,X,Y) -> Y 5.00/5.14 if(true,X,Y) -> X 5.00/5.14 p(s(X)) -> X 5.00/5.14 prod(0,X) -> 0 5.00/5.14 prod(s(X),Y) -> add(Y,prod(X,Y)) 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 ->->-> Unhiding rules: 5.00/5.14 Empty 5.00/5.14 ->->Cycle: 5.00/5.14 ->->-> Pairs: 5.00/5.14 FACT(X) -> IF(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 IF(false,X,Y) -> Y 5.00/5.14 IF(true,X,Y) -> X 5.00/5.14 ->->-> Rules: 5.00/5.14 add(0,X) -> X 5.00/5.14 add(s(X),Y) -> s(add(X,Y)) 5.00/5.14 fact(X) -> if(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 if(false,X,Y) -> Y 5.00/5.14 if(true,X,Y) -> X 5.00/5.14 p(s(X)) -> X 5.00/5.14 prod(0,X) -> 0 5.00/5.14 prod(s(X),Y) -> add(Y,prod(X,Y)) 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 ->->-> Unhiding rules: 5.00/5.14 prod(X,fact(p(X))) -> FACT(p(X)) 5.00/5.14 5.00/5.14 5.00/5.14 The problem is decomposed in 3 subproblems. 5.00/5.14 5.00/5.14 Problem 1.1: 5.00/5.14 5.00/5.14 SubNColl Processor: 5.00/5.14 -> Pairs: 5.00/5.14 ADD(s(X),Y) -> ADD(X,Y) 5.00/5.14 -> Rules: 5.00/5.14 add(0,X) -> X 5.00/5.14 add(s(X),Y) -> s(add(X,Y)) 5.00/5.14 fact(X) -> if(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 if(false,X,Y) -> Y 5.00/5.14 if(true,X,Y) -> X 5.00/5.14 p(s(X)) -> X 5.00/5.14 prod(0,X) -> 0 5.00/5.14 prod(s(X),Y) -> add(Y,prod(X,Y)) 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 -> Unhiding rules: 5.00/5.14 Empty 5.00/5.14 ->Projection: 5.00/5.14 pi(ADD) = 1 5.00/5.14 5.00/5.14 Problem 1.1: 5.00/5.14 5.00/5.14 Basic Processor: 5.00/5.14 -> Pairs: 5.00/5.14 Empty 5.00/5.14 -> Rules: 5.00/5.14 add(0,X) -> X 5.00/5.14 add(s(X),Y) -> s(add(X,Y)) 5.00/5.14 fact(X) -> if(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 if(false,X,Y) -> Y 5.00/5.14 if(true,X,Y) -> X 5.00/5.14 p(s(X)) -> X 5.00/5.14 prod(0,X) -> 0 5.00/5.14 prod(s(X),Y) -> add(Y,prod(X,Y)) 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 -> Unhiding rules: 5.00/5.14 Empty 5.00/5.14 -> Result: 5.00/5.14 Set P is empty 5.00/5.14 5.00/5.14 The problem is finite. 5.00/5.14 5.00/5.14 Problem 1.2: 5.00/5.14 5.00/5.14 SubNColl Processor: 5.00/5.14 -> Pairs: 5.00/5.14 PROD(s(X),Y) -> PROD(X,Y) 5.00/5.14 -> Rules: 5.00/5.14 add(0,X) -> X 5.00/5.14 add(s(X),Y) -> s(add(X,Y)) 5.00/5.14 fact(X) -> if(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 if(false,X,Y) -> Y 5.00/5.14 if(true,X,Y) -> X 5.00/5.14 p(s(X)) -> X 5.00/5.14 prod(0,X) -> 0 5.00/5.14 prod(s(X),Y) -> add(Y,prod(X,Y)) 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 -> Unhiding rules: 5.00/5.14 Empty 5.00/5.14 ->Projection: 5.00/5.14 pi(PROD) = 1 5.00/5.14 5.00/5.14 Problem 1.2: 5.00/5.14 5.00/5.14 Basic Processor: 5.00/5.14 -> Pairs: 5.00/5.14 Empty 5.00/5.14 -> Rules: 5.00/5.14 add(0,X) -> X 5.00/5.14 add(s(X),Y) -> s(add(X,Y)) 5.00/5.14 fact(X) -> if(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 if(false,X,Y) -> Y 5.00/5.14 if(true,X,Y) -> X 5.00/5.14 p(s(X)) -> X 5.00/5.14 prod(0,X) -> 0 5.00/5.14 prod(s(X),Y) -> add(Y,prod(X,Y)) 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 -> Unhiding rules: 5.00/5.14 Empty 5.00/5.14 -> Result: 5.00/5.14 Set P is empty 5.00/5.14 5.00/5.14 The problem is finite. 5.00/5.14 5.00/5.14 Problem 1.3: 5.00/5.14 5.00/5.14 Reduction Pairs Processor: 5.00/5.14 -> Pairs: 5.00/5.14 FACT(X) -> IF(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 IF(false,X,Y) -> Y 5.00/5.14 IF(true,X,Y) -> X 5.00/5.14 -> Rules: 5.00/5.14 add(0,X) -> X 5.00/5.14 add(s(X),Y) -> s(add(X,Y)) 5.00/5.14 fact(X) -> if(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 if(false,X,Y) -> Y 5.00/5.14 if(true,X,Y) -> X 5.00/5.14 p(s(X)) -> X 5.00/5.14 prod(0,X) -> 0 5.00/5.14 prod(s(X),Y) -> add(Y,prod(X,Y)) 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 -> Unhiding rules: 5.00/5.14 prod(X,fact(p(X))) -> FACT(p(X)) 5.00/5.14 -> Usable rules: 5.00/5.14 p(s(X)) -> X 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 ->Interpretation type: 5.00/5.14 Simple mixed 5.00/5.14 ->Coefficients: 5.00/5.14 All rationals 5.00/5.14 ->Dimension: 5.00/5.14 1 5.00/5.14 ->Bound: 5.00/5.14 2 5.00/5.14 ->Interpretation: 5.00/5.14 5.00/5.14 [fact](X) = 2.X 5.00/5.14 [p](X) = 1/2.X 5.00/5.14 [prod](X1,X2) = 1/2.X1.X2 + 2 5.00/5.14 [zero](X) = 1/2.X.X 5.00/5.14 [0] = 2 5.00/5.14 [false] = 1/2 5.00/5.14 [s](X) = 2.X + 1 5.00/5.14 [true] = 2 5.00/5.14 [FACT](X) = 2.X.X + 2 5.00/5.14 [IF](X1,X2,X3) = 1/2.X1.X2 + 1/2.X1 + X3 5.00/5.14 5.00/5.14 Problem 1.3: 5.00/5.14 5.00/5.14 SCC Processor: 5.00/5.14 -> Pairs: 5.00/5.14 FACT(X) -> IF(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 IF(true,X,Y) -> X 5.00/5.14 -> Rules: 5.00/5.14 add(0,X) -> X 5.00/5.14 add(s(X),Y) -> s(add(X,Y)) 5.00/5.14 fact(X) -> if(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 if(false,X,Y) -> Y 5.00/5.14 if(true,X,Y) -> X 5.00/5.14 p(s(X)) -> X 5.00/5.14 prod(0,X) -> 0 5.00/5.14 prod(s(X),Y) -> add(Y,prod(X,Y)) 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 -> Unhiding rules: 5.00/5.14 prod(X,fact(p(X))) -> FACT(p(X)) 5.00/5.14 ->Strongly Connected Components: 5.00/5.14 ->->Cycle: 5.00/5.14 ->->-> Pairs: 5.00/5.14 FACT(X) -> IF(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 IF(true,X,Y) -> X 5.00/5.14 ->->-> Rules: 5.00/5.14 add(0,X) -> X 5.00/5.14 add(s(X),Y) -> s(add(X,Y)) 5.00/5.14 fact(X) -> if(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 if(false,X,Y) -> Y 5.00/5.14 if(true,X,Y) -> X 5.00/5.14 p(s(X)) -> X 5.00/5.14 prod(0,X) -> 0 5.00/5.14 prod(s(X),Y) -> add(Y,prod(X,Y)) 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 ->->-> Unhiding rules: 5.00/5.14 prod(X,fact(p(X))) -> FACT(p(X)) 5.00/5.14 5.00/5.14 Problem 1.3: 5.00/5.14 5.00/5.14 Reduction Pairs Processor: 5.00/5.14 -> Pairs: 5.00/5.14 FACT(X) -> IF(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 IF(true,X,Y) -> X 5.00/5.14 -> Rules: 5.00/5.14 add(0,X) -> X 5.00/5.14 add(s(X),Y) -> s(add(X,Y)) 5.00/5.14 fact(X) -> if(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 if(false,X,Y) -> Y 5.00/5.14 if(true,X,Y) -> X 5.00/5.14 p(s(X)) -> X 5.00/5.14 prod(0,X) -> 0 5.00/5.14 prod(s(X),Y) -> add(Y,prod(X,Y)) 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 -> Unhiding rules: 5.00/5.14 prod(X,fact(p(X))) -> FACT(p(X)) 5.00/5.14 -> Usable rules: 5.00/5.14 p(s(X)) -> X 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 ->Interpretation type: 5.00/5.14 Linear 5.00/5.14 ->Coefficients: 5.00/5.14 Natural Numbers 5.00/5.14 ->Dimension: 5.00/5.14 1 5.00/5.14 ->Bound: 5.00/5.14 2 5.00/5.14 ->Interpretation: 5.00/5.14 5.00/5.14 [fact](X) = 1 5.00/5.14 [p](X) = 2.X + 1 5.00/5.14 [prod](X1,X2) = 2.X1 + 2 5.00/5.14 [zero](X) = 2.X + 1 5.00/5.14 [0] = 0 5.00/5.14 [false] = 1 5.00/5.14 [s](X) = 2.X 5.00/5.14 [true] = 1 5.00/5.14 [FACT](X) = 2 5.00/5.14 [IF](X1,X2,X3) = X2 + 1 5.00/5.14 5.00/5.14 Problem 1.3: 5.00/5.14 5.00/5.14 Basic Processor: 5.00/5.14 -> Pairs: 5.00/5.14 IF(true,X,Y) -> X 5.00/5.14 -> Rules: 5.00/5.14 add(0,X) -> X 5.00/5.14 add(s(X),Y) -> s(add(X,Y)) 5.00/5.14 fact(X) -> if(zero(X),s(0),prod(X,fact(p(X)))) 5.00/5.14 if(false,X,Y) -> Y 5.00/5.14 if(true,X,Y) -> X 5.00/5.14 p(s(X)) -> X 5.00/5.14 prod(0,X) -> 0 5.00/5.14 prod(s(X),Y) -> add(Y,prod(X,Y)) 5.00/5.14 zero(0) -> true 5.00/5.14 zero(s(X)) -> false 5.00/5.14 -> Unhiding rules: 5.00/5.14 prod(X,fact(p(X))) -> FACT(p(X)) 5.00/5.14 -> Result: 5.00/5.14 All pairs P are from Px1 5.00/5.14 5.00/5.14 The problem is finite. 5.00/5.15 EOF