YES Problem: min(x,0()) -> 0() min(0(),y) -> 0() min(s(x),s(y)) -> s(min(x,y)) max(x,0()) -> x max(0(),y) -> y max(s(x),s(y)) -> s(max(x,y)) -(x,0()) -> x -(s(x),s(y)) -> -(x,y) gcd(s(x),s(y),z) -> gcd(-(max(x,y),min(x,y)),s(min(x,y)),z) gcd(x,s(y),s(z)) -> gcd(x,-(max(y,z),min(y,z)),s(min(y,z))) gcd(s(x),y,s(z)) -> gcd(-(max(x,z),min(x,z)),y,s(min(x,z))) gcd(x,0(),0()) -> x gcd(0(),y,0()) -> y gcd(0(),0(),z) -> z Proof: DP Processor: DPs: min#(s(x),s(y)) -> min#(x,y) max#(s(x),s(y)) -> max#(x,y) -#(s(x),s(y)) -> -#(x,y) gcd#(s(x),s(y),z) -> min#(x,y) gcd#(s(x),s(y),z) -> max#(x,y) gcd#(s(x),s(y),z) -> -#(max(x,y),min(x,y)) gcd#(s(x),s(y),z) -> gcd#(-(max(x,y),min(x,y)),s(min(x,y)),z) gcd#(x,s(y),s(z)) -> min#(y,z) gcd#(x,s(y),s(z)) -> max#(y,z) gcd#(x,s(y),s(z)) -> -#(max(y,z),min(y,z)) gcd#(x,s(y),s(z)) -> gcd#(x,-(max(y,z),min(y,z)),s(min(y,z))) gcd#(s(x),y,s(z)) -> min#(x,z) gcd#(s(x),y,s(z)) -> max#(x,z) gcd#(s(x),y,s(z)) -> -#(max(x,z),min(x,z)) gcd#(s(x),y,s(z)) -> gcd#(-(max(x,z),min(x,z)),y,s(min(x,z))) TRS: min(x,0()) -> 0() min(0(),y) -> 0() min(s(x),s(y)) -> s(min(x,y)) max(x,0()) -> x max(0(),y) -> y max(s(x),s(y)) -> s(max(x,y)) -(x,0()) -> x -(s(x),s(y)) -> -(x,y) gcd(s(x),s(y),z) -> gcd(-(max(x,y),min(x,y)),s(min(x,y)),z) gcd(x,s(y),s(z)) -> gcd(x,-(max(y,z),min(y,z)),s(min(y,z))) gcd(s(x),y,s(z)) -> gcd(-(max(x,z),min(x,z)),y,s(min(x,z))) gcd(x,0(),0()) -> x gcd(0(),y,0()) -> y gcd(0(),0(),z) -> z Usable Rule Processor: DPs: min#(s(x),s(y)) -> min#(x,y) max#(s(x),s(y)) -> max#(x,y) -#(s(x),s(y)) -> -#(x,y) gcd#(s(x),s(y),z) -> min#(x,y) gcd#(s(x),s(y),z) -> max#(x,y) gcd#(s(x),s(y),z) -> -#(max(x,y),min(x,y)) gcd#(s(x),s(y),z) -> gcd#(-(max(x,y),min(x,y)),s(min(x,y)),z) gcd#(x,s(y),s(z)) -> min#(y,z) gcd#(x,s(y),s(z)) -> max#(y,z) gcd#(x,s(y),s(z)) -> -#(max(y,z),min(y,z)) gcd#(x,s(y),s(z)) -> gcd#(x,-(max(y,z),min(y,z)),s(min(y,z))) gcd#(s(x),y,s(z)) -> min#(x,z) gcd#(s(x),y,s(z)) -> max#(x,z) gcd#(s(x),y,s(z)) -> -#(max(x,z),min(x,z)) gcd#(s(x),y,s(z)) -> gcd#(-(max(x,z),min(x,z)),y,s(min(x,z))) TRS: min(x,0()) -> 0() min(0(),y) -> 0() min(s(x),s(y)) -> s(min(x,y)) max(x,0()) -> x max(0(),y) -> y max(s(x),s(y)) -> s(max(x,y)) -(x,0()) -> x -(s(x),s(y)) -> -(x,y) Matrix Interpretation Processor: dim=1 usable rules: min(x,0()) -> 0() min(0(),y) -> 0() min(s(x),s(y)) -> s(min(x,y)) max(x,0()) -> x max(0(),y) -> y max(s(x),s(y)) -> s(max(x,y)) -(x,0()) -> x -(s(x),s(y)) -> -(x,y) interpretation: [gcd#](x0, x1, x2) = 1/2x0 + 1/2x1 + 1/2x2 + 7/2, [-#](x0, x1) = 2x1 + 1, [max#](x0, x1) = x0 + 2, [min#](x0, x1) = x0 + 1/2x1, [-](x0, x1) = x0, [max](x0, x1) = x0 + x1, [s](x0) = 2x0 + 1, [min](x0, x1) = 1/2x0 + 1/2x1, [0] = 0 orientation: min#(s(x),s(y)) = 2x + y + 3/2 >= x + 1/2y = min#(x,y) max#(s(x),s(y)) = 2x + 3 >= x + 2 = max#(x,y) -#(s(x),s(y)) = 4y + 3 >= 2y + 1 = -#(x,y) gcd#(s(x),s(y),z) = x + y + 1/2z + 9/2 >= x + 1/2y = min#(x,y) gcd#(s(x),s(y),z) = x + y + 1/2z + 9/2 >= x + 2 = max#(x,y) gcd#(s(x),s(y),z) = x + y + 1/2z + 9/2 >= x + y + 1 = -#(max(x,y),min(x,y)) gcd#(s(x),s(y),z) = x + y + 1/2z + 9/2 >= x + y + 1/2z + 4 = gcd#(-(max(x,y),min(x,y)),s(min(x,y)),z) gcd#(x,s(y),s(z)) = 1/2x + y + z + 9/2 >= y + 1/2z = min#(y,z) gcd#(x,s(y),s(z)) = 1/2x + y + z + 9/2 >= y + 2 = max#(y,z) gcd#(x,s(y),s(z)) = 1/2x + y + z + 9/2 >= y + z + 1 = -#(max(y,z),min(y,z)) gcd#(x,s(y),s(z)) = 1/2x + y + z + 9/2 >= 1/2x + y + z + 4 = gcd#(x,-(max(y,z),min(y,z)),s(min(y,z))) gcd#(s(x),y,s(z)) = x + 1/2y + z + 9/2 >= x + 1/2z = min#(x,z) gcd#(s(x),y,s(z)) = x + 1/2y + z + 9/2 >= x + 2 = max#(x,z) gcd#(s(x),y,s(z)) = x + 1/2y + z + 9/2 >= x + z + 1 = -#(max(x,z),min(x,z)) gcd#(s(x),y,s(z)) = x + 1/2y + z + 9/2 >= x + 1/2y + z + 4 = gcd#(-(max(x,z),min(x,z)),y,s(min(x,z))) min(x,0()) = 1/2x >= 0 = 0() min(0(),y) = 1/2y >= 0 = 0() min(s(x),s(y)) = x + y + 1 >= x + y + 1 = s(min(x,y)) max(x,0()) = x >= x = x max(0(),y) = y >= y = y max(s(x),s(y)) = 2x + 2y + 2 >= 2x + 2y + 1 = s(max(x,y)) -(x,0()) = x >= x = x -(s(x),s(y)) = 2x + 1 >= x = -(x,y) problem: DPs: TRS: min(x,0()) -> 0() min(0(),y) -> 0() min(s(x),s(y)) -> s(min(x,y)) max(x,0()) -> x max(0(),y) -> y max(s(x),s(y)) -> s(max(x,y)) -(x,0()) -> x -(s(x),s(y)) -> -(x,y) Qed