* Step 1: DependencyPairs WORST_CASE(?,O(1)) + Considered Problem: - Strict TRS: f(X,X) -> c(X) f(X,c(X)) -> f(s(X),X) f(s(X),X) -> f(X,a(X)) - Signature: {f/2} / {a/1,c/1,s/1} - Obligation: runtime complexity wrt. defined symbols {f} and constructors {a,c,s} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following weak dependency pairs: Strict DPs f#(X,X) -> c_1(X) f#(X,c(X)) -> c_2(f#(s(X),X)) f#(s(X),X) -> c_3(f#(X,a(X))) Weak DPs and mark the set of starting terms. * Step 2: UsableRules WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: f#(X,X) -> c_1(X) f#(X,c(X)) -> c_2(f#(s(X),X)) f#(s(X),X) -> c_3(f#(X,a(X))) - Strict TRS: f(X,X) -> c(X) f(X,c(X)) -> f(s(X),X) f(s(X),X) -> f(X,a(X)) - Signature: {f/2,f#/2} / {a/1,c/1,s/1,c_1/1,c_2/1,c_3/1} - Obligation: runtime complexity wrt. defined symbols {f#} and constructors {a,c,s} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: f#(X,X) -> c_1(X) f#(X,c(X)) -> c_2(f#(s(X),X)) f#(s(X),X) -> c_3(f#(X,a(X))) * Step 3: WeightGap WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: f#(X,X) -> c_1(X) f#(X,c(X)) -> c_2(f#(s(X),X)) f#(s(X),X) -> c_3(f#(X,a(X))) - Signature: {f/2,f#/2} / {a/1,c/1,s/1,c_1/1,c_2/1,c_3/1} - Obligation: runtime complexity wrt. defined symbols {f#} and constructors {a,c,s} + Applied Processor: WeightGap {wgDimension = 1, wgDegree = 0, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} + Details: The weightgap principle applies using the following constant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 0 non-zero interpretation-entries in the diagonal of the component-wise maxima): The following argument positions are considered usable: uargs(c_2) = {1} Following symbols are considered usable: all TcT has computed the following interpretation: p(a) = [2] p(c) = [1] p(f) = [1] x2 + [1] p(s) = [1] p(f#) = [4] p(c_1) = [1] p(c_2) = [1] x1 + [3] p(c_3) = [0] Following rules are strictly oriented: f#(X,X) = [4] > [1] = c_1(X) f#(s(X),X) = [4] > [0] = c_3(f#(X,a(X))) Following rules are (at-least) weakly oriented: f#(X,c(X)) = [4] >= [7] = c_2(f#(s(X),X)) Further, it can be verified that all rules not oriented are covered by the weightgap condition. * Step 4: WeightGap WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: f#(X,c(X)) -> c_2(f#(s(X),X)) - Weak DPs: f#(X,X) -> c_1(X) f#(s(X),X) -> c_3(f#(X,a(X))) - Signature: {f/2,f#/2} / {a/1,c/1,s/1,c_1/1,c_2/1,c_3/1} - Obligation: runtime complexity wrt. defined symbols {f#} and constructors {a,c,s} + Applied Processor: WeightGap {wgDimension = 1, wgDegree = 0, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} + Details: The weightgap principle applies using the following constant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 0 non-zero interpretation-entries in the diagonal of the component-wise maxima): The following argument positions are considered usable: uargs(c_2) = {1} Following symbols are considered usable: all TcT has computed the following interpretation: p(a) = [1] p(c) = [8] p(f) = [0] p(s) = [1] p(f#) = [2] x1 + [2] x2 + [3] p(c_1) = [1] p(c_2) = [1] x1 + [8] p(c_3) = [1] x1 + [0] Following rules are strictly oriented: f#(X,c(X)) = [2] X + [19] > [2] X + [13] = c_2(f#(s(X),X)) Following rules are (at-least) weakly oriented: f#(X,X) = [4] X + [3] >= [1] = c_1(X) f#(s(X),X) = [2] X + [5] >= [2] X + [5] = c_3(f#(X,a(X))) Further, it can be verified that all rules not oriented are covered by the weightgap condition. * Step 5: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: f#(X,X) -> c_1(X) f#(X,c(X)) -> c_2(f#(s(X),X)) f#(s(X),X) -> c_3(f#(X,a(X))) - Signature: {f/2,f#/2} / {a/1,c/1,s/1,c_1/1,c_2/1,c_3/1} - Obligation: runtime complexity wrt. defined symbols {f#} and constructors {a,c,s} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). WORST_CASE(?,O(1))