/export/starexec/sandbox2/solver/bin/starexec_run_complexity /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- WORST_CASE(Omega(n^1), O(n^1)) proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). (0) CpxTRS (1) RcToIrcProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxTRS (3) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CpxWeightedTrs (5) CpxWeightedTrsRenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxWeightedTrs (7) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxTypedWeightedTrs (9) CompletionProof [UPPER BOUND(ID), 0 ms] (10) CpxTypedWeightedCompleteTrs (11) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (12) CpxTypedWeightedCompleteTrs (13) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (14) CpxRNTS (15) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (16) CpxRNTS (17) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CpxRNTS (19) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (20) CpxRNTS (21) IntTrsBoundProof [UPPER BOUND(ID), 292 ms] (22) CpxRNTS (23) IntTrsBoundProof [UPPER BOUND(ID), 110 ms] (24) CpxRNTS (25) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (26) CpxRNTS (27) IntTrsBoundProof [UPPER BOUND(ID), 868 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 456 ms] (30) CpxRNTS (31) FinalProof [FINISHED, 0 ms] (32) BOUNDS(1, n^1) (33) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (34) CpxTRS (35) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (36) typed CpxTrs (37) OrderProof [LOWER BOUND(ID), 0 ms] (38) typed CpxTrs (39) RewriteLemmaProof [LOWER BOUND(ID), 364 ms] (40) proven lower bound (41) LowerBoundPropagationProof [FINISHED, 0 ms] (42) BOUNDS(n^1, INF) ---------------------------------------- (0) Obligation: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). The TRS R consists of the following rules: del(.(x, .(y, z))) -> f(=(x, y), x, y, z) f(true, x, y, z) -> del(.(y, z)) f(false, x, y, z) -> .(x, del(.(y, z))) =(nil, nil) -> true =(.(x, y), nil) -> false =(nil, .(y, z)) -> false =(.(x, y), .(u, v)) -> and(=(x, u), =(y, v)) S is empty. Rewrite Strategy: FULL ---------------------------------------- (1) RcToIrcProof (BOTH BOUNDS(ID, ID)) Converted rc-obligation to irc-obligation. The duplicating contexts are: del(.([], .(y, z))) del(.(x, .([], z))) The defined contexts are: f([], x1, x2, x3) As the TRS is an overlay system and the defined contexts and the duplicating contexts don't overlap, we have rc = irc. ---------------------------------------- (2) Obligation: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: del(.(x, .(y, z))) -> f(=(x, y), x, y, z) f(true, x, y, z) -> del(.(y, z)) f(false, x, y, z) -> .(x, del(.(y, z))) =(nil, nil) -> true =(.(x, y), nil) -> false =(nil, .(y, z)) -> false =(.(x, y), .(u, v)) -> and(=(x, u), =(y, v)) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (3) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (4) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: del(.(x, .(y, z))) -> f(=(x, y), x, y, z) [1] f(true, x, y, z) -> del(.(y, z)) [1] f(false, x, y, z) -> .(x, del(.(y, z))) [1] =(nil, nil) -> true [1] =(.(x, y), nil) -> false [1] =(nil, .(y, z)) -> false [1] =(.(x, y), .(u, v)) -> and(=(x, u), =(y, v)) [1] Rewrite Strategy: INNERMOST ---------------------------------------- (5) CpxWeightedTrsRenamingProof (BOTH BOUNDS(ID, ID)) Renamed defined symbols to avoid conflicts with arithmetic symbols: = => eq ---------------------------------------- (6) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: del(.(x, .(y, z))) -> f(eq(x, y), x, y, z) [1] f(true, x, y, z) -> del(.(y, z)) [1] f(false, x, y, z) -> .(x, del(.(y, z))) [1] eq(nil, nil) -> true [1] eq(.(x, y), nil) -> false [1] eq(nil, .(y, z)) -> false [1] eq(.(x, y), .(u, v)) -> and(eq(x, u), eq(y, v)) [1] Rewrite Strategy: INNERMOST ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (8) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: del(.(x, .(y, z))) -> f(eq(x, y), x, y, z) [1] f(true, x, y, z) -> del(.(y, z)) [1] f(false, x, y, z) -> .(x, del(.(y, z))) [1] eq(nil, nil) -> true [1] eq(.(x, y), nil) -> false [1] eq(nil, .(y, z)) -> false [1] eq(.(x, y), .(u, v)) -> and(eq(x, u), eq(y, v)) [1] The TRS has the following type information: del :: .:nil:u:v -> .:nil:u:v . :: .:nil:u:v -> .:nil:u:v -> .:nil:u:v f :: true:false:and -> .:nil:u:v -> .:nil:u:v -> .:nil:u:v -> .:nil:u:v eq :: .:nil:u:v -> .:nil:u:v -> true:false:and true :: true:false:and false :: true:false:and nil :: .:nil:u:v u :: .:nil:u:v v :: .:nil:u:v and :: true:false:and -> true:false:and -> true:false:and Rewrite Strategy: INNERMOST ---------------------------------------- (9) CompletionProof (UPPER BOUND(ID)) The transformation into a RNTS is sound, since: (a) The obligation is a constructor system where every type has a constant constructor, (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: del_1 f_4 (c) The following functions are completely defined: eq_2 Due to the following rules being added: eq(v0, v1) -> null_eq [0] And the following fresh constants: null_eq ---------------------------------------- (10) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: del(.(x, .(y, z))) -> f(eq(x, y), x, y, z) [1] f(true, x, y, z) -> del(.(y, z)) [1] f(false, x, y, z) -> .(x, del(.(y, z))) [1] eq(nil, nil) -> true [1] eq(.(x, y), nil) -> false [1] eq(nil, .(y, z)) -> false [1] eq(.(x, y), .(u, v)) -> and(eq(x, u), eq(y, v)) [1] eq(v0, v1) -> null_eq [0] The TRS has the following type information: del :: .:nil:u:v -> .:nil:u:v . :: .:nil:u:v -> .:nil:u:v -> .:nil:u:v f :: true:false:and:null_eq -> .:nil:u:v -> .:nil:u:v -> .:nil:u:v -> .:nil:u:v eq :: .:nil:u:v -> .:nil:u:v -> true:false:and:null_eq true :: true:false:and:null_eq false :: true:false:and:null_eq nil :: .:nil:u:v u :: .:nil:u:v v :: .:nil:u:v and :: true:false:and:null_eq -> true:false:and:null_eq -> true:false:and:null_eq null_eq :: true:false:and:null_eq Rewrite Strategy: INNERMOST ---------------------------------------- (11) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (12) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: del(.(nil, .(nil, z))) -> f(true, nil, nil, z) [2] del(.(.(x', y'), .(nil, z))) -> f(false, .(x', y'), nil, z) [2] del(.(nil, .(.(y'', z'), z))) -> f(false, nil, .(y'', z'), z) [2] del(.(.(x'', y1), .(.(u, v), z))) -> f(and(eq(x'', u), eq(y1, v)), .(x'', y1), .(u, v), z) [2] del(.(x, .(y, z))) -> f(null_eq, x, y, z) [1] f(true, x, y, z) -> del(.(y, z)) [1] f(false, x, y, z) -> .(x, del(.(y, z))) [1] eq(nil, nil) -> true [1] eq(.(x, y), nil) -> false [1] eq(nil, .(y, z)) -> false [1] eq(.(x, y), .(u, v)) -> and(eq(x, u), eq(y, v)) [1] eq(v0, v1) -> null_eq [0] The TRS has the following type information: del :: .:nil:u:v -> .:nil:u:v . :: .:nil:u:v -> .:nil:u:v -> .:nil:u:v f :: true:false:and:null_eq -> .:nil:u:v -> .:nil:u:v -> .:nil:u:v -> .:nil:u:v eq :: .:nil:u:v -> .:nil:u:v -> true:false:and:null_eq true :: true:false:and:null_eq false :: true:false:and:null_eq nil :: .:nil:u:v u :: .:nil:u:v v :: .:nil:u:v and :: true:false:and:null_eq -> true:false:and:null_eq -> true:false:and:null_eq null_eq :: true:false:and:null_eq Rewrite Strategy: INNERMOST ---------------------------------------- (13) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: true => 1 false => 0 nil => 0 u => 1 v => 2 null_eq => 0 ---------------------------------------- (14) Obligation: Complexity RNTS consisting of the following rules: del(z'') -{ 2 }-> f(1, 0, 0, z) :|: z >= 0, z'' = 1 + 0 + (1 + 0 + z) del(z'') -{ 1 }-> f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z) del(z'') -{ 2 }-> f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0 del(z'') -{ 2 }-> f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z) del(z'') -{ 2 }-> f(1 + eq(x'', 1) + eq(y1, 2), 1 + x'' + y1, 1 + 1 + 2, z) :|: y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z) eq(z'', z1) -{ 1 }-> 1 :|: z'' = 0, z1 = 0 eq(z'', z1) -{ 1 }-> 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0 eq(z'', z1) -{ 1 }-> 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0 eq(z'', z1) -{ 0 }-> 0 :|: z'' = v0, v0 >= 0, z1 = v1, v1 >= 0 eq(z'', z1) -{ 1 }-> 1 + eq(x, 1) + eq(y, 2) :|: z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2 f(z'', z1, z2, z3) -{ 1 }-> del(1 + y + z) :|: z2 = y, z >= 0, z3 = z, x >= 0, y >= 0, z'' = 1, z1 = x f(z'', z1, z2, z3) -{ 1 }-> 1 + x + del(1 + y + z) :|: z'' = 0, z2 = y, z >= 0, z3 = z, x >= 0, y >= 0, z1 = x ---------------------------------------- (15) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (16) Obligation: Complexity RNTS consisting of the following rules: del(z'') -{ 2 }-> f(1, 0, 0, z'' - 2) :|: z'' - 2 >= 0 del(z'') -{ 1 }-> f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z) del(z'') -{ 2 }-> f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0 del(z'') -{ 2 }-> f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z) del(z'') -{ 2 }-> f(1 + eq(x'', 1) + eq(y1, 2), 1 + x'' + y1, 1 + 1 + 2, z) :|: y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z) eq(z'', z1) -{ 1 }-> 1 :|: z'' = 0, z1 = 0 eq(z'', z1) -{ 1 }-> 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0 eq(z'', z1) -{ 1 }-> 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0 eq(z'', z1) -{ 0 }-> 0 :|: z'' >= 0, z1 >= 0 eq(z'', z1) -{ 1 }-> 1 + eq(x, 1) + eq(y, 2) :|: z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2 f(z'', z1, z2, z3) -{ 1 }-> del(1 + z2 + z3) :|: z3 >= 0, z1 >= 0, z2 >= 0, z'' = 1 f(z'', z1, z2, z3) -{ 1 }-> 1 + z1 + del(1 + z2 + z3) :|: z'' = 0, z3 >= 0, z1 >= 0, z2 >= 0 ---------------------------------------- (17) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { eq } { del, f } ---------------------------------------- (18) Obligation: Complexity RNTS consisting of the following rules: del(z'') -{ 2 }-> f(1, 0, 0, z'' - 2) :|: z'' - 2 >= 0 del(z'') -{ 1 }-> f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z) del(z'') -{ 2 }-> f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0 del(z'') -{ 2 }-> f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z) del(z'') -{ 2 }-> f(1 + eq(x'', 1) + eq(y1, 2), 1 + x'' + y1, 1 + 1 + 2, z) :|: y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z) eq(z'', z1) -{ 1 }-> 1 :|: z'' = 0, z1 = 0 eq(z'', z1) -{ 1 }-> 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0 eq(z'', z1) -{ 1 }-> 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0 eq(z'', z1) -{ 0 }-> 0 :|: z'' >= 0, z1 >= 0 eq(z'', z1) -{ 1 }-> 1 + eq(x, 1) + eq(y, 2) :|: z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2 f(z'', z1, z2, z3) -{ 1 }-> del(1 + z2 + z3) :|: z3 >= 0, z1 >= 0, z2 >= 0, z'' = 1 f(z'', z1, z2, z3) -{ 1 }-> 1 + z1 + del(1 + z2 + z3) :|: z'' = 0, z3 >= 0, z1 >= 0, z2 >= 0 Function symbols to be analyzed: {eq}, {del,f} ---------------------------------------- (19) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: del(z'') -{ 2 }-> f(1, 0, 0, z'' - 2) :|: z'' - 2 >= 0 del(z'') -{ 1 }-> f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z) del(z'') -{ 2 }-> f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0 del(z'') -{ 2 }-> f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z) del(z'') -{ 2 }-> f(1 + eq(x'', 1) + eq(y1, 2), 1 + x'' + y1, 1 + 1 + 2, z) :|: y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z) eq(z'', z1) -{ 1 }-> 1 :|: z'' = 0, z1 = 0 eq(z'', z1) -{ 1 }-> 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0 eq(z'', z1) -{ 1 }-> 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0 eq(z'', z1) -{ 0 }-> 0 :|: z'' >= 0, z1 >= 0 eq(z'', z1) -{ 1 }-> 1 + eq(x, 1) + eq(y, 2) :|: z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2 f(z'', z1, z2, z3) -{ 1 }-> del(1 + z2 + z3) :|: z3 >= 0, z1 >= 0, z2 >= 0, z'' = 1 f(z'', z1, z2, z3) -{ 1 }-> 1 + z1 + del(1 + z2 + z3) :|: z'' = 0, z3 >= 0, z1 >= 0, z2 >= 0 Function symbols to be analyzed: {eq}, {del,f} ---------------------------------------- (21) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: eq after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: del(z'') -{ 2 }-> f(1, 0, 0, z'' - 2) :|: z'' - 2 >= 0 del(z'') -{ 1 }-> f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z) del(z'') -{ 2 }-> f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0 del(z'') -{ 2 }-> f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z) del(z'') -{ 2 }-> f(1 + eq(x'', 1) + eq(y1, 2), 1 + x'' + y1, 1 + 1 + 2, z) :|: y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z) eq(z'', z1) -{ 1 }-> 1 :|: z'' = 0, z1 = 0 eq(z'', z1) -{ 1 }-> 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0 eq(z'', z1) -{ 1 }-> 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0 eq(z'', z1) -{ 0 }-> 0 :|: z'' >= 0, z1 >= 0 eq(z'', z1) -{ 1 }-> 1 + eq(x, 1) + eq(y, 2) :|: z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2 f(z'', z1, z2, z3) -{ 1 }-> del(1 + z2 + z3) :|: z3 >= 0, z1 >= 0, z2 >= 0, z'' = 1 f(z'', z1, z2, z3) -{ 1 }-> 1 + z1 + del(1 + z2 + z3) :|: z'' = 0, z3 >= 0, z1 >= 0, z2 >= 0 Function symbols to be analyzed: {eq}, {del,f} Previous analysis results are: eq: runtime: ?, size: O(1) [1] ---------------------------------------- (23) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: eq after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 3 ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: del(z'') -{ 2 }-> f(1, 0, 0, z'' - 2) :|: z'' - 2 >= 0 del(z'') -{ 1 }-> f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z) del(z'') -{ 2 }-> f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0 del(z'') -{ 2 }-> f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z) del(z'') -{ 2 }-> f(1 + eq(x'', 1) + eq(y1, 2), 1 + x'' + y1, 1 + 1 + 2, z) :|: y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z) eq(z'', z1) -{ 1 }-> 1 :|: z'' = 0, z1 = 0 eq(z'', z1) -{ 1 }-> 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0 eq(z'', z1) -{ 1 }-> 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0 eq(z'', z1) -{ 0 }-> 0 :|: z'' >= 0, z1 >= 0 eq(z'', z1) -{ 1 }-> 1 + eq(x, 1) + eq(y, 2) :|: z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2 f(z'', z1, z2, z3) -{ 1 }-> del(1 + z2 + z3) :|: z3 >= 0, z1 >= 0, z2 >= 0, z'' = 1 f(z'', z1, z2, z3) -{ 1 }-> 1 + z1 + del(1 + z2 + z3) :|: z'' = 0, z3 >= 0, z1 >= 0, z2 >= 0 Function symbols to be analyzed: {del,f} Previous analysis results are: eq: runtime: O(1) [3], size: O(1) [1] ---------------------------------------- (25) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: del(z'') -{ 2 }-> f(1, 0, 0, z'' - 2) :|: z'' - 2 >= 0 del(z'') -{ 1 }-> f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z) del(z'') -{ 2 }-> f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0 del(z'') -{ 2 }-> f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z) del(z'') -{ 8 }-> f(1 + s + s', 1 + x'' + y1, 1 + 1 + 2, z) :|: s >= 0, s <= 1, s' >= 0, s' <= 1, y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z) eq(z'', z1) -{ 1 }-> 1 :|: z'' = 0, z1 = 0 eq(z'', z1) -{ 1 }-> 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0 eq(z'', z1) -{ 1 }-> 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0 eq(z'', z1) -{ 0 }-> 0 :|: z'' >= 0, z1 >= 0 eq(z'', z1) -{ 7 }-> 1 + s'' + s1 :|: s'' >= 0, s'' <= 1, s1 >= 0, s1 <= 1, z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2 f(z'', z1, z2, z3) -{ 1 }-> del(1 + z2 + z3) :|: z3 >= 0, z1 >= 0, z2 >= 0, z'' = 1 f(z'', z1, z2, z3) -{ 1 }-> 1 + z1 + del(1 + z2 + z3) :|: z'' = 0, z3 >= 0, z1 >= 0, z2 >= 0 Function symbols to be analyzed: {del,f} Previous analysis results are: eq: runtime: O(1) [3], size: O(1) [1] ---------------------------------------- (27) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: del after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed SIZE bound using CoFloCo for: f after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z1 ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: del(z'') -{ 2 }-> f(1, 0, 0, z'' - 2) :|: z'' - 2 >= 0 del(z'') -{ 1 }-> f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z) del(z'') -{ 2 }-> f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0 del(z'') -{ 2 }-> f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z) del(z'') -{ 8 }-> f(1 + s + s', 1 + x'' + y1, 1 + 1 + 2, z) :|: s >= 0, s <= 1, s' >= 0, s' <= 1, y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z) eq(z'', z1) -{ 1 }-> 1 :|: z'' = 0, z1 = 0 eq(z'', z1) -{ 1 }-> 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0 eq(z'', z1) -{ 1 }-> 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0 eq(z'', z1) -{ 0 }-> 0 :|: z'' >= 0, z1 >= 0 eq(z'', z1) -{ 7 }-> 1 + s'' + s1 :|: s'' >= 0, s'' <= 1, s1 >= 0, s1 <= 1, z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2 f(z'', z1, z2, z3) -{ 1 }-> del(1 + z2 + z3) :|: z3 >= 0, z1 >= 0, z2 >= 0, z'' = 1 f(z'', z1, z2, z3) -{ 1 }-> 1 + z1 + del(1 + z2 + z3) :|: z'' = 0, z3 >= 0, z1 >= 0, z2 >= 0 Function symbols to be analyzed: {del,f} Previous analysis results are: eq: runtime: O(1) [3], size: O(1) [1] del: runtime: ?, size: O(1) [0] f: runtime: ?, size: O(n^1) [1 + z1] ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: del after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 34*z'' Computed RUNTIME bound using CoFloCo for: f after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 35 + 34*z2 + 34*z3 ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: del(z'') -{ 2 }-> f(1, 0, 0, z'' - 2) :|: z'' - 2 >= 0 del(z'') -{ 1 }-> f(0, x, y, z) :|: z >= 0, x >= 0, y >= 0, z'' = 1 + x + (1 + y + z) del(z'') -{ 2 }-> f(0, 0, 1 + y'' + z', z) :|: z >= 0, z'' = 1 + 0 + (1 + (1 + y'' + z') + z), z' >= 0, y'' >= 0 del(z'') -{ 2 }-> f(0, 1 + x' + y', 0, z) :|: z >= 0, x' >= 0, y' >= 0, z'' = 1 + (1 + x' + y') + (1 + 0 + z) del(z'') -{ 8 }-> f(1 + s + s', 1 + x'' + y1, 1 + 1 + 2, z) :|: s >= 0, s <= 1, s' >= 0, s' <= 1, y1 >= 0, z >= 0, x'' >= 0, z'' = 1 + (1 + x'' + y1) + (1 + (1 + 1 + 2) + z) eq(z'', z1) -{ 1 }-> 1 :|: z'' = 0, z1 = 0 eq(z'', z1) -{ 1 }-> 0 :|: z1 = 0, z'' = 1 + x + y, x >= 0, y >= 0 eq(z'', z1) -{ 1 }-> 0 :|: z'' = 0, z >= 0, z1 = 1 + y + z, y >= 0 eq(z'', z1) -{ 0 }-> 0 :|: z'' >= 0, z1 >= 0 eq(z'', z1) -{ 7 }-> 1 + s'' + s1 :|: s'' >= 0, s'' <= 1, s1 >= 0, s1 <= 1, z'' = 1 + x + y, x >= 0, y >= 0, z1 = 1 + 1 + 2 f(z'', z1, z2, z3) -{ 1 }-> del(1 + z2 + z3) :|: z3 >= 0, z1 >= 0, z2 >= 0, z'' = 1 f(z'', z1, z2, z3) -{ 1 }-> 1 + z1 + del(1 + z2 + z3) :|: z'' = 0, z3 >= 0, z1 >= 0, z2 >= 0 Function symbols to be analyzed: Previous analysis results are: eq: runtime: O(1) [3], size: O(1) [1] del: runtime: O(n^1) [34*z''], size: O(1) [0] f: runtime: O(n^1) [35 + 34*z2 + 34*z3], size: O(n^1) [1 + z1] ---------------------------------------- (31) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (32) BOUNDS(1, n^1) ---------------------------------------- (33) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (34) Obligation: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: del(.(x, .(y, z))) -> f(='(x, y), x, y, z) f(true, x, y, z) -> del(.(y, z)) f(false, x, y, z) -> .(x, del(.(y, z))) ='(nil, nil) -> true ='(.(x, y), nil) -> false ='(nil, .(y, z)) -> false ='(.(x, y), .(u, v)) -> and(='(x, u), ='(y, v)) S is empty. Rewrite Strategy: FULL ---------------------------------------- (35) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (36) Obligation: TRS: Rules: del(.(x, .(y, z))) -> f(='(x, y), x, y, z) f(true, x, y, z) -> del(.(y, z)) f(false, x, y, z) -> .(x, del(.(y, z))) ='(nil, nil) -> true ='(.(x, y), nil) -> false ='(nil, .(y, z)) -> false ='(.(x, y), .(u, v)) -> and(='(x, u), ='(y, v)) Types: del :: .:nil:u:v -> .:nil:u:v . :: .:nil:u:v -> .:nil:u:v -> .:nil:u:v f :: true:false:and -> .:nil:u:v -> .:nil:u:v -> .:nil:u:v -> .:nil:u:v =' :: .:nil:u:v -> .:nil:u:v -> true:false:and true :: true:false:and false :: true:false:and nil :: .:nil:u:v u :: .:nil:u:v v :: .:nil:u:v and :: true:false:and -> true:false:and -> true:false:and hole_.:nil:u:v1_0 :: .:nil:u:v hole_true:false:and2_0 :: true:false:and gen_.:nil:u:v3_0 :: Nat -> .:nil:u:v gen_true:false:and4_0 :: Nat -> true:false:and ---------------------------------------- (37) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: del, =' They will be analysed ascendingly in the following order: =' < del ---------------------------------------- (38) Obligation: TRS: Rules: del(.(x, .(y, z))) -> f(='(x, y), x, y, z) f(true, x, y, z) -> del(.(y, z)) f(false, x, y, z) -> .(x, del(.(y, z))) ='(nil, nil) -> true ='(.(x, y), nil) -> false ='(nil, .(y, z)) -> false ='(.(x, y), .(u, v)) -> and(='(x, u), ='(y, v)) Types: del :: .:nil:u:v -> .:nil:u:v . :: .:nil:u:v -> .:nil:u:v -> .:nil:u:v f :: true:false:and -> .:nil:u:v -> .:nil:u:v -> .:nil:u:v -> .:nil:u:v =' :: .:nil:u:v -> .:nil:u:v -> true:false:and true :: true:false:and false :: true:false:and nil :: .:nil:u:v u :: .:nil:u:v v :: .:nil:u:v and :: true:false:and -> true:false:and -> true:false:and hole_.:nil:u:v1_0 :: .:nil:u:v hole_true:false:and2_0 :: true:false:and gen_.:nil:u:v3_0 :: Nat -> .:nil:u:v gen_true:false:and4_0 :: Nat -> true:false:and Generator Equations: gen_.:nil:u:v3_0(0) <=> nil gen_.:nil:u:v3_0(+(x, 1)) <=> .(nil, gen_.:nil:u:v3_0(x)) gen_true:false:and4_0(0) <=> false gen_true:false:and4_0(+(x, 1)) <=> and(false, gen_true:false:and4_0(x)) The following defined symbols remain to be analysed: =', del They will be analysed ascendingly in the following order: =' < del ---------------------------------------- (39) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: del(gen_.:nil:u:v3_0(+(2, n56_0))) -> *5_0, rt in Omega(n56_0) Induction Base: del(gen_.:nil:u:v3_0(+(2, 0))) Induction Step: del(gen_.:nil:u:v3_0(+(2, +(n56_0, 1)))) ->_R^Omega(1) f(='(nil, nil), nil, nil, gen_.:nil:u:v3_0(+(1, n56_0))) ->_R^Omega(1) f(true, nil, nil, gen_.:nil:u:v3_0(+(1, n56_0))) ->_R^Omega(1) del(.(nil, gen_.:nil:u:v3_0(+(1, n56_0)))) ->_IH *5_0 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (40) Obligation: Proved the lower bound n^1 for the following obligation: TRS: Rules: del(.(x, .(y, z))) -> f(='(x, y), x, y, z) f(true, x, y, z) -> del(.(y, z)) f(false, x, y, z) -> .(x, del(.(y, z))) ='(nil, nil) -> true ='(.(x, y), nil) -> false ='(nil, .(y, z)) -> false ='(.(x, y), .(u, v)) -> and(='(x, u), ='(y, v)) Types: del :: .:nil:u:v -> .:nil:u:v . :: .:nil:u:v -> .:nil:u:v -> .:nil:u:v f :: true:false:and -> .:nil:u:v -> .:nil:u:v -> .:nil:u:v -> .:nil:u:v =' :: .:nil:u:v -> .:nil:u:v -> true:false:and true :: true:false:and false :: true:false:and nil :: .:nil:u:v u :: .:nil:u:v v :: .:nil:u:v and :: true:false:and -> true:false:and -> true:false:and hole_.:nil:u:v1_0 :: .:nil:u:v hole_true:false:and2_0 :: true:false:and gen_.:nil:u:v3_0 :: Nat -> .:nil:u:v gen_true:false:and4_0 :: Nat -> true:false:and Generator Equations: gen_.:nil:u:v3_0(0) <=> nil gen_.:nil:u:v3_0(+(x, 1)) <=> .(nil, gen_.:nil:u:v3_0(x)) gen_true:false:and4_0(0) <=> false gen_true:false:and4_0(+(x, 1)) <=> and(false, gen_true:false:and4_0(x)) The following defined symbols remain to be analysed: del ---------------------------------------- (41) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (42) BOUNDS(n^1, INF)