/export/starexec/sandbox/solver/bin/starexec_run_complexity /export/starexec/sandbox/benchmark/theBenchmark.koat /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- WORST_CASE(Omega(n^1), O(n^1)) proof of /export/starexec/sandbox/benchmark/theBenchmark.koat # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(n^1, n^1). (0) CpxIntTrs (1) Koat Proof [FINISHED, 34 ms] (2) BOUNDS(1, n^1) (3) Loat Proof [FINISHED, 420 ms] (4) BOUNDS(n^1, INF) ---------------------------------------- (0) Obligation: Complexity Int TRS consisting of the following rules: f2(A, B, C, D, E) -> Com_1(f1(A, F, C, D, E)) :|: 1 >= A f2(A, B, C, D, E) -> Com_1(f300(A, B, C, D, E)) :|: A >= 2 && C >= 2 f300(A, B, C, D, E) -> Com_1(f1(A, F, C, D, E)) :|: D + 1 >= 0 f300(A, B, C, D, E) -> Com_1(f300(A, B, C, 1 + D, 1 + E)) :|: E >= 0 && 0 >= 2 + D f300(A, B, C, D, E) -> Com_1(f300(A, B, C, 1 + D, 1 + E)) :|: 0 >= 2 + E && 0 >= 2 + D The start-symbols are:[f2_5] ---------------------------------------- (1) Koat Proof (FINISHED) YES(?, 2*Ar_3 + 3) Initial complexity problem: 1: T: (Comp: ?, Cost: 1) f2(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f1(Ar_0, Fresh_1, Ar_2, Ar_3, Ar_4)) [ 1 >= Ar_0 ] (Comp: ?, Cost: 1) f2(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4)) [ Ar_0 >= 2 /\ Ar_2 >= 2 ] (Comp: ?, Cost: 1) f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f1(Ar_0, Fresh_0, Ar_2, Ar_3, Ar_4)) [ Ar_3 + 1 >= 0 ] (Comp: ?, Cost: 1) f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f300(Ar_0, Ar_1, Ar_2, Ar_3 + 1, Ar_4 + 1)) [ Ar_4 >= 0 /\ 0 >= Ar_3 + 2 ] (Comp: ?, Cost: 1) f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f300(Ar_0, Ar_1, Ar_2, Ar_3 + 1, Ar_4 + 1)) [ 0 >= Ar_4 + 2 /\ 0 >= Ar_3 + 2 ] (Comp: 1, Cost: 0) koat_start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f2(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 Repeatedly propagating knowledge in problem 1 produces the following problem: 2: T: (Comp: 1, Cost: 1) f2(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f1(Ar_0, Fresh_1, Ar_2, Ar_3, Ar_4)) [ 1 >= Ar_0 ] (Comp: 1, Cost: 1) f2(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4)) [ Ar_0 >= 2 /\ Ar_2 >= 2 ] (Comp: ?, Cost: 1) f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f1(Ar_0, Fresh_0, Ar_2, Ar_3, Ar_4)) [ Ar_3 + 1 >= 0 ] (Comp: ?, Cost: 1) f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f300(Ar_0, Ar_1, Ar_2, Ar_3 + 1, Ar_4 + 1)) [ Ar_4 >= 0 /\ 0 >= Ar_3 + 2 ] (Comp: ?, Cost: 1) f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f300(Ar_0, Ar_1, Ar_2, Ar_3 + 1, Ar_4 + 1)) [ 0 >= Ar_4 + 2 /\ 0 >= Ar_3 + 2 ] (Comp: 1, Cost: 0) koat_start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f2(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 A polynomial rank function with Pol(f2) = 1 Pol(f1) = 0 Pol(f300) = 1 Pol(koat_start) = 1 orients all transitions weakly and the transition f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f1(Ar_0, Fresh_0, Ar_2, Ar_3, Ar_4)) [ Ar_3 + 1 >= 0 ] strictly and produces the following problem: 3: T: (Comp: 1, Cost: 1) f2(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f1(Ar_0, Fresh_1, Ar_2, Ar_3, Ar_4)) [ 1 >= Ar_0 ] (Comp: 1, Cost: 1) f2(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4)) [ Ar_0 >= 2 /\ Ar_2 >= 2 ] (Comp: 1, Cost: 1) f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f1(Ar_0, Fresh_0, Ar_2, Ar_3, Ar_4)) [ Ar_3 + 1 >= 0 ] (Comp: ?, Cost: 1) f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f300(Ar_0, Ar_1, Ar_2, Ar_3 + 1, Ar_4 + 1)) [ Ar_4 >= 0 /\ 0 >= Ar_3 + 2 ] (Comp: ?, Cost: 1) f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f300(Ar_0, Ar_1, Ar_2, Ar_3 + 1, Ar_4 + 1)) [ 0 >= Ar_4 + 2 /\ 0 >= Ar_3 + 2 ] (Comp: 1, Cost: 0) koat_start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f2(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 A polynomial rank function with Pol(f2) = -V_4 Pol(f1) = -V_4 Pol(f300) = -V_4 Pol(koat_start) = -V_4 orients all transitions weakly and the transitions f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f300(Ar_0, Ar_1, Ar_2, Ar_3 + 1, Ar_4 + 1)) [ Ar_4 >= 0 /\ 0 >= Ar_3 + 2 ] f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f300(Ar_0, Ar_1, Ar_2, Ar_3 + 1, Ar_4 + 1)) [ 0 >= Ar_4 + 2 /\ 0 >= Ar_3 + 2 ] strictly and produces the following problem: 4: T: (Comp: 1, Cost: 1) f2(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f1(Ar_0, Fresh_1, Ar_2, Ar_3, Ar_4)) [ 1 >= Ar_0 ] (Comp: 1, Cost: 1) f2(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4)) [ Ar_0 >= 2 /\ Ar_2 >= 2 ] (Comp: 1, Cost: 1) f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f1(Ar_0, Fresh_0, Ar_2, Ar_3, Ar_4)) [ Ar_3 + 1 >= 0 ] (Comp: Ar_3, Cost: 1) f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f300(Ar_0, Ar_1, Ar_2, Ar_3 + 1, Ar_4 + 1)) [ Ar_4 >= 0 /\ 0 >= Ar_3 + 2 ] (Comp: Ar_3, Cost: 1) f300(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f300(Ar_0, Ar_1, Ar_2, Ar_3 + 1, Ar_4 + 1)) [ 0 >= Ar_4 + 2 /\ 0 >= Ar_3 + 2 ] (Comp: 1, Cost: 0) koat_start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4) -> Com_1(f2(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 Complexity upper bound 2*Ar_3 + 3 Time: 0.092 sec (SMT: 0.075 sec) ---------------------------------------- (2) BOUNDS(1, n^1) ---------------------------------------- (3) Loat Proof (FINISHED) ### Pre-processing the ITS problem ### Initial linear ITS problem Start location: f2 0: f2 -> f1 : B'=free, [ 1>=A ], cost: 1 1: f2 -> f300 : [ A>=2 && C>=2 ], cost: 1 2: f300 -> f1 : B'=free_1, [ 1+D>=0 ], cost: 1 3: f300 -> f300 : D'=1+D, E'=1+E, [ E>=0 && 0>=2+D ], cost: 1 4: f300 -> f300 : D'=1+D, E'=1+E, [ 0>=2+E && 0>=2+D ], cost: 1 Checking for constant complexity: The following rule is satisfiable with cost >= 1, yielding constant complexity: 0: f2 -> f1 : B'=free, [ 1>=A ], cost: 1 Removed unreachable and leaf rules: Start location: f2 1: f2 -> f300 : [ A>=2 && C>=2 ], cost: 1 3: f300 -> f300 : D'=1+D, E'=1+E, [ E>=0 && 0>=2+D ], cost: 1 4: f300 -> f300 : D'=1+D, E'=1+E, [ 0>=2+E && 0>=2+D ], cost: 1 ### Simplification by acceleration and chaining ### Accelerating simple loops of location 1. Accelerating the following rules: 3: f300 -> f300 : D'=1+D, E'=1+E, [ E>=0 && 0>=2+D ], cost: 1 4: f300 -> f300 : D'=1+D, E'=1+E, [ 0>=2+E && 0>=2+D ], cost: 1 Accelerated rule 3 with metering function -1-D, yielding the new rule 5. Accelerated rule 4 with metering function -1-D (after adding D>=E), yielding the new rule 6. Accelerated rule 4 with metering function -1-E (after adding D<=E), yielding the new rule 7. Removing the simple loops: 3 4. Accelerated all simple loops using metering functions (where possible): Start location: f2 1: f2 -> f300 : [ A>=2 && C>=2 ], cost: 1 5: f300 -> f300 : D'=-1, E'=-1-D+E, [ E>=0 && 0>=2+D ], cost: -1-D 6: f300 -> f300 : D'=-1, E'=-1-D+E, [ 0>=2+E && 0>=2+D && D>=E ], cost: -1-D 7: f300 -> f300 : D'=-1+D-E, E'=-1, [ 0>=2+E && 0>=2+D && D<=E ], cost: -1-E Chained accelerated rules (with incoming rules): Start location: f2 1: f2 -> f300 : [ A>=2 && C>=2 ], cost: 1 8: f2 -> f300 : D'=-1, E'=-1-D+E, [ A>=2 && C>=2 && E>=0 && 0>=2+D ], cost: -D 9: f2 -> f300 : D'=-1, E'=-1-D+E, [ A>=2 && C>=2 && 0>=2+E && 0>=2+D && D>=E ], cost: -D 10: f2 -> f300 : D'=-1+D-E, E'=-1, [ A>=2 && C>=2 && 0>=2+E && 0>=2+D && D<=E ], cost: -E Removed unreachable locations (and leaf rules with constant cost): Start location: f2 8: f2 -> f300 : D'=-1, E'=-1-D+E, [ A>=2 && C>=2 && E>=0 && 0>=2+D ], cost: -D 9: f2 -> f300 : D'=-1, E'=-1-D+E, [ A>=2 && C>=2 && 0>=2+E && 0>=2+D && D>=E ], cost: -D 10: f2 -> f300 : D'=-1+D-E, E'=-1, [ A>=2 && C>=2 && 0>=2+E && 0>=2+D && D<=E ], cost: -E ### Computing asymptotic complexity ### Fully simplified ITS problem Start location: f2 8: f2 -> f300 : D'=-1, E'=-1-D+E, [ A>=2 && C>=2 && E>=0 && 0>=2+D ], cost: -D 9: f2 -> f300 : D'=-1, E'=-1-D+E, [ A>=2 && C>=2 && 0>=2+E && 0>=2+D && D>=E ], cost: -D 10: f2 -> f300 : D'=-1+D-E, E'=-1, [ A>=2 && C>=2 && 0>=2+E && 0>=2+D && D<=E ], cost: -E Computing asymptotic complexity for rule 8 Solved the limit problem by the following transformations: Created initial limit problem: -D (+), -1+A (+/+!), 1+E (+/+!), -1-D (+/+!), -1+C (+/+!) [not solved] removing all constraints (solved by SMT) resulting limit problem: [solved] applying transformation rule (C) using substitution {C==n,D==-n,A==n,E==n} resulting limit problem: [solved] Solution: C / n D / -n A / n E / n Resulting cost n has complexity: Poly(n^1) Found new complexity Poly(n^1). Obtained the following overall complexity (w.r.t. the length of the input n): Complexity: Poly(n^1) Cpx degree: 1 Solved cost: n Rule cost: -D Rule guard: [ A>=2 && C>=2 && E>=0 && 0>=2+D ] WORST_CASE(Omega(n^1),?) ---------------------------------------- (4) BOUNDS(n^1, INF)