318.81/291.51 WORST_CASE(Omega(n^1), ?) 318.81/291.52 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 318.81/291.52 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 318.81/291.52 318.81/291.52 318.81/291.52 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 318.81/291.52 318.81/291.52 (0) CpxTRS 318.81/291.52 (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] 318.81/291.52 (2) CpxTRS 318.81/291.52 (3) SlicingProof [LOWER BOUND(ID), 0 ms] 318.81/291.52 (4) CpxTRS 318.81/291.52 (5) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 318.81/291.52 (6) typed CpxTrs 318.81/291.52 (7) OrderProof [LOWER BOUND(ID), 0 ms] 318.81/291.52 (8) typed CpxTrs 318.81/291.52 (9) RewriteLemmaProof [LOWER BOUND(ID), 477 ms] 318.81/291.52 (10) BEST 318.81/291.52 (11) proven lower bound 318.81/291.52 (12) LowerBoundPropagationProof [FINISHED, 0 ms] 318.81/291.52 (13) BOUNDS(n^1, INF) 318.81/291.52 (14) typed CpxTrs 318.81/291.52 318.81/291.52 318.81/291.52 ---------------------------------------- 318.81/291.52 318.81/291.52 (0) 318.81/291.52 Obligation: 318.81/291.52 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 318.81/291.52 318.81/291.52 318.81/291.52 The TRS R consists of the following rules: 318.81/291.52 318.81/291.52 din(der(plus(X, Y))) -> u21(din(der(X)), X, Y) 318.81/291.52 u21(dout(DX), X, Y) -> u22(din(der(Y)), X, Y, DX) 318.81/291.52 u22(dout(DY), X, Y, DX) -> dout(plus(DX, DY)) 318.81/291.52 din(der(times(X, Y))) -> u31(din(der(X)), X, Y) 318.81/291.52 u31(dout(DX), X, Y) -> u32(din(der(Y)), X, Y, DX) 318.81/291.52 u32(dout(DY), X, Y, DX) -> dout(plus(times(X, DY), times(Y, DX))) 318.81/291.52 din(der(der(X))) -> u41(din(der(X)), X) 318.81/291.52 u41(dout(DX), X) -> u42(din(der(DX)), X, DX) 318.81/291.52 u42(dout(DDX), X, DX) -> dout(DDX) 318.81/291.52 318.81/291.52 S is empty. 318.81/291.52 Rewrite Strategy: FULL 318.81/291.52 ---------------------------------------- 318.81/291.52 318.81/291.52 (1) RenamingProof (BOTH BOUNDS(ID, ID)) 318.81/291.52 Renamed function symbols to avoid clashes with predefined symbol. 318.81/291.52 ---------------------------------------- 318.81/291.52 318.81/291.52 (2) 318.81/291.52 Obligation: 318.81/291.52 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 318.81/291.52 318.81/291.52 318.81/291.52 The TRS R consists of the following rules: 318.81/291.52 318.81/291.52 din(der(plus(X, Y))) -> u21(din(der(X)), X, Y) 318.81/291.52 u21(dout(DX), X, Y) -> u22(din(der(Y)), X, Y, DX) 318.81/291.52 u22(dout(DY), X, Y, DX) -> dout(plus(DX, DY)) 318.81/291.52 din(der(times(X, Y))) -> u31(din(der(X)), X, Y) 318.81/291.52 u31(dout(DX), X, Y) -> u32(din(der(Y)), X, Y, DX) 318.81/291.52 u32(dout(DY), X, Y, DX) -> dout(plus(times(X, DY), times(Y, DX))) 318.81/291.52 din(der(der(X))) -> u41(din(der(X)), X) 318.81/291.52 u41(dout(DX), X) -> u42(din(der(DX)), X, DX) 318.81/291.52 u42(dout(DDX), X, DX) -> dout(DDX) 318.81/291.52 318.81/291.52 S is empty. 318.81/291.52 Rewrite Strategy: FULL 318.81/291.52 ---------------------------------------- 318.81/291.52 318.81/291.52 (3) SlicingProof (LOWER BOUND(ID)) 318.81/291.52 Sliced the following arguments: 318.81/291.52 u21/1 318.81/291.52 u22/1 318.81/291.52 u22/2 318.81/291.52 u41/1 318.81/291.52 u42/1 318.81/291.52 u42/2 318.81/291.52 318.81/291.52 ---------------------------------------- 318.81/291.52 318.81/291.52 (4) 318.81/291.52 Obligation: 318.81/291.52 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 318.81/291.52 318.81/291.52 318.81/291.52 The TRS R consists of the following rules: 318.81/291.52 318.81/291.52 din(der(plus(X, Y))) -> u21(din(der(X)), Y) 318.81/291.52 u21(dout(DX), Y) -> u22(din(der(Y)), DX) 318.81/291.52 u22(dout(DY), DX) -> dout(plus(DX, DY)) 318.81/291.52 din(der(times(X, Y))) -> u31(din(der(X)), X, Y) 318.81/291.52 u31(dout(DX), X, Y) -> u32(din(der(Y)), X, Y, DX) 318.81/291.52 u32(dout(DY), X, Y, DX) -> dout(plus(times(X, DY), times(Y, DX))) 318.81/291.52 din(der(der(X))) -> u41(din(der(X))) 318.81/291.52 u41(dout(DX)) -> u42(din(der(DX))) 318.81/291.52 u42(dout(DDX)) -> dout(DDX) 318.81/291.52 318.81/291.52 S is empty. 318.81/291.52 Rewrite Strategy: FULL 318.81/291.52 ---------------------------------------- 318.81/291.52 318.81/291.52 (5) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 318.81/291.52 Infered types. 318.81/291.52 ---------------------------------------- 318.81/291.52 318.81/291.52 (6) 318.81/291.52 Obligation: 318.81/291.52 TRS: 318.81/291.52 Rules: 318.81/291.52 din(der(plus(X, Y))) -> u21(din(der(X)), Y) 318.81/291.52 u21(dout(DX), Y) -> u22(din(der(Y)), DX) 318.81/291.52 u22(dout(DY), DX) -> dout(plus(DX, DY)) 318.81/291.52 din(der(times(X, Y))) -> u31(din(der(X)), X, Y) 318.81/291.52 u31(dout(DX), X, Y) -> u32(din(der(Y)), X, Y, DX) 318.81/291.52 u32(dout(DY), X, Y, DX) -> dout(plus(times(X, DY), times(Y, DX))) 318.81/291.52 din(der(der(X))) -> u41(din(der(X))) 318.81/291.52 u41(dout(DX)) -> u42(din(der(DX))) 318.81/291.52 u42(dout(DDX)) -> dout(DDX) 318.81/291.52 318.81/291.52 Types: 318.81/291.52 din :: plus:der:times -> dout 318.81/291.52 der :: plus:der:times -> plus:der:times 318.81/291.52 plus :: plus:der:times -> plus:der:times -> plus:der:times 318.81/291.52 u21 :: dout -> plus:der:times -> dout 318.81/291.52 dout :: plus:der:times -> dout 318.81/291.52 u22 :: dout -> plus:der:times -> dout 318.81/291.52 times :: plus:der:times -> plus:der:times -> plus:der:times 318.81/291.52 u31 :: dout -> plus:der:times -> plus:der:times -> dout 318.81/291.52 u32 :: dout -> plus:der:times -> plus:der:times -> plus:der:times -> dout 318.81/291.52 u41 :: dout -> dout 318.81/291.52 u42 :: dout -> dout 318.81/291.52 hole_dout1_0 :: dout 318.81/291.52 hole_plus:der:times2_0 :: plus:der:times 318.81/291.52 gen_plus:der:times3_0 :: Nat -> plus:der:times 318.81/291.52 318.81/291.52 ---------------------------------------- 318.81/291.52 318.81/291.52 (7) OrderProof (LOWER BOUND(ID)) 318.81/291.52 Heuristically decided to analyse the following defined symbols: 318.81/291.52 din, u41 318.81/291.52 318.81/291.52 They will be analysed ascendingly in the following order: 318.81/291.52 din = u41 318.81/291.52 318.81/291.52 ---------------------------------------- 318.81/291.52 318.81/291.52 (8) 318.81/291.52 Obligation: 318.81/291.52 TRS: 318.81/291.52 Rules: 318.81/291.52 din(der(plus(X, Y))) -> u21(din(der(X)), Y) 318.81/291.52 u21(dout(DX), Y) -> u22(din(der(Y)), DX) 318.81/291.52 u22(dout(DY), DX) -> dout(plus(DX, DY)) 318.81/291.52 din(der(times(X, Y))) -> u31(din(der(X)), X, Y) 318.81/291.52 u31(dout(DX), X, Y) -> u32(din(der(Y)), X, Y, DX) 318.81/291.52 u32(dout(DY), X, Y, DX) -> dout(plus(times(X, DY), times(Y, DX))) 318.81/291.52 din(der(der(X))) -> u41(din(der(X))) 318.81/291.52 u41(dout(DX)) -> u42(din(der(DX))) 318.81/291.52 u42(dout(DDX)) -> dout(DDX) 318.81/291.52 318.81/291.52 Types: 318.81/291.52 din :: plus:der:times -> dout 318.81/291.52 der :: plus:der:times -> plus:der:times 318.81/291.52 plus :: plus:der:times -> plus:der:times -> plus:der:times 318.81/291.52 u21 :: dout -> plus:der:times -> dout 318.81/291.52 dout :: plus:der:times -> dout 318.81/291.52 u22 :: dout -> plus:der:times -> dout 318.81/291.52 times :: plus:der:times -> plus:der:times -> plus:der:times 318.81/291.52 u31 :: dout -> plus:der:times -> plus:der:times -> dout 318.81/291.52 u32 :: dout -> plus:der:times -> plus:der:times -> plus:der:times -> dout 318.81/291.52 u41 :: dout -> dout 318.81/291.52 u42 :: dout -> dout 318.81/291.52 hole_dout1_0 :: dout 318.81/291.52 hole_plus:der:times2_0 :: plus:der:times 318.81/291.52 gen_plus:der:times3_0 :: Nat -> plus:der:times 318.81/291.52 318.81/291.52 318.81/291.52 Generator Equations: 318.81/291.52 gen_plus:der:times3_0(0) <=> hole_plus:der:times2_0 318.81/291.52 gen_plus:der:times3_0(+(x, 1)) <=> der(gen_plus:der:times3_0(x)) 318.81/291.52 318.81/291.52 318.81/291.52 The following defined symbols remain to be analysed: 318.81/291.52 u41, din 318.81/291.52 318.81/291.52 They will be analysed ascendingly in the following order: 318.81/291.52 din = u41 318.81/291.52 318.81/291.52 ---------------------------------------- 318.81/291.52 318.81/291.52 (9) RewriteLemmaProof (LOWER BOUND(ID)) 318.81/291.52 Proved the following rewrite lemma: 318.81/291.52 din(gen_plus:der:times3_0(+(2, n29_0))) -> *4_0, rt in Omega(n29_0) 318.81/291.52 318.81/291.52 Induction Base: 318.81/291.52 din(gen_plus:der:times3_0(+(2, 0))) 318.81/291.52 318.81/291.52 Induction Step: 318.81/291.52 din(gen_plus:der:times3_0(+(2, +(n29_0, 1)))) ->_R^Omega(1) 318.81/291.52 u41(din(der(gen_plus:der:times3_0(+(1, n29_0))))) ->_IH 318.81/291.52 u41(*4_0) 318.81/291.52 318.81/291.52 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 318.81/291.52 ---------------------------------------- 318.81/291.52 318.81/291.52 (10) 318.81/291.52 Complex Obligation (BEST) 318.81/291.52 318.81/291.52 ---------------------------------------- 318.81/291.52 318.81/291.52 (11) 318.81/291.52 Obligation: 318.81/291.52 Proved the lower bound n^1 for the following obligation: 318.81/291.52 318.81/291.52 TRS: 318.81/291.52 Rules: 318.81/291.52 din(der(plus(X, Y))) -> u21(din(der(X)), Y) 318.81/291.52 u21(dout(DX), Y) -> u22(din(der(Y)), DX) 318.81/291.52 u22(dout(DY), DX) -> dout(plus(DX, DY)) 318.81/291.52 din(der(times(X, Y))) -> u31(din(der(X)), X, Y) 318.81/291.52 u31(dout(DX), X, Y) -> u32(din(der(Y)), X, Y, DX) 318.81/291.52 u32(dout(DY), X, Y, DX) -> dout(plus(times(X, DY), times(Y, DX))) 318.81/291.52 din(der(der(X))) -> u41(din(der(X))) 318.81/291.52 u41(dout(DX)) -> u42(din(der(DX))) 318.81/291.52 u42(dout(DDX)) -> dout(DDX) 318.81/291.52 318.81/291.52 Types: 318.81/291.52 din :: plus:der:times -> dout 318.81/291.52 der :: plus:der:times -> plus:der:times 318.81/291.52 plus :: plus:der:times -> plus:der:times -> plus:der:times 318.81/291.52 u21 :: dout -> plus:der:times -> dout 318.81/291.52 dout :: plus:der:times -> dout 318.81/291.52 u22 :: dout -> plus:der:times -> dout 318.81/291.52 times :: plus:der:times -> plus:der:times -> plus:der:times 318.81/291.52 u31 :: dout -> plus:der:times -> plus:der:times -> dout 318.81/291.52 u32 :: dout -> plus:der:times -> plus:der:times -> plus:der:times -> dout 318.81/291.52 u41 :: dout -> dout 318.81/291.52 u42 :: dout -> dout 318.81/291.52 hole_dout1_0 :: dout 318.81/291.52 hole_plus:der:times2_0 :: plus:der:times 318.81/291.52 gen_plus:der:times3_0 :: Nat -> plus:der:times 318.81/291.52 318.81/291.52 318.81/291.52 Generator Equations: 318.81/291.52 gen_plus:der:times3_0(0) <=> hole_plus:der:times2_0 318.81/291.52 gen_plus:der:times3_0(+(x, 1)) <=> der(gen_plus:der:times3_0(x)) 318.81/291.52 318.81/291.52 318.81/291.52 The following defined symbols remain to be analysed: 318.81/291.52 din 318.81/291.52 318.81/291.52 They will be analysed ascendingly in the following order: 318.81/291.52 din = u41 318.81/291.52 318.81/291.52 ---------------------------------------- 318.81/291.52 318.81/291.52 (12) LowerBoundPropagationProof (FINISHED) 318.81/291.52 Propagated lower bound. 318.81/291.52 ---------------------------------------- 318.81/291.52 318.81/291.52 (13) 318.81/291.52 BOUNDS(n^1, INF) 318.81/291.52 318.81/291.52 ---------------------------------------- 318.81/291.52 318.81/291.52 (14) 318.81/291.52 Obligation: 318.81/291.52 TRS: 318.81/291.52 Rules: 318.81/291.52 din(der(plus(X, Y))) -> u21(din(der(X)), Y) 318.81/291.52 u21(dout(DX), Y) -> u22(din(der(Y)), DX) 318.81/291.52 u22(dout(DY), DX) -> dout(plus(DX, DY)) 318.81/291.52 din(der(times(X, Y))) -> u31(din(der(X)), X, Y) 318.81/291.52 u31(dout(DX), X, Y) -> u32(din(der(Y)), X, Y, DX) 318.81/291.52 u32(dout(DY), X, Y, DX) -> dout(plus(times(X, DY), times(Y, DX))) 318.81/291.52 din(der(der(X))) -> u41(din(der(X))) 318.81/291.52 u41(dout(DX)) -> u42(din(der(DX))) 318.81/291.52 u42(dout(DDX)) -> dout(DDX) 318.81/291.52 318.81/291.52 Types: 318.81/291.52 din :: plus:der:times -> dout 318.81/291.52 der :: plus:der:times -> plus:der:times 318.81/291.52 plus :: plus:der:times -> plus:der:times -> plus:der:times 318.81/291.52 u21 :: dout -> plus:der:times -> dout 318.81/291.52 dout :: plus:der:times -> dout 318.81/291.52 u22 :: dout -> plus:der:times -> dout 318.81/291.52 times :: plus:der:times -> plus:der:times -> plus:der:times 318.81/291.52 u31 :: dout -> plus:der:times -> plus:der:times -> dout 318.81/291.52 u32 :: dout -> plus:der:times -> plus:der:times -> plus:der:times -> dout 318.81/291.52 u41 :: dout -> dout 318.81/291.52 u42 :: dout -> dout 318.81/291.52 hole_dout1_0 :: dout 318.81/291.52 hole_plus:der:times2_0 :: plus:der:times 318.81/291.52 gen_plus:der:times3_0 :: Nat -> plus:der:times 318.81/291.52 318.81/291.52 318.81/291.52 Lemmas: 318.81/291.52 din(gen_plus:der:times3_0(+(2, n29_0))) -> *4_0, rt in Omega(n29_0) 318.81/291.52 318.81/291.52 318.81/291.52 Generator Equations: 318.81/291.52 gen_plus:der:times3_0(0) <=> hole_plus:der:times2_0 318.81/291.52 gen_plus:der:times3_0(+(x, 1)) <=> der(gen_plus:der:times3_0(x)) 318.81/291.52 318.81/291.52 318.81/291.52 The following defined symbols remain to be analysed: 318.81/291.52 u41 318.81/291.52 318.81/291.52 They will be analysed ascendingly in the following order: 318.81/291.52 din = u41 318.81/291.56 EOF