We consider the following Problem: Strict Trs: { #less(@x, @y) -> #cklt(#compare(@x, @y)) , findMin(@l) -> findMin#1(@l) , findMin#1(::(@x, @xs)) -> findMin#2(findMin(@xs), @x) , findMin#1(nil()) -> nil() , findMin#2(::(@y, @ys), @x) -> findMin#3(#less(@x, @y), @x, @y, @ys) , findMin#2(nil(), @x) -> ::(@x, nil()) , findMin#3(#false(), @x, @y, @ys) -> ::(@y, ::(@x, @ys)) , findMin#3(#true(), @x, @y, @ys) -> ::(@x, ::(@y, @ys)) , minSort(@l) -> minSort#1(findMin(@l)) , minSort#1(::(@x, @xs)) -> ::(@x, minSort(@xs)) , minSort#1(nil()) -> nil()} Weak Trs: { #cklt(#EQ()) -> #false() , #cklt(#GT()) -> #false() , #cklt(#LT()) -> #true() , #compare(#0(), #0()) -> #EQ() , #compare(#0(), #neg(@y)) -> #GT() , #compare(#0(), #pos(@y)) -> #LT() , #compare(#0(), #s(@y)) -> #LT() , #compare(#neg(@x), #0()) -> #LT() , #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) , #compare(#neg(@x), #pos(@y)) -> #LT() , #compare(#pos(@x), #0()) -> #GT() , #compare(#pos(@x), #neg(@y)) -> #GT() , #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) , #compare(#s(@x), #0()) -> #GT() , #compare(#s(@x), #s(@y)) -> #compare(@x, @y)} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: We consider the following Problem: Strict Trs: { #less(@x, @y) -> #cklt(#compare(@x, @y)) , findMin(@l) -> findMin#1(@l) , findMin#1(::(@x, @xs)) -> findMin#2(findMin(@xs), @x) , findMin#1(nil()) -> nil() , findMin#2(::(@y, @ys), @x) -> findMin#3(#less(@x, @y), @x, @y, @ys) , findMin#2(nil(), @x) -> ::(@x, nil()) , findMin#3(#false(), @x, @y, @ys) -> ::(@y, ::(@x, @ys)) , findMin#3(#true(), @x, @y, @ys) -> ::(@x, ::(@y, @ys)) , minSort(@l) -> minSort#1(findMin(@l)) , minSort#1(::(@x, @xs)) -> ::(@x, minSort(@xs)) , minSort#1(nil()) -> nil()} Weak Trs: { #cklt(#EQ()) -> #false() , #cklt(#GT()) -> #false() , #cklt(#LT()) -> #true() , #compare(#0(), #0()) -> #EQ() , #compare(#0(), #neg(@y)) -> #GT() , #compare(#0(), #pos(@y)) -> #LT() , #compare(#0(), #s(@y)) -> #LT() , #compare(#neg(@x), #0()) -> #LT() , #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) , #compare(#neg(@x), #pos(@y)) -> #LT() , #compare(#pos(@x), #0()) -> #GT() , #compare(#pos(@x), #neg(@y)) -> #GT() , #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) , #compare(#s(@x), #0()) -> #GT() , #compare(#s(@x), #s(@y)) -> #compare(@x, @y)} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The weightgap principle applies, where following rules are oriented strictly: TRS Component: { findMin#1(nil()) -> nil() , findMin#2(nil(), @x) -> ::(@x, nil()) , findMin#3(#false(), @x, @y, @ys) -> ::(@y, ::(@x, @ys)) , findMin#3(#true(), @x, @y, @ys) -> ::(@x, ::(@y, @ys)) , minSort#1(::(@x, @xs)) -> ::(@x, minSort(@xs)) , minSort#1(nil()) -> nil()} Interpretation of nonconstant growth: ------------------------------------- The following argument positions are usable: Uargs(minSort#1) = {1}, Uargs(findMin#3) = {1}, Uargs(::) = {2}, Uargs(findMin#1) = {}, Uargs(#cklt) = {1}, Uargs(#pos) = {}, Uargs(findMin) = {}, Uargs(#neg) = {}, Uargs(#less) = {}, Uargs(minSort) = {}, Uargs(#compare) = {}, Uargs(#s) = {}, Uargs(findMin#2) = {1} We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation: Interpretation Functions: minSort#1(x1) = [1 0] x1 + [1] [0 0] [1] #true() = [0] [0] #false() = [0] [0] findMin#3(x1, x2, x3, x4) = [1 0] x1 + [0 0] x2 + [0 0] x3 + [1 0] x4 + [1] [1 1] [1 1] [1 1] [0 0] [1] ::(x1, x2) = [0 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [1] #LT() = [0] [0] findMin#1(x1) = [0 0] x1 + [1] [0 0] [1] #cklt(x1) = [1 0] x1 + [1] [0 0] [1] #pos(x1) = [0 0] x1 + [0] [0 0] [0] #0() = [0] [0] findMin(x1) = [0 0] x1 + [0] [0 0] [0] #neg(x1) = [0 0] x1 + [0] [0 0] [0] #EQ() = [0] [0] #less(x1, x2) = [0 0] x1 + [0 0] x2 + [0] [0 0] [0 0] [0] minSort(x1) = [0 0] x1 + [0] [0 0] [0] #compare(x1, x2) = [0 0] x1 + [0 0] x2 + [0] [0 0] [0 0] [1] #s(x1) = [0 0] x1 + [0] [0 0] [0] #GT() = [0] [0] nil() = [0] [0] findMin#2(x1, x2) = [1 0] x1 + [0 0] x2 + [1] [0 0] [0 0] [1] The strictly oriented rules are moved into the weak component. We consider the following Problem: Strict Trs: { #less(@x, @y) -> #cklt(#compare(@x, @y)) , findMin(@l) -> findMin#1(@l) , findMin#1(::(@x, @xs)) -> findMin#2(findMin(@xs), @x) , findMin#2(::(@y, @ys), @x) -> findMin#3(#less(@x, @y), @x, @y, @ys) , minSort(@l) -> minSort#1(findMin(@l))} Weak Trs: { findMin#1(nil()) -> nil() , findMin#2(nil(), @x) -> ::(@x, nil()) , findMin#3(#false(), @x, @y, @ys) -> ::(@y, ::(@x, @ys)) , findMin#3(#true(), @x, @y, @ys) -> ::(@x, ::(@y, @ys)) , minSort#1(::(@x, @xs)) -> ::(@x, minSort(@xs)) , minSort#1(nil()) -> nil() , #cklt(#EQ()) -> #false() , #cklt(#GT()) -> #false() , #cklt(#LT()) -> #true() , #compare(#0(), #0()) -> #EQ() , #compare(#0(), #neg(@y)) -> #GT() , #compare(#0(), #pos(@y)) -> #LT() , #compare(#0(), #s(@y)) -> #LT() , #compare(#neg(@x), #0()) -> #LT() , #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) , #compare(#neg(@x), #pos(@y)) -> #LT() , #compare(#pos(@x), #0()) -> #GT() , #compare(#pos(@x), #neg(@y)) -> #GT() , #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) , #compare(#s(@x), #0()) -> #GT() , #compare(#s(@x), #s(@y)) -> #compare(@x, @y)} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The weightgap principle applies, where following rules are oriented strictly: TRS Component: {minSort(@l) -> minSort#1(findMin(@l))} Interpretation of nonconstant growth: ------------------------------------- The following argument positions are usable: Uargs(minSort#1) = {1}, Uargs(findMin#3) = {1}, Uargs(::) = {2}, Uargs(findMin#1) = {}, Uargs(#cklt) = {1}, Uargs(#pos) = {}, Uargs(findMin) = {}, Uargs(#neg) = {}, Uargs(#less) = {}, Uargs(minSort) = {}, Uargs(#compare) = {}, Uargs(#s) = {}, Uargs(findMin#2) = {1} We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation: Interpretation Functions: minSort#1(x1) = [1 1] x1 + [1] [0 0] [1] #true() = [0] [0] #false() = [1] [0] findMin#3(x1, x2, x3, x4) = [1 0] x1 + [0 0] x2 + [0 0] x3 + [1 0] x4 + [1] [0 0] [1 1] [1 1] [0 0] [1] ::(x1, x2) = [0 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [1] #LT() = [0] [0] findMin#1(x1) = [0 0] x1 + [1] [0 0] [1] #cklt(x1) = [1 0] x1 + [1] [0 0] [1] #pos(x1) = [0 0] x1 + [0] [0 0] [0] #0() = [0] [0] findMin(x1) = [0 0] x1 + [0] [0 0] [0] #neg(x1) = [0 0] x1 + [0] [0 0] [0] #EQ() = [0] [0] #less(x1, x2) = [0 0] x1 + [0 0] x2 + [0] [0 0] [0 0] [0] minSort(x1) = [0 0] x1 + [2] [0 0] [1] #compare(x1, x2) = [0 0] x1 + [0 0] x2 + [0] [0 0] [0 0] [1] #s(x1) = [0 0] x1 + [0] [0 0] [0] #GT() = [0] [0] nil() = [0] [0] findMin#2(x1, x2) = [1 0] x1 + [0 0] x2 + [1] [0 0] [0 0] [1] The strictly oriented rules are moved into the weak component. We consider the following Problem: Strict Trs: { #less(@x, @y) -> #cklt(#compare(@x, @y)) , findMin(@l) -> findMin#1(@l) , findMin#1(::(@x, @xs)) -> findMin#2(findMin(@xs), @x) , findMin#2(::(@y, @ys), @x) -> findMin#3(#less(@x, @y), @x, @y, @ys)} Weak Trs: { minSort(@l) -> minSort#1(findMin(@l)) , findMin#1(nil()) -> nil() , findMin#2(nil(), @x) -> ::(@x, nil()) , findMin#3(#false(), @x, @y, @ys) -> ::(@y, ::(@x, @ys)) , findMin#3(#true(), @x, @y, @ys) -> ::(@x, ::(@y, @ys)) , minSort#1(::(@x, @xs)) -> ::(@x, minSort(@xs)) , minSort#1(nil()) -> nil() , #cklt(#EQ()) -> #false() , #cklt(#GT()) -> #false() , #cklt(#LT()) -> #true() , #compare(#0(), #0()) -> #EQ() , #compare(#0(), #neg(@y)) -> #GT() , #compare(#0(), #pos(@y)) -> #LT() , #compare(#0(), #s(@y)) -> #LT() , #compare(#neg(@x), #0()) -> #LT() , #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) , #compare(#neg(@x), #pos(@y)) -> #LT() , #compare(#pos(@x), #0()) -> #GT() , #compare(#pos(@x), #neg(@y)) -> #GT() , #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) , #compare(#s(@x), #0()) -> #GT() , #compare(#s(@x), #s(@y)) -> #compare(@x, @y)} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The weightgap principle applies, where following rules are oriented strictly: TRS Component: {#less(@x, @y) -> #cklt(#compare(@x, @y))} Interpretation of nonconstant growth: ------------------------------------- The following argument positions are usable: Uargs(minSort#1) = {1}, Uargs(findMin#3) = {1}, Uargs(::) = {2}, Uargs(findMin#1) = {}, Uargs(#cklt) = {1}, Uargs(#pos) = {}, Uargs(findMin) = {}, Uargs(#neg) = {}, Uargs(#less) = {}, Uargs(minSort) = {}, Uargs(#compare) = {}, Uargs(#s) = {}, Uargs(findMin#2) = {1} We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation: Interpretation Functions: minSort#1(x1) = [1 0] x1 + [1] [0 0] [1] #true() = [0] [0] #false() = [0] [0] findMin#3(x1, x2, x3, x4) = [1 0] x1 + [0 0] x2 + [0 0] x3 + [1 0] x4 + [1] [0 0] [1 1] [1 1] [0 0] [1] ::(x1, x2) = [0 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [1] #LT() = [0] [0] findMin#1(x1) = [0 0] x1 + [1] [0 0] [1] #cklt(x1) = [1 0] x1 + [1] [0 0] [1] #pos(x1) = [0 0] x1 + [0] [0 0] [0] #0() = [0] [0] findMin(x1) = [0 0] x1 + [0] [0 0] [0] #neg(x1) = [0 0] x1 + [0] [0 0] [0] #EQ() = [0] [0] #less(x1, x2) = [0 0] x1 + [0 0] x2 + [2] [0 0] [0 0] [1] minSort(x1) = [0 0] x1 + [1] [0 0] [2] #compare(x1, x2) = [0 0] x1 + [0 0] x2 + [0] [0 0] [0 0] [1] #s(x1) = [0 0] x1 + [0] [0 0] [0] #GT() = [0] [0] nil() = [0] [0] findMin#2(x1, x2) = [1 0] x1 + [0 0] x2 + [1] [0 0] [0 0] [1] The strictly oriented rules are moved into the weak component. We consider the following Problem: Strict Trs: { findMin(@l) -> findMin#1(@l) , findMin#1(::(@x, @xs)) -> findMin#2(findMin(@xs), @x) , findMin#2(::(@y, @ys), @x) -> findMin#3(#less(@x, @y), @x, @y, @ys)} Weak Trs: { #less(@x, @y) -> #cklt(#compare(@x, @y)) , minSort(@l) -> minSort#1(findMin(@l)) , findMin#1(nil()) -> nil() , findMin#2(nil(), @x) -> ::(@x, nil()) , findMin#3(#false(), @x, @y, @ys) -> ::(@y, ::(@x, @ys)) , findMin#3(#true(), @x, @y, @ys) -> ::(@x, ::(@y, @ys)) , minSort#1(::(@x, @xs)) -> ::(@x, minSort(@xs)) , minSort#1(nil()) -> nil() , #cklt(#EQ()) -> #false() , #cklt(#GT()) -> #false() , #cklt(#LT()) -> #true() , #compare(#0(), #0()) -> #EQ() , #compare(#0(), #neg(@y)) -> #GT() , #compare(#0(), #pos(@y)) -> #LT() , #compare(#0(), #s(@y)) -> #LT() , #compare(#neg(@x), #0()) -> #LT() , #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) , #compare(#neg(@x), #pos(@y)) -> #LT() , #compare(#pos(@x), #0()) -> #GT() , #compare(#pos(@x), #neg(@y)) -> #GT() , #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) , #compare(#s(@x), #0()) -> #GT() , #compare(#s(@x), #s(@y)) -> #compare(@x, @y)} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The weightgap principle applies, where following rules are oriented strictly: TRS Component: {findMin#2(::(@y, @ys), @x) -> findMin#3(#less(@x, @y), @x, @y, @ys)} Interpretation of nonconstant growth: ------------------------------------- The following argument positions are usable: Uargs(minSort#1) = {1}, Uargs(findMin#3) = {1}, Uargs(::) = {2}, Uargs(findMin#1) = {}, Uargs(#cklt) = {1}, Uargs(#pos) = {}, Uargs(findMin) = {}, Uargs(#neg) = {}, Uargs(#less) = {}, Uargs(minSort) = {}, Uargs(#compare) = {}, Uargs(#s) = {}, Uargs(findMin#2) = {1} We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation: Interpretation Functions: minSort#1(x1) = [1 0] x1 + [1] [0 0] [1] #true() = [0] [0] #false() = [0] [0] findMin#3(x1, x2, x3, x4) = [1 0] x1 + [0 0] x2 + [0 0] x3 + [1 0] x4 + [0] [0 0] [1 1] [0 0] [0 0] [1] ::(x1, x2) = [0 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [1] #LT() = [0] [0] findMin#1(x1) = [0 0] x1 + [1] [0 0] [1] #cklt(x1) = [1 0] x1 + [0] [0 0] [1] #pos(x1) = [0 0] x1 + [0] [0 0] [0] #0() = [0] [0] findMin(x1) = [0 0] x1 + [0] [0 0] [0] #neg(x1) = [0 0] x1 + [0] [0 0] [0] #EQ() = [0] [0] #less(x1, x2) = [0 0] x1 + [0 0] x2 + [0] [0 0] [0 0] [1] minSort(x1) = [0 0] x1 + [1] [0 0] [2] #compare(x1, x2) = [0 0] x1 + [0 0] x2 + [0] [0 0] [0 0] [1] #s(x1) = [0 0] x1 + [0] [0 0] [0] #GT() = [0] [0] nil() = [0] [0] findMin#2(x1, x2) = [1 0] x1 + [0 0] x2 + [1] [0 0] [1 1] [1] The strictly oriented rules are moved into the weak component. We consider the following Problem: Strict Trs: { findMin(@l) -> findMin#1(@l) , findMin#1(::(@x, @xs)) -> findMin#2(findMin(@xs), @x)} Weak Trs: { findMin#2(::(@y, @ys), @x) -> findMin#3(#less(@x, @y), @x, @y, @ys) , #less(@x, @y) -> #cklt(#compare(@x, @y)) , minSort(@l) -> minSort#1(findMin(@l)) , findMin#1(nil()) -> nil() , findMin#2(nil(), @x) -> ::(@x, nil()) , findMin#3(#false(), @x, @y, @ys) -> ::(@y, ::(@x, @ys)) , findMin#3(#true(), @x, @y, @ys) -> ::(@x, ::(@y, @ys)) , minSort#1(::(@x, @xs)) -> ::(@x, minSort(@xs)) , minSort#1(nil()) -> nil() , #cklt(#EQ()) -> #false() , #cklt(#GT()) -> #false() , #cklt(#LT()) -> #true() , #compare(#0(), #0()) -> #EQ() , #compare(#0(), #neg(@y)) -> #GT() , #compare(#0(), #pos(@y)) -> #LT() , #compare(#0(), #s(@y)) -> #LT() , #compare(#neg(@x), #0()) -> #LT() , #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) , #compare(#neg(@x), #pos(@y)) -> #LT() , #compare(#pos(@x), #0()) -> #GT() , #compare(#pos(@x), #neg(@y)) -> #GT() , #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) , #compare(#s(@x), #0()) -> #GT() , #compare(#s(@x), #s(@y)) -> #compare(@x, @y)} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The weightgap principle applies, where following rules are oriented strictly: TRS Component: {findMin#1(::(@x, @xs)) -> findMin#2(findMin(@xs), @x)} Interpretation of nonconstant growth: ------------------------------------- The following argument positions are usable: Uargs(minSort#1) = {1}, Uargs(findMin#3) = {1}, Uargs(::) = {2}, Uargs(findMin#1) = {}, Uargs(#cklt) = {1}, Uargs(#pos) = {}, Uargs(findMin) = {}, Uargs(#neg) = {}, Uargs(#less) = {}, Uargs(minSort) = {}, Uargs(#compare) = {}, Uargs(#s) = {}, Uargs(findMin#2) = {1} We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation: Interpretation Functions: minSort#1(x1) = [1 3] x1 + [2] [0 0] [3] #true() = [0] [0] #false() = [0] [0] findMin#3(x1, x2, x3, x4) = [1 0] x1 + [0 0] x2 + [0 0] x3 + [1 0] x4 + [0] [0 0] [0 0] [0 0] [0 0] [2] ::(x1, x2) = [0 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [2] #LT() = [0] [0] findMin#1(x1) = [0 0] x1 + [1] [0 0] [3] #cklt(x1) = [1 0] x1 + [0] [0 0] [1] #pos(x1) = [0 0] x1 + [0] [0 1] [0] #0() = [0] [1] findMin(x1) = [0 0] x1 + [0] [0 0] [0] #neg(x1) = [0 0] x1 + [0] [0 1] [0] #EQ() = [0] [0] #less(x1, x2) = [0 0] x1 + [0 0] x2 + [0] [0 0] [0 0] [2] minSort(x1) = [0 0] x1 + [2] [0 0] [3] #compare(x1, x2) = [0 0] x1 + [0 0] x2 + [0] [0 1] [0 1] [1] #s(x1) = [0 0] x1 + [0] [0 1] [0] #GT() = [0] [0] nil() = [0] [2] findMin#2(x1, x2) = [1 2] x1 + [0 0] x2 + [0] [0 0] [0 0] [3] The strictly oriented rules are moved into the weak component. We consider the following Problem: Strict Trs: {findMin(@l) -> findMin#1(@l)} Weak Trs: { findMin#1(::(@x, @xs)) -> findMin#2(findMin(@xs), @x) , findMin#2(::(@y, @ys), @x) -> findMin#3(#less(@x, @y), @x, @y, @ys) , #less(@x, @y) -> #cklt(#compare(@x, @y)) , minSort(@l) -> minSort#1(findMin(@l)) , findMin#1(nil()) -> nil() , findMin#2(nil(), @x) -> ::(@x, nil()) , findMin#3(#false(), @x, @y, @ys) -> ::(@y, ::(@x, @ys)) , findMin#3(#true(), @x, @y, @ys) -> ::(@x, ::(@y, @ys)) , minSort#1(::(@x, @xs)) -> ::(@x, minSort(@xs)) , minSort#1(nil()) -> nil() , #cklt(#EQ()) -> #false() , #cklt(#GT()) -> #false() , #cklt(#LT()) -> #true() , #compare(#0(), #0()) -> #EQ() , #compare(#0(), #neg(@y)) -> #GT() , #compare(#0(), #pos(@y)) -> #LT() , #compare(#0(), #s(@y)) -> #LT() , #compare(#neg(@x), #0()) -> #LT() , #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) , #compare(#neg(@x), #pos(@y)) -> #LT() , #compare(#pos(@x), #0()) -> #GT() , #compare(#pos(@x), #neg(@y)) -> #GT() , #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) , #compare(#s(@x), #0()) -> #GT() , #compare(#s(@x), #s(@y)) -> #compare(@x, @y)} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: We consider the following Problem: Strict Trs: {findMin(@l) -> findMin#1(@l)} Weak Trs: { findMin#1(::(@x, @xs)) -> findMin#2(findMin(@xs), @x) , findMin#2(::(@y, @ys), @x) -> findMin#3(#less(@x, @y), @x, @y, @ys) , #less(@x, @y) -> #cklt(#compare(@x, @y)) , minSort(@l) -> minSort#1(findMin(@l)) , findMin#1(nil()) -> nil() , findMin#2(nil(), @x) -> ::(@x, nil()) , findMin#3(#false(), @x, @y, @ys) -> ::(@y, ::(@x, @ys)) , findMin#3(#true(), @x, @y, @ys) -> ::(@x, ::(@y, @ys)) , minSort#1(::(@x, @xs)) -> ::(@x, minSort(@xs)) , minSort#1(nil()) -> nil() , #cklt(#EQ()) -> #false() , #cklt(#GT()) -> #false() , #cklt(#LT()) -> #true() , #compare(#0(), #0()) -> #EQ() , #compare(#0(), #neg(@y)) -> #GT() , #compare(#0(), #pos(@y)) -> #LT() , #compare(#0(), #s(@y)) -> #LT() , #compare(#neg(@x), #0()) -> #LT() , #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) , #compare(#neg(@x), #pos(@y)) -> #LT() , #compare(#pos(@x), #0()) -> #GT() , #compare(#pos(@x), #neg(@y)) -> #GT() , #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) , #compare(#s(@x), #0()) -> #GT() , #compare(#s(@x), #s(@y)) -> #compare(@x, @y)} StartTerms: basic terms Strategy: innermost Certificate: YES(?,O(n^2)) Proof: The following argument positions are usable: Uargs(minSort#1) = {1}, Uargs(findMin#3) = {1}, Uargs(::) = {2}, Uargs(findMin#1) = {}, Uargs(#cklt) = {1}, Uargs(#pos) = {}, Uargs(findMin) = {}, Uargs(#neg) = {}, Uargs(#less) = {}, Uargs(minSort) = {}, Uargs(#compare) = {}, Uargs(#s) = {}, Uargs(findMin#2) = {1} We have the following constructor-based EDA-non-satisfying and IDA(2)-non-satisfying matrix interpretation: Interpretation Functions: minSort#1(x1) = [1 0 2] x1 + [0] [0 2 0] [0] [0 0 2] [2] #true() = [0] [2] [0] #false() = [0] [2] [0] findMin#3(x1, x2, x3, x4) = [1 0 0] x1 + [0 0 0] x2 + [0 0 0] x3 + [1 0 0] x4 + [0] [0 2 0] [0 0 0] [0 0 0] [0 1 0] [0] [0 2 0] [0 0 0] [0 0 0] [0 2 1] [0] ::(x1, x2) = [0 0 0] x1 + [1 0 0] x2 + [0] [0 0 0] [0 1 0] [2] [0 0 0] [0 1 1] [1] #LT() = [0] [0] [0] findMin#1(x1) = [0 2 0] x1 + [0] [0 1 0] [0] [0 0 1] [0] #cklt(x1) = [2 0 0] x1 + [0] [0 0 0] [2] [0 1 0] [0] #pos(x1) = [1 0 0] x1 + [0] [0 1 0] [1] [0 0 0] [0] #0() = [0] [2] [0] findMin(x1) = [0 2 0] x1 + [1] [0 1 0] [0] [0 0 1] [0] #neg(x1) = [0 0 0] x1 + [0] [0 1 0] [0] [0 0 0] [0] #EQ() = [0] [1] [0] #less(x1, x2) = [0 0 0] x1 + [0 0 0] x2 + [0] [0 0 0] [0 0 0] [2] [0 1 0] [0 1 0] [1] minSort(x1) = [0 2 2] x1 + [1] [0 2 0] [0] [0 0 2] [2] #compare(x1, x2) = [0 0 0] x1 + [0 0 0] x2 + [0] [0 1 0] [0 1 0] [1] [0 1 0] [0 1 0] [0] #s(x1) = [0 0 0] x1 + [0] [0 1 0] [0] [0 0 1] [0] #GT() = [0] [0] [0] nil() = [0] [0] [0] findMin#2(x1, x2) = [1 0 0] x1 + [0 0 0] x2 + [0] [0 1 0] [0 0 0] [2] [0 1 1] [0 0 0] [1] Hurray, we answered YES(?,O(n^2))