YES Problem: gcd(x,0()) -> x gcd(0(),y) -> y gcd(s(x),s(y)) -> if(<(x,y),gcd(s(x),-(y,x)),gcd(-(x,y),s(y))) Proof: DP Processor: DPs: gcd#(s(x),s(y)) -> gcd#(-(x,y),s(y)) gcd#(s(x),s(y)) -> gcd#(s(x),-(y,x)) TRS: gcd(x,0()) -> x gcd(0(),y) -> y gcd(s(x),s(y)) -> if(<(x,y),gcd(s(x),-(y,x)),gcd(-(x,y),s(y))) Usable Rule Processor: DPs: gcd#(s(x),s(y)) -> gcd#(-(x,y),s(y)) gcd#(s(x),s(y)) -> gcd#(s(x),-(y,x)) TRS: f7(x,y) -> x f7(x,y) -> y Restore Modifier: DPs: gcd#(s(x),s(y)) -> gcd#(-(x,y),s(y)) gcd#(s(x),s(y)) -> gcd#(s(x),-(y,x)) TRS: gcd(x,0()) -> x gcd(0(),y) -> y gcd(s(x),s(y)) -> if(<(x,y),gcd(s(x),-(y,x)),gcd(-(x,y),s(y))) SCC Processor: #sccs: 1 #rules: 2 #arcs: 4/4 DPs: gcd#(s(x),s(y)) -> gcd#(-(x,y),s(y)) gcd#(s(x),s(y)) -> gcd#(s(x),-(y,x)) TRS: gcd(x,0()) -> x gcd(0(),y) -> y gcd(s(x),s(y)) -> if(<(x,y),gcd(s(x),-(y,x)),gcd(-(x,y),s(y))) Matrix Interpretation Processor: dimension: 1 interpretation: [gcd#](x0, x1) = x1, [if](x0, x1, x2) = 1, [-](x0, x1) = 0, [<](x0, x1) = 0, [s](x0) = x0 + 1, [gcd](x0, x1) = x0 + x1 + 1, [0] = 0 orientation: gcd#(s(x),s(y)) = y + 1 >= y + 1 = gcd#(-(x,y),s(y)) gcd#(s(x),s(y)) = y + 1 >= 0 = gcd#(s(x),-(y,x)) gcd(x,0()) = x + 1 >= x = x gcd(0(),y) = y + 1 >= y = y gcd(s(x),s(y)) = x + y + 3 >= 1 = if(<(x,y),gcd(s(x),-(y,x)),gcd(-(x,y),s(y))) problem: DPs: gcd#(s(x),s(y)) -> gcd#(-(x,y),s(y)) TRS: gcd(x,0()) -> x gcd(0(),y) -> y gcd(s(x),s(y)) -> if(<(x,y),gcd(s(x),-(y,x)),gcd(-(x,y),s(y))) Matrix Interpretation Processor: dimension: 1 interpretation: [gcd#](x0, x1) = x0, [if](x0, x1, x2) = x0 + 1, [-](x0, x1) = 0, [<](x0, x1) = 1, [s](x0) = x0 + 1, [gcd](x0, x1) = x0 + x1, [0] = 0 orientation: gcd#(s(x),s(y)) = x + 1 >= 0 = gcd#(-(x,y),s(y)) gcd(x,0()) = x >= x = x gcd(0(),y) = y >= y = y gcd(s(x),s(y)) = x + y + 2 >= 2 = if(<(x,y),gcd(s(x),-(y,x)),gcd(-(x,y),s(y))) problem: DPs: TRS: gcd(x,0()) -> x gcd(0(),y) -> y gcd(s(x),s(y)) -> if(<(x,y),gcd(s(x),-(y,x)),gcd(-(x,y),s(y))) Qed