MAYBE Problem: minus(s(x),y) -> if(gt(s(x),y),x,y) if(true(),x,y) -> s(minus(x,y)) if(false(),x,y) -> 0() gcd(x,y) -> if1(ge(x,y),x,y) if1(true(),x,y) -> if2(gt(y,0()),x,y) if1(false(),x,y) -> gcd(y,x) if2(true(),x,y) -> gcd(minus(x,y),y) if2(false(),x,y) -> x gt(0(),y) -> false() gt(s(x),0()) -> true() gt(s(x),s(y)) -> gt(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) Proof: DP Processor: DPs: minus#(s(x),y) -> gt#(s(x),y) minus#(s(x),y) -> if#(gt(s(x),y),x,y) if#(true(),x,y) -> minus#(x,y) gcd#(x,y) -> ge#(x,y) gcd#(x,y) -> if1#(ge(x,y),x,y) if1#(true(),x,y) -> gt#(y,0()) if1#(true(),x,y) -> if2#(gt(y,0()),x,y) if1#(false(),x,y) -> gcd#(y,x) if2#(true(),x,y) -> minus#(x,y) if2#(true(),x,y) -> gcd#(minus(x,y),y) gt#(s(x),s(y)) -> gt#(x,y) ge#(s(x),s(y)) -> ge#(x,y) TRS: minus(s(x),y) -> if(gt(s(x),y),x,y) if(true(),x,y) -> s(minus(x,y)) if(false(),x,y) -> 0() gcd(x,y) -> if1(ge(x,y),x,y) if1(true(),x,y) -> if2(gt(y,0()),x,y) if1(false(),x,y) -> gcd(y,x) if2(true(),x,y) -> gcd(minus(x,y),y) if2(false(),x,y) -> x gt(0(),y) -> false() gt(s(x),0()) -> true() gt(s(x),s(y)) -> gt(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) TDG Processor: DPs: minus#(s(x),y) -> gt#(s(x),y) minus#(s(x),y) -> if#(gt(s(x),y),x,y) if#(true(),x,y) -> minus#(x,y) gcd#(x,y) -> ge#(x,y) gcd#(x,y) -> if1#(ge(x,y),x,y) if1#(true(),x,y) -> gt#(y,0()) if1#(true(),x,y) -> if2#(gt(y,0()),x,y) if1#(false(),x,y) -> gcd#(y,x) if2#(true(),x,y) -> minus#(x,y) if2#(true(),x,y) -> gcd#(minus(x,y),y) gt#(s(x),s(y)) -> gt#(x,y) ge#(s(x),s(y)) -> ge#(x,y) TRS: minus(s(x),y) -> if(gt(s(x),y),x,y) if(true(),x,y) -> s(minus(x,y)) if(false(),x,y) -> 0() gcd(x,y) -> if1(ge(x,y),x,y) if1(true(),x,y) -> if2(gt(y,0()),x,y) if1(false(),x,y) -> gcd(y,x) if2(true(),x,y) -> gcd(minus(x,y),y) if2(false(),x,y) -> x gt(0(),y) -> false() gt(s(x),0()) -> true() gt(s(x),s(y)) -> gt(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) graph: if2#(true(),x,y) -> gcd#(minus(x,y),y) -> gcd#(x,y) -> if1#(ge(x,y),x,y) if2#(true(),x,y) -> gcd#(minus(x,y),y) -> gcd#(x,y) -> ge#(x,y) if2#(true(),x,y) -> minus#(x,y) -> minus#(s(x),y) -> if#(gt(s(x),y),x,y) if2#(true(),x,y) -> minus#(x,y) -> minus#(s(x),y) -> gt#(s(x),y) if1#(false(),x,y) -> gcd#(y,x) -> gcd#(x,y) -> if1#(ge(x,y),x,y) if1#(false(),x,y) -> gcd#(y,x) -> gcd#(x,y) -> ge#(x,y) if1#(true(),x,y) -> if2#(gt(y,0()),x,y) -> if2#(true(),x,y) -> gcd#(minus(x,y),y) if1#(true(),x,y) -> if2#(gt(y,0()),x,y) -> if2#(true(),x,y) -> minus#(x,y) if1#(true(),x,y) -> gt#(y,0()) -> gt#(s(x),s(y)) -> gt#(x,y) ge#(s(x),s(y)) -> ge#(x,y) -> ge#(s(x),s(y)) -> ge#(x,y) gcd#(x,y) -> if1#(ge(x,y),x,y) -> if1#(false(),x,y) -> gcd#(y,x) gcd#(x,y) -> if1#(ge(x,y),x,y) -> if1#(true(),x,y) -> if2#(gt(y,0()),x,y) gcd#(x,y) -> if1#(ge(x,y),x,y) -> if1#(true(),x,y) -> gt#(y,0()) gcd#(x,y) -> ge#(x,y) -> ge#(s(x),s(y)) -> ge#(x,y) if#(true(),x,y) -> minus#(x,y) -> minus#(s(x),y) -> if#(gt(s(x),y),x,y) if#(true(),x,y) -> minus#(x,y) -> minus#(s(x),y) -> gt#(s(x),y) gt#(s(x),s(y)) -> gt#(x,y) -> gt#(s(x),s(y)) -> gt#(x,y) minus#(s(x),y) -> if#(gt(s(x),y),x,y) -> if#(true(),x,y) -> minus#(x,y) minus#(s(x),y) -> gt#(s(x),y) -> gt#(s(x),s(y)) -> gt#(x,y) EDG Processor: DPs: minus#(s(x),y) -> gt#(s(x),y) minus#(s(x),y) -> if#(gt(s(x),y),x,y) if#(true(),x,y) -> minus#(x,y) gcd#(x,y) -> ge#(x,y) gcd#(x,y) -> if1#(ge(x,y),x,y) if1#(true(),x,y) -> gt#(y,0()) if1#(true(),x,y) -> if2#(gt(y,0()),x,y) if1#(false(),x,y) -> gcd#(y,x) if2#(true(),x,y) -> minus#(x,y) if2#(true(),x,y) -> gcd#(minus(x,y),y) gt#(s(x),s(y)) -> gt#(x,y) ge#(s(x),s(y)) -> ge#(x,y) TRS: minus(s(x),y) -> if(gt(s(x),y),x,y) if(true(),x,y) -> s(minus(x,y)) if(false(),x,y) -> 0() gcd(x,y) -> if1(ge(x,y),x,y) if1(true(),x,y) -> if2(gt(y,0()),x,y) if1(false(),x,y) -> gcd(y,x) if2(true(),x,y) -> gcd(minus(x,y),y) if2(false(),x,y) -> x gt(0(),y) -> false() gt(s(x),0()) -> true() gt(s(x),s(y)) -> gt(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) graph: if2#(true(),x,y) -> gcd#(minus(x,y),y) -> gcd#(x,y) -> ge#(x,y) if2#(true(),x,y) -> gcd#(minus(x,y),y) -> gcd#(x,y) -> if1#(ge(x,y),x,y) if2#(true(),x,y) -> minus#(x,y) -> minus#(s(x),y) -> gt#(s(x),y) if2#(true(),x,y) -> minus#(x,y) -> minus#(s(x),y) -> if#(gt(s(x),y),x,y) if1#(false(),x,y) -> gcd#(y,x) -> gcd#(x,y) -> ge#(x,y) if1#(false(),x,y) -> gcd#(y,x) -> gcd#(x,y) -> if1#(ge(x,y),x,y) if1#(true(),x,y) -> if2#(gt(y,0()),x,y) -> if2#(true(),x,y) -> minus#(x,y) if1#(true(),x,y) -> if2#(gt(y,0()),x,y) -> if2#(true(),x,y) -> gcd#(minus(x,y),y) ge#(s(x),s(y)) -> ge#(x,y) -> ge#(s(x),s(y)) -> ge#(x,y) gcd#(x,y) -> if1#(ge(x,y),x,y) -> if1#(true(),x,y) -> gt#(y,0()) gcd#(x,y) -> if1#(ge(x,y),x,y) -> if1#(true(),x,y) -> if2#(gt(y,0()),x,y) gcd#(x,y) -> if1#(ge(x,y),x,y) -> if1#(false(),x,y) -> gcd#(y,x) gcd#(x,y) -> ge#(x,y) -> ge#(s(x),s(y)) -> ge#(x,y) if#(true(),x,y) -> minus#(x,y) -> minus#(s(x),y) -> gt#(s(x),y) if#(true(),x,y) -> minus#(x,y) -> minus#(s(x),y) -> if#(gt(s(x),y),x,y) gt#(s(x),s(y)) -> gt#(x,y) -> gt#(s(x),s(y)) -> gt#(x,y) minus#(s(x),y) -> if#(gt(s(x),y),x,y) -> if#(true(),x,y) -> minus#(x,y) minus#(s(x),y) -> gt#(s(x),y) -> gt#(s(x),s(y)) -> gt#(x,y) SCC Processor: #sccs: 4 #rules: 8 #arcs: 18/144 DPs: if2#(true(),x,y) -> gcd#(minus(x,y),y) gcd#(x,y) -> if1#(ge(x,y),x,y) if1#(false(),x,y) -> gcd#(y,x) if1#(true(),x,y) -> if2#(gt(y,0()),x,y) TRS: minus(s(x),y) -> if(gt(s(x),y),x,y) if(true(),x,y) -> s(minus(x,y)) if(false(),x,y) -> 0() gcd(x,y) -> if1(ge(x,y),x,y) if1(true(),x,y) -> if2(gt(y,0()),x,y) if1(false(),x,y) -> gcd(y,x) if2(true(),x,y) -> gcd(minus(x,y),y) if2(false(),x,y) -> x gt(0(),y) -> false() gt(s(x),0()) -> true() gt(s(x),s(y)) -> gt(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) Open DPs: minus#(s(x),y) -> if#(gt(s(x),y),x,y) if#(true(),x,y) -> minus#(x,y) TRS: minus(s(x),y) -> if(gt(s(x),y),x,y) if(true(),x,y) -> s(minus(x,y)) if(false(),x,y) -> 0() gcd(x,y) -> if1(ge(x,y),x,y) if1(true(),x,y) -> if2(gt(y,0()),x,y) if1(false(),x,y) -> gcd(y,x) if2(true(),x,y) -> gcd(minus(x,y),y) if2(false(),x,y) -> x gt(0(),y) -> false() gt(s(x),0()) -> true() gt(s(x),s(y)) -> gt(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) Matrix Interpretation Processor: dim=1 interpretation: [if#](x0, x1, x2) = 2x1 + 1, [minus#](x0, x1) = 2x0, [if2](x0, x1, x2) = 4x1 + 4x2, [if1](x0, x1, x2) = 4x1 + 4x2, [ge](x0, x1) = 0, [gcd](x0, x1) = 4x0 + 4x1, [0] = 4, [false] = 0, [true] = 0, [if](x0, x1, x2) = 2x1 + 4, [gt](x0, x1) = 0, [minus](x0, x1) = x0, [s](x0) = 2x0 + 4 orientation: minus#(s(x),y) = 4x + 8 >= 2x + 1 = if#(gt(s(x),y),x,y) if#(true(),x,y) = 2x + 1 >= 2x = minus#(x,y) minus(s(x),y) = 2x + 4 >= 2x + 4 = if(gt(s(x),y),x,y) if(true(),x,y) = 2x + 4 >= 2x + 4 = s(minus(x,y)) if(false(),x,y) = 2x + 4 >= 4 = 0() gcd(x,y) = 4x + 4y >= 4x + 4y = if1(ge(x,y),x,y) if1(true(),x,y) = 4x + 4y >= 4x + 4y = if2(gt(y,0()),x,y) if1(false(),x,y) = 4x + 4y >= 4x + 4y = gcd(y,x) if2(true(),x,y) = 4x + 4y >= 4x + 4y = gcd(minus(x,y),y) if2(false(),x,y) = 4x + 4y >= x = x gt(0(),y) = 0 >= 0 = false() gt(s(x),0()) = 0 >= 0 = true() gt(s(x),s(y)) = 0 >= 0 = gt(x,y) ge(x,0()) = 0 >= 0 = true() ge(0(),s(x)) = 0 >= 0 = false() ge(s(x),s(y)) = 0 >= 0 = ge(x,y) problem: DPs: TRS: minus(s(x),y) -> if(gt(s(x),y),x,y) if(true(),x,y) -> s(minus(x,y)) if(false(),x,y) -> 0() gcd(x,y) -> if1(ge(x,y),x,y) if1(true(),x,y) -> if2(gt(y,0()),x,y) if1(false(),x,y) -> gcd(y,x) if2(true(),x,y) -> gcd(minus(x,y),y) if2(false(),x,y) -> x gt(0(),y) -> false() gt(s(x),0()) -> true() gt(s(x),s(y)) -> gt(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) Qed DPs: gt#(s(x),s(y)) -> gt#(x,y) TRS: minus(s(x),y) -> if(gt(s(x),y),x,y) if(true(),x,y) -> s(minus(x,y)) if(false(),x,y) -> 0() gcd(x,y) -> if1(ge(x,y),x,y) if1(true(),x,y) -> if2(gt(y,0()),x,y) if1(false(),x,y) -> gcd(y,x) if2(true(),x,y) -> gcd(minus(x,y),y) if2(false(),x,y) -> x gt(0(),y) -> false() gt(s(x),0()) -> true() gt(s(x),s(y)) -> gt(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) Matrix Interpretation Processor: dim=1 interpretation: [gt#](x0, x1) = x0 + x1 + 3, [if2](x0, x1, x2) = x1 + x2 + 1, [if1](x0, x1, x2) = x1 + x2 + 1, [ge](x0, x1) = 2x0 + 1, [gcd](x0, x1) = x0 + x1 + 1, [0] = 2, [false] = 0, [true] = 0, [if](x0, x1, x2) = 2x1 + 5/2, [gt](x0, x1) = 3x0 + 3x1 + 1, [minus](x0, x1) = x0, [s](x0) = 2x0 + 5/2 orientation: gt#(s(x),s(y)) = 2x + 2y + 8 >= x + y + 3 = gt#(x,y) minus(s(x),y) = 2x + 5/2 >= 2x + 5/2 = if(gt(s(x),y),x,y) if(true(),x,y) = 2x + 5/2 >= 2x + 5/2 = s(minus(x,y)) if(false(),x,y) = 2x + 5/2 >= 2 = 0() gcd(x,y) = x + y + 1 >= x + y + 1 = if1(ge(x,y),x,y) if1(true(),x,y) = x + y + 1 >= x + y + 1 = if2(gt(y,0()),x,y) if1(false(),x,y) = x + y + 1 >= x + y + 1 = gcd(y,x) if2(true(),x,y) = x + y + 1 >= x + y + 1 = gcd(minus(x,y),y) if2(false(),x,y) = x + y + 1 >= x = x gt(0(),y) = 3y + 7 >= 0 = false() gt(s(x),0()) = 6x + 29/2 >= 0 = true() gt(s(x),s(y)) = 6x + 6y + 16 >= 3x + 3y + 1 = gt(x,y) ge(x,0()) = 2x + 1 >= 0 = true() ge(0(),s(x)) = 5 >= 0 = false() ge(s(x),s(y)) = 4x + 6 >= 2x + 1 = ge(x,y) problem: DPs: TRS: minus(s(x),y) -> if(gt(s(x),y),x,y) if(true(),x,y) -> s(minus(x,y)) if(false(),x,y) -> 0() gcd(x,y) -> if1(ge(x,y),x,y) if1(true(),x,y) -> if2(gt(y,0()),x,y) if1(false(),x,y) -> gcd(y,x) if2(true(),x,y) -> gcd(minus(x,y),y) if2(false(),x,y) -> x gt(0(),y) -> false() gt(s(x),0()) -> true() gt(s(x),s(y)) -> gt(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) Qed DPs: ge#(s(x),s(y)) -> ge#(x,y) TRS: minus(s(x),y) -> if(gt(s(x),y),x,y) if(true(),x,y) -> s(minus(x,y)) if(false(),x,y) -> 0() gcd(x,y) -> if1(ge(x,y),x,y) if1(true(),x,y) -> if2(gt(y,0()),x,y) if1(false(),x,y) -> gcd(y,x) if2(true(),x,y) -> gcd(minus(x,y),y) if2(false(),x,y) -> x gt(0(),y) -> false() gt(s(x),0()) -> true() gt(s(x),s(y)) -> gt(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) Matrix Interpretation Processor: dim=1 interpretation: [ge#](x0, x1) = x0 + x1 + 3, [if2](x0, x1, x2) = x1 + x2 + 1, [if1](x0, x1, x2) = x1 + x2 + 1, [ge](x0, x1) = 2x0 + 1, [gcd](x0, x1) = x0 + x1 + 1, [0] = 2, [false] = 0, [true] = 0, [if](x0, x1, x2) = 2x1 + 5/2, [gt](x0, x1) = 3x0 + 3x1 + 1, [minus](x0, x1) = x0, [s](x0) = 2x0 + 5/2 orientation: ge#(s(x),s(y)) = 2x + 2y + 8 >= x + y + 3 = ge#(x,y) minus(s(x),y) = 2x + 5/2 >= 2x + 5/2 = if(gt(s(x),y),x,y) if(true(),x,y) = 2x + 5/2 >= 2x + 5/2 = s(minus(x,y)) if(false(),x,y) = 2x + 5/2 >= 2 = 0() gcd(x,y) = x + y + 1 >= x + y + 1 = if1(ge(x,y),x,y) if1(true(),x,y) = x + y + 1 >= x + y + 1 = if2(gt(y,0()),x,y) if1(false(),x,y) = x + y + 1 >= x + y + 1 = gcd(y,x) if2(true(),x,y) = x + y + 1 >= x + y + 1 = gcd(minus(x,y),y) if2(false(),x,y) = x + y + 1 >= x = x gt(0(),y) = 3y + 7 >= 0 = false() gt(s(x),0()) = 6x + 29/2 >= 0 = true() gt(s(x),s(y)) = 6x + 6y + 16 >= 3x + 3y + 1 = gt(x,y) ge(x,0()) = 2x + 1 >= 0 = true() ge(0(),s(x)) = 5 >= 0 = false() ge(s(x),s(y)) = 4x + 6 >= 2x + 1 = ge(x,y) problem: DPs: TRS: minus(s(x),y) -> if(gt(s(x),y),x,y) if(true(),x,y) -> s(minus(x,y)) if(false(),x,y) -> 0() gcd(x,y) -> if1(ge(x,y),x,y) if1(true(),x,y) -> if2(gt(y,0()),x,y) if1(false(),x,y) -> gcd(y,x) if2(true(),x,y) -> gcd(minus(x,y),y) if2(false(),x,y) -> x gt(0(),y) -> false() gt(s(x),0()) -> true() gt(s(x),s(y)) -> gt(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) Qed