We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^2)). Strict Trs: { l5(x, y, res, tmp, mtmp, True()) -> 0() , l5(x, y, res, tmp, mtmp, False()) -> l7(x, y, res, tmp, mtmp, False()) , l1(x, y, res, tmp, mtmp, t) -> l2(x, y, res, tmp, mtmp, False()) , l13(x, y, res, tmp, True(), t) -> l16(x, y, gcd(S(0()), y), tmp, True(), t) , l13(x, y, res, tmp, False(), t) -> l16(x, y, gcd(0(), y), tmp, False(), t) , help1(S(S(x))) -> True() , help1(S(0())) -> False() , help1(0()) -> False() , gcd(x, y) -> l1(x, y, 0(), False(), False(), False()) , e7(a, b, res, t) -> False() , m3(S(S(x)), b, res, t) -> True() , m3(S(0()), b, res, t) -> False() , m3(0(), b, res, t) -> False() , e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , e6(a, b, res, t) -> False() , l14(x, y, res, tmp, mtmp, t) -> l15(x, y, res, tmp, monus(x, y), t) , l9(res, y, res', tmp, mtmp, t) -> res , bool2Nat(True()) -> S(0()) , bool2Nat(False()) -> 0() , l6(x, y, res, tmp, mtmp, t) -> 0() , l8(res, y, res', True(), mtmp, t) -> res , l8(x, y, res, False(), mtmp, t) -> l10(x, y, res, False(), mtmp, t) , m5(a, b, res, t) -> res , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , l12(x, y, res, tmp, mtmp, t) -> l13(x, y, res, tmp, monus(x, y), t) , e8(a, b, res, t) -> res , l7(x, y, res, tmp, mtmp, t) -> l8(x, y, res, equal0(x, y), mtmp, t) , l11(x, y, res, tmp, mtmp, True()) -> l12(x, y, res, tmp, mtmp, True()) , l11(x, y, res, tmp, mtmp, False()) -> l14(x, y, res, tmp, mtmp, False()) , e5(a, b, res, t) -> True() , l3(x, y, res, tmp, mtmp, t) -> l4(x, y, 0(), tmp, mtmp, t) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , l2(x, y, res, tmp, mtmp, True()) -> res , l2(x, y, res, tmp, mtmp, False()) -> l3(x, y, res, tmp, mtmp, False()) , l4(x', x, res, tmp, mtmp, t) -> l5(x', x, res, tmp, mtmp, False()) , l10(x, y, res, tmp, mtmp, t) -> l11(x, y, res, tmp, mtmp, <(x, y)) , l15(x, y, res, tmp, True(), t) -> l16(x, y, gcd(y, S(0())), tmp, True(), t) , l15(x, y, res, tmp, False(), t) -> l16(x, y, gcd(y, 0()), tmp, False(), t) , l16(x, y, res, tmp, mtmp, t) -> res , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Weak Trs: { <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^2)) We add the following dependency tuples: Strict DPs: { l5^#(x, y, res, tmp, mtmp, True()) -> c_1() , l5^#(x, y, res, tmp, mtmp, False()) -> c_2(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_31(l8^#(x, y, res, equal0(x, y), mtmp, t), equal0^#(x, y)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, True()) -> c_41() , l2^#(x, y, res, tmp, mtmp, False()) -> c_42(l3^#(x, y, res, tmp, mtmp, False())) , l13^#(x, y, res, tmp, True(), t) -> c_4(l16^#(x, y, gcd(S(0()), y), tmp, True(), t), gcd^#(S(0()), y)) , l13^#(x, y, res, tmp, False(), t) -> c_5(l16^#(x, y, gcd(0(), y), tmp, False(), t), gcd^#(0(), y)) , l16^#(x, y, res, tmp, mtmp, t) -> c_47() , gcd^#(x, y) -> c_9(l1^#(x, y, 0(), False(), False(), False())) , help1^#(S(S(x))) -> c_6() , help1^#(S(0())) -> c_7() , help1^#(0()) -> c_8() , e7^#(a, b, res, t) -> c_10() , m3^#(S(S(x)), b, res, t) -> c_11() , m3^#(S(0()), b, res, t) -> c_12() , m3^#(0(), b, res, t) -> c_13() , e2^#(a, b, res, True()) -> c_14(e3^#(a, b, res, True())) , e2^#(a, b, res, False()) -> c_15() , e3^#(a, b, res, t) -> c_16(e4^#(a, b, res, <(b, a)), <^#(b, a)) , e4^#(a, b, res, True()) -> c_49() , e4^#(a, b, res, False()) -> c_50() , e6^#(a, b, res, t) -> c_17() , l14^#(x, y, res, tmp, mtmp, t) -> c_18(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, True(), t) -> c_45(l16^#(x, y, gcd(y, S(0())), tmp, True(), t), gcd^#(y, S(0()))) , l15^#(x, y, res, tmp, False(), t) -> c_46(l16^#(x, y, gcd(y, 0()), tmp, False(), t), gcd^#(y, 0())) , monus^#(a, b) -> c_40(m1^#(a, b, False(), False())) , l9^#(res, y, res', tmp, mtmp, t) -> c_19() , bool2Nat^#(True()) -> c_20() , bool2Nat^#(False()) -> c_21() , l6^#(x, y, res, tmp, mtmp, t) -> c_22() , l8^#(res, y, res', True(), mtmp, t) -> c_23() , l8^#(x, y, res, False(), mtmp, t) -> c_24(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_44(l11^#(x, y, res, tmp, mtmp, <(x, y)), <^#(x, y)) , m5^#(a, b, res, t) -> c_25() , e1^#(a, b, res, t) -> c_26(e2^#(a, b, res, <(a, b)), <^#(a, b)) , m4^#(S(x'), S(x), res, t) -> c_27(m5^#(S(x'), S(x), monus(x', x), t), monus^#(x', x)) , equal0^#(a, b) -> c_28(e1^#(a, b, False(), False())) , l12^#(x, y, res, tmp, mtmp, t) -> c_29(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , e8^#(a, b, res, t) -> c_30() , l11^#(x, y, res, tmp, mtmp, True()) -> c_32(l12^#(x, y, res, tmp, mtmp, True())) , l11^#(x, y, res, tmp, mtmp, False()) -> c_33(l14^#(x, y, res, tmp, mtmp, False())) , e5^#(a, b, res, t) -> c_34() , l3^#(x, y, res, tmp, mtmp, t) -> c_35(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_43(l5^#(x', x, res, tmp, mtmp, False())) , m2^#(a, b, res, False()) -> c_36(m4^#(a, b, res, False())) , m2^#(S(S(x)), b, res, True()) -> c_37() , m2^#(S(0()), b, res, True()) -> c_38() , m2^#(0(), b, res, True()) -> c_39() , m1^#(a, x, res, t) -> c_48(m2^#(a, x, res, False())) } Weak DPs: { <^#(x, 0()) -> c_51() , <^#(S(x), S(y)) -> c_52(<^#(x, y)) , <^#(0(), S(y)) -> c_53() } and mark the set of starting terms. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^2)). Strict DPs: { l5^#(x, y, res, tmp, mtmp, True()) -> c_1() , l5^#(x, y, res, tmp, mtmp, False()) -> c_2(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_31(l8^#(x, y, res, equal0(x, y), mtmp, t), equal0^#(x, y)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, True()) -> c_41() , l2^#(x, y, res, tmp, mtmp, False()) -> c_42(l3^#(x, y, res, tmp, mtmp, False())) , l13^#(x, y, res, tmp, True(), t) -> c_4(l16^#(x, y, gcd(S(0()), y), tmp, True(), t), gcd^#(S(0()), y)) , l13^#(x, y, res, tmp, False(), t) -> c_5(l16^#(x, y, gcd(0(), y), tmp, False(), t), gcd^#(0(), y)) , l16^#(x, y, res, tmp, mtmp, t) -> c_47() , gcd^#(x, y) -> c_9(l1^#(x, y, 0(), False(), False(), False())) , help1^#(S(S(x))) -> c_6() , help1^#(S(0())) -> c_7() , help1^#(0()) -> c_8() , e7^#(a, b, res, t) -> c_10() , m3^#(S(S(x)), b, res, t) -> c_11() , m3^#(S(0()), b, res, t) -> c_12() , m3^#(0(), b, res, t) -> c_13() , e2^#(a, b, res, True()) -> c_14(e3^#(a, b, res, True())) , e2^#(a, b, res, False()) -> c_15() , e3^#(a, b, res, t) -> c_16(e4^#(a, b, res, <(b, a)), <^#(b, a)) , e4^#(a, b, res, True()) -> c_49() , e4^#(a, b, res, False()) -> c_50() , e6^#(a, b, res, t) -> c_17() , l14^#(x, y, res, tmp, mtmp, t) -> c_18(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, True(), t) -> c_45(l16^#(x, y, gcd(y, S(0())), tmp, True(), t), gcd^#(y, S(0()))) , l15^#(x, y, res, tmp, False(), t) -> c_46(l16^#(x, y, gcd(y, 0()), tmp, False(), t), gcd^#(y, 0())) , monus^#(a, b) -> c_40(m1^#(a, b, False(), False())) , l9^#(res, y, res', tmp, mtmp, t) -> c_19() , bool2Nat^#(True()) -> c_20() , bool2Nat^#(False()) -> c_21() , l6^#(x, y, res, tmp, mtmp, t) -> c_22() , l8^#(res, y, res', True(), mtmp, t) -> c_23() , l8^#(x, y, res, False(), mtmp, t) -> c_24(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_44(l11^#(x, y, res, tmp, mtmp, <(x, y)), <^#(x, y)) , m5^#(a, b, res, t) -> c_25() , e1^#(a, b, res, t) -> c_26(e2^#(a, b, res, <(a, b)), <^#(a, b)) , m4^#(S(x'), S(x), res, t) -> c_27(m5^#(S(x'), S(x), monus(x', x), t), monus^#(x', x)) , equal0^#(a, b) -> c_28(e1^#(a, b, False(), False())) , l12^#(x, y, res, tmp, mtmp, t) -> c_29(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , e8^#(a, b, res, t) -> c_30() , l11^#(x, y, res, tmp, mtmp, True()) -> c_32(l12^#(x, y, res, tmp, mtmp, True())) , l11^#(x, y, res, tmp, mtmp, False()) -> c_33(l14^#(x, y, res, tmp, mtmp, False())) , e5^#(a, b, res, t) -> c_34() , l3^#(x, y, res, tmp, mtmp, t) -> c_35(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_43(l5^#(x', x, res, tmp, mtmp, False())) , m2^#(a, b, res, False()) -> c_36(m4^#(a, b, res, False())) , m2^#(S(S(x)), b, res, True()) -> c_37() , m2^#(S(0()), b, res, True()) -> c_38() , m2^#(0(), b, res, True()) -> c_39() , m1^#(a, x, res, t) -> c_48(m2^#(a, x, res, False())) } Weak DPs: { <^#(x, 0()) -> c_51() , <^#(S(x), S(y)) -> c_52(<^#(x, y)) , <^#(0(), S(y)) -> c_53() } Weak Trs: { l5(x, y, res, tmp, mtmp, True()) -> 0() , l5(x, y, res, tmp, mtmp, False()) -> l7(x, y, res, tmp, mtmp, False()) , l1(x, y, res, tmp, mtmp, t) -> l2(x, y, res, tmp, mtmp, False()) , l13(x, y, res, tmp, True(), t) -> l16(x, y, gcd(S(0()), y), tmp, True(), t) , l13(x, y, res, tmp, False(), t) -> l16(x, y, gcd(0(), y), tmp, False(), t) , help1(S(S(x))) -> True() , help1(S(0())) -> False() , help1(0()) -> False() , gcd(x, y) -> l1(x, y, 0(), False(), False(), False()) , e7(a, b, res, t) -> False() , m3(S(S(x)), b, res, t) -> True() , m3(S(0()), b, res, t) -> False() , m3(0(), b, res, t) -> False() , e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , e6(a, b, res, t) -> False() , l14(x, y, res, tmp, mtmp, t) -> l15(x, y, res, tmp, monus(x, y), t) , l9(res, y, res', tmp, mtmp, t) -> res , bool2Nat(True()) -> S(0()) , bool2Nat(False()) -> 0() , l6(x, y, res, tmp, mtmp, t) -> 0() , l8(res, y, res', True(), mtmp, t) -> res , l8(x, y, res, False(), mtmp, t) -> l10(x, y, res, False(), mtmp, t) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , l12(x, y, res, tmp, mtmp, t) -> l13(x, y, res, tmp, monus(x, y), t) , e8(a, b, res, t) -> res , l7(x, y, res, tmp, mtmp, t) -> l8(x, y, res, equal0(x, y), mtmp, t) , l11(x, y, res, tmp, mtmp, True()) -> l12(x, y, res, tmp, mtmp, True()) , l11(x, y, res, tmp, mtmp, False()) -> l14(x, y, res, tmp, mtmp, False()) , e5(a, b, res, t) -> True() , l3(x, y, res, tmp, mtmp, t) -> l4(x, y, 0(), tmp, mtmp, t) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , l2(x, y, res, tmp, mtmp, True()) -> res , l2(x, y, res, tmp, mtmp, False()) -> l3(x, y, res, tmp, mtmp, False()) , l4(x', x, res, tmp, mtmp, t) -> l5(x', x, res, tmp, mtmp, False()) , l10(x, y, res, tmp, mtmp, t) -> l11(x, y, res, tmp, mtmp, <(x, y)) , l15(x, y, res, tmp, True(), t) -> l16(x, y, gcd(y, S(0())), tmp, True(), t) , l15(x, y, res, tmp, False(), t) -> l16(x, y, gcd(y, 0()), tmp, False(), t) , l16(x, y, res, tmp, mtmp, t) -> res , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^2)) We estimate the number of application of {1,5,9,11,12,13,14,15,16,17,19,21,22,23,28,29,30,31,32,35,40,43,47,48,49} by applications of Pre({1,5,9,11,12,13,14,15,16,17,19,21,22,23,28,29,30,31,32,35,40,43,47,48,49}) = {3,7,8,20,25,26,36,37}. Here rules are labeled as follows: DPs: { 1: l5^#(x, y, res, tmp, mtmp, True()) -> c_1() , 2: l5^#(x, y, res, tmp, mtmp, False()) -> c_2(l7^#(x, y, res, tmp, mtmp, False())) , 3: l7^#(x, y, res, tmp, mtmp, t) -> c_31(l8^#(x, y, res, equal0(x, y), mtmp, t), equal0^#(x, y)) , 4: l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , 5: l2^#(x, y, res, tmp, mtmp, True()) -> c_41() , 6: l2^#(x, y, res, tmp, mtmp, False()) -> c_42(l3^#(x, y, res, tmp, mtmp, False())) , 7: l13^#(x, y, res, tmp, True(), t) -> c_4(l16^#(x, y, gcd(S(0()), y), tmp, True(), t), gcd^#(S(0()), y)) , 8: l13^#(x, y, res, tmp, False(), t) -> c_5(l16^#(x, y, gcd(0(), y), tmp, False(), t), gcd^#(0(), y)) , 9: l16^#(x, y, res, tmp, mtmp, t) -> c_47() , 10: gcd^#(x, y) -> c_9(l1^#(x, y, 0(), False(), False(), False())) , 11: help1^#(S(S(x))) -> c_6() , 12: help1^#(S(0())) -> c_7() , 13: help1^#(0()) -> c_8() , 14: e7^#(a, b, res, t) -> c_10() , 15: m3^#(S(S(x)), b, res, t) -> c_11() , 16: m3^#(S(0()), b, res, t) -> c_12() , 17: m3^#(0(), b, res, t) -> c_13() , 18: e2^#(a, b, res, True()) -> c_14(e3^#(a, b, res, True())) , 19: e2^#(a, b, res, False()) -> c_15() , 20: e3^#(a, b, res, t) -> c_16(e4^#(a, b, res, <(b, a)), <^#(b, a)) , 21: e4^#(a, b, res, True()) -> c_49() , 22: e4^#(a, b, res, False()) -> c_50() , 23: e6^#(a, b, res, t) -> c_17() , 24: l14^#(x, y, res, tmp, mtmp, t) -> c_18(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , 25: l15^#(x, y, res, tmp, True(), t) -> c_45(l16^#(x, y, gcd(y, S(0())), tmp, True(), t), gcd^#(y, S(0()))) , 26: l15^#(x, y, res, tmp, False(), t) -> c_46(l16^#(x, y, gcd(y, 0()), tmp, False(), t), gcd^#(y, 0())) , 27: monus^#(a, b) -> c_40(m1^#(a, b, False(), False())) , 28: l9^#(res, y, res', tmp, mtmp, t) -> c_19() , 29: bool2Nat^#(True()) -> c_20() , 30: bool2Nat^#(False()) -> c_21() , 31: l6^#(x, y, res, tmp, mtmp, t) -> c_22() , 32: l8^#(res, y, res', True(), mtmp, t) -> c_23() , 33: l8^#(x, y, res, False(), mtmp, t) -> c_24(l10^#(x, y, res, False(), mtmp, t)) , 34: l10^#(x, y, res, tmp, mtmp, t) -> c_44(l11^#(x, y, res, tmp, mtmp, <(x, y)), <^#(x, y)) , 35: m5^#(a, b, res, t) -> c_25() , 36: e1^#(a, b, res, t) -> c_26(e2^#(a, b, res, <(a, b)), <^#(a, b)) , 37: m4^#(S(x'), S(x), res, t) -> c_27(m5^#(S(x'), S(x), monus(x', x), t), monus^#(x', x)) , 38: equal0^#(a, b) -> c_28(e1^#(a, b, False(), False())) , 39: l12^#(x, y, res, tmp, mtmp, t) -> c_29(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , 40: e8^#(a, b, res, t) -> c_30() , 41: l11^#(x, y, res, tmp, mtmp, True()) -> c_32(l12^#(x, y, res, tmp, mtmp, True())) , 42: l11^#(x, y, res, tmp, mtmp, False()) -> c_33(l14^#(x, y, res, tmp, mtmp, False())) , 43: e5^#(a, b, res, t) -> c_34() , 44: l3^#(x, y, res, tmp, mtmp, t) -> c_35(l4^#(x, y, 0(), tmp, mtmp, t)) , 45: l4^#(x', x, res, tmp, mtmp, t) -> c_43(l5^#(x', x, res, tmp, mtmp, False())) , 46: m2^#(a, b, res, False()) -> c_36(m4^#(a, b, res, False())) , 47: m2^#(S(S(x)), b, res, True()) -> c_37() , 48: m2^#(S(0()), b, res, True()) -> c_38() , 49: m2^#(0(), b, res, True()) -> c_39() , 50: m1^#(a, x, res, t) -> c_48(m2^#(a, x, res, False())) , 51: <^#(x, 0()) -> c_51() , 52: <^#(S(x), S(y)) -> c_52(<^#(x, y)) , 53: <^#(0(), S(y)) -> c_53() } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^2)). Strict DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> c_2(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_31(l8^#(x, y, res, equal0(x, y), mtmp, t), equal0^#(x, y)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, False()) -> c_42(l3^#(x, y, res, tmp, mtmp, False())) , l13^#(x, y, res, tmp, True(), t) -> c_4(l16^#(x, y, gcd(S(0()), y), tmp, True(), t), gcd^#(S(0()), y)) , l13^#(x, y, res, tmp, False(), t) -> c_5(l16^#(x, y, gcd(0(), y), tmp, False(), t), gcd^#(0(), y)) , gcd^#(x, y) -> c_9(l1^#(x, y, 0(), False(), False(), False())) , e2^#(a, b, res, True()) -> c_14(e3^#(a, b, res, True())) , e3^#(a, b, res, t) -> c_16(e4^#(a, b, res, <(b, a)), <^#(b, a)) , l14^#(x, y, res, tmp, mtmp, t) -> c_18(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, True(), t) -> c_45(l16^#(x, y, gcd(y, S(0())), tmp, True(), t), gcd^#(y, S(0()))) , l15^#(x, y, res, tmp, False(), t) -> c_46(l16^#(x, y, gcd(y, 0()), tmp, False(), t), gcd^#(y, 0())) , monus^#(a, b) -> c_40(m1^#(a, b, False(), False())) , l8^#(x, y, res, False(), mtmp, t) -> c_24(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_44(l11^#(x, y, res, tmp, mtmp, <(x, y)), <^#(x, y)) , e1^#(a, b, res, t) -> c_26(e2^#(a, b, res, <(a, b)), <^#(a, b)) , m4^#(S(x'), S(x), res, t) -> c_27(m5^#(S(x'), S(x), monus(x', x), t), monus^#(x', x)) , equal0^#(a, b) -> c_28(e1^#(a, b, False(), False())) , l12^#(x, y, res, tmp, mtmp, t) -> c_29(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l11^#(x, y, res, tmp, mtmp, True()) -> c_32(l12^#(x, y, res, tmp, mtmp, True())) , l11^#(x, y, res, tmp, mtmp, False()) -> c_33(l14^#(x, y, res, tmp, mtmp, False())) , l3^#(x, y, res, tmp, mtmp, t) -> c_35(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_43(l5^#(x', x, res, tmp, mtmp, False())) , m2^#(a, b, res, False()) -> c_36(m4^#(a, b, res, False())) , m1^#(a, x, res, t) -> c_48(m2^#(a, x, res, False())) } Weak DPs: { l5^#(x, y, res, tmp, mtmp, True()) -> c_1() , l2^#(x, y, res, tmp, mtmp, True()) -> c_41() , l16^#(x, y, res, tmp, mtmp, t) -> c_47() , help1^#(S(S(x))) -> c_6() , help1^#(S(0())) -> c_7() , help1^#(0()) -> c_8() , e7^#(a, b, res, t) -> c_10() , m3^#(S(S(x)), b, res, t) -> c_11() , m3^#(S(0()), b, res, t) -> c_12() , m3^#(0(), b, res, t) -> c_13() , e2^#(a, b, res, False()) -> c_15() , e4^#(a, b, res, True()) -> c_49() , e4^#(a, b, res, False()) -> c_50() , <^#(x, 0()) -> c_51() , <^#(S(x), S(y)) -> c_52(<^#(x, y)) , <^#(0(), S(y)) -> c_53() , e6^#(a, b, res, t) -> c_17() , l9^#(res, y, res', tmp, mtmp, t) -> c_19() , bool2Nat^#(True()) -> c_20() , bool2Nat^#(False()) -> c_21() , l6^#(x, y, res, tmp, mtmp, t) -> c_22() , l8^#(res, y, res', True(), mtmp, t) -> c_23() , m5^#(a, b, res, t) -> c_25() , e8^#(a, b, res, t) -> c_30() , e5^#(a, b, res, t) -> c_34() , m2^#(S(S(x)), b, res, True()) -> c_37() , m2^#(S(0()), b, res, True()) -> c_38() , m2^#(0(), b, res, True()) -> c_39() } Weak Trs: { l5(x, y, res, tmp, mtmp, True()) -> 0() , l5(x, y, res, tmp, mtmp, False()) -> l7(x, y, res, tmp, mtmp, False()) , l1(x, y, res, tmp, mtmp, t) -> l2(x, y, res, tmp, mtmp, False()) , l13(x, y, res, tmp, True(), t) -> l16(x, y, gcd(S(0()), y), tmp, True(), t) , l13(x, y, res, tmp, False(), t) -> l16(x, y, gcd(0(), y), tmp, False(), t) , help1(S(S(x))) -> True() , help1(S(0())) -> False() , help1(0()) -> False() , gcd(x, y) -> l1(x, y, 0(), False(), False(), False()) , e7(a, b, res, t) -> False() , m3(S(S(x)), b, res, t) -> True() , m3(S(0()), b, res, t) -> False() , m3(0(), b, res, t) -> False() , e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , e6(a, b, res, t) -> False() , l14(x, y, res, tmp, mtmp, t) -> l15(x, y, res, tmp, monus(x, y), t) , l9(res, y, res', tmp, mtmp, t) -> res , bool2Nat(True()) -> S(0()) , bool2Nat(False()) -> 0() , l6(x, y, res, tmp, mtmp, t) -> 0() , l8(res, y, res', True(), mtmp, t) -> res , l8(x, y, res, False(), mtmp, t) -> l10(x, y, res, False(), mtmp, t) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , l12(x, y, res, tmp, mtmp, t) -> l13(x, y, res, tmp, monus(x, y), t) , e8(a, b, res, t) -> res , l7(x, y, res, tmp, mtmp, t) -> l8(x, y, res, equal0(x, y), mtmp, t) , l11(x, y, res, tmp, mtmp, True()) -> l12(x, y, res, tmp, mtmp, True()) , l11(x, y, res, tmp, mtmp, False()) -> l14(x, y, res, tmp, mtmp, False()) , e5(a, b, res, t) -> True() , l3(x, y, res, tmp, mtmp, t) -> l4(x, y, 0(), tmp, mtmp, t) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , l2(x, y, res, tmp, mtmp, True()) -> res , l2(x, y, res, tmp, mtmp, False()) -> l3(x, y, res, tmp, mtmp, False()) , l4(x', x, res, tmp, mtmp, t) -> l5(x', x, res, tmp, mtmp, False()) , l10(x, y, res, tmp, mtmp, t) -> l11(x, y, res, tmp, mtmp, <(x, y)) , l15(x, y, res, tmp, True(), t) -> l16(x, y, gcd(y, S(0())), tmp, True(), t) , l15(x, y, res, tmp, False(), t) -> l16(x, y, gcd(y, 0()), tmp, False(), t) , l16(x, y, res, tmp, mtmp, t) -> res , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^2)) We estimate the number of application of {9} by applications of Pre({9}) = {8}. Here rules are labeled as follows: DPs: { 1: l5^#(x, y, res, tmp, mtmp, False()) -> c_2(l7^#(x, y, res, tmp, mtmp, False())) , 2: l7^#(x, y, res, tmp, mtmp, t) -> c_31(l8^#(x, y, res, equal0(x, y), mtmp, t), equal0^#(x, y)) , 3: l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , 4: l2^#(x, y, res, tmp, mtmp, False()) -> c_42(l3^#(x, y, res, tmp, mtmp, False())) , 5: l13^#(x, y, res, tmp, True(), t) -> c_4(l16^#(x, y, gcd(S(0()), y), tmp, True(), t), gcd^#(S(0()), y)) , 6: l13^#(x, y, res, tmp, False(), t) -> c_5(l16^#(x, y, gcd(0(), y), tmp, False(), t), gcd^#(0(), y)) , 7: gcd^#(x, y) -> c_9(l1^#(x, y, 0(), False(), False(), False())) , 8: e2^#(a, b, res, True()) -> c_14(e3^#(a, b, res, True())) , 9: e3^#(a, b, res, t) -> c_16(e4^#(a, b, res, <(b, a)), <^#(b, a)) , 10: l14^#(x, y, res, tmp, mtmp, t) -> c_18(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , 11: l15^#(x, y, res, tmp, True(), t) -> c_45(l16^#(x, y, gcd(y, S(0())), tmp, True(), t), gcd^#(y, S(0()))) , 12: l15^#(x, y, res, tmp, False(), t) -> c_46(l16^#(x, y, gcd(y, 0()), tmp, False(), t), gcd^#(y, 0())) , 13: monus^#(a, b) -> c_40(m1^#(a, b, False(), False())) , 14: l8^#(x, y, res, False(), mtmp, t) -> c_24(l10^#(x, y, res, False(), mtmp, t)) , 15: l10^#(x, y, res, tmp, mtmp, t) -> c_44(l11^#(x, y, res, tmp, mtmp, <(x, y)), <^#(x, y)) , 16: e1^#(a, b, res, t) -> c_26(e2^#(a, b, res, <(a, b)), <^#(a, b)) , 17: m4^#(S(x'), S(x), res, t) -> c_27(m5^#(S(x'), S(x), monus(x', x), t), monus^#(x', x)) , 18: equal0^#(a, b) -> c_28(e1^#(a, b, False(), False())) , 19: l12^#(x, y, res, tmp, mtmp, t) -> c_29(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , 20: l11^#(x, y, res, tmp, mtmp, True()) -> c_32(l12^#(x, y, res, tmp, mtmp, True())) , 21: l11^#(x, y, res, tmp, mtmp, False()) -> c_33(l14^#(x, y, res, tmp, mtmp, False())) , 22: l3^#(x, y, res, tmp, mtmp, t) -> c_35(l4^#(x, y, 0(), tmp, mtmp, t)) , 23: l4^#(x', x, res, tmp, mtmp, t) -> c_43(l5^#(x', x, res, tmp, mtmp, False())) , 24: m2^#(a, b, res, False()) -> c_36(m4^#(a, b, res, False())) , 25: m1^#(a, x, res, t) -> c_48(m2^#(a, x, res, False())) , 26: l5^#(x, y, res, tmp, mtmp, True()) -> c_1() , 27: l2^#(x, y, res, tmp, mtmp, True()) -> c_41() , 28: l16^#(x, y, res, tmp, mtmp, t) -> c_47() , 29: help1^#(S(S(x))) -> c_6() , 30: help1^#(S(0())) -> c_7() , 31: help1^#(0()) -> c_8() , 32: e7^#(a, b, res, t) -> c_10() , 33: m3^#(S(S(x)), b, res, t) -> c_11() , 34: m3^#(S(0()), b, res, t) -> c_12() , 35: m3^#(0(), b, res, t) -> c_13() , 36: e2^#(a, b, res, False()) -> c_15() , 37: e4^#(a, b, res, True()) -> c_49() , 38: e4^#(a, b, res, False()) -> c_50() , 39: <^#(x, 0()) -> c_51() , 40: <^#(S(x), S(y)) -> c_52(<^#(x, y)) , 41: <^#(0(), S(y)) -> c_53() , 42: e6^#(a, b, res, t) -> c_17() , 43: l9^#(res, y, res', tmp, mtmp, t) -> c_19() , 44: bool2Nat^#(True()) -> c_20() , 45: bool2Nat^#(False()) -> c_21() , 46: l6^#(x, y, res, tmp, mtmp, t) -> c_22() , 47: l8^#(res, y, res', True(), mtmp, t) -> c_23() , 48: m5^#(a, b, res, t) -> c_25() , 49: e8^#(a, b, res, t) -> c_30() , 50: e5^#(a, b, res, t) -> c_34() , 51: m2^#(S(S(x)), b, res, True()) -> c_37() , 52: m2^#(S(0()), b, res, True()) -> c_38() , 53: m2^#(0(), b, res, True()) -> c_39() } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^2)). Strict DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> c_2(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_31(l8^#(x, y, res, equal0(x, y), mtmp, t), equal0^#(x, y)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, False()) -> c_42(l3^#(x, y, res, tmp, mtmp, False())) , l13^#(x, y, res, tmp, True(), t) -> c_4(l16^#(x, y, gcd(S(0()), y), tmp, True(), t), gcd^#(S(0()), y)) , l13^#(x, y, res, tmp, False(), t) -> c_5(l16^#(x, y, gcd(0(), y), tmp, False(), t), gcd^#(0(), y)) , gcd^#(x, y) -> c_9(l1^#(x, y, 0(), False(), False(), False())) , e2^#(a, b, res, True()) -> c_14(e3^#(a, b, res, True())) , l14^#(x, y, res, tmp, mtmp, t) -> c_18(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, True(), t) -> c_45(l16^#(x, y, gcd(y, S(0())), tmp, True(), t), gcd^#(y, S(0()))) , l15^#(x, y, res, tmp, False(), t) -> c_46(l16^#(x, y, gcd(y, 0()), tmp, False(), t), gcd^#(y, 0())) , monus^#(a, b) -> c_40(m1^#(a, b, False(), False())) , l8^#(x, y, res, False(), mtmp, t) -> c_24(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_44(l11^#(x, y, res, tmp, mtmp, <(x, y)), <^#(x, y)) , e1^#(a, b, res, t) -> c_26(e2^#(a, b, res, <(a, b)), <^#(a, b)) , m4^#(S(x'), S(x), res, t) -> c_27(m5^#(S(x'), S(x), monus(x', x), t), monus^#(x', x)) , equal0^#(a, b) -> c_28(e1^#(a, b, False(), False())) , l12^#(x, y, res, tmp, mtmp, t) -> c_29(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l11^#(x, y, res, tmp, mtmp, True()) -> c_32(l12^#(x, y, res, tmp, mtmp, True())) , l11^#(x, y, res, tmp, mtmp, False()) -> c_33(l14^#(x, y, res, tmp, mtmp, False())) , l3^#(x, y, res, tmp, mtmp, t) -> c_35(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_43(l5^#(x', x, res, tmp, mtmp, False())) , m2^#(a, b, res, False()) -> c_36(m4^#(a, b, res, False())) , m1^#(a, x, res, t) -> c_48(m2^#(a, x, res, False())) } Weak DPs: { l5^#(x, y, res, tmp, mtmp, True()) -> c_1() , l2^#(x, y, res, tmp, mtmp, True()) -> c_41() , l16^#(x, y, res, tmp, mtmp, t) -> c_47() , help1^#(S(S(x))) -> c_6() , help1^#(S(0())) -> c_7() , help1^#(0()) -> c_8() , e7^#(a, b, res, t) -> c_10() , m3^#(S(S(x)), b, res, t) -> c_11() , m3^#(S(0()), b, res, t) -> c_12() , m3^#(0(), b, res, t) -> c_13() , e2^#(a, b, res, False()) -> c_15() , e3^#(a, b, res, t) -> c_16(e4^#(a, b, res, <(b, a)), <^#(b, a)) , e4^#(a, b, res, True()) -> c_49() , e4^#(a, b, res, False()) -> c_50() , <^#(x, 0()) -> c_51() , <^#(S(x), S(y)) -> c_52(<^#(x, y)) , <^#(0(), S(y)) -> c_53() , e6^#(a, b, res, t) -> c_17() , l9^#(res, y, res', tmp, mtmp, t) -> c_19() , bool2Nat^#(True()) -> c_20() , bool2Nat^#(False()) -> c_21() , l6^#(x, y, res, tmp, mtmp, t) -> c_22() , l8^#(res, y, res', True(), mtmp, t) -> c_23() , m5^#(a, b, res, t) -> c_25() , e8^#(a, b, res, t) -> c_30() , e5^#(a, b, res, t) -> c_34() , m2^#(S(S(x)), b, res, True()) -> c_37() , m2^#(S(0()), b, res, True()) -> c_38() , m2^#(0(), b, res, True()) -> c_39() } Weak Trs: { l5(x, y, res, tmp, mtmp, True()) -> 0() , l5(x, y, res, tmp, mtmp, False()) -> l7(x, y, res, tmp, mtmp, False()) , l1(x, y, res, tmp, mtmp, t) -> l2(x, y, res, tmp, mtmp, False()) , l13(x, y, res, tmp, True(), t) -> l16(x, y, gcd(S(0()), y), tmp, True(), t) , l13(x, y, res, tmp, False(), t) -> l16(x, y, gcd(0(), y), tmp, False(), t) , help1(S(S(x))) -> True() , help1(S(0())) -> False() , help1(0()) -> False() , gcd(x, y) -> l1(x, y, 0(), False(), False(), False()) , e7(a, b, res, t) -> False() , m3(S(S(x)), b, res, t) -> True() , m3(S(0()), b, res, t) -> False() , m3(0(), b, res, t) -> False() , e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , e6(a, b, res, t) -> False() , l14(x, y, res, tmp, mtmp, t) -> l15(x, y, res, tmp, monus(x, y), t) , l9(res, y, res', tmp, mtmp, t) -> res , bool2Nat(True()) -> S(0()) , bool2Nat(False()) -> 0() , l6(x, y, res, tmp, mtmp, t) -> 0() , l8(res, y, res', True(), mtmp, t) -> res , l8(x, y, res, False(), mtmp, t) -> l10(x, y, res, False(), mtmp, t) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , l12(x, y, res, tmp, mtmp, t) -> l13(x, y, res, tmp, monus(x, y), t) , e8(a, b, res, t) -> res , l7(x, y, res, tmp, mtmp, t) -> l8(x, y, res, equal0(x, y), mtmp, t) , l11(x, y, res, tmp, mtmp, True()) -> l12(x, y, res, tmp, mtmp, True()) , l11(x, y, res, tmp, mtmp, False()) -> l14(x, y, res, tmp, mtmp, False()) , e5(a, b, res, t) -> True() , l3(x, y, res, tmp, mtmp, t) -> l4(x, y, 0(), tmp, mtmp, t) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , l2(x, y, res, tmp, mtmp, True()) -> res , l2(x, y, res, tmp, mtmp, False()) -> l3(x, y, res, tmp, mtmp, False()) , l4(x', x, res, tmp, mtmp, t) -> l5(x', x, res, tmp, mtmp, False()) , l10(x, y, res, tmp, mtmp, t) -> l11(x, y, res, tmp, mtmp, <(x, y)) , l15(x, y, res, tmp, True(), t) -> l16(x, y, gcd(y, S(0())), tmp, True(), t) , l15(x, y, res, tmp, False(), t) -> l16(x, y, gcd(y, 0()), tmp, False(), t) , l16(x, y, res, tmp, mtmp, t) -> res , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^2)) We estimate the number of application of {8} by applications of Pre({8}) = {15}. Here rules are labeled as follows: DPs: { 1: l5^#(x, y, res, tmp, mtmp, False()) -> c_2(l7^#(x, y, res, tmp, mtmp, False())) , 2: l7^#(x, y, res, tmp, mtmp, t) -> c_31(l8^#(x, y, res, equal0(x, y), mtmp, t), equal0^#(x, y)) , 3: l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , 4: l2^#(x, y, res, tmp, mtmp, False()) -> c_42(l3^#(x, y, res, tmp, mtmp, False())) , 5: l13^#(x, y, res, tmp, True(), t) -> c_4(l16^#(x, y, gcd(S(0()), y), tmp, True(), t), gcd^#(S(0()), y)) , 6: l13^#(x, y, res, tmp, False(), t) -> c_5(l16^#(x, y, gcd(0(), y), tmp, False(), t), gcd^#(0(), y)) , 7: gcd^#(x, y) -> c_9(l1^#(x, y, 0(), False(), False(), False())) , 8: e2^#(a, b, res, True()) -> c_14(e3^#(a, b, res, True())) , 9: l14^#(x, y, res, tmp, mtmp, t) -> c_18(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , 10: l15^#(x, y, res, tmp, True(), t) -> c_45(l16^#(x, y, gcd(y, S(0())), tmp, True(), t), gcd^#(y, S(0()))) , 11: l15^#(x, y, res, tmp, False(), t) -> c_46(l16^#(x, y, gcd(y, 0()), tmp, False(), t), gcd^#(y, 0())) , 12: monus^#(a, b) -> c_40(m1^#(a, b, False(), False())) , 13: l8^#(x, y, res, False(), mtmp, t) -> c_24(l10^#(x, y, res, False(), mtmp, t)) , 14: l10^#(x, y, res, tmp, mtmp, t) -> c_44(l11^#(x, y, res, tmp, mtmp, <(x, y)), <^#(x, y)) , 15: e1^#(a, b, res, t) -> c_26(e2^#(a, b, res, <(a, b)), <^#(a, b)) , 16: m4^#(S(x'), S(x), res, t) -> c_27(m5^#(S(x'), S(x), monus(x', x), t), monus^#(x', x)) , 17: equal0^#(a, b) -> c_28(e1^#(a, b, False(), False())) , 18: l12^#(x, y, res, tmp, mtmp, t) -> c_29(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , 19: l11^#(x, y, res, tmp, mtmp, True()) -> c_32(l12^#(x, y, res, tmp, mtmp, True())) , 20: l11^#(x, y, res, tmp, mtmp, False()) -> c_33(l14^#(x, y, res, tmp, mtmp, False())) , 21: l3^#(x, y, res, tmp, mtmp, t) -> c_35(l4^#(x, y, 0(), tmp, mtmp, t)) , 22: l4^#(x', x, res, tmp, mtmp, t) -> c_43(l5^#(x', x, res, tmp, mtmp, False())) , 23: m2^#(a, b, res, False()) -> c_36(m4^#(a, b, res, False())) , 24: m1^#(a, x, res, t) -> c_48(m2^#(a, x, res, False())) , 25: l5^#(x, y, res, tmp, mtmp, True()) -> c_1() , 26: l2^#(x, y, res, tmp, mtmp, True()) -> c_41() , 27: l16^#(x, y, res, tmp, mtmp, t) -> c_47() , 28: help1^#(S(S(x))) -> c_6() , 29: help1^#(S(0())) -> c_7() , 30: help1^#(0()) -> c_8() , 31: e7^#(a, b, res, t) -> c_10() , 32: m3^#(S(S(x)), b, res, t) -> c_11() , 33: m3^#(S(0()), b, res, t) -> c_12() , 34: m3^#(0(), b, res, t) -> c_13() , 35: e2^#(a, b, res, False()) -> c_15() , 36: e3^#(a, b, res, t) -> c_16(e4^#(a, b, res, <(b, a)), <^#(b, a)) , 37: e4^#(a, b, res, True()) -> c_49() , 38: e4^#(a, b, res, False()) -> c_50() , 39: <^#(x, 0()) -> c_51() , 40: <^#(S(x), S(y)) -> c_52(<^#(x, y)) , 41: <^#(0(), S(y)) -> c_53() , 42: e6^#(a, b, res, t) -> c_17() , 43: l9^#(res, y, res', tmp, mtmp, t) -> c_19() , 44: bool2Nat^#(True()) -> c_20() , 45: bool2Nat^#(False()) -> c_21() , 46: l6^#(x, y, res, tmp, mtmp, t) -> c_22() , 47: l8^#(res, y, res', True(), mtmp, t) -> c_23() , 48: m5^#(a, b, res, t) -> c_25() , 49: e8^#(a, b, res, t) -> c_30() , 50: e5^#(a, b, res, t) -> c_34() , 51: m2^#(S(S(x)), b, res, True()) -> c_37() , 52: m2^#(S(0()), b, res, True()) -> c_38() , 53: m2^#(0(), b, res, True()) -> c_39() } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^2)). Strict DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> c_2(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_31(l8^#(x, y, res, equal0(x, y), mtmp, t), equal0^#(x, y)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, False()) -> c_42(l3^#(x, y, res, tmp, mtmp, False())) , l13^#(x, y, res, tmp, True(), t) -> c_4(l16^#(x, y, gcd(S(0()), y), tmp, True(), t), gcd^#(S(0()), y)) , l13^#(x, y, res, tmp, False(), t) -> c_5(l16^#(x, y, gcd(0(), y), tmp, False(), t), gcd^#(0(), y)) , gcd^#(x, y) -> c_9(l1^#(x, y, 0(), False(), False(), False())) , l14^#(x, y, res, tmp, mtmp, t) -> c_18(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, True(), t) -> c_45(l16^#(x, y, gcd(y, S(0())), tmp, True(), t), gcd^#(y, S(0()))) , l15^#(x, y, res, tmp, False(), t) -> c_46(l16^#(x, y, gcd(y, 0()), tmp, False(), t), gcd^#(y, 0())) , monus^#(a, b) -> c_40(m1^#(a, b, False(), False())) , l8^#(x, y, res, False(), mtmp, t) -> c_24(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_44(l11^#(x, y, res, tmp, mtmp, <(x, y)), <^#(x, y)) , e1^#(a, b, res, t) -> c_26(e2^#(a, b, res, <(a, b)), <^#(a, b)) , m4^#(S(x'), S(x), res, t) -> c_27(m5^#(S(x'), S(x), monus(x', x), t), monus^#(x', x)) , equal0^#(a, b) -> c_28(e1^#(a, b, False(), False())) , l12^#(x, y, res, tmp, mtmp, t) -> c_29(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l11^#(x, y, res, tmp, mtmp, True()) -> c_32(l12^#(x, y, res, tmp, mtmp, True())) , l11^#(x, y, res, tmp, mtmp, False()) -> c_33(l14^#(x, y, res, tmp, mtmp, False())) , l3^#(x, y, res, tmp, mtmp, t) -> c_35(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_43(l5^#(x', x, res, tmp, mtmp, False())) , m2^#(a, b, res, False()) -> c_36(m4^#(a, b, res, False())) , m1^#(a, x, res, t) -> c_48(m2^#(a, x, res, False())) } Weak DPs: { l5^#(x, y, res, tmp, mtmp, True()) -> c_1() , l2^#(x, y, res, tmp, mtmp, True()) -> c_41() , l16^#(x, y, res, tmp, mtmp, t) -> c_47() , help1^#(S(S(x))) -> c_6() , help1^#(S(0())) -> c_7() , help1^#(0()) -> c_8() , e7^#(a, b, res, t) -> c_10() , m3^#(S(S(x)), b, res, t) -> c_11() , m3^#(S(0()), b, res, t) -> c_12() , m3^#(0(), b, res, t) -> c_13() , e2^#(a, b, res, True()) -> c_14(e3^#(a, b, res, True())) , e2^#(a, b, res, False()) -> c_15() , e3^#(a, b, res, t) -> c_16(e4^#(a, b, res, <(b, a)), <^#(b, a)) , e4^#(a, b, res, True()) -> c_49() , e4^#(a, b, res, False()) -> c_50() , <^#(x, 0()) -> c_51() , <^#(S(x), S(y)) -> c_52(<^#(x, y)) , <^#(0(), S(y)) -> c_53() , e6^#(a, b, res, t) -> c_17() , l9^#(res, y, res', tmp, mtmp, t) -> c_19() , bool2Nat^#(True()) -> c_20() , bool2Nat^#(False()) -> c_21() , l6^#(x, y, res, tmp, mtmp, t) -> c_22() , l8^#(res, y, res', True(), mtmp, t) -> c_23() , m5^#(a, b, res, t) -> c_25() , e8^#(a, b, res, t) -> c_30() , e5^#(a, b, res, t) -> c_34() , m2^#(S(S(x)), b, res, True()) -> c_37() , m2^#(S(0()), b, res, True()) -> c_38() , m2^#(0(), b, res, True()) -> c_39() } Weak Trs: { l5(x, y, res, tmp, mtmp, True()) -> 0() , l5(x, y, res, tmp, mtmp, False()) -> l7(x, y, res, tmp, mtmp, False()) , l1(x, y, res, tmp, mtmp, t) -> l2(x, y, res, tmp, mtmp, False()) , l13(x, y, res, tmp, True(), t) -> l16(x, y, gcd(S(0()), y), tmp, True(), t) , l13(x, y, res, tmp, False(), t) -> l16(x, y, gcd(0(), y), tmp, False(), t) , help1(S(S(x))) -> True() , help1(S(0())) -> False() , help1(0()) -> False() , gcd(x, y) -> l1(x, y, 0(), False(), False(), False()) , e7(a, b, res, t) -> False() , m3(S(S(x)), b, res, t) -> True() , m3(S(0()), b, res, t) -> False() , m3(0(), b, res, t) -> False() , e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , e6(a, b, res, t) -> False() , l14(x, y, res, tmp, mtmp, t) -> l15(x, y, res, tmp, monus(x, y), t) , l9(res, y, res', tmp, mtmp, t) -> res , bool2Nat(True()) -> S(0()) , bool2Nat(False()) -> 0() , l6(x, y, res, tmp, mtmp, t) -> 0() , l8(res, y, res', True(), mtmp, t) -> res , l8(x, y, res, False(), mtmp, t) -> l10(x, y, res, False(), mtmp, t) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , l12(x, y, res, tmp, mtmp, t) -> l13(x, y, res, tmp, monus(x, y), t) , e8(a, b, res, t) -> res , l7(x, y, res, tmp, mtmp, t) -> l8(x, y, res, equal0(x, y), mtmp, t) , l11(x, y, res, tmp, mtmp, True()) -> l12(x, y, res, tmp, mtmp, True()) , l11(x, y, res, tmp, mtmp, False()) -> l14(x, y, res, tmp, mtmp, False()) , e5(a, b, res, t) -> True() , l3(x, y, res, tmp, mtmp, t) -> l4(x, y, 0(), tmp, mtmp, t) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , l2(x, y, res, tmp, mtmp, True()) -> res , l2(x, y, res, tmp, mtmp, False()) -> l3(x, y, res, tmp, mtmp, False()) , l4(x', x, res, tmp, mtmp, t) -> l5(x', x, res, tmp, mtmp, False()) , l10(x, y, res, tmp, mtmp, t) -> l11(x, y, res, tmp, mtmp, <(x, y)) , l15(x, y, res, tmp, True(), t) -> l16(x, y, gcd(y, S(0())), tmp, True(), t) , l15(x, y, res, tmp, False(), t) -> l16(x, y, gcd(y, 0()), tmp, False(), t) , l16(x, y, res, tmp, mtmp, t) -> res , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^2)) We estimate the number of application of {14} by applications of Pre({14}) = {16}. Here rules are labeled as follows: DPs: { 1: l5^#(x, y, res, tmp, mtmp, False()) -> c_2(l7^#(x, y, res, tmp, mtmp, False())) , 2: l7^#(x, y, res, tmp, mtmp, t) -> c_31(l8^#(x, y, res, equal0(x, y), mtmp, t), equal0^#(x, y)) , 3: l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , 4: l2^#(x, y, res, tmp, mtmp, False()) -> c_42(l3^#(x, y, res, tmp, mtmp, False())) , 5: l13^#(x, y, res, tmp, True(), t) -> c_4(l16^#(x, y, gcd(S(0()), y), tmp, True(), t), gcd^#(S(0()), y)) , 6: l13^#(x, y, res, tmp, False(), t) -> c_5(l16^#(x, y, gcd(0(), y), tmp, False(), t), gcd^#(0(), y)) , 7: gcd^#(x, y) -> c_9(l1^#(x, y, 0(), False(), False(), False())) , 8: l14^#(x, y, res, tmp, mtmp, t) -> c_18(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , 9: l15^#(x, y, res, tmp, True(), t) -> c_45(l16^#(x, y, gcd(y, S(0())), tmp, True(), t), gcd^#(y, S(0()))) , 10: l15^#(x, y, res, tmp, False(), t) -> c_46(l16^#(x, y, gcd(y, 0()), tmp, False(), t), gcd^#(y, 0())) , 11: monus^#(a, b) -> c_40(m1^#(a, b, False(), False())) , 12: l8^#(x, y, res, False(), mtmp, t) -> c_24(l10^#(x, y, res, False(), mtmp, t)) , 13: l10^#(x, y, res, tmp, mtmp, t) -> c_44(l11^#(x, y, res, tmp, mtmp, <(x, y)), <^#(x, y)) , 14: e1^#(a, b, res, t) -> c_26(e2^#(a, b, res, <(a, b)), <^#(a, b)) , 15: m4^#(S(x'), S(x), res, t) -> c_27(m5^#(S(x'), S(x), monus(x', x), t), monus^#(x', x)) , 16: equal0^#(a, b) -> c_28(e1^#(a, b, False(), False())) , 17: l12^#(x, y, res, tmp, mtmp, t) -> c_29(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , 18: l11^#(x, y, res, tmp, mtmp, True()) -> c_32(l12^#(x, y, res, tmp, mtmp, True())) , 19: l11^#(x, y, res, tmp, mtmp, False()) -> c_33(l14^#(x, y, res, tmp, mtmp, False())) , 20: l3^#(x, y, res, tmp, mtmp, t) -> c_35(l4^#(x, y, 0(), tmp, mtmp, t)) , 21: l4^#(x', x, res, tmp, mtmp, t) -> c_43(l5^#(x', x, res, tmp, mtmp, False())) , 22: m2^#(a, b, res, False()) -> c_36(m4^#(a, b, res, False())) , 23: m1^#(a, x, res, t) -> c_48(m2^#(a, x, res, False())) , 24: l5^#(x, y, res, tmp, mtmp, True()) -> c_1() , 25: l2^#(x, y, res, tmp, mtmp, True()) -> c_41() , 26: l16^#(x, y, res, tmp, mtmp, t) -> c_47() , 27: help1^#(S(S(x))) -> c_6() , 28: help1^#(S(0())) -> c_7() , 29: help1^#(0()) -> c_8() , 30: e7^#(a, b, res, t) -> c_10() , 31: m3^#(S(S(x)), b, res, t) -> c_11() , 32: m3^#(S(0()), b, res, t) -> c_12() , 33: m3^#(0(), b, res, t) -> c_13() , 34: e2^#(a, b, res, True()) -> c_14(e3^#(a, b, res, True())) , 35: e2^#(a, b, res, False()) -> c_15() , 36: e3^#(a, b, res, t) -> c_16(e4^#(a, b, res, <(b, a)), <^#(b, a)) , 37: e4^#(a, b, res, True()) -> c_49() , 38: e4^#(a, b, res, False()) -> c_50() , 39: <^#(x, 0()) -> c_51() , 40: <^#(S(x), S(y)) -> c_52(<^#(x, y)) , 41: <^#(0(), S(y)) -> c_53() , 42: e6^#(a, b, res, t) -> c_17() , 43: l9^#(res, y, res', tmp, mtmp, t) -> c_19() , 44: bool2Nat^#(True()) -> c_20() , 45: bool2Nat^#(False()) -> c_21() , 46: l6^#(x, y, res, tmp, mtmp, t) -> c_22() , 47: l8^#(res, y, res', True(), mtmp, t) -> c_23() , 48: m5^#(a, b, res, t) -> c_25() , 49: e8^#(a, b, res, t) -> c_30() , 50: e5^#(a, b, res, t) -> c_34() , 51: m2^#(S(S(x)), b, res, True()) -> c_37() , 52: m2^#(S(0()), b, res, True()) -> c_38() , 53: m2^#(0(), b, res, True()) -> c_39() } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^2)). Strict DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> c_2(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_31(l8^#(x, y, res, equal0(x, y), mtmp, t), equal0^#(x, y)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, False()) -> c_42(l3^#(x, y, res, tmp, mtmp, False())) , l13^#(x, y, res, tmp, True(), t) -> c_4(l16^#(x, y, gcd(S(0()), y), tmp, True(), t), gcd^#(S(0()), y)) , l13^#(x, y, res, tmp, False(), t) -> c_5(l16^#(x, y, gcd(0(), y), tmp, False(), t), gcd^#(0(), y)) , gcd^#(x, y) -> c_9(l1^#(x, y, 0(), False(), False(), False())) , l14^#(x, y, res, tmp, mtmp, t) -> c_18(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, True(), t) -> c_45(l16^#(x, y, gcd(y, S(0())), tmp, True(), t), gcd^#(y, S(0()))) , l15^#(x, y, res, tmp, False(), t) -> c_46(l16^#(x, y, gcd(y, 0()), tmp, False(), t), gcd^#(y, 0())) , monus^#(a, b) -> c_40(m1^#(a, b, False(), False())) , l8^#(x, y, res, False(), mtmp, t) -> c_24(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_44(l11^#(x, y, res, tmp, mtmp, <(x, y)), <^#(x, y)) , m4^#(S(x'), S(x), res, t) -> c_27(m5^#(S(x'), S(x), monus(x', x), t), monus^#(x', x)) , equal0^#(a, b) -> c_28(e1^#(a, b, False(), False())) , l12^#(x, y, res, tmp, mtmp, t) -> c_29(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l11^#(x, y, res, tmp, mtmp, True()) -> c_32(l12^#(x, y, res, tmp, mtmp, True())) , l11^#(x, y, res, tmp, mtmp, False()) -> c_33(l14^#(x, y, res, tmp, mtmp, False())) , l3^#(x, y, res, tmp, mtmp, t) -> c_35(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_43(l5^#(x', x, res, tmp, mtmp, False())) , m2^#(a, b, res, False()) -> c_36(m4^#(a, b, res, False())) , m1^#(a, x, res, t) -> c_48(m2^#(a, x, res, False())) } Weak DPs: { l5^#(x, y, res, tmp, mtmp, True()) -> c_1() , l2^#(x, y, res, tmp, mtmp, True()) -> c_41() , l16^#(x, y, res, tmp, mtmp, t) -> c_47() , help1^#(S(S(x))) -> c_6() , help1^#(S(0())) -> c_7() , help1^#(0()) -> c_8() , e7^#(a, b, res, t) -> c_10() , m3^#(S(S(x)), b, res, t) -> c_11() , m3^#(S(0()), b, res, t) -> c_12() , m3^#(0(), b, res, t) -> c_13() , e2^#(a, b, res, True()) -> c_14(e3^#(a, b, res, True())) , e2^#(a, b, res, False()) -> c_15() , e3^#(a, b, res, t) -> c_16(e4^#(a, b, res, <(b, a)), <^#(b, a)) , e4^#(a, b, res, True()) -> c_49() , e4^#(a, b, res, False()) -> c_50() , <^#(x, 0()) -> c_51() , <^#(S(x), S(y)) -> c_52(<^#(x, y)) , <^#(0(), S(y)) -> c_53() , e6^#(a, b, res, t) -> c_17() , l9^#(res, y, res', tmp, mtmp, t) -> c_19() , bool2Nat^#(True()) -> c_20() , bool2Nat^#(False()) -> c_21() , l6^#(x, y, res, tmp, mtmp, t) -> c_22() , l8^#(res, y, res', True(), mtmp, t) -> c_23() , m5^#(a, b, res, t) -> c_25() , e1^#(a, b, res, t) -> c_26(e2^#(a, b, res, <(a, b)), <^#(a, b)) , e8^#(a, b, res, t) -> c_30() , e5^#(a, b, res, t) -> c_34() , m2^#(S(S(x)), b, res, True()) -> c_37() , m2^#(S(0()), b, res, True()) -> c_38() , m2^#(0(), b, res, True()) -> c_39() } Weak Trs: { l5(x, y, res, tmp, mtmp, True()) -> 0() , l5(x, y, res, tmp, mtmp, False()) -> l7(x, y, res, tmp, mtmp, False()) , l1(x, y, res, tmp, mtmp, t) -> l2(x, y, res, tmp, mtmp, False()) , l13(x, y, res, tmp, True(), t) -> l16(x, y, gcd(S(0()), y), tmp, True(), t) , l13(x, y, res, tmp, False(), t) -> l16(x, y, gcd(0(), y), tmp, False(), t) , help1(S(S(x))) -> True() , help1(S(0())) -> False() , help1(0()) -> False() , gcd(x, y) -> l1(x, y, 0(), False(), False(), False()) , e7(a, b, res, t) -> False() , m3(S(S(x)), b, res, t) -> True() , m3(S(0()), b, res, t) -> False() , m3(0(), b, res, t) -> False() , e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , e6(a, b, res, t) -> False() , l14(x, y, res, tmp, mtmp, t) -> l15(x, y, res, tmp, monus(x, y), t) , l9(res, y, res', tmp, mtmp, t) -> res , bool2Nat(True()) -> S(0()) , bool2Nat(False()) -> 0() , l6(x, y, res, tmp, mtmp, t) -> 0() , l8(res, y, res', True(), mtmp, t) -> res , l8(x, y, res, False(), mtmp, t) -> l10(x, y, res, False(), mtmp, t) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , l12(x, y, res, tmp, mtmp, t) -> l13(x, y, res, tmp, monus(x, y), t) , e8(a, b, res, t) -> res , l7(x, y, res, tmp, mtmp, t) -> l8(x, y, res, equal0(x, y), mtmp, t) , l11(x, y, res, tmp, mtmp, True()) -> l12(x, y, res, tmp, mtmp, True()) , l11(x, y, res, tmp, mtmp, False()) -> l14(x, y, res, tmp, mtmp, False()) , e5(a, b, res, t) -> True() , l3(x, y, res, tmp, mtmp, t) -> l4(x, y, 0(), tmp, mtmp, t) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , l2(x, y, res, tmp, mtmp, True()) -> res , l2(x, y, res, tmp, mtmp, False()) -> l3(x, y, res, tmp, mtmp, False()) , l4(x', x, res, tmp, mtmp, t) -> l5(x', x, res, tmp, mtmp, False()) , l10(x, y, res, tmp, mtmp, t) -> l11(x, y, res, tmp, mtmp, <(x, y)) , l15(x, y, res, tmp, True(), t) -> l16(x, y, gcd(y, S(0())), tmp, True(), t) , l15(x, y, res, tmp, False(), t) -> l16(x, y, gcd(y, 0()), tmp, False(), t) , l16(x, y, res, tmp, mtmp, t) -> res , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^2)) We estimate the number of application of {15} by applications of Pre({15}) = {2}. Here rules are labeled as follows: DPs: { 1: l5^#(x, y, res, tmp, mtmp, False()) -> c_2(l7^#(x, y, res, tmp, mtmp, False())) , 2: l7^#(x, y, res, tmp, mtmp, t) -> c_31(l8^#(x, y, res, equal0(x, y), mtmp, t), equal0^#(x, y)) , 3: l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , 4: l2^#(x, y, res, tmp, mtmp, False()) -> c_42(l3^#(x, y, res, tmp, mtmp, False())) , 5: l13^#(x, y, res, tmp, True(), t) -> c_4(l16^#(x, y, gcd(S(0()), y), tmp, True(), t), gcd^#(S(0()), y)) , 6: l13^#(x, y, res, tmp, False(), t) -> c_5(l16^#(x, y, gcd(0(), y), tmp, False(), t), gcd^#(0(), y)) , 7: gcd^#(x, y) -> c_9(l1^#(x, y, 0(), False(), False(), False())) , 8: l14^#(x, y, res, tmp, mtmp, t) -> c_18(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , 9: l15^#(x, y, res, tmp, True(), t) -> c_45(l16^#(x, y, gcd(y, S(0())), tmp, True(), t), gcd^#(y, S(0()))) , 10: l15^#(x, y, res, tmp, False(), t) -> c_46(l16^#(x, y, gcd(y, 0()), tmp, False(), t), gcd^#(y, 0())) , 11: monus^#(a, b) -> c_40(m1^#(a, b, False(), False())) , 12: l8^#(x, y, res, False(), mtmp, t) -> c_24(l10^#(x, y, res, False(), mtmp, t)) , 13: l10^#(x, y, res, tmp, mtmp, t) -> c_44(l11^#(x, y, res, tmp, mtmp, <(x, y)), <^#(x, y)) , 14: m4^#(S(x'), S(x), res, t) -> c_27(m5^#(S(x'), S(x), monus(x', x), t), monus^#(x', x)) , 15: equal0^#(a, b) -> c_28(e1^#(a, b, False(), False())) , 16: l12^#(x, y, res, tmp, mtmp, t) -> c_29(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , 17: l11^#(x, y, res, tmp, mtmp, True()) -> c_32(l12^#(x, y, res, tmp, mtmp, True())) , 18: l11^#(x, y, res, tmp, mtmp, False()) -> c_33(l14^#(x, y, res, tmp, mtmp, False())) , 19: l3^#(x, y, res, tmp, mtmp, t) -> c_35(l4^#(x, y, 0(), tmp, mtmp, t)) , 20: l4^#(x', x, res, tmp, mtmp, t) -> c_43(l5^#(x', x, res, tmp, mtmp, False())) , 21: m2^#(a, b, res, False()) -> c_36(m4^#(a, b, res, False())) , 22: m1^#(a, x, res, t) -> c_48(m2^#(a, x, res, False())) , 23: l5^#(x, y, res, tmp, mtmp, True()) -> c_1() , 24: l2^#(x, y, res, tmp, mtmp, True()) -> c_41() , 25: l16^#(x, y, res, tmp, mtmp, t) -> c_47() , 26: help1^#(S(S(x))) -> c_6() , 27: help1^#(S(0())) -> c_7() , 28: help1^#(0()) -> c_8() , 29: e7^#(a, b, res, t) -> c_10() , 30: m3^#(S(S(x)), b, res, t) -> c_11() , 31: m3^#(S(0()), b, res, t) -> c_12() , 32: m3^#(0(), b, res, t) -> c_13() , 33: e2^#(a, b, res, True()) -> c_14(e3^#(a, b, res, True())) , 34: e2^#(a, b, res, False()) -> c_15() , 35: e3^#(a, b, res, t) -> c_16(e4^#(a, b, res, <(b, a)), <^#(b, a)) , 36: e4^#(a, b, res, True()) -> c_49() , 37: e4^#(a, b, res, False()) -> c_50() , 38: <^#(x, 0()) -> c_51() , 39: <^#(S(x), S(y)) -> c_52(<^#(x, y)) , 40: <^#(0(), S(y)) -> c_53() , 41: e6^#(a, b, res, t) -> c_17() , 42: l9^#(res, y, res', tmp, mtmp, t) -> c_19() , 43: bool2Nat^#(True()) -> c_20() , 44: bool2Nat^#(False()) -> c_21() , 45: l6^#(x, y, res, tmp, mtmp, t) -> c_22() , 46: l8^#(res, y, res', True(), mtmp, t) -> c_23() , 47: m5^#(a, b, res, t) -> c_25() , 48: e1^#(a, b, res, t) -> c_26(e2^#(a, b, res, <(a, b)), <^#(a, b)) , 49: e8^#(a, b, res, t) -> c_30() , 50: e5^#(a, b, res, t) -> c_34() , 51: m2^#(S(S(x)), b, res, True()) -> c_37() , 52: m2^#(S(0()), b, res, True()) -> c_38() , 53: m2^#(0(), b, res, True()) -> c_39() } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^2)). Strict DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> c_2(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_31(l8^#(x, y, res, equal0(x, y), mtmp, t), equal0^#(x, y)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, False()) -> c_42(l3^#(x, y, res, tmp, mtmp, False())) , l13^#(x, y, res, tmp, True(), t) -> c_4(l16^#(x, y, gcd(S(0()), y), tmp, True(), t), gcd^#(S(0()), y)) , l13^#(x, y, res, tmp, False(), t) -> c_5(l16^#(x, y, gcd(0(), y), tmp, False(), t), gcd^#(0(), y)) , gcd^#(x, y) -> c_9(l1^#(x, y, 0(), False(), False(), False())) , l14^#(x, y, res, tmp, mtmp, t) -> c_18(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, True(), t) -> c_45(l16^#(x, y, gcd(y, S(0())), tmp, True(), t), gcd^#(y, S(0()))) , l15^#(x, y, res, tmp, False(), t) -> c_46(l16^#(x, y, gcd(y, 0()), tmp, False(), t), gcd^#(y, 0())) , monus^#(a, b) -> c_40(m1^#(a, b, False(), False())) , l8^#(x, y, res, False(), mtmp, t) -> c_24(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_44(l11^#(x, y, res, tmp, mtmp, <(x, y)), <^#(x, y)) , m4^#(S(x'), S(x), res, t) -> c_27(m5^#(S(x'), S(x), monus(x', x), t), monus^#(x', x)) , l12^#(x, y, res, tmp, mtmp, t) -> c_29(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l11^#(x, y, res, tmp, mtmp, True()) -> c_32(l12^#(x, y, res, tmp, mtmp, True())) , l11^#(x, y, res, tmp, mtmp, False()) -> c_33(l14^#(x, y, res, tmp, mtmp, False())) , l3^#(x, y, res, tmp, mtmp, t) -> c_35(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_43(l5^#(x', x, res, tmp, mtmp, False())) , m2^#(a, b, res, False()) -> c_36(m4^#(a, b, res, False())) , m1^#(a, x, res, t) -> c_48(m2^#(a, x, res, False())) } Weak DPs: { l5^#(x, y, res, tmp, mtmp, True()) -> c_1() , l2^#(x, y, res, tmp, mtmp, True()) -> c_41() , l16^#(x, y, res, tmp, mtmp, t) -> c_47() , help1^#(S(S(x))) -> c_6() , help1^#(S(0())) -> c_7() , help1^#(0()) -> c_8() , e7^#(a, b, res, t) -> c_10() , m3^#(S(S(x)), b, res, t) -> c_11() , m3^#(S(0()), b, res, t) -> c_12() , m3^#(0(), b, res, t) -> c_13() , e2^#(a, b, res, True()) -> c_14(e3^#(a, b, res, True())) , e2^#(a, b, res, False()) -> c_15() , e3^#(a, b, res, t) -> c_16(e4^#(a, b, res, <(b, a)), <^#(b, a)) , e4^#(a, b, res, True()) -> c_49() , e4^#(a, b, res, False()) -> c_50() , <^#(x, 0()) -> c_51() , <^#(S(x), S(y)) -> c_52(<^#(x, y)) , <^#(0(), S(y)) -> c_53() , e6^#(a, b, res, t) -> c_17() , l9^#(res, y, res', tmp, mtmp, t) -> c_19() , bool2Nat^#(True()) -> c_20() , bool2Nat^#(False()) -> c_21() , l6^#(x, y, res, tmp, mtmp, t) -> c_22() , l8^#(res, y, res', True(), mtmp, t) -> c_23() , m5^#(a, b, res, t) -> c_25() , e1^#(a, b, res, t) -> c_26(e2^#(a, b, res, <(a, b)), <^#(a, b)) , equal0^#(a, b) -> c_28(e1^#(a, b, False(), False())) , e8^#(a, b, res, t) -> c_30() , e5^#(a, b, res, t) -> c_34() , m2^#(S(S(x)), b, res, True()) -> c_37() , m2^#(S(0()), b, res, True()) -> c_38() , m2^#(0(), b, res, True()) -> c_39() } Weak Trs: { l5(x, y, res, tmp, mtmp, True()) -> 0() , l5(x, y, res, tmp, mtmp, False()) -> l7(x, y, res, tmp, mtmp, False()) , l1(x, y, res, tmp, mtmp, t) -> l2(x, y, res, tmp, mtmp, False()) , l13(x, y, res, tmp, True(), t) -> l16(x, y, gcd(S(0()), y), tmp, True(), t) , l13(x, y, res, tmp, False(), t) -> l16(x, y, gcd(0(), y), tmp, False(), t) , help1(S(S(x))) -> True() , help1(S(0())) -> False() , help1(0()) -> False() , gcd(x, y) -> l1(x, y, 0(), False(), False(), False()) , e7(a, b, res, t) -> False() , m3(S(S(x)), b, res, t) -> True() , m3(S(0()), b, res, t) -> False() , m3(0(), b, res, t) -> False() , e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , e6(a, b, res, t) -> False() , l14(x, y, res, tmp, mtmp, t) -> l15(x, y, res, tmp, monus(x, y), t) , l9(res, y, res', tmp, mtmp, t) -> res , bool2Nat(True()) -> S(0()) , bool2Nat(False()) -> 0() , l6(x, y, res, tmp, mtmp, t) -> 0() , l8(res, y, res', True(), mtmp, t) -> res , l8(x, y, res, False(), mtmp, t) -> l10(x, y, res, False(), mtmp, t) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , l12(x, y, res, tmp, mtmp, t) -> l13(x, y, res, tmp, monus(x, y), t) , e8(a, b, res, t) -> res , l7(x, y, res, tmp, mtmp, t) -> l8(x, y, res, equal0(x, y), mtmp, t) , l11(x, y, res, tmp, mtmp, True()) -> l12(x, y, res, tmp, mtmp, True()) , l11(x, y, res, tmp, mtmp, False()) -> l14(x, y, res, tmp, mtmp, False()) , e5(a, b, res, t) -> True() , l3(x, y, res, tmp, mtmp, t) -> l4(x, y, 0(), tmp, mtmp, t) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , l2(x, y, res, tmp, mtmp, True()) -> res , l2(x, y, res, tmp, mtmp, False()) -> l3(x, y, res, tmp, mtmp, False()) , l4(x', x, res, tmp, mtmp, t) -> l5(x', x, res, tmp, mtmp, False()) , l10(x, y, res, tmp, mtmp, t) -> l11(x, y, res, tmp, mtmp, <(x, y)) , l15(x, y, res, tmp, True(), t) -> l16(x, y, gcd(y, S(0())), tmp, True(), t) , l15(x, y, res, tmp, False(), t) -> l16(x, y, gcd(y, 0()), tmp, False(), t) , l16(x, y, res, tmp, mtmp, t) -> res , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^2)) The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { l5^#(x, y, res, tmp, mtmp, True()) -> c_1() , l2^#(x, y, res, tmp, mtmp, True()) -> c_41() , l16^#(x, y, res, tmp, mtmp, t) -> c_47() , help1^#(S(S(x))) -> c_6() , help1^#(S(0())) -> c_7() , help1^#(0()) -> c_8() , e7^#(a, b, res, t) -> c_10() , m3^#(S(S(x)), b, res, t) -> c_11() , m3^#(S(0()), b, res, t) -> c_12() , m3^#(0(), b, res, t) -> c_13() , e2^#(a, b, res, True()) -> c_14(e3^#(a, b, res, True())) , e2^#(a, b, res, False()) -> c_15() , e3^#(a, b, res, t) -> c_16(e4^#(a, b, res, <(b, a)), <^#(b, a)) , e4^#(a, b, res, True()) -> c_49() , e4^#(a, b, res, False()) -> c_50() , <^#(x, 0()) -> c_51() , <^#(S(x), S(y)) -> c_52(<^#(x, y)) , <^#(0(), S(y)) -> c_53() , e6^#(a, b, res, t) -> c_17() , l9^#(res, y, res', tmp, mtmp, t) -> c_19() , bool2Nat^#(True()) -> c_20() , bool2Nat^#(False()) -> c_21() , l6^#(x, y, res, tmp, mtmp, t) -> c_22() , l8^#(res, y, res', True(), mtmp, t) -> c_23() , m5^#(a, b, res, t) -> c_25() , e1^#(a, b, res, t) -> c_26(e2^#(a, b, res, <(a, b)), <^#(a, b)) , equal0^#(a, b) -> c_28(e1^#(a, b, False(), False())) , e8^#(a, b, res, t) -> c_30() , e5^#(a, b, res, t) -> c_34() , m2^#(S(S(x)), b, res, True()) -> c_37() , m2^#(S(0()), b, res, True()) -> c_38() , m2^#(0(), b, res, True()) -> c_39() } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^2)). Strict DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> c_2(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_31(l8^#(x, y, res, equal0(x, y), mtmp, t), equal0^#(x, y)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, False()) -> c_42(l3^#(x, y, res, tmp, mtmp, False())) , l13^#(x, y, res, tmp, True(), t) -> c_4(l16^#(x, y, gcd(S(0()), y), tmp, True(), t), gcd^#(S(0()), y)) , l13^#(x, y, res, tmp, False(), t) -> c_5(l16^#(x, y, gcd(0(), y), tmp, False(), t), gcd^#(0(), y)) , gcd^#(x, y) -> c_9(l1^#(x, y, 0(), False(), False(), False())) , l14^#(x, y, res, tmp, mtmp, t) -> c_18(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, True(), t) -> c_45(l16^#(x, y, gcd(y, S(0())), tmp, True(), t), gcd^#(y, S(0()))) , l15^#(x, y, res, tmp, False(), t) -> c_46(l16^#(x, y, gcd(y, 0()), tmp, False(), t), gcd^#(y, 0())) , monus^#(a, b) -> c_40(m1^#(a, b, False(), False())) , l8^#(x, y, res, False(), mtmp, t) -> c_24(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_44(l11^#(x, y, res, tmp, mtmp, <(x, y)), <^#(x, y)) , m4^#(S(x'), S(x), res, t) -> c_27(m5^#(S(x'), S(x), monus(x', x), t), monus^#(x', x)) , l12^#(x, y, res, tmp, mtmp, t) -> c_29(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l11^#(x, y, res, tmp, mtmp, True()) -> c_32(l12^#(x, y, res, tmp, mtmp, True())) , l11^#(x, y, res, tmp, mtmp, False()) -> c_33(l14^#(x, y, res, tmp, mtmp, False())) , l3^#(x, y, res, tmp, mtmp, t) -> c_35(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_43(l5^#(x', x, res, tmp, mtmp, False())) , m2^#(a, b, res, False()) -> c_36(m4^#(a, b, res, False())) , m1^#(a, x, res, t) -> c_48(m2^#(a, x, res, False())) } Weak Trs: { l5(x, y, res, tmp, mtmp, True()) -> 0() , l5(x, y, res, tmp, mtmp, False()) -> l7(x, y, res, tmp, mtmp, False()) , l1(x, y, res, tmp, mtmp, t) -> l2(x, y, res, tmp, mtmp, False()) , l13(x, y, res, tmp, True(), t) -> l16(x, y, gcd(S(0()), y), tmp, True(), t) , l13(x, y, res, tmp, False(), t) -> l16(x, y, gcd(0(), y), tmp, False(), t) , help1(S(S(x))) -> True() , help1(S(0())) -> False() , help1(0()) -> False() , gcd(x, y) -> l1(x, y, 0(), False(), False(), False()) , e7(a, b, res, t) -> False() , m3(S(S(x)), b, res, t) -> True() , m3(S(0()), b, res, t) -> False() , m3(0(), b, res, t) -> False() , e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , e6(a, b, res, t) -> False() , l14(x, y, res, tmp, mtmp, t) -> l15(x, y, res, tmp, monus(x, y), t) , l9(res, y, res', tmp, mtmp, t) -> res , bool2Nat(True()) -> S(0()) , bool2Nat(False()) -> 0() , l6(x, y, res, tmp, mtmp, t) -> 0() , l8(res, y, res', True(), mtmp, t) -> res , l8(x, y, res, False(), mtmp, t) -> l10(x, y, res, False(), mtmp, t) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , l12(x, y, res, tmp, mtmp, t) -> l13(x, y, res, tmp, monus(x, y), t) , e8(a, b, res, t) -> res , l7(x, y, res, tmp, mtmp, t) -> l8(x, y, res, equal0(x, y), mtmp, t) , l11(x, y, res, tmp, mtmp, True()) -> l12(x, y, res, tmp, mtmp, True()) , l11(x, y, res, tmp, mtmp, False()) -> l14(x, y, res, tmp, mtmp, False()) , e5(a, b, res, t) -> True() , l3(x, y, res, tmp, mtmp, t) -> l4(x, y, 0(), tmp, mtmp, t) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , l2(x, y, res, tmp, mtmp, True()) -> res , l2(x, y, res, tmp, mtmp, False()) -> l3(x, y, res, tmp, mtmp, False()) , l4(x', x, res, tmp, mtmp, t) -> l5(x', x, res, tmp, mtmp, False()) , l10(x, y, res, tmp, mtmp, t) -> l11(x, y, res, tmp, mtmp, <(x, y)) , l15(x, y, res, tmp, True(), t) -> l16(x, y, gcd(y, S(0())), tmp, True(), t) , l15(x, y, res, tmp, False(), t) -> l16(x, y, gcd(y, 0()), tmp, False(), t) , l16(x, y, res, tmp, mtmp, t) -> res , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^2)) Due to missing edges in the dependency-graph, the right-hand sides of following rules could be simplified: { l7^#(x, y, res, tmp, mtmp, t) -> c_31(l8^#(x, y, res, equal0(x, y), mtmp, t), equal0^#(x, y)) , l13^#(x, y, res, tmp, True(), t) -> c_4(l16^#(x, y, gcd(S(0()), y), tmp, True(), t), gcd^#(S(0()), y)) , l13^#(x, y, res, tmp, False(), t) -> c_5(l16^#(x, y, gcd(0(), y), tmp, False(), t), gcd^#(0(), y)) , l15^#(x, y, res, tmp, True(), t) -> c_45(l16^#(x, y, gcd(y, S(0())), tmp, True(), t), gcd^#(y, S(0()))) , l15^#(x, y, res, tmp, False(), t) -> c_46(l16^#(x, y, gcd(y, 0()), tmp, False(), t), gcd^#(y, 0())) , l10^#(x, y, res, tmp, mtmp, t) -> c_44(l11^#(x, y, res, tmp, mtmp, <(x, y)), <^#(x, y)) , m4^#(S(x'), S(x), res, t) -> c_27(m5^#(S(x'), S(x), monus(x', x), t), monus^#(x', x)) } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^2)). Strict DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> c_1(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_2(l8^#(x, y, res, equal0(x, y), mtmp, t)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, False()) -> c_4(l3^#(x, y, res, tmp, mtmp, False())) , l13^#(x, y, res, tmp, True(), t) -> c_5(gcd^#(S(0()), y)) , l13^#(x, y, res, tmp, False(), t) -> c_6(gcd^#(0(), y)) , gcd^#(x, y) -> c_7(l1^#(x, y, 0(), False(), False(), False())) , l14^#(x, y, res, tmp, mtmp, t) -> c_8(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, True(), t) -> c_9(gcd^#(y, S(0()))) , l15^#(x, y, res, tmp, False(), t) -> c_10(gcd^#(y, 0())) , monus^#(a, b) -> c_11(m1^#(a, b, False(), False())) , l8^#(x, y, res, False(), mtmp, t) -> c_12(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_13(l11^#(x, y, res, tmp, mtmp, <(x, y))) , m4^#(S(x'), S(x), res, t) -> c_14(monus^#(x', x)) , l12^#(x, y, res, tmp, mtmp, t) -> c_15(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l11^#(x, y, res, tmp, mtmp, True()) -> c_16(l12^#(x, y, res, tmp, mtmp, True())) , l11^#(x, y, res, tmp, mtmp, False()) -> c_17(l14^#(x, y, res, tmp, mtmp, False())) , l3^#(x, y, res, tmp, mtmp, t) -> c_18(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_19(l5^#(x', x, res, tmp, mtmp, False())) , m2^#(a, b, res, False()) -> c_20(m4^#(a, b, res, False())) , m1^#(a, x, res, t) -> c_21(m2^#(a, x, res, False())) } Weak Trs: { l5(x, y, res, tmp, mtmp, True()) -> 0() , l5(x, y, res, tmp, mtmp, False()) -> l7(x, y, res, tmp, mtmp, False()) , l1(x, y, res, tmp, mtmp, t) -> l2(x, y, res, tmp, mtmp, False()) , l13(x, y, res, tmp, True(), t) -> l16(x, y, gcd(S(0()), y), tmp, True(), t) , l13(x, y, res, tmp, False(), t) -> l16(x, y, gcd(0(), y), tmp, False(), t) , help1(S(S(x))) -> True() , help1(S(0())) -> False() , help1(0()) -> False() , gcd(x, y) -> l1(x, y, 0(), False(), False(), False()) , e7(a, b, res, t) -> False() , m3(S(S(x)), b, res, t) -> True() , m3(S(0()), b, res, t) -> False() , m3(0(), b, res, t) -> False() , e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , e6(a, b, res, t) -> False() , l14(x, y, res, tmp, mtmp, t) -> l15(x, y, res, tmp, monus(x, y), t) , l9(res, y, res', tmp, mtmp, t) -> res , bool2Nat(True()) -> S(0()) , bool2Nat(False()) -> 0() , l6(x, y, res, tmp, mtmp, t) -> 0() , l8(res, y, res', True(), mtmp, t) -> res , l8(x, y, res, False(), mtmp, t) -> l10(x, y, res, False(), mtmp, t) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , l12(x, y, res, tmp, mtmp, t) -> l13(x, y, res, tmp, monus(x, y), t) , e8(a, b, res, t) -> res , l7(x, y, res, tmp, mtmp, t) -> l8(x, y, res, equal0(x, y), mtmp, t) , l11(x, y, res, tmp, mtmp, True()) -> l12(x, y, res, tmp, mtmp, True()) , l11(x, y, res, tmp, mtmp, False()) -> l14(x, y, res, tmp, mtmp, False()) , e5(a, b, res, t) -> True() , l3(x, y, res, tmp, mtmp, t) -> l4(x, y, 0(), tmp, mtmp, t) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , l2(x, y, res, tmp, mtmp, True()) -> res , l2(x, y, res, tmp, mtmp, False()) -> l3(x, y, res, tmp, mtmp, False()) , l4(x', x, res, tmp, mtmp, t) -> l5(x', x, res, tmp, mtmp, False()) , l10(x, y, res, tmp, mtmp, t) -> l11(x, y, res, tmp, mtmp, <(x, y)) , l15(x, y, res, tmp, True(), t) -> l16(x, y, gcd(y, S(0())), tmp, True(), t) , l15(x, y, res, tmp, False(), t) -> l16(x, y, gcd(y, 0()), tmp, False(), t) , l16(x, y, res, tmp, mtmp, t) -> res , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^2)) We replace rewrite rules by usable rules: Weak Usable Rules: { e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^2)). Strict DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> c_1(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_2(l8^#(x, y, res, equal0(x, y), mtmp, t)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, False()) -> c_4(l3^#(x, y, res, tmp, mtmp, False())) , l13^#(x, y, res, tmp, True(), t) -> c_5(gcd^#(S(0()), y)) , l13^#(x, y, res, tmp, False(), t) -> c_6(gcd^#(0(), y)) , gcd^#(x, y) -> c_7(l1^#(x, y, 0(), False(), False(), False())) , l14^#(x, y, res, tmp, mtmp, t) -> c_8(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, True(), t) -> c_9(gcd^#(y, S(0()))) , l15^#(x, y, res, tmp, False(), t) -> c_10(gcd^#(y, 0())) , monus^#(a, b) -> c_11(m1^#(a, b, False(), False())) , l8^#(x, y, res, False(), mtmp, t) -> c_12(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_13(l11^#(x, y, res, tmp, mtmp, <(x, y))) , m4^#(S(x'), S(x), res, t) -> c_14(monus^#(x', x)) , l12^#(x, y, res, tmp, mtmp, t) -> c_15(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l11^#(x, y, res, tmp, mtmp, True()) -> c_16(l12^#(x, y, res, tmp, mtmp, True())) , l11^#(x, y, res, tmp, mtmp, False()) -> c_17(l14^#(x, y, res, tmp, mtmp, False())) , l3^#(x, y, res, tmp, mtmp, t) -> c_18(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_19(l5^#(x', x, res, tmp, mtmp, False())) , m2^#(a, b, res, False()) -> c_20(m4^#(a, b, res, False())) , m1^#(a, x, res, t) -> c_21(m2^#(a, x, res, False())) } Weak Trs: { e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^2)) We use the processor 'matrix interpretation of dimension 1' to orient following rules strictly. DPs: { 5: l13^#(x, y, res, tmp, True(), t) -> c_5(gcd^#(S(0()), y)) , 9: l15^#(x, y, res, tmp, True(), t) -> c_9(gcd^#(y, S(0()))) , 14: m4^#(S(x'), S(x), res, t) -> c_14(monus^#(x', x)) } Trs: { <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() } Sub-proof: ---------- The following argument positions are usable: Uargs(c_1) = {1}, Uargs(c_2) = {1}, Uargs(c_3) = {1}, Uargs(c_4) = {1}, Uargs(c_5) = {1}, Uargs(c_6) = {1}, Uargs(c_7) = {1}, Uargs(c_8) = {1, 2}, Uargs(c_9) = {1}, Uargs(c_10) = {1}, Uargs(c_11) = {1}, Uargs(c_12) = {1}, Uargs(c_13) = {1}, Uargs(c_14) = {1}, Uargs(c_15) = {1, 2}, Uargs(c_16) = {1}, Uargs(c_17) = {1}, Uargs(c_18) = {1}, Uargs(c_19) = {1}, Uargs(c_20) = {1}, Uargs(c_21) = {1} TcT has computed the following constructor-based matrix interpretation satisfying not(EDA). [True] = [4] [e2](x1, x2, x3, x4) = [0] [e3](x1, x2, x3, x4) = [0] [m5](x1, x2, x3, x4) = [1] x3 + [0] [<](x1, x2) = [4] x2 + [1] [e1](x1, x2, x3, x4) = [0] [m4](x1, x2, x3, x4) = [0] [equal0](x1, x2) = [1] x1 + [1] x2 + [0] [False] = [0] [m2](x1, x2, x3, x4) = [2] x4 + [0] [monus](x1, x2) = [0] [S](x1) = [1] x1 + [1] [0] = [0] [m1](x1, x2, x3, x4) = [0] [e4](x1, x2, x3, x4) = [0] [l5^#](x1, x2, x3, x4, x5, x6) = [1] x1 + [7] x2 + [0] [l7^#](x1, x2, x3, x4, x5, x6) = [1] x1 + [7] x2 + [0] [l1^#](x1, x2, x3, x4, x5, x6) = [1] x1 + [7] x2 + [0] [l2^#](x1, x2, x3, x4, x5, x6) = [1] x1 + [7] x2 + [0] [l13^#](x1, x2, x3, x4, x5, x6) = [7] x2 + [2] x5 + [0] [gcd^#](x1, x2) = [1] x1 + [7] x2 + [0] [l14^#](x1, x2, x3, x4, x5, x6) = [1] x1 + [7] x2 + [0] [l15^#](x1, x2, x3, x4, x5, x6) = [1] x2 + [2] x5 + [0] [monus^#](x1, x2) = [1] x1 + [0] [l8^#](x1, x2, x3, x4, x5, x6) = [1] x1 + [7] x2 + [0] [l10^#](x1, x2, x3, x4, x5, x6) = [1] x1 + [7] x2 + [0] [m4^#](x1, x2, x3, x4) = [1] x1 + [0] [l12^#](x1, x2, x3, x4, x5, x6) = [1] x1 + [7] x2 + [0] [l11^#](x1, x2, x3, x4, x5, x6) = [1] x1 + [7] x2 + [0] [l3^#](x1, x2, x3, x4, x5, x6) = [1] x1 + [7] x2 + [0] [l4^#](x1, x2, x3, x4, x5, x6) = [1] x1 + [7] x2 + [0] [m2^#](x1, x2, x3, x4) = [1] x1 + [0] [m1^#](x1, x2, x3, x4) = [1] x1 + [0] [c_1](x1) = [1] x1 + [0] [c_2](x1) = [1] x1 + [0] [c_3](x1) = [1] x1 + [0] [c_4](x1) = [1] x1 + [0] [c_5](x1) = [1] x1 + [0] [c_6](x1) = [1] x1 + [0] [c_7](x1) = [1] x1 + [0] [c_8](x1, x2) = [6] x1 + [1] x2 + [0] [c_9](x1) = [1] x1 + [0] [c_10](x1) = [1] x1 + [0] [c_11](x1) = [1] x1 + [0] [c_12](x1) = [1] x1 + [0] [c_13](x1) = [1] x1 + [0] [c_14](x1) = [1] x1 + [0] [c_15](x1, x2) = [1] x1 + [1] x2 + [0] [c_16](x1) = [1] x1 + [0] [c_17](x1) = [1] x1 + [0] [c_18](x1) = [1] x1 + [0] [c_19](x1) = [1] x1 + [0] [c_20](x1) = [1] x1 + [0] [c_21](x1) = [1] x1 + [0] The order satisfies the following ordering constraints: [e2(a, b, res, True())] = [0] >= [0] = [e3(a, b, res, True())] [e2(a, b, res, False())] = [0] >= [0] = [False()] [e3(a, b, res, t)] = [0] >= [0] = [e4(a, b, res, <(b, a))] [m5(a, b, res, t)] = [1] res + [0] >= [1] res + [0] = [res] [<(x, 0())] = [1] > [0] = [False()] [<(S(x), S(y))] = [4] y + [5] > [4] y + [1] = [<(x, y)] [<(0(), S(y))] = [4] y + [5] > [4] = [True()] [e1(a, b, res, t)] = [0] >= [0] = [e2(a, b, res, <(a, b))] [m4(S(x'), S(x), res, t)] = [0] >= [0] = [m5(S(x'), S(x), monus(x', x), t)] [equal0(a, b)] = [1] b + [1] a + [0] >= [0] = [e1(a, b, False(), False())] [m2(a, b, res, False())] = [0] >= [0] = [m4(a, b, res, False())] [m2(S(S(x)), b, res, True())] = [8] > [4] = [True()] [m2(S(0()), b, res, True())] = [8] > [0] = [False()] [m2(0(), b, res, True())] = [8] > [0] = [False()] [monus(a, b)] = [0] >= [0] = [m1(a, b, False(), False())] [m1(a, x, res, t)] = [0] >= [0] = [m2(a, x, res, False())] [e4(a, b, res, True())] = [0] ? [4] = [True()] [e4(a, b, res, False())] = [0] >= [0] = [False()] [l5^#(x, y, res, tmp, mtmp, False())] = [1] x + [7] y + [0] >= [1] x + [7] y + [0] = [c_1(l7^#(x, y, res, tmp, mtmp, False()))] [l7^#(x, y, res, tmp, mtmp, t)] = [1] x + [7] y + [0] >= [1] x + [7] y + [0] = [c_2(l8^#(x, y, res, equal0(x, y), mtmp, t))] [l1^#(x, y, res, tmp, mtmp, t)] = [1] x + [7] y + [0] >= [1] x + [7] y + [0] = [c_3(l2^#(x, y, res, tmp, mtmp, False()))] [l2^#(x, y, res, tmp, mtmp, False())] = [1] x + [7] y + [0] >= [1] x + [7] y + [0] = [c_4(l3^#(x, y, res, tmp, mtmp, False()))] [l13^#(x, y, res, tmp, True(), t)] = [7] y + [8] > [7] y + [1] = [c_5(gcd^#(S(0()), y))] [l13^#(x, y, res, tmp, False(), t)] = [7] y + [0] >= [7] y + [0] = [c_6(gcd^#(0(), y))] [gcd^#(x, y)] = [1] x + [7] y + [0] >= [1] x + [7] y + [0] = [c_7(l1^#(x, y, 0(), False(), False(), False()))] [l14^#(x, y, res, tmp, mtmp, t)] = [1] x + [7] y + [0] >= [1] x + [6] y + [0] = [c_8(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y))] [l15^#(x, y, res, tmp, True(), t)] = [1] y + [8] > [1] y + [7] = [c_9(gcd^#(y, S(0())))] [l15^#(x, y, res, tmp, False(), t)] = [1] y + [0] >= [1] y + [0] = [c_10(gcd^#(y, 0()))] [monus^#(a, b)] = [1] a + [0] >= [1] a + [0] = [c_11(m1^#(a, b, False(), False()))] [l8^#(x, y, res, False(), mtmp, t)] = [1] x + [7] y + [0] >= [1] x + [7] y + [0] = [c_12(l10^#(x, y, res, False(), mtmp, t))] [l10^#(x, y, res, tmp, mtmp, t)] = [1] x + [7] y + [0] >= [1] x + [7] y + [0] = [c_13(l11^#(x, y, res, tmp, mtmp, <(x, y)))] [m4^#(S(x'), S(x), res, t)] = [1] x' + [1] > [1] x' + [0] = [c_14(monus^#(x', x))] [l12^#(x, y, res, tmp, mtmp, t)] = [1] x + [7] y + [0] >= [1] x + [7] y + [0] = [c_15(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y))] [l11^#(x, y, res, tmp, mtmp, True())] = [1] x + [7] y + [0] >= [1] x + [7] y + [0] = [c_16(l12^#(x, y, res, tmp, mtmp, True()))] [l11^#(x, y, res, tmp, mtmp, False())] = [1] x + [7] y + [0] >= [1] x + [7] y + [0] = [c_17(l14^#(x, y, res, tmp, mtmp, False()))] [l3^#(x, y, res, tmp, mtmp, t)] = [1] x + [7] y + [0] >= [1] x + [7] y + [0] = [c_18(l4^#(x, y, 0(), tmp, mtmp, t))] [l4^#(x', x, res, tmp, mtmp, t)] = [7] x + [1] x' + [0] >= [7] x + [1] x' + [0] = [c_19(l5^#(x', x, res, tmp, mtmp, False()))] [m2^#(a, b, res, False())] = [1] a + [0] >= [1] a + [0] = [c_20(m4^#(a, b, res, False()))] [m1^#(a, x, res, t)] = [1] a + [0] >= [1] a + [0] = [c_21(m2^#(a, x, res, False()))] The strictly oriented rules are moved into the weak component. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^2)). Strict DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> c_1(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_2(l8^#(x, y, res, equal0(x, y), mtmp, t)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, False()) -> c_4(l3^#(x, y, res, tmp, mtmp, False())) , l13^#(x, y, res, tmp, False(), t) -> c_6(gcd^#(0(), y)) , gcd^#(x, y) -> c_7(l1^#(x, y, 0(), False(), False(), False())) , l14^#(x, y, res, tmp, mtmp, t) -> c_8(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, False(), t) -> c_10(gcd^#(y, 0())) , monus^#(a, b) -> c_11(m1^#(a, b, False(), False())) , l8^#(x, y, res, False(), mtmp, t) -> c_12(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_13(l11^#(x, y, res, tmp, mtmp, <(x, y))) , l12^#(x, y, res, tmp, mtmp, t) -> c_15(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l11^#(x, y, res, tmp, mtmp, True()) -> c_16(l12^#(x, y, res, tmp, mtmp, True())) , l11^#(x, y, res, tmp, mtmp, False()) -> c_17(l14^#(x, y, res, tmp, mtmp, False())) , l3^#(x, y, res, tmp, mtmp, t) -> c_18(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_19(l5^#(x', x, res, tmp, mtmp, False())) , m2^#(a, b, res, False()) -> c_20(m4^#(a, b, res, False())) , m1^#(a, x, res, t) -> c_21(m2^#(a, x, res, False())) } Weak DPs: { l13^#(x, y, res, tmp, True(), t) -> c_5(gcd^#(S(0()), y)) , l15^#(x, y, res, tmp, True(), t) -> c_9(gcd^#(y, S(0()))) , m4^#(S(x'), S(x), res, t) -> c_14(monus^#(x', x)) } Weak Trs: { e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^2)) We decompose the input problem according to the dependency graph into the upper component { l5^#(x, y, res, tmp, mtmp, False()) -> c_1(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_2(l8^#(x, y, res, equal0(x, y), mtmp, t)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, False()) -> c_4(l3^#(x, y, res, tmp, mtmp, False())) , l13^#(x, y, res, tmp, True(), t) -> c_5(gcd^#(S(0()), y)) , l13^#(x, y, res, tmp, False(), t) -> c_6(gcd^#(0(), y)) , gcd^#(x, y) -> c_7(l1^#(x, y, 0(), False(), False(), False())) , l14^#(x, y, res, tmp, mtmp, t) -> c_8(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, True(), t) -> c_9(gcd^#(y, S(0()))) , l15^#(x, y, res, tmp, False(), t) -> c_10(gcd^#(y, 0())) , l8^#(x, y, res, False(), mtmp, t) -> c_12(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_13(l11^#(x, y, res, tmp, mtmp, <(x, y))) , l12^#(x, y, res, tmp, mtmp, t) -> c_15(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l11^#(x, y, res, tmp, mtmp, True()) -> c_16(l12^#(x, y, res, tmp, mtmp, True())) , l11^#(x, y, res, tmp, mtmp, False()) -> c_17(l14^#(x, y, res, tmp, mtmp, False())) , l3^#(x, y, res, tmp, mtmp, t) -> c_18(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_19(l5^#(x', x, res, tmp, mtmp, False())) } and lower component { monus^#(a, b) -> c_11(m1^#(a, b, False(), False())) , m4^#(S(x'), S(x), res, t) -> c_14(monus^#(x', x)) , m2^#(a, b, res, False()) -> c_20(m4^#(a, b, res, False())) , m1^#(a, x, res, t) -> c_21(m2^#(a, x, res, False())) } Further, following extension rules are added to the lower component. { l5^#(x, y, res, tmp, mtmp, False()) -> l7^#(x, y, res, tmp, mtmp, False()) , l7^#(x, y, res, tmp, mtmp, t) -> l8^#(x, y, res, equal0(x, y), mtmp, t) , l1^#(x, y, res, tmp, mtmp, t) -> l2^#(x, y, res, tmp, mtmp, False()) , l2^#(x, y, res, tmp, mtmp, False()) -> l3^#(x, y, res, tmp, mtmp, False()) , l13^#(x, y, res, tmp, True(), t) -> gcd^#(S(0()), y) , l13^#(x, y, res, tmp, False(), t) -> gcd^#(0(), y) , gcd^#(x, y) -> l1^#(x, y, 0(), False(), False(), False()) , l14^#(x, y, res, tmp, mtmp, t) -> l15^#(x, y, res, tmp, monus(x, y), t) , l14^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , l15^#(x, y, res, tmp, True(), t) -> gcd^#(y, S(0())) , l15^#(x, y, res, tmp, False(), t) -> gcd^#(y, 0()) , l8^#(x, y, res, False(), mtmp, t) -> l10^#(x, y, res, False(), mtmp, t) , l10^#(x, y, res, tmp, mtmp, t) -> l11^#(x, y, res, tmp, mtmp, <(x, y)) , l12^#(x, y, res, tmp, mtmp, t) -> l13^#(x, y, res, tmp, monus(x, y), t) , l12^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , l11^#(x, y, res, tmp, mtmp, True()) -> l12^#(x, y, res, tmp, mtmp, True()) , l11^#(x, y, res, tmp, mtmp, False()) -> l14^#(x, y, res, tmp, mtmp, False()) , l3^#(x, y, res, tmp, mtmp, t) -> l4^#(x, y, 0(), tmp, mtmp, t) , l4^#(x', x, res, tmp, mtmp, t) -> l5^#(x', x, res, tmp, mtmp, False()) } TcT solves the upper component with certificate YES(O(1),O(n^1)). Sub-proof: ---------- We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> c_1(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_2(l8^#(x, y, res, equal0(x, y), mtmp, t)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, False()) -> c_4(l3^#(x, y, res, tmp, mtmp, False())) , l13^#(x, y, res, tmp, False(), t) -> c_6(gcd^#(0(), y)) , gcd^#(x, y) -> c_7(l1^#(x, y, 0(), False(), False(), False())) , l14^#(x, y, res, tmp, mtmp, t) -> c_8(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, False(), t) -> c_10(gcd^#(y, 0())) , l8^#(x, y, res, False(), mtmp, t) -> c_12(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_13(l11^#(x, y, res, tmp, mtmp, <(x, y))) , l12^#(x, y, res, tmp, mtmp, t) -> c_15(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l11^#(x, y, res, tmp, mtmp, True()) -> c_16(l12^#(x, y, res, tmp, mtmp, True())) , l11^#(x, y, res, tmp, mtmp, False()) -> c_17(l14^#(x, y, res, tmp, mtmp, False())) , l3^#(x, y, res, tmp, mtmp, t) -> c_18(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_19(l5^#(x', x, res, tmp, mtmp, False())) } Weak DPs: { l13^#(x, y, res, tmp, True(), t) -> c_5(gcd^#(S(0()), y)) , l15^#(x, y, res, tmp, True(), t) -> c_9(gcd^#(y, S(0()))) } Weak Trs: { e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) We use the processor 'matrix interpretation of dimension 2' to orient following rules strictly. DPs: { 5: l13^#(x, y, res, tmp, False(), t) -> c_6(gcd^#(0(), y)) } Trs: { m2(S(S(x)), b, res, True()) -> True() } Sub-proof: ---------- The following argument positions are usable: Uargs(c_1) = {1}, Uargs(c_2) = {1}, Uargs(c_3) = {1}, Uargs(c_4) = {1}, Uargs(c_5) = {1}, Uargs(c_6) = {1}, Uargs(c_7) = {1}, Uargs(c_8) = {1}, Uargs(c_9) = {1}, Uargs(c_10) = {1}, Uargs(c_12) = {1}, Uargs(c_13) = {1}, Uargs(c_15) = {1}, Uargs(c_16) = {1}, Uargs(c_17) = {1}, Uargs(c_18) = {1}, Uargs(c_19) = {1} TcT has computed the following constructor-based matrix interpretation satisfying not(EDA) and not(IDA(1)). [True] = [7] [7] [e2](x1, x2, x3, x4) = [7] [7] [e3](x1, x2, x3, x4) = [7] [7] [m5](x1, x2, x3, x4) = [1 0] x3 + [0] [0 1] [0] [<](x1, x2) = [0 0] x2 + [7] [4 2] [3] [e1](x1, x2, x3, x4) = [7] [7] [m4](x1, x2, x3, x4) = [2 0] x1 + [3] [1 0] [3] [equal0](x1, x2) = [1 0] x2 + [7] [0 0] [7] [False] = [7] [3] [m2](x1, x2, x3, x4) = [2 0] x1 + [0 1] x4 + [0] [1 0] [0 0] [3] [monus](x1, x2) = [2 0] x1 + [3] [1 0] [3] [S](x1) = [1 1] x1 + [0] [0 0] [4] [0] = [0] [0] [m1](x1, x2, x3, x4) = [2 0] x1 + [3] [1 0] [3] [e4](x1, x2, x3, x4) = [0 0] x4 + [7] [1 0] [0] [l5^#](x1, x2, x3, x4, x5, x6) = [2 0] x1 + [4 0] x2 + [1 0] x6 + [0] [0 0] [0 0] [0 0] [0] [l7^#](x1, x2, x3, x4, x5, x6) = [2 0] x1 + [4 0] x2 + [7] [0 0] [0 0] [0] [l1^#](x1, x2, x3, x4, x5, x6) = [4 0] x1 + [4 0] x2 + [7] [0 0] [0 0] [0] [l2^#](x1, x2, x3, x4, x5, x6) = [4 0] x1 + [4 0] x2 + [0 2] x6 + [1] [0 0] [0 0] [0 0] [0] [l13^#](x1, x2, x3, x4, x5, x6) = [4 0] x2 + [1 0] x5 + [4] [0 0] [0 0] [0] [gcd^#](x1, x2) = [4 0] x1 + [4 0] x2 + [7] [1 0] [0 0] [3] [l14^#](x1, x2, x3, x4, x5, x6) = [4 0] x2 + [7] [0 0] [0] [l15^#](x1, x2, x3, x4, x5, x6) = [4 0] x2 + [7] [0 0] [1] [monus^#](x1, x2) = [0] [1] [l8^#](x1, x2, x3, x4, x5, x6) = [2 0] x1 + [4 0] x2 + [0 0] x4 + [7] [0 0] [1 0] [0 2] [0] [l10^#](x1, x2, x3, x4, x5, x6) = [2 0] x1 + [4 0] x2 + [7] [0 0] [0 0] [0] [l12^#](x1, x2, x3, x4, x5, x6) = [2 0] x1 + [4 0] x2 + [0 0] x6 + [7] [1 1] [0 0] [1 0] [0] [l11^#](x1, x2, x3, x4, x5, x6) = [2 0] x1 + [4 0] x2 + [1 0] x6 + [0] [0 0] [0 0] [0 0] [0] [l3^#](x1, x2, x3, x4, x5, x6) = [2 0] x1 + [4 0] x2 + [0 0] x6 + [7] [0 0] [0 0] [0 1] [0] [l4^#](x1, x2, x3, x4, x5, x6) = [2 0] x1 + [4 0] x2 + [0 0] x3 + [7] [0 0] [0 0] [4 0] [0] [c_1](x1) = [1 1] x1 + [0] [0 0] [0] [c_2](x1) = [1 0] x1 + [0] [0 0] [0] [c_3](x1) = [1 1] x1 + [0] [0 0] [0] [c_4](x1) = [1 0] x1 + [0] [0 0] [0] [c_5](x1) = [1 0] x1 + [4] [0 0] [0] [c_6](x1) = [1 1] x1 + [0] [0 0] [0] [c_7](x1) = [1 1] x1 + [0] [0 0] [0] [c_8](x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [0] [c_9](x1) = [1 0] x1 + [0] [0 0] [0] [c_10](x1) = [1 0] x1 + [0] [0 0] [0] [c_12](x1) = [1 1] x1 + [0] [0 0] [0] [c_13](x1) = [1 1] x1 + [0] [0 0] [0] [c_15](x1, x2) = [1 1] x1 + [1 0] x2 + [0] [0 0] [0 0] [0] [c_16](x1) = [1 0] x1 + [0] [0 0] [0] [c_17](x1) = [1 1] x1 + [0] [0 0] [0] [c_18](x1) = [1 1] x1 + [0] [0 0] [0] [c_19](x1) = [1 1] x1 + [0] [0 0] [0] The order satisfies the following ordering constraints: [e2(a, b, res, True())] = [7] [7] >= [7] [7] = [e3(a, b, res, True())] [e2(a, b, res, False())] = [7] [7] >= [7] [3] = [False()] [e3(a, b, res, t)] = [7] [7] >= [7] [7] = [e4(a, b, res, <(b, a))] [m5(a, b, res, t)] = [1 0] res + [0] [0 1] [0] >= [1 0] res + [0] [0 1] [0] = [res] [<(x, 0())] = [7] [3] >= [7] [3] = [False()] [<(S(x), S(y))] = [0 0] y + [7] [4 4] [11] >= [0 0] y + [7] [4 2] [3] = [<(x, y)] [<(0(), S(y))] = [0 0] y + [7] [4 4] [11] >= [7] [7] = [True()] [e1(a, b, res, t)] = [7] [7] >= [7] [7] = [e2(a, b, res, <(a, b))] [m4(S(x'), S(x), res, t)] = [2 2] x' + [3] [1 1] [3] >= [2 0] x' + [3] [1 0] [3] = [m5(S(x'), S(x), monus(x', x), t)] [equal0(a, b)] = [1 0] b + [7] [0 0] [7] >= [7] [7] = [e1(a, b, False(), False())] [m2(a, b, res, False())] = [2 0] a + [3] [1 0] [3] >= [2 0] a + [3] [1 0] [3] = [m4(a, b, res, False())] [m2(S(S(x)), b, res, True())] = [2 2] x + [15] [1 1] [7] > [7] [7] = [True()] [m2(S(0()), b, res, True())] = [7] [3] >= [7] [3] = [False()] [m2(0(), b, res, True())] = [7] [3] >= [7] [3] = [False()] [monus(a, b)] = [2 0] a + [3] [1 0] [3] >= [2 0] a + [3] [1 0] [3] = [m1(a, b, False(), False())] [m1(a, x, res, t)] = [2 0] a + [3] [1 0] [3] >= [2 0] a + [3] [1 0] [3] = [m2(a, x, res, False())] [e4(a, b, res, True())] = [7] [7] >= [7] [7] = [True()] [e4(a, b, res, False())] = [7] [7] >= [7] [3] = [False()] [l5^#(x, y, res, tmp, mtmp, False())] = [2 0] x + [4 0] y + [7] [0 0] [0 0] [0] >= [2 0] x + [4 0] y + [7] [0 0] [0 0] [0] = [c_1(l7^#(x, y, res, tmp, mtmp, False()))] [l7^#(x, y, res, tmp, mtmp, t)] = [2 0] x + [4 0] y + [7] [0 0] [0 0] [0] >= [2 0] x + [4 0] y + [7] [0 0] [0 0] [0] = [c_2(l8^#(x, y, res, equal0(x, y), mtmp, t))] [l1^#(x, y, res, tmp, mtmp, t)] = [4 0] x + [4 0] y + [7] [0 0] [0 0] [0] >= [4 0] x + [4 0] y + [7] [0 0] [0 0] [0] = [c_3(l2^#(x, y, res, tmp, mtmp, False()))] [l2^#(x, y, res, tmp, mtmp, False())] = [4 0] x + [4 0] y + [7] [0 0] [0 0] [0] >= [2 0] x + [4 0] y + [7] [0 0] [0 0] [0] = [c_4(l3^#(x, y, res, tmp, mtmp, False()))] [l13^#(x, y, res, tmp, True(), t)] = [4 0] y + [11] [0 0] [0] >= [4 0] y + [11] [0 0] [0] = [c_5(gcd^#(S(0()), y))] [l13^#(x, y, res, tmp, False(), t)] = [4 0] y + [11] [0 0] [0] > [4 0] y + [10] [0 0] [0] = [c_6(gcd^#(0(), y))] [gcd^#(x, y)] = [4 0] x + [4 0] y + [7] [1 0] [0 0] [3] >= [4 0] x + [4 0] y + [7] [0 0] [0 0] [0] = [c_7(l1^#(x, y, 0(), False(), False(), False()))] [l14^#(x, y, res, tmp, mtmp, t)] = [4 0] y + [7] [0 0] [0] >= [4 0] y + [7] [0 0] [0] = [c_8(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y))] [l15^#(x, y, res, tmp, True(), t)] = [4 0] y + [7] [0 0] [1] >= [4 0] y + [7] [0 0] [0] = [c_9(gcd^#(y, S(0())))] [l15^#(x, y, res, tmp, False(), t)] = [4 0] y + [7] [0 0] [1] >= [4 0] y + [7] [0 0] [0] = [c_10(gcd^#(y, 0()))] [l8^#(x, y, res, False(), mtmp, t)] = [2 0] x + [4 0] y + [7] [0 0] [1 0] [6] >= [2 0] x + [4 0] y + [7] [0 0] [0 0] [0] = [c_12(l10^#(x, y, res, False(), mtmp, t))] [l10^#(x, y, res, tmp, mtmp, t)] = [2 0] x + [4 0] y + [7] [0 0] [0 0] [0] >= [2 0] x + [4 0] y + [7] [0 0] [0 0] [0] = [c_13(l11^#(x, y, res, tmp, mtmp, <(x, y)))] [l12^#(x, y, res, tmp, mtmp, t)] = [2 0] x + [0 0] t + [4 0] y + [7] [1 1] [1 0] [0 0] [0] >= [2 0] x + [4 0] y + [7] [0 0] [0 0] [0] = [c_15(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y))] [l11^#(x, y, res, tmp, mtmp, True())] = [2 0] x + [4 0] y + [7] [0 0] [0 0] [0] >= [2 0] x + [4 0] y + [7] [0 0] [0 0] [0] = [c_16(l12^#(x, y, res, tmp, mtmp, True()))] [l11^#(x, y, res, tmp, mtmp, False())] = [2 0] x + [4 0] y + [7] [0 0] [0 0] [0] >= [4 0] y + [7] [0 0] [0] = [c_17(l14^#(x, y, res, tmp, mtmp, False()))] [l3^#(x, y, res, tmp, mtmp, t)] = [2 0] x + [0 0] t + [4 0] y + [7] [0 0] [0 1] [0 0] [0] >= [2 0] x + [4 0] y + [7] [0 0] [0 0] [0] = [c_18(l4^#(x, y, 0(), tmp, mtmp, t))] [l4^#(x', x, res, tmp, mtmp, t)] = [0 0] res + [4 0] x + [2 0] x' + [7] [4 0] [0 0] [0 0] [0] >= [4 0] x + [2 0] x' + [7] [0 0] [0 0] [0] = [c_19(l5^#(x', x, res, tmp, mtmp, False()))] The strictly oriented rules are moved into the weak component. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> c_1(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_2(l8^#(x, y, res, equal0(x, y), mtmp, t)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, False()) -> c_4(l3^#(x, y, res, tmp, mtmp, False())) , gcd^#(x, y) -> c_7(l1^#(x, y, 0(), False(), False(), False())) , l14^#(x, y, res, tmp, mtmp, t) -> c_8(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, False(), t) -> c_10(gcd^#(y, 0())) , l8^#(x, y, res, False(), mtmp, t) -> c_12(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_13(l11^#(x, y, res, tmp, mtmp, <(x, y))) , l12^#(x, y, res, tmp, mtmp, t) -> c_15(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l11^#(x, y, res, tmp, mtmp, True()) -> c_16(l12^#(x, y, res, tmp, mtmp, True())) , l11^#(x, y, res, tmp, mtmp, False()) -> c_17(l14^#(x, y, res, tmp, mtmp, False())) , l3^#(x, y, res, tmp, mtmp, t) -> c_18(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_19(l5^#(x', x, res, tmp, mtmp, False())) } Weak DPs: { l13^#(x, y, res, tmp, True(), t) -> c_5(gcd^#(S(0()), y)) , l13^#(x, y, res, tmp, False(), t) -> c_6(gcd^#(0(), y)) , l15^#(x, y, res, tmp, True(), t) -> c_9(gcd^#(y, S(0()))) } Weak Trs: { e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) We use the processor 'matrix interpretation of dimension 2' to orient following rules strictly. DPs: { 11: l11^#(x, y, res, tmp, mtmp, True()) -> c_16(l12^#(x, y, res, tmp, mtmp, True())) } Trs: { e2(a, b, res, False()) -> False() , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, False()) -> False() } Sub-proof: ---------- The following argument positions are usable: Uargs(c_1) = {1}, Uargs(c_2) = {1}, Uargs(c_3) = {1}, Uargs(c_4) = {1}, Uargs(c_5) = {1}, Uargs(c_6) = {1}, Uargs(c_7) = {1}, Uargs(c_8) = {1}, Uargs(c_9) = {1}, Uargs(c_10) = {1}, Uargs(c_12) = {1}, Uargs(c_13) = {1}, Uargs(c_15) = {1}, Uargs(c_16) = {1}, Uargs(c_17) = {1}, Uargs(c_18) = {1}, Uargs(c_19) = {1} TcT has computed the following constructor-based matrix interpretation satisfying not(EDA) and not(IDA(1)). [True] = [7] [7] [e2](x1, x2, x3, x4) = [7] [7] [e3](x1, x2, x3, x4) = [7] [7] [m5](x1, x2, x3, x4) = [1 0] x3 + [0] [0 1] [0] [<](x1, x2) = [0 1] x1 + [0 0] x2 + [6] [0 0] [0 1] [7] [e1](x1, x2, x3, x4) = [7] [7] [m4](x1, x2, x3, x4) = [1 5] x1 + [2 0] x2 + [0] [0 0] [0 0] [6] [equal0](x1, x2) = [7] [7] [False] = [6] [7] [m2](x1, x2, x3, x4) = [1 5] x1 + [2 0] x2 + [0 0] x4 + [1] [0 0] [0 0] [1 0] [0] [monus](x1, x2) = [1 5] x1 + [2 0] x2 + [3] [0 0] [0 0] [6] [S](x1) = [1 0] x1 + [3] [0 1] [0] [0] = [1] [1] [m1](x1, x2, x3, x4) = [1 5] x1 + [2 0] x2 + [3] [0 0] [0 0] [6] [e4](x1, x2, x3, x4) = [7] [7] [l5^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [6] [0 0] [0 0] [1] [l7^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [0 0] x6 + [6] [1 0] [0 1] [5 4] [1] [l1^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [0 0] x3 + [0 0] x4 + [6] [0 0] [0 1] [4 5] [0 1] [1] [l2^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [6] [0 0] [0 0] [1] [l13^#](x1, x2, x3, x4, x5, x6) = [0 1] x2 + [0 1] x5 + [0] [4 4] [0 0] [0] [gcd^#](x1, x2) = [0 1] x1 + [0 1] x2 + [6] [0 0] [1 1] [0] [l14^#](x1, x2, x3, x4, x5, x6) = [0 1] x2 + [0 0] x6 + [6] [0 1] [1 1] [0] [l15^#](x1, x2, x3, x4, x5, x6) = [0 1] x2 + [0 1] x5 + [0] [4 4] [0 0] [1] [monus^#](x1, x2) = [0] [1] [l8^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [0 0] x4 + [6] [0 0] [0 0] [2 0] [2] [l10^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [0 0] x4 + [6] [0 0] [0 0] [0 1] [0] [l12^#](x1, x2, x3, x4, x5, x6) = [0 1] x2 + [0 0] x6 + [6] [0 0] [0 1] [0] [l11^#](x1, x2, x3, x4, x5, x6) = [0 1] x2 + [1 0] x6 + [0] [0 0] [0 0] [0] [l3^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [0 0] x6 + [6] [0 0] [0 0] [4 1] [0] [l4^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [0 0] x3 + [6] [0 0] [0 0] [5 5] [0] [c_1](x1) = [1 0] x1 + [0] [0 0] [0] [c_2](x1) = [1 0] x1 + [0] [0 0] [0] [c_3](x1) = [1 0] x1 + [0] [0 0] [0] [c_4](x1) = [1 0] x1 + [0] [0 0] [0] [c_5](x1) = [1 0] x1 + [0] [0 0] [0] [c_6](x1) = [1 0] x1 + [0] [0 0] [0] [c_7](x1) = [1 0] x1 + [0] [0 0] [0] [c_8](x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [0] [c_9](x1) = [1 0] x1 + [0] [0 0] [0] [c_10](x1) = [1 0] x1 + [0] [0 0] [0] [c_12](x1) = [1 0] x1 + [0] [0 0] [0] [c_13](x1) = [1 0] x1 + [0] [0 0] [0] [c_15](x1, x2) = [1 0] x1 + [0] [0 0] [0] [c_16](x1) = [1 0] x1 + [0] [0 0] [0] [c_17](x1) = [1 0] x1 + [0] [0 0] [0] [c_18](x1) = [1 0] x1 + [0] [0 0] [0] [c_19](x1) = [1 0] x1 + [0] [0 0] [0] The order satisfies the following ordering constraints: [e2(a, b, res, True())] = [7] [7] >= [7] [7] = [e3(a, b, res, True())] [e2(a, b, res, False())] = [7] [7] > [6] [7] = [False()] [e3(a, b, res, t)] = [7] [7] >= [7] [7] = [e4(a, b, res, <(b, a))] [m5(a, b, res, t)] = [1 0] res + [0] [0 1] [0] >= [1 0] res + [0] [0 1] [0] = [res] [<(x, 0())] = [0 1] x + [6] [0 0] [8] >= [6] [7] = [False()] [<(S(x), S(y))] = [0 1] x + [0 0] y + [6] [0 0] [0 1] [7] >= [0 1] x + [0 0] y + [6] [0 0] [0 1] [7] = [<(x, y)] [<(0(), S(y))] = [0 0] y + [7] [0 1] [7] >= [7] [7] = [True()] [e1(a, b, res, t)] = [7] [7] >= [7] [7] = [e2(a, b, res, <(a, b))] [m4(S(x'), S(x), res, t)] = [2 0] x + [1 5] x' + [9] [0 0] [0 0] [6] > [2 0] x + [1 5] x' + [3] [0 0] [0 0] [6] = [m5(S(x'), S(x), monus(x', x), t)] [equal0(a, b)] = [7] [7] >= [7] [7] = [e1(a, b, False(), False())] [m2(a, b, res, False())] = [2 0] b + [1 5] a + [1] [0 0] [0 0] [6] > [2 0] b + [1 5] a + [0] [0 0] [0 0] [6] = [m4(a, b, res, False())] [m2(S(S(x)), b, res, True())] = [2 0] b + [1 5] x + [7] [0 0] [0 0] [7] >= [7] [7] = [True()] [m2(S(0()), b, res, True())] = [2 0] b + [10] [0 0] [7] > [6] [7] = [False()] [m2(0(), b, res, True())] = [2 0] b + [7] [0 0] [7] > [6] [7] = [False()] [monus(a, b)] = [2 0] b + [1 5] a + [3] [0 0] [0 0] [6] >= [2 0] b + [1 5] a + [3] [0 0] [0 0] [6] = [m1(a, b, False(), False())] [m1(a, x, res, t)] = [2 0] x + [1 5] a + [3] [0 0] [0 0] [6] > [2 0] x + [1 5] a + [1] [0 0] [0 0] [6] = [m2(a, x, res, False())] [e4(a, b, res, True())] = [7] [7] >= [7] [7] = [True()] [e4(a, b, res, False())] = [7] [7] > [6] [7] = [False()] [l5^#(x, y, res, tmp, mtmp, False())] = [0 1] x + [0 1] y + [6] [0 0] [0 0] [1] >= [0 1] x + [0 1] y + [6] [0 0] [0 0] [0] = [c_1(l7^#(x, y, res, tmp, mtmp, False()))] [l7^#(x, y, res, tmp, mtmp, t)] = [0 1] x + [0 0] t + [0 1] y + [6] [1 0] [5 4] [0 1] [1] >= [0 1] x + [0 1] y + [6] [0 0] [0 0] [0] = [c_2(l8^#(x, y, res, equal0(x, y), mtmp, t))] [l1^#(x, y, res, tmp, mtmp, t)] = [0 0] res + [0 1] x + [0 1] y + [0 0] tmp + [6] [4 5] [0 0] [0 1] [0 1] [1] >= [0 1] x + [0 1] y + [6] [0 0] [0 0] [0] = [c_3(l2^#(x, y, res, tmp, mtmp, False()))] [l2^#(x, y, res, tmp, mtmp, False())] = [0 1] x + [0 1] y + [6] [0 0] [0 0] [1] >= [0 1] x + [0 1] y + [6] [0 0] [0 0] [0] = [c_4(l3^#(x, y, res, tmp, mtmp, False()))] [l13^#(x, y, res, tmp, True(), t)] = [0 1] y + [7] [4 4] [0] >= [0 1] y + [7] [0 0] [0] = [c_5(gcd^#(S(0()), y))] [l13^#(x, y, res, tmp, False(), t)] = [0 1] y + [7] [4 4] [0] >= [0 1] y + [7] [0 0] [0] = [c_6(gcd^#(0(), y))] [gcd^#(x, y)] = [0 1] x + [0 1] y + [6] [0 0] [1 1] [0] >= [0 1] x + [0 1] y + [6] [0 0] [0 0] [0] = [c_7(l1^#(x, y, 0(), False(), False(), False()))] [l14^#(x, y, res, tmp, mtmp, t)] = [0 0] t + [0 1] y + [6] [1 1] [0 1] [0] >= [0 1] y + [6] [0 0] [0] = [c_8(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y))] [l15^#(x, y, res, tmp, True(), t)] = [0 1] y + [7] [4 4] [1] >= [0 1] y + [7] [0 0] [0] = [c_9(gcd^#(y, S(0())))] [l15^#(x, y, res, tmp, False(), t)] = [0 1] y + [7] [4 4] [1] >= [0 1] y + [7] [0 0] [0] = [c_10(gcd^#(y, 0()))] [l8^#(x, y, res, False(), mtmp, t)] = [0 1] x + [0 1] y + [6] [0 0] [0 0] [14] >= [0 1] x + [0 1] y + [6] [0 0] [0 0] [0] = [c_12(l10^#(x, y, res, False(), mtmp, t))] [l10^#(x, y, res, tmp, mtmp, t)] = [0 1] x + [0 1] y + [0 0] tmp + [6] [0 0] [0 0] [0 1] [0] >= [0 1] x + [0 1] y + [6] [0 0] [0 0] [0] = [c_13(l11^#(x, y, res, tmp, mtmp, <(x, y)))] [l12^#(x, y, res, tmp, mtmp, t)] = [0 0] t + [0 1] y + [6] [0 1] [0 0] [0] >= [0 1] y + [6] [0 0] [0] = [c_15(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y))] [l11^#(x, y, res, tmp, mtmp, True())] = [0 1] y + [7] [0 0] [0] > [0 1] y + [6] [0 0] [0] = [c_16(l12^#(x, y, res, tmp, mtmp, True()))] [l11^#(x, y, res, tmp, mtmp, False())] = [0 1] y + [6] [0 0] [0] >= [0 1] y + [6] [0 0] [0] = [c_17(l14^#(x, y, res, tmp, mtmp, False()))] [l3^#(x, y, res, tmp, mtmp, t)] = [0 1] x + [0 0] t + [0 1] y + [6] [0 0] [4 1] [0 0] [0] >= [0 1] x + [0 1] y + [6] [0 0] [0 0] [0] = [c_18(l4^#(x, y, 0(), tmp, mtmp, t))] [l4^#(x', x, res, tmp, mtmp, t)] = [0 0] res + [0 1] x + [0 1] x' + [6] [5 5] [0 0] [0 0] [0] >= [0 1] x + [0 1] x' + [6] [0 0] [0 0] [0] = [c_19(l5^#(x', x, res, tmp, mtmp, False()))] We return to the main proof. Consider the set of all dependency pairs : { 1: l5^#(x, y, res, tmp, mtmp, False()) -> c_1(l7^#(x, y, res, tmp, mtmp, False())) , 2: l7^#(x, y, res, tmp, mtmp, t) -> c_2(l8^#(x, y, res, equal0(x, y), mtmp, t)) , 3: l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , 4: l2^#(x, y, res, tmp, mtmp, False()) -> c_4(l3^#(x, y, res, tmp, mtmp, False())) , 5: gcd^#(x, y) -> c_7(l1^#(x, y, 0(), False(), False(), False())) , 6: l14^#(x, y, res, tmp, mtmp, t) -> c_8(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , 7: l15^#(x, y, res, tmp, False(), t) -> c_10(gcd^#(y, 0())) , 8: l8^#(x, y, res, False(), mtmp, t) -> c_12(l10^#(x, y, res, False(), mtmp, t)) , 9: l10^#(x, y, res, tmp, mtmp, t) -> c_13(l11^#(x, y, res, tmp, mtmp, <(x, y))) , 10: l12^#(x, y, res, tmp, mtmp, t) -> c_15(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , 11: l11^#(x, y, res, tmp, mtmp, True()) -> c_16(l12^#(x, y, res, tmp, mtmp, True())) , 12: l11^#(x, y, res, tmp, mtmp, False()) -> c_17(l14^#(x, y, res, tmp, mtmp, False())) , 13: l3^#(x, y, res, tmp, mtmp, t) -> c_18(l4^#(x, y, 0(), tmp, mtmp, t)) , 14: l4^#(x', x, res, tmp, mtmp, t) -> c_19(l5^#(x', x, res, tmp, mtmp, False())) , 15: l13^#(x, y, res, tmp, True(), t) -> c_5(gcd^#(S(0()), y)) , 16: l13^#(x, y, res, tmp, False(), t) -> c_6(gcd^#(0(), y)) , 17: l15^#(x, y, res, tmp, True(), t) -> c_9(gcd^#(y, S(0()))) } Processor 'matrix interpretation of dimension 2' induces the complexity certificate YES(?,O(n^1)) on application of dependency pairs {11}. These cover all (indirect) predecessors of dependency pairs {10,11,15,16}, their number of application is equally bounded. The dependency pairs are shifted into the weak component. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> c_1(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_2(l8^#(x, y, res, equal0(x, y), mtmp, t)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, False()) -> c_4(l3^#(x, y, res, tmp, mtmp, False())) , gcd^#(x, y) -> c_7(l1^#(x, y, 0(), False(), False(), False())) , l14^#(x, y, res, tmp, mtmp, t) -> c_8(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, False(), t) -> c_10(gcd^#(y, 0())) , l8^#(x, y, res, False(), mtmp, t) -> c_12(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_13(l11^#(x, y, res, tmp, mtmp, <(x, y))) , l11^#(x, y, res, tmp, mtmp, False()) -> c_17(l14^#(x, y, res, tmp, mtmp, False())) , l3^#(x, y, res, tmp, mtmp, t) -> c_18(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_19(l5^#(x', x, res, tmp, mtmp, False())) } Weak DPs: { l13^#(x, y, res, tmp, True(), t) -> c_5(gcd^#(S(0()), y)) , l13^#(x, y, res, tmp, False(), t) -> c_6(gcd^#(0(), y)) , l15^#(x, y, res, tmp, True(), t) -> c_9(gcd^#(y, S(0()))) , l12^#(x, y, res, tmp, mtmp, t) -> c_15(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l11^#(x, y, res, tmp, mtmp, True()) -> c_16(l12^#(x, y, res, tmp, mtmp, True())) } Weak Trs: { e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) We use the processor 'matrix interpretation of dimension 2' to orient following rules strictly. DPs: { 11: l3^#(x, y, res, tmp, mtmp, t) -> c_18(l4^#(x, y, 0(), tmp, mtmp, t)) , 13: l13^#(x, y, res, tmp, True(), t) -> c_5(gcd^#(S(0()), y)) , 14: l13^#(x, y, res, tmp, False(), t) -> c_6(gcd^#(0(), y)) , 16: l12^#(x, y, res, tmp, mtmp, t) -> c_15(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) } Trs: { <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() } Sub-proof: ---------- The following argument positions are usable: Uargs(c_1) = {1}, Uargs(c_2) = {1}, Uargs(c_3) = {1}, Uargs(c_4) = {1}, Uargs(c_5) = {1}, Uargs(c_6) = {1}, Uargs(c_7) = {1}, Uargs(c_8) = {1}, Uargs(c_9) = {1}, Uargs(c_10) = {1}, Uargs(c_12) = {1}, Uargs(c_13) = {1}, Uargs(c_15) = {1}, Uargs(c_16) = {1}, Uargs(c_17) = {1}, Uargs(c_18) = {1}, Uargs(c_19) = {1} TcT has computed the following constructor-based matrix interpretation satisfying not(EDA) and not(IDA(1)). [True] = [3] [3] [e2](x1, x2, x3, x4) = [0 0] x1 + [0 0] x2 + [3] [3 0] [4 0] [1] [e3](x1, x2, x3, x4) = [0 0] x1 + [0 0] x2 + [3] [3 0] [4 0] [1] [m5](x1, x2, x3, x4) = [1 0] x3 + [0] [1 1] [1] [<](x1, x2) = [4 0] x1 + [3 0] x2 + [0] [2 1] [1 0] [2] [e1](x1, x2, x3, x4) = [0 0] x1 + [0 0] x2 + [3] [3 1] [4 0] [1] [m4](x1, x2, x3, x4) = [0 0] x1 + [1] [0 1] [0] [equal0](x1, x2) = [0 0] x1 + [0 0] x2 + [3] [3 1] [4 0] [2] [False] = [3] [1] [m2](x1, x2, x3, x4) = [0 0] x1 + [0 1] x4 + [0] [0 1] [0 0] [0] [monus](x1, x2) = [0 0] x1 + [1] [0 1] [0] [S](x1) = [1 0] x1 + [2] [0 1] [2] [0] = [2] [1] [m1](x1, x2, x3, x4) = [0 0] x1 + [1] [0 1] [0] [e4](x1, x2, x3, x4) = [0 0] x4 + [3] [1 0] [1] [l5^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [1 1] x6 + [0] [1 1] [0 0] [0 0] [1] [l7^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [4] [0 0] [0 0] [0] [l1^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [5] [0 0] [0 0] [0] [l2^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [0 0] x3 + [0 0] x4 + [0 0] x5 + [0 4] x6 + [1] [5 5] [4 4] [4 4] [4 4] [4 4] [0 0] [1] [l13^#](x1, x2, x3, x4, x5, x6) = [0 1] x2 + [2 1] x5 + [0] [0 0] [0 0] [0] [gcd^#](x1, x2) = [0 1] x1 + [0 1] x2 + [5] [0 0] [0 0] [0] [l14^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [3] [0 0] [0 0] [0] [l15^#](x1, x2, x3, x4, x5, x6) = [0 0] x1 + [0 1] x2 + [1 1] x5 + [2] [0 1] [0 0] [0 0] [0] [monus^#](x1, x2) = [0] [0] [l8^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [1 0] x4 + [0] [0 0] [0 0] [0 0] [1] [l10^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [3] [0 0] [0 0] [0] [l12^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [0 0] x3 + [0 0] x4 + [0 0] x6 + [3] [5 4] [5 4] [4 4] [4 4] [4 4] [0] [l11^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [0 0] x6 + [3] [0 0] [0 0] [1 0] [0] [l3^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [5] [0 0] [0 0] [0] [l4^#](x1, x2, x3, x4, x5, x6) = [0 1] x1 + [0 1] x2 + [4] [0 0] [0 0] [0] [c_1](x1) = [1 1] x1 + [0] [0 0] [0] [c_2](x1) = [1 1] x1 + [0] [0 0] [0] [c_3](x1) = [1 0] x1 + [0] [0 0] [0] [c_4](x1) = [1 1] x1 + [0] [0 0] [0] [c_5](x1) = [1 0] x1 + [0] [0 0] [0] [c_6](x1) = [1 0] x1 + [0] [0 0] [0] [c_7](x1) = [1 1] x1 + [0] [0 0] [0] [c_8](x1, x2) = [1 0] x1 + [0 1] x2 + [0] [0 0] [0 0] [0] [c_9](x1) = [1 1] x1 + [0] [0 0] [0] [c_10](x1) = [1 1] x1 + [0] [0 0] [0] [c_12](x1) = [1 1] x1 + [0] [0 0] [0] [c_13](x1) = [1 0] x1 + [0] [0 0] [0] [c_15](x1, x2) = [1 1] x1 + [0] [0 0] [0] [c_16](x1) = [1 0] x1 + [0] [0 0] [0] [c_17](x1) = [1 1] x1 + [0] [0 0] [0] [c_18](x1) = [1 1] x1 + [0] [0 0] [0] [c_19](x1) = [1 0] x1 + [0] [0 0] [0] The order satisfies the following ordering constraints: [e2(a, b, res, True())] = [0 0] b + [0 0] a + [3] [4 0] [3 0] [1] >= [0 0] b + [0 0] a + [3] [4 0] [3 0] [1] = [e3(a, b, res, True())] [e2(a, b, res, False())] = [0 0] b + [0 0] a + [3] [4 0] [3 0] [1] >= [3] [1] = [False()] [e3(a, b, res, t)] = [0 0] b + [0 0] a + [3] [4 0] [3 0] [1] >= [0 0] b + [0 0] a + [3] [4 0] [3 0] [1] = [e4(a, b, res, <(b, a))] [m5(a, b, res, t)] = [1 0] res + [0] [1 1] [1] >= [1 0] res + [0] [0 1] [0] = [res] [<(x, 0())] = [4 0] x + [6] [2 1] [4] > [3] [1] = [False()] [<(S(x), S(y))] = [4 0] x + [3 0] y + [14] [2 1] [1 0] [10] > [4 0] x + [3 0] y + [0] [2 1] [1 0] [2] = [<(x, y)] [<(0(), S(y))] = [3 0] y + [14] [1 0] [9] > [3] [3] = [True()] [e1(a, b, res, t)] = [0 0] b + [0 0] a + [3] [4 0] [3 1] [1] >= [0 0] b + [0 0] a + [3] [4 0] [3 0] [1] = [e2(a, b, res, <(a, b))] [m4(S(x'), S(x), res, t)] = [0 0] x' + [1] [0 1] [2] >= [0 0] x' + [1] [0 1] [2] = [m5(S(x'), S(x), monus(x', x), t)] [equal0(a, b)] = [0 0] b + [0 0] a + [3] [4 0] [3 1] [2] >= [0 0] b + [0 0] a + [3] [4 0] [3 1] [1] = [e1(a, b, False(), False())] [m2(a, b, res, False())] = [0 0] a + [1] [0 1] [0] >= [0 0] a + [1] [0 1] [0] = [m4(a, b, res, False())] [m2(S(S(x)), b, res, True())] = [0 0] x + [3] [0 1] [4] >= [3] [3] = [True()] [m2(S(0()), b, res, True())] = [3] [3] >= [3] [1] = [False()] [m2(0(), b, res, True())] = [3] [1] >= [3] [1] = [False()] [monus(a, b)] = [0 0] a + [1] [0 1] [0] >= [0 0] a + [1] [0 1] [0] = [m1(a, b, False(), False())] [m1(a, x, res, t)] = [0 0] a + [1] [0 1] [0] >= [0 0] a + [1] [0 1] [0] = [m2(a, x, res, False())] [e4(a, b, res, True())] = [3] [4] >= [3] [3] = [True()] [e4(a, b, res, False())] = [3] [4] >= [3] [1] = [False()] [l5^#(x, y, res, tmp, mtmp, False())] = [0 1] x + [0 1] y + [4] [1 1] [0 0] [1] >= [0 1] x + [0 1] y + [4] [0 0] [0 0] [0] = [c_1(l7^#(x, y, res, tmp, mtmp, False()))] [l7^#(x, y, res, tmp, mtmp, t)] = [0 1] x + [0 1] y + [4] [0 0] [0 0] [0] >= [0 1] x + [0 1] y + [4] [0 0] [0 0] [0] = [c_2(l8^#(x, y, res, equal0(x, y), mtmp, t))] [l1^#(x, y, res, tmp, mtmp, t)] = [0 1] x + [0 1] y + [5] [0 0] [0 0] [0] >= [0 1] x + [0 1] y + [5] [0 0] [0 0] [0] = [c_3(l2^#(x, y, res, tmp, mtmp, False()))] [l2^#(x, y, res, tmp, mtmp, False())] = [0 0] res + [0 1] x + [0 1] y + [0 0] mtmp + [0 0] tmp + [5] [4 4] [5 5] [4 4] [4 4] [4 4] [1] >= [0 1] x + [0 1] y + [5] [0 0] [0 0] [0] = [c_4(l3^#(x, y, res, tmp, mtmp, False()))] [l13^#(x, y, res, tmp, True(), t)] = [0 1] y + [9] [0 0] [0] > [0 1] y + [8] [0 0] [0] = [c_5(gcd^#(S(0()), y))] [l13^#(x, y, res, tmp, False(), t)] = [0 1] y + [7] [0 0] [0] > [0 1] y + [6] [0 0] [0] = [c_6(gcd^#(0(), y))] [gcd^#(x, y)] = [0 1] x + [0 1] y + [5] [0 0] [0 0] [0] >= [0 1] x + [0 1] y + [5] [0 0] [0 0] [0] = [c_7(l1^#(x, y, 0(), False(), False(), False()))] [l14^#(x, y, res, tmp, mtmp, t)] = [0 1] x + [0 1] y + [3] [0 0] [0 0] [0] >= [0 1] x + [0 1] y + [3] [0 0] [0 0] [0] = [c_8(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y))] [l15^#(x, y, res, tmp, True(), t)] = [0 0] x + [0 1] y + [8] [0 1] [0 0] [0] >= [0 1] y + [8] [0 0] [0] = [c_9(gcd^#(y, S(0())))] [l15^#(x, y, res, tmp, False(), t)] = [0 0] x + [0 1] y + [6] [0 1] [0 0] [0] >= [0 1] y + [6] [0 0] [0] = [c_10(gcd^#(y, 0()))] [l8^#(x, y, res, False(), mtmp, t)] = [0 1] x + [0 1] y + [3] [0 0] [0 0] [1] >= [0 1] x + [0 1] y + [3] [0 0] [0 0] [0] = [c_12(l10^#(x, y, res, False(), mtmp, t))] [l10^#(x, y, res, tmp, mtmp, t)] = [0 1] x + [0 1] y + [3] [0 0] [0 0] [0] >= [0 1] x + [0 1] y + [3] [0 0] [0 0] [0] = [c_13(l11^#(x, y, res, tmp, mtmp, <(x, y)))] [l12^#(x, y, res, tmp, mtmp, t)] = [0 0] res + [0 1] x + [0 0] t + [0 1] y + [0 0] tmp + [3] [4 4] [5 4] [4 4] [5 4] [4 4] [0] > [0 1] x + [0 1] y + [2] [0 0] [0 0] [0] = [c_15(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y))] [l11^#(x, y, res, tmp, mtmp, True())] = [0 1] x + [0 1] y + [3] [0 0] [0 0] [3] >= [0 1] x + [0 1] y + [3] [0 0] [0 0] [0] = [c_16(l12^#(x, y, res, tmp, mtmp, True()))] [l11^#(x, y, res, tmp, mtmp, False())] = [0 1] x + [0 1] y + [3] [0 0] [0 0] [3] >= [0 1] x + [0 1] y + [3] [0 0] [0 0] [0] = [c_17(l14^#(x, y, res, tmp, mtmp, False()))] [l3^#(x, y, res, tmp, mtmp, t)] = [0 1] x + [0 1] y + [5] [0 0] [0 0] [0] > [0 1] x + [0 1] y + [4] [0 0] [0 0] [0] = [c_18(l4^#(x, y, 0(), tmp, mtmp, t))] [l4^#(x', x, res, tmp, mtmp, t)] = [0 1] x + [0 1] x' + [4] [0 0] [0 0] [0] >= [0 1] x + [0 1] x' + [4] [0 0] [0 0] [0] = [c_19(l5^#(x', x, res, tmp, mtmp, False()))] We return to the main proof. Consider the set of all dependency pairs : { 1: l5^#(x, y, res, tmp, mtmp, False()) -> c_1(l7^#(x, y, res, tmp, mtmp, False())) , 2: l7^#(x, y, res, tmp, mtmp, t) -> c_2(l8^#(x, y, res, equal0(x, y), mtmp, t)) , 3: l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , 4: l2^#(x, y, res, tmp, mtmp, False()) -> c_4(l3^#(x, y, res, tmp, mtmp, False())) , 5: gcd^#(x, y) -> c_7(l1^#(x, y, 0(), False(), False(), False())) , 6: l14^#(x, y, res, tmp, mtmp, t) -> c_8(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , 7: l15^#(x, y, res, tmp, False(), t) -> c_10(gcd^#(y, 0())) , 8: l8^#(x, y, res, False(), mtmp, t) -> c_12(l10^#(x, y, res, False(), mtmp, t)) , 9: l10^#(x, y, res, tmp, mtmp, t) -> c_13(l11^#(x, y, res, tmp, mtmp, <(x, y))) , 10: l11^#(x, y, res, tmp, mtmp, False()) -> c_17(l14^#(x, y, res, tmp, mtmp, False())) , 11: l3^#(x, y, res, tmp, mtmp, t) -> c_18(l4^#(x, y, 0(), tmp, mtmp, t)) , 12: l4^#(x', x, res, tmp, mtmp, t) -> c_19(l5^#(x', x, res, tmp, mtmp, False())) , 13: l13^#(x, y, res, tmp, True(), t) -> c_5(gcd^#(S(0()), y)) , 14: l13^#(x, y, res, tmp, False(), t) -> c_6(gcd^#(0(), y)) , 15: l15^#(x, y, res, tmp, True(), t) -> c_9(gcd^#(y, S(0()))) , 16: l12^#(x, y, res, tmp, mtmp, t) -> c_15(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , 17: l11^#(x, y, res, tmp, mtmp, True()) -> c_16(l12^#(x, y, res, tmp, mtmp, True())) } Processor 'matrix interpretation of dimension 2' induces the complexity certificate YES(?,O(n^1)) on application of dependency pairs {11,13,14,16}. These cover all (indirect) predecessors of dependency pairs {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}, their number of application is equally bounded. The dependency pairs are shifted into the weak component. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Weak DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> c_1(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_2(l8^#(x, y, res, equal0(x, y), mtmp, t)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, False()) -> c_4(l3^#(x, y, res, tmp, mtmp, False())) , l13^#(x, y, res, tmp, True(), t) -> c_5(gcd^#(S(0()), y)) , l13^#(x, y, res, tmp, False(), t) -> c_6(gcd^#(0(), y)) , gcd^#(x, y) -> c_7(l1^#(x, y, 0(), False(), False(), False())) , l14^#(x, y, res, tmp, mtmp, t) -> c_8(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, True(), t) -> c_9(gcd^#(y, S(0()))) , l15^#(x, y, res, tmp, False(), t) -> c_10(gcd^#(y, 0())) , l8^#(x, y, res, False(), mtmp, t) -> c_12(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_13(l11^#(x, y, res, tmp, mtmp, <(x, y))) , l12^#(x, y, res, tmp, mtmp, t) -> c_15(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l11^#(x, y, res, tmp, mtmp, True()) -> c_16(l12^#(x, y, res, tmp, mtmp, True())) , l11^#(x, y, res, tmp, mtmp, False()) -> c_17(l14^#(x, y, res, tmp, mtmp, False())) , l3^#(x, y, res, tmp, mtmp, t) -> c_18(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_19(l5^#(x', x, res, tmp, mtmp, False())) } Weak Trs: { e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { l5^#(x, y, res, tmp, mtmp, False()) -> c_1(l7^#(x, y, res, tmp, mtmp, False())) , l7^#(x, y, res, tmp, mtmp, t) -> c_2(l8^#(x, y, res, equal0(x, y), mtmp, t)) , l1^#(x, y, res, tmp, mtmp, t) -> c_3(l2^#(x, y, res, tmp, mtmp, False())) , l2^#(x, y, res, tmp, mtmp, False()) -> c_4(l3^#(x, y, res, tmp, mtmp, False())) , l13^#(x, y, res, tmp, True(), t) -> c_5(gcd^#(S(0()), y)) , l13^#(x, y, res, tmp, False(), t) -> c_6(gcd^#(0(), y)) , gcd^#(x, y) -> c_7(l1^#(x, y, 0(), False(), False(), False())) , l14^#(x, y, res, tmp, mtmp, t) -> c_8(l15^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l15^#(x, y, res, tmp, True(), t) -> c_9(gcd^#(y, S(0()))) , l15^#(x, y, res, tmp, False(), t) -> c_10(gcd^#(y, 0())) , l8^#(x, y, res, False(), mtmp, t) -> c_12(l10^#(x, y, res, False(), mtmp, t)) , l10^#(x, y, res, tmp, mtmp, t) -> c_13(l11^#(x, y, res, tmp, mtmp, <(x, y))) , l12^#(x, y, res, tmp, mtmp, t) -> c_15(l13^#(x, y, res, tmp, monus(x, y), t), monus^#(x, y)) , l11^#(x, y, res, tmp, mtmp, True()) -> c_16(l12^#(x, y, res, tmp, mtmp, True())) , l11^#(x, y, res, tmp, mtmp, False()) -> c_17(l14^#(x, y, res, tmp, mtmp, False())) , l3^#(x, y, res, tmp, mtmp, t) -> c_18(l4^#(x, y, 0(), tmp, mtmp, t)) , l4^#(x', x, res, tmp, mtmp, t) -> c_19(l5^#(x', x, res, tmp, mtmp, False())) } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Weak Trs: { e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) No rule is usable, rules are removed from the input problem. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Rules: Empty Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) Empty rules are trivially bounded We return to the main proof. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { monus^#(a, b) -> c_11(m1^#(a, b, False(), False())) , m2^#(a, b, res, False()) -> c_20(m4^#(a, b, res, False())) , m1^#(a, x, res, t) -> c_21(m2^#(a, x, res, False())) } Weak DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> l7^#(x, y, res, tmp, mtmp, False()) , l7^#(x, y, res, tmp, mtmp, t) -> l8^#(x, y, res, equal0(x, y), mtmp, t) , l1^#(x, y, res, tmp, mtmp, t) -> l2^#(x, y, res, tmp, mtmp, False()) , l2^#(x, y, res, tmp, mtmp, False()) -> l3^#(x, y, res, tmp, mtmp, False()) , l13^#(x, y, res, tmp, True(), t) -> gcd^#(S(0()), y) , l13^#(x, y, res, tmp, False(), t) -> gcd^#(0(), y) , gcd^#(x, y) -> l1^#(x, y, 0(), False(), False(), False()) , l14^#(x, y, res, tmp, mtmp, t) -> l15^#(x, y, res, tmp, monus(x, y), t) , l14^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , l15^#(x, y, res, tmp, True(), t) -> gcd^#(y, S(0())) , l15^#(x, y, res, tmp, False(), t) -> gcd^#(y, 0()) , l8^#(x, y, res, False(), mtmp, t) -> l10^#(x, y, res, False(), mtmp, t) , l10^#(x, y, res, tmp, mtmp, t) -> l11^#(x, y, res, tmp, mtmp, <(x, y)) , m4^#(S(x'), S(x), res, t) -> c_14(monus^#(x', x)) , l12^#(x, y, res, tmp, mtmp, t) -> l13^#(x, y, res, tmp, monus(x, y), t) , l12^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , l11^#(x, y, res, tmp, mtmp, True()) -> l12^#(x, y, res, tmp, mtmp, True()) , l11^#(x, y, res, tmp, mtmp, False()) -> l14^#(x, y, res, tmp, mtmp, False()) , l3^#(x, y, res, tmp, mtmp, t) -> l4^#(x, y, 0(), tmp, mtmp, t) , l4^#(x', x, res, tmp, mtmp, t) -> l5^#(x', x, res, tmp, mtmp, False()) } Weak Trs: { e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) We estimate the number of application of {2} by applications of Pre({2}) = {3}. Here rules are labeled as follows: DPs: { 1: monus^#(a, b) -> c_11(m1^#(a, b, False(), False())) , 2: m2^#(a, b, res, False()) -> c_20(m4^#(a, b, res, False())) , 3: m1^#(a, x, res, t) -> c_21(m2^#(a, x, res, False())) , 4: l5^#(x, y, res, tmp, mtmp, False()) -> l7^#(x, y, res, tmp, mtmp, False()) , 5: l7^#(x, y, res, tmp, mtmp, t) -> l8^#(x, y, res, equal0(x, y), mtmp, t) , 6: l1^#(x, y, res, tmp, mtmp, t) -> l2^#(x, y, res, tmp, mtmp, False()) , 7: l2^#(x, y, res, tmp, mtmp, False()) -> l3^#(x, y, res, tmp, mtmp, False()) , 8: l13^#(x, y, res, tmp, True(), t) -> gcd^#(S(0()), y) , 9: l13^#(x, y, res, tmp, False(), t) -> gcd^#(0(), y) , 10: gcd^#(x, y) -> l1^#(x, y, 0(), False(), False(), False()) , 11: l14^#(x, y, res, tmp, mtmp, t) -> l15^#(x, y, res, tmp, monus(x, y), t) , 12: l14^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , 13: l15^#(x, y, res, tmp, True(), t) -> gcd^#(y, S(0())) , 14: l15^#(x, y, res, tmp, False(), t) -> gcd^#(y, 0()) , 15: l8^#(x, y, res, False(), mtmp, t) -> l10^#(x, y, res, False(), mtmp, t) , 16: l10^#(x, y, res, tmp, mtmp, t) -> l11^#(x, y, res, tmp, mtmp, <(x, y)) , 17: m4^#(S(x'), S(x), res, t) -> c_14(monus^#(x', x)) , 18: l12^#(x, y, res, tmp, mtmp, t) -> l13^#(x, y, res, tmp, monus(x, y), t) , 19: l12^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , 20: l11^#(x, y, res, tmp, mtmp, True()) -> l12^#(x, y, res, tmp, mtmp, True()) , 21: l11^#(x, y, res, tmp, mtmp, False()) -> l14^#(x, y, res, tmp, mtmp, False()) , 22: l3^#(x, y, res, tmp, mtmp, t) -> l4^#(x, y, 0(), tmp, mtmp, t) , 23: l4^#(x', x, res, tmp, mtmp, t) -> l5^#(x', x, res, tmp, mtmp, False()) } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { monus^#(a, b) -> c_11(m1^#(a, b, False(), False())) , m1^#(a, x, res, t) -> c_21(m2^#(a, x, res, False())) } Weak DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> l7^#(x, y, res, tmp, mtmp, False()) , l7^#(x, y, res, tmp, mtmp, t) -> l8^#(x, y, res, equal0(x, y), mtmp, t) , l1^#(x, y, res, tmp, mtmp, t) -> l2^#(x, y, res, tmp, mtmp, False()) , l2^#(x, y, res, tmp, mtmp, False()) -> l3^#(x, y, res, tmp, mtmp, False()) , l13^#(x, y, res, tmp, True(), t) -> gcd^#(S(0()), y) , l13^#(x, y, res, tmp, False(), t) -> gcd^#(0(), y) , gcd^#(x, y) -> l1^#(x, y, 0(), False(), False(), False()) , l14^#(x, y, res, tmp, mtmp, t) -> l15^#(x, y, res, tmp, monus(x, y), t) , l14^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , l15^#(x, y, res, tmp, True(), t) -> gcd^#(y, S(0())) , l15^#(x, y, res, tmp, False(), t) -> gcd^#(y, 0()) , l8^#(x, y, res, False(), mtmp, t) -> l10^#(x, y, res, False(), mtmp, t) , l10^#(x, y, res, tmp, mtmp, t) -> l11^#(x, y, res, tmp, mtmp, <(x, y)) , m4^#(S(x'), S(x), res, t) -> c_14(monus^#(x', x)) , l12^#(x, y, res, tmp, mtmp, t) -> l13^#(x, y, res, tmp, monus(x, y), t) , l12^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , l11^#(x, y, res, tmp, mtmp, True()) -> l12^#(x, y, res, tmp, mtmp, True()) , l11^#(x, y, res, tmp, mtmp, False()) -> l14^#(x, y, res, tmp, mtmp, False()) , l3^#(x, y, res, tmp, mtmp, t) -> l4^#(x, y, 0(), tmp, mtmp, t) , l4^#(x', x, res, tmp, mtmp, t) -> l5^#(x', x, res, tmp, mtmp, False()) , m2^#(a, b, res, False()) -> c_20(m4^#(a, b, res, False())) } Weak Trs: { e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) We estimate the number of application of {2} by applications of Pre({2}) = {1}. Here rules are labeled as follows: DPs: { 1: monus^#(a, b) -> c_11(m1^#(a, b, False(), False())) , 2: m1^#(a, x, res, t) -> c_21(m2^#(a, x, res, False())) , 3: l5^#(x, y, res, tmp, mtmp, False()) -> l7^#(x, y, res, tmp, mtmp, False()) , 4: l7^#(x, y, res, tmp, mtmp, t) -> l8^#(x, y, res, equal0(x, y), mtmp, t) , 5: l1^#(x, y, res, tmp, mtmp, t) -> l2^#(x, y, res, tmp, mtmp, False()) , 6: l2^#(x, y, res, tmp, mtmp, False()) -> l3^#(x, y, res, tmp, mtmp, False()) , 7: l13^#(x, y, res, tmp, True(), t) -> gcd^#(S(0()), y) , 8: l13^#(x, y, res, tmp, False(), t) -> gcd^#(0(), y) , 9: gcd^#(x, y) -> l1^#(x, y, 0(), False(), False(), False()) , 10: l14^#(x, y, res, tmp, mtmp, t) -> l15^#(x, y, res, tmp, monus(x, y), t) , 11: l14^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , 12: l15^#(x, y, res, tmp, True(), t) -> gcd^#(y, S(0())) , 13: l15^#(x, y, res, tmp, False(), t) -> gcd^#(y, 0()) , 14: l8^#(x, y, res, False(), mtmp, t) -> l10^#(x, y, res, False(), mtmp, t) , 15: l10^#(x, y, res, tmp, mtmp, t) -> l11^#(x, y, res, tmp, mtmp, <(x, y)) , 16: m4^#(S(x'), S(x), res, t) -> c_14(monus^#(x', x)) , 17: l12^#(x, y, res, tmp, mtmp, t) -> l13^#(x, y, res, tmp, monus(x, y), t) , 18: l12^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , 19: l11^#(x, y, res, tmp, mtmp, True()) -> l12^#(x, y, res, tmp, mtmp, True()) , 20: l11^#(x, y, res, tmp, mtmp, False()) -> l14^#(x, y, res, tmp, mtmp, False()) , 21: l3^#(x, y, res, tmp, mtmp, t) -> l4^#(x, y, 0(), tmp, mtmp, t) , 22: l4^#(x', x, res, tmp, mtmp, t) -> l5^#(x', x, res, tmp, mtmp, False()) , 23: m2^#(a, b, res, False()) -> c_20(m4^#(a, b, res, False())) } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { monus^#(a, b) -> c_11(m1^#(a, b, False(), False())) } Weak DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> l7^#(x, y, res, tmp, mtmp, False()) , l7^#(x, y, res, tmp, mtmp, t) -> l8^#(x, y, res, equal0(x, y), mtmp, t) , l1^#(x, y, res, tmp, mtmp, t) -> l2^#(x, y, res, tmp, mtmp, False()) , l2^#(x, y, res, tmp, mtmp, False()) -> l3^#(x, y, res, tmp, mtmp, False()) , l13^#(x, y, res, tmp, True(), t) -> gcd^#(S(0()), y) , l13^#(x, y, res, tmp, False(), t) -> gcd^#(0(), y) , gcd^#(x, y) -> l1^#(x, y, 0(), False(), False(), False()) , l14^#(x, y, res, tmp, mtmp, t) -> l15^#(x, y, res, tmp, monus(x, y), t) , l14^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , l15^#(x, y, res, tmp, True(), t) -> gcd^#(y, S(0())) , l15^#(x, y, res, tmp, False(), t) -> gcd^#(y, 0()) , l8^#(x, y, res, False(), mtmp, t) -> l10^#(x, y, res, False(), mtmp, t) , l10^#(x, y, res, tmp, mtmp, t) -> l11^#(x, y, res, tmp, mtmp, <(x, y)) , m4^#(S(x'), S(x), res, t) -> c_14(monus^#(x', x)) , l12^#(x, y, res, tmp, mtmp, t) -> l13^#(x, y, res, tmp, monus(x, y), t) , l12^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , l11^#(x, y, res, tmp, mtmp, True()) -> l12^#(x, y, res, tmp, mtmp, True()) , l11^#(x, y, res, tmp, mtmp, False()) -> l14^#(x, y, res, tmp, mtmp, False()) , l3^#(x, y, res, tmp, mtmp, t) -> l4^#(x, y, 0(), tmp, mtmp, t) , l4^#(x', x, res, tmp, mtmp, t) -> l5^#(x', x, res, tmp, mtmp, False()) , m2^#(a, b, res, False()) -> c_20(m4^#(a, b, res, False())) , m1^#(a, x, res, t) -> c_21(m2^#(a, x, res, False())) } Weak Trs: { e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) We use the processor 'matrix interpretation of dimension 1' to orient following rules strictly. DPs: { 10: l14^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , 15: m4^#(S(x'), S(x), res, t) -> c_14(monus^#(x', x)) , 17: l12^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , 23: m1^#(a, x, res, t) -> c_21(m2^#(a, x, res, False())) } Trs: { <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(0()), b, res, True()) -> False() , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Sub-proof: ---------- The following argument positions are usable: Uargs(c_11) = {1}, Uargs(c_14) = {1}, Uargs(c_20) = {1}, Uargs(c_21) = {1} TcT has computed the following constructor-based matrix interpretation satisfying not(EDA). [True] = [7] [e2](x1, x2, x3, x4) = [1] x4 + [0] [e3](x1, x2, x3, x4) = [7] [m5](x1, x2, x3, x4) = [1] x3 + [0] [<](x1, x2) = [4] x2 + [5] [e1](x1, x2, x3, x4) = [5] [m4](x1, x2, x3, x4) = [1] x1 + [4] [equal0](x1, x2) = [5] [False] = [5] [m2](x1, x2, x3, x4) = [1] x1 + [5] [monus](x1, x2) = [1] x1 + [5] [S](x1) = [1] x1 + [1] [0] = [0] [m1](x1, x2, x3, x4) = [1] x1 + [5] [e4](x1, x2, x3, x4) = [4] x1 + [1] x4 + [2] [l5^#](x1, x2, x3, x4, x5, x6) = [2] x1 + [2] x2 + [7] [l7^#](x1, x2, x3, x4, x5, x6) = [2] x1 + [2] x2 + [7] [l1^#](x1, x2, x3, x4, x5, x6) = [2] x1 + [2] x2 + [7] [l2^#](x1, x2, x3, x4, x5, x6) = [2] x1 + [2] x2 + [1] x6 + [2] [l13^#](x1, x2, x3, x4, x5, x6) = [2] x2 + [1] x5 + [2] [gcd^#](x1, x2) = [2] x1 + [2] x2 + [7] [l14^#](x1, x2, x3, x4, x5, x6) = [1] x1 + [2] x2 + [7] [l15^#](x1, x2, x3, x4, x5, x6) = [2] x2 + [1] x5 + [2] [monus^#](x1, x2) = [1] x1 + [1] x2 + [6] [l8^#](x1, x2, x3, x4, x5, x6) = [2] x1 + [2] x2 + [7] [l10^#](x1, x2, x3, x4, x5, x6) = [2] x1 + [2] x2 + [7] [m4^#](x1, x2, x3, x4) = [1] x1 + [1] x2 + [5] [l12^#](x1, x2, x3, x4, x5, x6) = [1] x1 + [2] x2 + [7] [l11^#](x1, x2, x3, x4, x5, x6) = [1] x1 + [2] x2 + [7] [l3^#](x1, x2, x3, x4, x5, x6) = [2] x1 + [2] x2 + [7] [l4^#](x1, x2, x3, x4, x5, x6) = [2] x1 + [2] x2 + [7] [m2^#](x1, x2, x3, x4) = [1] x1 + [1] x2 + [1] x4 + [0] [m1^#](x1, x2, x3, x4) = [1] x1 + [1] x2 + [6] [c_11](x1) = [1] x1 + [0] [c_14](x1) = [1] x1 + [0] [c_20](x1) = [1] x1 + [0] [c_21](x1) = [1] x1 + [0] The order satisfies the following ordering constraints: [e2(a, b, res, True())] = [7] >= [7] = [e3(a, b, res, True())] [e2(a, b, res, False())] = [5] >= [5] = [False()] [e3(a, b, res, t)] = [7] ? [8] a + [7] = [e4(a, b, res, <(b, a))] [m5(a, b, res, t)] = [1] res + [0] >= [1] res + [0] = [res] [<(x, 0())] = [5] >= [5] = [False()] [<(S(x), S(y))] = [4] y + [9] > [4] y + [5] = [<(x, y)] [<(0(), S(y))] = [4] y + [9] > [7] = [True()] [e1(a, b, res, t)] = [5] ? [4] b + [5] = [e2(a, b, res, <(a, b))] [m4(S(x'), S(x), res, t)] = [1] x' + [5] >= [1] x' + [5] = [m5(S(x'), S(x), monus(x', x), t)] [equal0(a, b)] = [5] >= [5] = [e1(a, b, False(), False())] [m2(a, b, res, False())] = [1] a + [5] > [1] a + [4] = [m4(a, b, res, False())] [m2(S(S(x)), b, res, True())] = [1] x + [7] >= [7] = [True()] [m2(S(0()), b, res, True())] = [6] > [5] = [False()] [m2(0(), b, res, True())] = [5] >= [5] = [False()] [monus(a, b)] = [1] a + [5] >= [1] a + [5] = [m1(a, b, False(), False())] [m1(a, x, res, t)] = [1] a + [5] >= [1] a + [5] = [m2(a, x, res, False())] [e4(a, b, res, True())] = [4] a + [9] > [7] = [True()] [e4(a, b, res, False())] = [4] a + [7] > [5] = [False()] [l5^#(x, y, res, tmp, mtmp, False())] = [2] x + [2] y + [7] >= [2] x + [2] y + [7] = [l7^#(x, y, res, tmp, mtmp, False())] [l7^#(x, y, res, tmp, mtmp, t)] = [2] x + [2] y + [7] >= [2] x + [2] y + [7] = [l8^#(x, y, res, equal0(x, y), mtmp, t)] [l1^#(x, y, res, tmp, mtmp, t)] = [2] x + [2] y + [7] >= [2] x + [2] y + [7] = [l2^#(x, y, res, tmp, mtmp, False())] [l2^#(x, y, res, tmp, mtmp, False())] = [2] x + [2] y + [7] >= [2] x + [2] y + [7] = [l3^#(x, y, res, tmp, mtmp, False())] [l13^#(x, y, res, tmp, True(), t)] = [2] y + [9] >= [2] y + [9] = [gcd^#(S(0()), y)] [l13^#(x, y, res, tmp, False(), t)] = [2] y + [7] >= [2] y + [7] = [gcd^#(0(), y)] [gcd^#(x, y)] = [2] x + [2] y + [7] >= [2] x + [2] y + [7] = [l1^#(x, y, 0(), False(), False(), False())] [l14^#(x, y, res, tmp, mtmp, t)] = [1] x + [2] y + [7] >= [1] x + [2] y + [7] = [l15^#(x, y, res, tmp, monus(x, y), t)] [l14^#(x, y, res, tmp, mtmp, t)] = [1] x + [2] y + [7] > [1] x + [1] y + [6] = [monus^#(x, y)] [l15^#(x, y, res, tmp, True(), t)] = [2] y + [9] >= [2] y + [9] = [gcd^#(y, S(0()))] [l15^#(x, y, res, tmp, False(), t)] = [2] y + [7] >= [2] y + [7] = [gcd^#(y, 0())] [monus^#(a, b)] = [1] b + [1] a + [6] >= [1] b + [1] a + [6] = [c_11(m1^#(a, b, False(), False()))] [l8^#(x, y, res, False(), mtmp, t)] = [2] x + [2] y + [7] >= [2] x + [2] y + [7] = [l10^#(x, y, res, False(), mtmp, t)] [l10^#(x, y, res, tmp, mtmp, t)] = [2] x + [2] y + [7] >= [1] x + [2] y + [7] = [l11^#(x, y, res, tmp, mtmp, <(x, y))] [m4^#(S(x'), S(x), res, t)] = [1] x + [1] x' + [7] > [1] x + [1] x' + [6] = [c_14(monus^#(x', x))] [l12^#(x, y, res, tmp, mtmp, t)] = [1] x + [2] y + [7] >= [1] x + [2] y + [7] = [l13^#(x, y, res, tmp, monus(x, y), t)] [l12^#(x, y, res, tmp, mtmp, t)] = [1] x + [2] y + [7] > [1] x + [1] y + [6] = [monus^#(x, y)] [l11^#(x, y, res, tmp, mtmp, True())] = [1] x + [2] y + [7] >= [1] x + [2] y + [7] = [l12^#(x, y, res, tmp, mtmp, True())] [l11^#(x, y, res, tmp, mtmp, False())] = [1] x + [2] y + [7] >= [1] x + [2] y + [7] = [l14^#(x, y, res, tmp, mtmp, False())] [l3^#(x, y, res, tmp, mtmp, t)] = [2] x + [2] y + [7] >= [2] x + [2] y + [7] = [l4^#(x, y, 0(), tmp, mtmp, t)] [l4^#(x', x, res, tmp, mtmp, t)] = [2] x + [2] x' + [7] >= [2] x + [2] x' + [7] = [l5^#(x', x, res, tmp, mtmp, False())] [m2^#(a, b, res, False())] = [1] b + [1] a + [5] >= [1] b + [1] a + [5] = [c_20(m4^#(a, b, res, False()))] [m1^#(a, x, res, t)] = [1] x + [1] a + [6] > [1] x + [1] a + [5] = [c_21(m2^#(a, x, res, False()))] We return to the main proof. Consider the set of all dependency pairs : { 1: monus^#(a, b) -> c_11(m1^#(a, b, False(), False())) , 2: l5^#(x, y, res, tmp, mtmp, False()) -> l7^#(x, y, res, tmp, mtmp, False()) , 3: l7^#(x, y, res, tmp, mtmp, t) -> l8^#(x, y, res, equal0(x, y), mtmp, t) , 4: l1^#(x, y, res, tmp, mtmp, t) -> l2^#(x, y, res, tmp, mtmp, False()) , 5: l2^#(x, y, res, tmp, mtmp, False()) -> l3^#(x, y, res, tmp, mtmp, False()) , 6: l13^#(x, y, res, tmp, True(), t) -> gcd^#(S(0()), y) , 7: l13^#(x, y, res, tmp, False(), t) -> gcd^#(0(), y) , 8: gcd^#(x, y) -> l1^#(x, y, 0(), False(), False(), False()) , 9: l14^#(x, y, res, tmp, mtmp, t) -> l15^#(x, y, res, tmp, monus(x, y), t) , 10: l14^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , 11: l15^#(x, y, res, tmp, True(), t) -> gcd^#(y, S(0())) , 12: l15^#(x, y, res, tmp, False(), t) -> gcd^#(y, 0()) , 13: l8^#(x, y, res, False(), mtmp, t) -> l10^#(x, y, res, False(), mtmp, t) , 14: l10^#(x, y, res, tmp, mtmp, t) -> l11^#(x, y, res, tmp, mtmp, <(x, y)) , 15: m4^#(S(x'), S(x), res, t) -> c_14(monus^#(x', x)) , 16: l12^#(x, y, res, tmp, mtmp, t) -> l13^#(x, y, res, tmp, monus(x, y), t) , 17: l12^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , 18: l11^#(x, y, res, tmp, mtmp, True()) -> l12^#(x, y, res, tmp, mtmp, True()) , 19: l11^#(x, y, res, tmp, mtmp, False()) -> l14^#(x, y, res, tmp, mtmp, False()) , 20: l3^#(x, y, res, tmp, mtmp, t) -> l4^#(x, y, 0(), tmp, mtmp, t) , 21: l4^#(x', x, res, tmp, mtmp, t) -> l5^#(x', x, res, tmp, mtmp, False()) , 22: m2^#(a, b, res, False()) -> c_20(m4^#(a, b, res, False())) , 23: m1^#(a, x, res, t) -> c_21(m2^#(a, x, res, False())) } Processor 'matrix interpretation of dimension 1' induces the complexity certificate YES(?,O(n^1)) on application of dependency pairs {10,15,17,23}. These cover all (indirect) predecessors of dependency pairs {1,10,15,17,22,23}, their number of application is equally bounded. The dependency pairs are shifted into the weak component. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Weak DPs: { l5^#(x, y, res, tmp, mtmp, False()) -> l7^#(x, y, res, tmp, mtmp, False()) , l7^#(x, y, res, tmp, mtmp, t) -> l8^#(x, y, res, equal0(x, y), mtmp, t) , l1^#(x, y, res, tmp, mtmp, t) -> l2^#(x, y, res, tmp, mtmp, False()) , l2^#(x, y, res, tmp, mtmp, False()) -> l3^#(x, y, res, tmp, mtmp, False()) , l13^#(x, y, res, tmp, True(), t) -> gcd^#(S(0()), y) , l13^#(x, y, res, tmp, False(), t) -> gcd^#(0(), y) , gcd^#(x, y) -> l1^#(x, y, 0(), False(), False(), False()) , l14^#(x, y, res, tmp, mtmp, t) -> l15^#(x, y, res, tmp, monus(x, y), t) , l14^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , l15^#(x, y, res, tmp, True(), t) -> gcd^#(y, S(0())) , l15^#(x, y, res, tmp, False(), t) -> gcd^#(y, 0()) , monus^#(a, b) -> c_11(m1^#(a, b, False(), False())) , l8^#(x, y, res, False(), mtmp, t) -> l10^#(x, y, res, False(), mtmp, t) , l10^#(x, y, res, tmp, mtmp, t) -> l11^#(x, y, res, tmp, mtmp, <(x, y)) , m4^#(S(x'), S(x), res, t) -> c_14(monus^#(x', x)) , l12^#(x, y, res, tmp, mtmp, t) -> l13^#(x, y, res, tmp, monus(x, y), t) , l12^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , l11^#(x, y, res, tmp, mtmp, True()) -> l12^#(x, y, res, tmp, mtmp, True()) , l11^#(x, y, res, tmp, mtmp, False()) -> l14^#(x, y, res, tmp, mtmp, False()) , l3^#(x, y, res, tmp, mtmp, t) -> l4^#(x, y, 0(), tmp, mtmp, t) , l4^#(x', x, res, tmp, mtmp, t) -> l5^#(x', x, res, tmp, mtmp, False()) , m2^#(a, b, res, False()) -> c_20(m4^#(a, b, res, False())) , m1^#(a, x, res, t) -> c_21(m2^#(a, x, res, False())) } Weak Trs: { e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { l5^#(x, y, res, tmp, mtmp, False()) -> l7^#(x, y, res, tmp, mtmp, False()) , l7^#(x, y, res, tmp, mtmp, t) -> l8^#(x, y, res, equal0(x, y), mtmp, t) , l1^#(x, y, res, tmp, mtmp, t) -> l2^#(x, y, res, tmp, mtmp, False()) , l2^#(x, y, res, tmp, mtmp, False()) -> l3^#(x, y, res, tmp, mtmp, False()) , l13^#(x, y, res, tmp, True(), t) -> gcd^#(S(0()), y) , l13^#(x, y, res, tmp, False(), t) -> gcd^#(0(), y) , gcd^#(x, y) -> l1^#(x, y, 0(), False(), False(), False()) , l14^#(x, y, res, tmp, mtmp, t) -> l15^#(x, y, res, tmp, monus(x, y), t) , l14^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , l15^#(x, y, res, tmp, True(), t) -> gcd^#(y, S(0())) , l15^#(x, y, res, tmp, False(), t) -> gcd^#(y, 0()) , monus^#(a, b) -> c_11(m1^#(a, b, False(), False())) , l8^#(x, y, res, False(), mtmp, t) -> l10^#(x, y, res, False(), mtmp, t) , l10^#(x, y, res, tmp, mtmp, t) -> l11^#(x, y, res, tmp, mtmp, <(x, y)) , m4^#(S(x'), S(x), res, t) -> c_14(monus^#(x', x)) , l12^#(x, y, res, tmp, mtmp, t) -> l13^#(x, y, res, tmp, monus(x, y), t) , l12^#(x, y, res, tmp, mtmp, t) -> monus^#(x, y) , l11^#(x, y, res, tmp, mtmp, True()) -> l12^#(x, y, res, tmp, mtmp, True()) , l11^#(x, y, res, tmp, mtmp, False()) -> l14^#(x, y, res, tmp, mtmp, False()) , l3^#(x, y, res, tmp, mtmp, t) -> l4^#(x, y, 0(), tmp, mtmp, t) , l4^#(x', x, res, tmp, mtmp, t) -> l5^#(x', x, res, tmp, mtmp, False()) , m2^#(a, b, res, False()) -> c_20(m4^#(a, b, res, False())) , m1^#(a, x, res, t) -> c_21(m2^#(a, x, res, False())) } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Weak Trs: { e2(a, b, res, True()) -> e3(a, b, res, True()) , e2(a, b, res, False()) -> False() , e3(a, b, res, t) -> e4(a, b, res, <(b, a)) , m5(a, b, res, t) -> res , <(x, 0()) -> False() , <(S(x), S(y)) -> <(x, y) , <(0(), S(y)) -> True() , e1(a, b, res, t) -> e2(a, b, res, <(a, b)) , m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) , equal0(a, b) -> e1(a, b, False(), False()) , m2(a, b, res, False()) -> m4(a, b, res, False()) , m2(S(S(x)), b, res, True()) -> True() , m2(S(0()), b, res, True()) -> False() , m2(0(), b, res, True()) -> False() , monus(a, b) -> m1(a, b, False(), False()) , m1(a, x, res, t) -> m2(a, x, res, False()) , e4(a, b, res, True()) -> True() , e4(a, b, res, False()) -> False() } Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) No rule is usable, rules are removed from the input problem. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Rules: Empty Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) Empty rules are trivially bounded Hurray, we answered YES(O(1),O(n^2))