YES(O(1),O(n^2)) 317.21/186.53 YES(O(1),O(n^2)) 317.21/186.53 317.21/186.53 We are left with following problem, upon which TcT provides the 317.21/186.53 certificate YES(O(1),O(n^2)). 317.21/186.53 317.21/186.53 Strict Trs: 317.21/186.53 { le(0(), y) -> true() 317.21/186.53 , le(s(x), 0()) -> false() 317.21/186.53 , le(s(x), s(y)) -> le(x, y) 317.21/186.53 , minus(x, 0()) -> x 317.21/186.53 , minus(s(x), s(y)) -> minus(x, y) 317.21/186.53 , mod(0(), y) -> 0() 317.21/186.53 , mod(s(x), 0()) -> 0() 317.21/186.53 , mod(s(x), s(y)) -> if_mod(le(y, x), s(x), s(y)) 317.21/186.53 , if_mod(true(), s(x), s(y)) -> mod(minus(x, y), s(y)) 317.21/186.53 , if_mod(false(), s(x), s(y)) -> s(x) } 317.21/186.53 Obligation: 317.21/186.53 runtime complexity 317.21/186.53 Answer: 317.21/186.53 YES(O(1),O(n^2)) 317.21/186.53 317.21/186.53 The weightgap principle applies (using the following nonconstant 317.21/186.53 growth matrix-interpretation) 317.21/186.53 317.21/186.53 The following argument positions are usable: 317.21/186.53 Uargs(mod) = {1}, Uargs(if_mod) = {1} 317.21/186.53 317.21/186.53 TcT has computed the following matrix interpretation satisfying 317.21/186.53 not(EDA) and not(IDA(1)). 317.21/186.53 317.21/186.53 [le](x1, x2) = [0] 317.21/186.53 317.21/186.53 [0] = [0] 317.21/186.53 317.21/186.53 [true] = [0] 317.21/186.53 317.21/186.53 [s](x1) = [1] x1 + [0] 317.21/186.53 317.21/186.53 [false] = [0] 317.21/186.53 317.21/186.53 [minus](x1, x2) = [1] x1 + [1] 317.21/186.53 317.21/186.53 [mod](x1, x2) = [1] x1 + [0] 317.21/186.53 317.21/186.53 [if_mod](x1, x2, x3) = [1] x1 + [1] x2 + [0] 317.21/186.53 317.21/186.53 The order satisfies the following ordering constraints: 317.21/186.53 317.21/186.53 [le(0(), y)] = [0] 317.21/186.53 >= [0] 317.21/186.53 = [true()] 317.21/186.53 317.21/186.53 [le(s(x), 0())] = [0] 317.21/186.53 >= [0] 317.21/186.53 = [false()] 317.21/186.53 317.21/186.53 [le(s(x), s(y))] = [0] 317.21/186.53 >= [0] 317.21/186.53 = [le(x, y)] 317.21/186.53 317.21/186.53 [minus(x, 0())] = [1] x + [1] 317.21/186.53 > [1] x + [0] 317.21/186.53 = [x] 317.21/186.53 317.21/186.53 [minus(s(x), s(y))] = [1] x + [1] 317.21/186.53 >= [1] x + [1] 317.21/186.53 = [minus(x, y)] 317.21/186.53 317.21/186.53 [mod(0(), y)] = [0] 317.21/186.53 >= [0] 317.21/186.53 = [0()] 317.21/186.53 317.21/186.53 [mod(s(x), 0())] = [1] x + [0] 317.21/186.53 >= [0] 317.21/186.53 = [0()] 317.21/186.53 317.21/186.53 [mod(s(x), s(y))] = [1] x + [0] 317.21/186.53 >= [1] x + [0] 317.21/186.53 = [if_mod(le(y, x), s(x), s(y))] 317.21/186.53 317.21/186.53 [if_mod(true(), s(x), s(y))] = [1] x + [0] 317.21/186.53 ? [1] x + [1] 317.21/186.53 = [mod(minus(x, y), s(y))] 317.21/186.53 317.21/186.53 [if_mod(false(), s(x), s(y))] = [1] x + [0] 317.21/186.53 >= [1] x + [0] 317.21/186.53 = [s(x)] 317.21/186.53 317.21/186.53 317.21/186.53 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 317.21/186.53 317.21/186.53 We are left with following problem, upon which TcT provides the 317.21/186.53 certificate YES(O(1),O(n^2)). 317.21/186.53 317.21/186.53 Strict Trs: 317.21/186.53 { le(0(), y) -> true() 317.21/186.53 , le(s(x), 0()) -> false() 317.21/186.53 , le(s(x), s(y)) -> le(x, y) 317.21/186.53 , minus(s(x), s(y)) -> minus(x, y) 317.21/186.53 , mod(0(), y) -> 0() 317.21/186.53 , mod(s(x), 0()) -> 0() 317.21/186.53 , mod(s(x), s(y)) -> if_mod(le(y, x), s(x), s(y)) 317.21/186.53 , if_mod(true(), s(x), s(y)) -> mod(minus(x, y), s(y)) 317.21/186.53 , if_mod(false(), s(x), s(y)) -> s(x) } 317.21/186.53 Weak Trs: { minus(x, 0()) -> x } 317.21/186.53 Obligation: 317.21/186.53 runtime complexity 317.21/186.53 Answer: 317.21/186.53 YES(O(1),O(n^2)) 317.21/186.53 317.21/186.53 The weightgap principle applies (using the following nonconstant 317.21/186.53 growth matrix-interpretation) 317.21/186.53 317.21/186.53 The following argument positions are usable: 317.21/186.53 Uargs(mod) = {1}, Uargs(if_mod) = {1} 317.21/186.53 317.21/186.53 TcT has computed the following matrix interpretation satisfying 317.21/186.53 not(EDA) and not(IDA(1)). 317.21/186.53 317.21/186.53 [le](x1, x2) = [4] 317.21/186.53 317.21/186.53 [0] = [0] 317.21/186.53 317.21/186.53 [true] = [0] 317.21/186.53 317.21/186.53 [s](x1) = [1] x1 + [0] 317.21/186.53 317.21/186.53 [false] = [0] 317.21/186.53 317.21/186.53 [minus](x1, x2) = [1] x1 + [0] 317.21/186.53 317.21/186.53 [mod](x1, x2) = [1] x1 + [0] 317.21/186.53 317.21/186.53 [if_mod](x1, x2, x3) = [1] x1 + [1] x2 + [0] 317.21/186.53 317.21/186.53 The order satisfies the following ordering constraints: 317.21/186.53 317.21/186.53 [le(0(), y)] = [4] 317.21/186.53 > [0] 317.21/186.53 = [true()] 317.21/186.53 317.21/186.53 [le(s(x), 0())] = [4] 317.21/186.53 > [0] 317.21/186.53 = [false()] 317.21/186.53 317.21/186.53 [le(s(x), s(y))] = [4] 317.21/186.53 >= [4] 317.21/186.53 = [le(x, y)] 317.21/186.53 317.21/186.53 [minus(x, 0())] = [1] x + [0] 317.21/186.53 >= [1] x + [0] 317.21/186.53 = [x] 317.21/186.53 317.21/186.53 [minus(s(x), s(y))] = [1] x + [0] 317.21/186.53 >= [1] x + [0] 317.21/186.53 = [minus(x, y)] 317.21/186.53 317.21/186.53 [mod(0(), y)] = [0] 317.21/186.53 >= [0] 317.21/186.53 = [0()] 317.21/186.53 317.21/186.53 [mod(s(x), 0())] = [1] x + [0] 317.21/186.53 >= [0] 317.21/186.53 = [0()] 317.21/186.53 317.21/186.53 [mod(s(x), s(y))] = [1] x + [0] 317.21/186.53 ? [1] x + [4] 317.21/186.53 = [if_mod(le(y, x), s(x), s(y))] 317.21/186.53 317.21/186.53 [if_mod(true(), s(x), s(y))] = [1] x + [0] 317.21/186.53 >= [1] x + [0] 317.21/186.53 = [mod(minus(x, y), s(y))] 317.21/186.53 317.21/186.53 [if_mod(false(), s(x), s(y))] = [1] x + [0] 317.21/186.53 >= [1] x + [0] 317.21/186.53 = [s(x)] 317.21/186.53 317.21/186.53 317.21/186.53 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 317.21/186.53 317.21/186.53 We are left with following problem, upon which TcT provides the 317.21/186.53 certificate YES(O(1),O(n^2)). 317.21/186.53 317.21/186.53 Strict Trs: 317.21/186.53 { le(s(x), s(y)) -> le(x, y) 317.21/186.53 , minus(s(x), s(y)) -> minus(x, y) 317.21/186.53 , mod(0(), y) -> 0() 317.21/186.53 , mod(s(x), 0()) -> 0() 317.21/186.53 , mod(s(x), s(y)) -> if_mod(le(y, x), s(x), s(y)) 317.21/186.53 , if_mod(true(), s(x), s(y)) -> mod(minus(x, y), s(y)) 317.21/186.53 , if_mod(false(), s(x), s(y)) -> s(x) } 317.21/186.53 Weak Trs: 317.21/186.53 { le(0(), y) -> true() 317.21/186.53 , le(s(x), 0()) -> false() 317.21/186.53 , minus(x, 0()) -> x } 317.21/186.53 Obligation: 317.21/186.53 runtime complexity 317.21/186.53 Answer: 317.21/186.53 YES(O(1),O(n^2)) 317.21/186.53 317.21/186.53 The weightgap principle applies (using the following nonconstant 317.21/186.53 growth matrix-interpretation) 317.21/186.53 317.21/186.53 The following argument positions are usable: 317.21/186.53 Uargs(mod) = {1}, Uargs(if_mod) = {1} 317.21/186.53 317.21/186.53 TcT has computed the following matrix interpretation satisfying 317.21/186.53 not(EDA) and not(IDA(1)). 317.21/186.53 317.21/186.53 [le](x1, x2) = [4] 317.21/186.53 317.21/186.53 [0] = [0] 317.21/186.53 317.21/186.53 [true] = [1] 317.21/186.53 317.21/186.53 [s](x1) = [1] x1 + [0] 317.21/186.53 317.21/186.53 [false] = [0] 317.21/186.53 317.21/186.53 [minus](x1, x2) = [1] x1 + [0] 317.21/186.53 317.21/186.53 [mod](x1, x2) = [1] x1 + [0] 317.21/186.53 317.21/186.53 [if_mod](x1, x2, x3) = [1] x1 + [1] x2 + [0] 317.21/186.53 317.21/186.53 The order satisfies the following ordering constraints: 317.21/186.53 317.21/186.53 [le(0(), y)] = [4] 317.21/186.53 > [1] 317.21/186.53 = [true()] 317.21/186.53 317.21/186.53 [le(s(x), 0())] = [4] 317.21/186.53 > [0] 317.21/186.53 = [false()] 317.21/186.53 317.21/186.53 [le(s(x), s(y))] = [4] 317.21/186.53 >= [4] 317.21/186.53 = [le(x, y)] 317.21/186.53 317.21/186.53 [minus(x, 0())] = [1] x + [0] 317.21/186.53 >= [1] x + [0] 317.21/186.53 = [x] 317.21/186.53 317.21/186.53 [minus(s(x), s(y))] = [1] x + [0] 317.21/186.53 >= [1] x + [0] 317.21/186.53 = [minus(x, y)] 317.21/186.53 317.21/186.53 [mod(0(), y)] = [0] 317.21/186.53 >= [0] 317.21/186.53 = [0()] 317.21/186.53 317.21/186.53 [mod(s(x), 0())] = [1] x + [0] 317.21/186.53 >= [0] 317.21/186.53 = [0()] 317.21/186.53 317.21/186.53 [mod(s(x), s(y))] = [1] x + [0] 317.21/186.53 ? [1] x + [4] 317.21/186.53 = [if_mod(le(y, x), s(x), s(y))] 317.21/186.53 317.21/186.53 [if_mod(true(), s(x), s(y))] = [1] x + [1] 317.21/186.53 > [1] x + [0] 317.21/186.53 = [mod(minus(x, y), s(y))] 317.21/186.53 317.21/186.53 [if_mod(false(), s(x), s(y))] = [1] x + [0] 317.21/186.53 >= [1] x + [0] 317.21/186.53 = [s(x)] 317.21/186.53 317.21/186.53 317.21/186.53 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 317.21/186.53 317.21/186.53 We are left with following problem, upon which TcT provides the 317.21/186.53 certificate YES(O(1),O(n^2)). 317.21/186.53 317.21/186.53 Strict Trs: 317.21/186.53 { le(s(x), s(y)) -> le(x, y) 317.21/186.53 , minus(s(x), s(y)) -> minus(x, y) 317.21/186.53 , mod(0(), y) -> 0() 317.21/186.53 , mod(s(x), 0()) -> 0() 317.21/186.53 , mod(s(x), s(y)) -> if_mod(le(y, x), s(x), s(y)) 317.21/186.53 , if_mod(false(), s(x), s(y)) -> s(x) } 317.21/186.53 Weak Trs: 317.21/186.53 { le(0(), y) -> true() 317.21/186.53 , le(s(x), 0()) -> false() 317.21/186.53 , minus(x, 0()) -> x 317.21/186.53 , if_mod(true(), s(x), s(y)) -> mod(minus(x, y), s(y)) } 317.21/186.53 Obligation: 317.21/186.53 runtime complexity 317.21/186.53 Answer: 317.21/186.53 YES(O(1),O(n^2)) 317.21/186.53 317.21/186.53 The weightgap principle applies (using the following nonconstant 317.21/186.53 growth matrix-interpretation) 317.21/186.53 317.21/186.53 The following argument positions are usable: 317.21/186.53 Uargs(mod) = {1}, Uargs(if_mod) = {1} 317.21/186.53 317.21/186.53 TcT has computed the following matrix interpretation satisfying 317.21/186.53 not(EDA) and not(IDA(1)). 317.21/186.53 317.21/186.53 [le](x1, x2) = [4] 317.21/186.53 317.21/186.53 [0] = [0] 317.21/186.53 317.21/186.53 [true] = [3] 317.21/186.53 317.21/186.53 [s](x1) = [1] x1 + [5] 317.21/186.53 317.21/186.53 [false] = [3] 317.21/186.53 317.21/186.53 [minus](x1, x2) = [1] x1 + [0] 317.21/186.53 317.21/186.53 [mod](x1, x2) = [1] x1 + [0] 317.21/186.53 317.21/186.53 [if_mod](x1, x2, x3) = [1] x1 + [1] x2 + [0] 317.21/186.53 317.21/186.53 The order satisfies the following ordering constraints: 317.21/186.53 317.21/186.53 [le(0(), y)] = [4] 317.21/186.53 > [3] 317.21/186.53 = [true()] 317.21/186.53 317.21/186.53 [le(s(x), 0())] = [4] 317.21/186.53 > [3] 317.21/186.53 = [false()] 317.21/186.53 317.21/186.53 [le(s(x), s(y))] = [4] 317.21/186.53 >= [4] 317.21/186.53 = [le(x, y)] 317.21/186.53 317.21/186.53 [minus(x, 0())] = [1] x + [0] 317.21/186.53 >= [1] x + [0] 317.21/186.53 = [x] 317.21/186.53 317.21/186.53 [minus(s(x), s(y))] = [1] x + [5] 317.21/186.53 > [1] x + [0] 317.21/186.53 = [minus(x, y)] 317.21/186.53 317.21/186.53 [mod(0(), y)] = [0] 317.21/186.53 >= [0] 317.21/186.53 = [0()] 317.21/186.53 317.21/186.53 [mod(s(x), 0())] = [1] x + [5] 317.21/186.53 > [0] 317.21/186.53 = [0()] 317.21/186.53 317.21/186.53 [mod(s(x), s(y))] = [1] x + [5] 317.21/186.53 ? [1] x + [9] 317.21/186.53 = [if_mod(le(y, x), s(x), s(y))] 317.21/186.53 317.21/186.53 [if_mod(true(), s(x), s(y))] = [1] x + [8] 317.21/186.53 > [1] x + [0] 317.21/186.53 = [mod(minus(x, y), s(y))] 317.21/186.53 317.21/186.53 [if_mod(false(), s(x), s(y))] = [1] x + [8] 317.21/186.53 > [1] x + [5] 317.21/186.53 = [s(x)] 317.21/186.53 317.21/186.53 317.21/186.53 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 317.21/186.53 317.21/186.53 We are left with following problem, upon which TcT provides the 317.21/186.53 certificate YES(O(1),O(n^2)). 317.21/186.53 317.21/186.53 Strict Trs: 317.21/186.53 { le(s(x), s(y)) -> le(x, y) 317.21/186.53 , mod(0(), y) -> 0() 317.21/186.53 , mod(s(x), s(y)) -> if_mod(le(y, x), s(x), s(y)) } 317.21/186.53 Weak Trs: 317.21/186.53 { le(0(), y) -> true() 317.21/186.53 , le(s(x), 0()) -> false() 317.21/186.53 , minus(x, 0()) -> x 317.21/186.53 , minus(s(x), s(y)) -> minus(x, y) 317.21/186.53 , mod(s(x), 0()) -> 0() 317.21/186.53 , if_mod(true(), s(x), s(y)) -> mod(minus(x, y), s(y)) 317.21/186.53 , if_mod(false(), s(x), s(y)) -> s(x) } 317.21/186.53 Obligation: 317.21/186.53 runtime complexity 317.21/186.53 Answer: 317.21/186.53 YES(O(1),O(n^2)) 317.21/186.53 317.21/186.53 The weightgap principle applies (using the following nonconstant 317.21/186.53 growth matrix-interpretation) 317.21/186.53 317.21/186.53 The following argument positions are usable: 317.21/186.53 Uargs(mod) = {1}, Uargs(if_mod) = {1} 317.21/186.53 317.21/186.53 TcT has computed the following matrix interpretation satisfying 317.21/186.53 not(EDA) and not(IDA(1)). 317.21/186.53 317.21/186.53 [le](x1, x2) = [0] 317.21/186.53 317.21/186.53 [0] = [0] 317.21/186.53 317.21/186.53 [true] = [0] 317.21/186.53 317.21/186.53 [s](x1) = [1] x1 + [1] 317.21/186.53 317.21/186.53 [false] = [0] 317.21/186.53 317.21/186.53 [minus](x1, x2) = [1] x1 + [0] 317.21/186.53 317.21/186.53 [mod](x1, x2) = [1] x1 + [1] 317.21/186.53 317.21/186.53 [if_mod](x1, x2, x3) = [1] x1 + [1] x2 + [0] 317.21/186.53 317.21/186.53 The order satisfies the following ordering constraints: 317.21/186.53 317.21/186.53 [le(0(), y)] = [0] 317.21/186.53 >= [0] 317.21/186.53 = [true()] 317.21/186.53 317.21/186.53 [le(s(x), 0())] = [0] 317.21/186.53 >= [0] 317.21/186.53 = [false()] 317.21/186.53 317.21/186.53 [le(s(x), s(y))] = [0] 317.21/186.53 >= [0] 317.21/186.53 = [le(x, y)] 317.21/186.53 317.21/186.53 [minus(x, 0())] = [1] x + [0] 317.21/186.53 >= [1] x + [0] 317.21/186.53 = [x] 317.21/186.53 317.21/186.53 [minus(s(x), s(y))] = [1] x + [1] 317.21/186.53 > [1] x + [0] 317.21/186.53 = [minus(x, y)] 317.21/186.53 317.21/186.53 [mod(0(), y)] = [1] 317.21/186.53 > [0] 317.21/186.53 = [0()] 317.21/186.53 317.21/186.53 [mod(s(x), 0())] = [1] x + [2] 317.21/186.53 > [0] 317.21/186.53 = [0()] 317.21/186.53 317.21/186.53 [mod(s(x), s(y))] = [1] x + [2] 317.21/186.53 > [1] x + [1] 317.21/186.53 = [if_mod(le(y, x), s(x), s(y))] 317.21/186.53 317.21/186.53 [if_mod(true(), s(x), s(y))] = [1] x + [1] 317.21/186.53 >= [1] x + [1] 317.21/186.53 = [mod(minus(x, y), s(y))] 317.21/186.53 317.21/186.53 [if_mod(false(), s(x), s(y))] = [1] x + [1] 317.21/186.53 >= [1] x + [1] 317.21/186.53 = [s(x)] 317.21/186.53 317.21/186.53 317.21/186.53 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 317.21/186.53 317.21/186.53 We are left with following problem, upon which TcT provides the 317.21/186.53 certificate YES(O(1),O(n^2)). 317.21/186.53 317.21/186.53 Strict Trs: { le(s(x), s(y)) -> le(x, y) } 317.21/186.53 Weak Trs: 317.21/186.53 { le(0(), y) -> true() 317.21/186.53 , le(s(x), 0()) -> false() 317.21/186.53 , minus(x, 0()) -> x 317.21/186.53 , minus(s(x), s(y)) -> minus(x, y) 317.21/186.53 , mod(0(), y) -> 0() 317.21/186.53 , mod(s(x), 0()) -> 0() 317.21/186.53 , mod(s(x), s(y)) -> if_mod(le(y, x), s(x), s(y)) 317.21/186.53 , if_mod(true(), s(x), s(y)) -> mod(minus(x, y), s(y)) 317.21/186.53 , if_mod(false(), s(x), s(y)) -> s(x) } 317.21/186.53 Obligation: 317.21/186.53 runtime complexity 317.21/186.53 Answer: 317.21/186.53 YES(O(1),O(n^2)) 317.21/186.53 317.21/186.53 We use the processor 'polynomial interpretation' to orient 317.21/186.53 following rules strictly. 317.21/186.53 317.21/186.53 Trs: { le(s(x), s(y)) -> le(x, y) } 317.21/186.53 317.21/186.53 The induced complexity on above rules (modulo remaining rules) is 317.21/186.53 YES(?,O(n^2)) . These rules are moved into the corresponding weak 317.21/186.53 component(s). 317.21/186.53 317.21/186.53 Sub-proof: 317.21/186.53 ---------- 317.21/186.53 We consider the following typing: 317.21/186.53 317.21/186.53 le :: (b,b) -> a 317.21/186.53 0 :: b 317.21/186.53 true :: a 317.21/186.53 s :: b -> b 317.21/186.53 false :: a 317.21/186.53 minus :: (b,b) -> b 317.21/186.53 mod :: (b,b) -> b 317.21/186.53 if_mod :: (a,b,b) -> b 317.21/186.53 317.21/186.53 The following argument positions are considered usable: 317.21/186.53 317.21/186.53 Uargs(mod) = {1}, Uargs(if_mod) = {1} 317.21/186.53 317.21/186.53 TcT has computed the following constructor-restricted 317.21/186.53 typedpolynomial interpretation. 317.21/186.53 317.21/186.53 [le](x1, x2) = x2 317.21/186.53 317.21/186.53 [0]() = 0 317.21/186.53 317.21/186.53 [true]() = 0 317.21/186.53 317.21/186.53 [s](x1) = 1 + x1 317.21/186.53 317.21/186.53 [false]() = 0 317.21/186.53 317.21/186.53 [minus](x1, x2) = x1 317.21/186.53 317.21/186.53 [mod](x1, x2) = 1 + 2*x1 + x1^2 317.21/186.53 317.21/186.53 [if_mod](x1, x2, x3) = 2 + x1 + x2 + x2^2 317.21/186.53 317.21/186.53 317.21/186.53 This order satisfies the following ordering constraints. 317.21/186.53 317.21/186.53 [le(0(), y)] = y 317.21/186.53 >= 317.21/186.53 = [true()] 317.21/186.53 317.21/186.53 [le(s(x), 0())] = 317.21/186.53 >= 317.21/186.53 = [false()] 317.21/186.53 317.21/186.53 [le(s(x), s(y))] = 1 + y 317.21/186.53 > y 317.21/186.53 = [le(x, y)] 317.21/186.53 317.21/186.53 [minus(x, 0())] = x 317.21/186.53 >= x 317.21/186.53 = [x] 317.21/186.53 317.21/186.53 [minus(s(x), s(y))] = 1 + x 317.21/186.53 > x 317.21/186.53 = [minus(x, y)] 317.21/186.53 317.21/186.53 [mod(0(), y)] = 1 317.21/186.53 > 317.21/186.53 = [0()] 317.21/186.53 317.21/186.53 [mod(s(x), 0())] = 4 + 4*x + x^2 317.21/186.53 > 317.21/186.53 = [0()] 317.21/186.53 317.21/186.53 [mod(s(x), s(y))] = 4 + 4*x + x^2 317.21/186.53 >= 4 + 4*x + x^2 317.21/186.53 = [if_mod(le(y, x), s(x), s(y))] 317.21/186.53 317.21/186.53 [if_mod(true(), s(x), s(y))] = 4 + 3*x + x^2 317.21/186.53 > 1 + 2*x + x^2 317.21/186.53 = [mod(minus(x, y), s(y))] 317.21/186.53 317.21/186.53 [if_mod(false(), s(x), s(y))] = 4 + 3*x + x^2 317.21/186.53 > 1 + x 317.21/186.53 = [s(x)] 317.21/186.53 317.21/186.53 317.21/186.53 We return to the main proof. 317.21/186.53 317.21/186.53 We are left with following problem, upon which TcT provides the 317.21/186.53 certificate YES(O(1),O(1)). 317.21/186.53 317.21/186.53 Weak Trs: 317.21/186.53 { le(0(), y) -> true() 317.21/186.53 , le(s(x), 0()) -> false() 317.21/186.53 , le(s(x), s(y)) -> le(x, y) 317.21/186.53 , minus(x, 0()) -> x 317.21/186.53 , minus(s(x), s(y)) -> minus(x, y) 317.21/186.53 , mod(0(), y) -> 0() 317.21/186.53 , mod(s(x), 0()) -> 0() 317.21/186.53 , mod(s(x), s(y)) -> if_mod(le(y, x), s(x), s(y)) 317.21/186.53 , if_mod(true(), s(x), s(y)) -> mod(minus(x, y), s(y)) 317.21/186.53 , if_mod(false(), s(x), s(y)) -> s(x) } 317.21/186.53 Obligation: 317.21/186.53 runtime complexity 317.21/186.53 Answer: 317.21/186.53 YES(O(1),O(1)) 317.21/186.53 317.21/186.53 Empty rules are trivially bounded 317.21/186.53 317.21/186.53 Hurray, we answered YES(O(1),O(n^2)) 317.34/186.68 EOF