/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^2)) 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^2). (0) CpxTRS (1) NestedDefinedSymbolProof [UPPER BOUND(ID), 0 ms] (2) CpxTRS (3) RcToIrcProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CpxTRS (5) RelTrsToWeightedTrsProof [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), 282 ms] (22) CpxRNTS (23) IntTrsBoundProof [UPPER BOUND(ID), 66 ms] (24) CpxRNTS (25) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (26) CpxRNTS (27) IntTrsBoundProof [UPPER BOUND(ID), 349 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 85 ms] (30) CpxRNTS (31) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (32) CpxRNTS (33) IntTrsBoundProof [UPPER BOUND(ID), 393 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 176 ms] (36) CpxRNTS (37) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (38) CpxRNTS (39) IntTrsBoundProof [UPPER BOUND(ID), 978 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 629 ms] (42) CpxRNTS (43) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (44) CpxRNTS (45) IntTrsBoundProof [UPPER BOUND(ID), 2054 ms] (46) CpxRNTS (47) IntTrsBoundProof [UPPER BOUND(ID), 930 ms] (48) CpxRNTS (49) FinalProof [FINISHED, 0 ms] (50) BOUNDS(1, n^2) (51) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (52) CpxTRS (53) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (54) typed CpxTrs (55) OrderProof [LOWER BOUND(ID), 0 ms] (56) typed CpxTrs (57) RewriteLemmaProof [LOWER BOUND(ID), 273 ms] (58) BEST (59) proven lower bound (60) LowerBoundPropagationProof [FINISHED, 0 ms] (61) BOUNDS(n^1, INF) (62) typed CpxTrs (63) RewriteLemmaProof [LOWER BOUND(ID), 63 ms] (64) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: if(true, x, y) -> x if(false, x, y) -> y eq(0, 0) -> true eq(0, s(x)) -> false eq(s(x), 0) -> false eq(s(x), s(y)) -> eq(x, y) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) app(app(l1, l2), l3) -> app(l1, app(l2, l3)) mem(x, nil) -> false mem(x, cons(y, l)) -> ifmem(eq(x, y), x, l) ifmem(true, x, l) -> true ifmem(false, x, l) -> mem(x, l) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) S is empty. Rewrite Strategy: FULL ---------------------------------------- (1) NestedDefinedSymbolProof (UPPER BOUND(ID)) The following defined symbols can occur below the 0th argument of ifinter: ifmem, eq, mem The following defined symbols can occur below the 0th argument of ifmem: eq Hence, the left-hand sides of the following rules are not basic-reachable and can be removed: app(app(l1, l2), l3) -> app(l1, app(l2, l3)) inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) ---------------------------------------- (2) Obligation: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: if(true, x, y) -> x if(false, x, y) -> y eq(0, 0) -> true eq(0, s(x)) -> false eq(s(x), 0) -> false eq(s(x), s(y)) -> eq(x, y) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> ifmem(eq(x, y), x, l) ifmem(true, x, l) -> true ifmem(false, x, l) -> mem(x, l) inter(x, nil) -> nil inter(nil, x) -> nil inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) S is empty. Rewrite Strategy: FULL ---------------------------------------- (3) RcToIrcProof (BOTH BOUNDS(ID, ID)) Converted rc-obligation to irc-obligation. The duplicating contexts are: mem([], cons(y, l)) inter(cons([], l1), l2) inter(cons(x, l1), []) inter(l1, cons([], l2)) inter([], cons(x, l2)) The defined contexts are: ifinter([], x1, x2, x3) ifmem([], x1, x2) [] just represents basic- or constructor-terms in the following defined contexts: ifmem([], x1, x2) As the TRS is an overlay system and the defined contexts and the duplicating contexts don't overlap, we have rc = irc. ---------------------------------------- (4) Obligation: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: if(true, x, y) -> x if(false, x, y) -> y eq(0, 0) -> true eq(0, s(x)) -> false eq(s(x), 0) -> false eq(s(x), s(y)) -> eq(x, y) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> ifmem(eq(x, y), x, l) ifmem(true, x, l) -> true ifmem(false, x, l) -> mem(x, l) inter(x, nil) -> nil inter(nil, x) -> nil inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (5) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (6) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: if(true, x, y) -> x [1] if(false, x, y) -> y [1] eq(0, 0) -> true [1] eq(0, s(x)) -> false [1] eq(s(x), 0) -> false [1] eq(s(x), s(y)) -> eq(x, y) [1] app(nil, l) -> l [1] app(cons(x, l1), l2) -> cons(x, app(l1, l2)) [1] mem(x, nil) -> false [1] mem(x, cons(y, l)) -> ifmem(eq(x, y), x, l) [1] ifmem(true, x, l) -> true [1] ifmem(false, x, l) -> mem(x, l) [1] inter(x, nil) -> nil [1] inter(nil, x) -> nil [1] inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) [1] inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) [1] ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) [1] ifinter(false, x, l1, l2) -> inter(l1, l2) [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: if(true, x, y) -> x [1] if(false, x, y) -> y [1] eq(0, 0) -> true [1] eq(0, s(x)) -> false [1] eq(s(x), 0) -> false [1] eq(s(x), s(y)) -> eq(x, y) [1] app(nil, l) -> l [1] app(cons(x, l1), l2) -> cons(x, app(l1, l2)) [1] mem(x, nil) -> false [1] mem(x, cons(y, l)) -> ifmem(eq(x, y), x, l) [1] ifmem(true, x, l) -> true [1] ifmem(false, x, l) -> mem(x, l) [1] inter(x, nil) -> nil [1] inter(nil, x) -> nil [1] inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) [1] inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) [1] ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) [1] ifinter(false, x, l1, l2) -> inter(l1, l2) [1] The TRS has the following type information: if :: true:false -> if -> if -> if true :: true:false false :: true:false eq :: 0:s -> 0:s -> true:false 0 :: 0:s s :: 0:s -> 0:s app :: nil:cons -> nil:cons -> nil:cons nil :: nil:cons cons :: 0:s -> nil:cons -> nil:cons mem :: 0:s -> nil:cons -> true:false ifmem :: true:false -> 0:s -> nil:cons -> true:false inter :: nil:cons -> nil:cons -> nil:cons ifinter :: true:false -> 0:s -> nil:cons -> nil:cons -> nil:cons 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: if_3 app_2 inter_2 ifinter_4 (c) The following functions are completely defined: mem_2 eq_2 ifmem_3 Due to the following rules being added: none And the following fresh constants: const ---------------------------------------- (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: if(true, x, y) -> x [1] if(false, x, y) -> y [1] eq(0, 0) -> true [1] eq(0, s(x)) -> false [1] eq(s(x), 0) -> false [1] eq(s(x), s(y)) -> eq(x, y) [1] app(nil, l) -> l [1] app(cons(x, l1), l2) -> cons(x, app(l1, l2)) [1] mem(x, nil) -> false [1] mem(x, cons(y, l)) -> ifmem(eq(x, y), x, l) [1] ifmem(true, x, l) -> true [1] ifmem(false, x, l) -> mem(x, l) [1] inter(x, nil) -> nil [1] inter(nil, x) -> nil [1] inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) [1] inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) [1] ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) [1] ifinter(false, x, l1, l2) -> inter(l1, l2) [1] The TRS has the following type information: if :: true:false -> if -> if -> if true :: true:false false :: true:false eq :: 0:s -> 0:s -> true:false 0 :: 0:s s :: 0:s -> 0:s app :: nil:cons -> nil:cons -> nil:cons nil :: nil:cons cons :: 0:s -> nil:cons -> nil:cons mem :: 0:s -> nil:cons -> true:false ifmem :: true:false -> 0:s -> nil:cons -> true:false inter :: nil:cons -> nil:cons -> nil:cons ifinter :: true:false -> 0:s -> nil:cons -> nil:cons -> nil:cons const :: if 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: if(true, x, y) -> x [1] if(false, x, y) -> y [1] eq(0, 0) -> true [1] eq(0, s(x)) -> false [1] eq(s(x), 0) -> false [1] eq(s(x), s(y)) -> eq(x, y) [1] app(nil, l) -> l [1] app(cons(x, l1), l2) -> cons(x, app(l1, l2)) [1] mem(x, nil) -> false [1] mem(0, cons(0, l)) -> ifmem(true, 0, l) [2] mem(0, cons(s(x'), l)) -> ifmem(false, 0, l) [2] mem(s(x''), cons(0, l)) -> ifmem(false, s(x''), l) [2] mem(s(x1), cons(s(y'), l)) -> ifmem(eq(x1, y'), s(x1), l) [2] ifmem(true, x, l) -> true [1] ifmem(false, x, l) -> mem(x, l) [1] inter(x, nil) -> nil [1] inter(nil, x) -> nil [1] inter(cons(x, l1), nil) -> ifinter(false, x, l1, nil) [2] inter(cons(x, l1), cons(y'', l')) -> ifinter(ifmem(eq(x, y''), x, l'), x, l1, cons(y'', l')) [2] inter(nil, cons(x, l2)) -> ifinter(false, x, l2, nil) [2] inter(cons(y1, l''), cons(x, l2)) -> ifinter(ifmem(eq(x, y1), x, l''), x, l2, cons(y1, l'')) [2] ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) [1] ifinter(false, x, l1, l2) -> inter(l1, l2) [1] The TRS has the following type information: if :: true:false -> if -> if -> if true :: true:false false :: true:false eq :: 0:s -> 0:s -> true:false 0 :: 0:s s :: 0:s -> 0:s app :: nil:cons -> nil:cons -> nil:cons nil :: nil:cons cons :: 0:s -> nil:cons -> nil:cons mem :: 0:s -> nil:cons -> true:false ifmem :: true:false -> 0:s -> nil:cons -> true:false inter :: nil:cons -> nil:cons -> nil:cons ifinter :: true:false -> 0:s -> nil:cons -> nil:cons -> nil:cons const :: if 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 0 => 0 nil => 0 const => 0 ---------------------------------------- (14) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> l :|: z' = l, l >= 0, z = 0 app(z, z') -{ 1 }-> 1 + x + app(l1, l2) :|: x >= 0, z = 1 + x + l1, z' = l2, l1 >= 0, l2 >= 0 eq(z, z') -{ 1 }-> eq(x, y) :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' = 1 + x, x >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: x >= 0, z = 1 + x, z' = 0 if(z, z', z'') -{ 1 }-> x :|: z' = x, z'' = y, z = 1, x >= 0, y >= 0 if(z, z', z'') -{ 1 }-> y :|: z' = x, z'' = y, x >= 0, y >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(l1, l2) :|: z' = x, x >= 0, z1 = l2, z'' = l1, l1 >= 0, z = 0, l2 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + x + inter(l1, l2) :|: z' = x, z = 1, x >= 0, z1 = l2, z'' = l1, l1 >= 0, l2 >= 0 ifmem(z, z', z'') -{ 1 }-> mem(x, l) :|: z' = x, x >= 0, l >= 0, z = 0, z'' = l ifmem(z, z', z'') -{ 1 }-> 1 :|: z' = x, z = 1, x >= 0, l >= 0, z'' = l inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y''), x, l'), x, l1, 1 + y'' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: x >= 0, z = x, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' = x, x >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(eq(x1, y'), 1 + x1, l) :|: z' = 1 + (1 + y') + l, x1 >= 0, z = 1 + x1, y' >= 0, l >= 0 mem(z, z') -{ 2 }-> ifmem(1, 0, l) :|: l >= 0, z = 0, z' = 1 + 0 + l mem(z, z') -{ 2 }-> ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 1 + x'', l) :|: z = 1 + x'', l >= 0, x'' >= 0, z' = 1 + 0 + l mem(z, z') -{ 1 }-> 0 :|: x >= 0, z = x, z' = 0 ---------------------------------------- (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: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 1 }-> 1 + x + app(l1, z') :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 1 }-> mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y''), x, l'), x, l1, 1 + y'' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(eq(z - 1, y'), 1 + (z - 1), l) :|: z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 2 }-> ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 ---------------------------------------- (17) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { if } { app } { eq } { ifmem, mem } { inter, ifinter } ---------------------------------------- (18) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 1 }-> 1 + x + app(l1, z') :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 1 }-> mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y''), x, l'), x, l1, 1 + y'' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(eq(z - 1, y'), 1 + (z - 1), l) :|: z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 2 }-> ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 Function symbols to be analyzed: {if}, {app}, {eq}, {ifmem,mem}, {inter,ifinter} ---------------------------------------- (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: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 1 }-> 1 + x + app(l1, z') :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 1 }-> mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y''), x, l'), x, l1, 1 + y'' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(eq(z - 1, y'), 1 + (z - 1), l) :|: z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 2 }-> ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 Function symbols to be analyzed: {if}, {app}, {eq}, {ifmem,mem}, {inter,ifinter} ---------------------------------------- (21) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: if after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' + z'' ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 1 }-> 1 + x + app(l1, z') :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 1 }-> mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y''), x, l'), x, l1, 1 + y'' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(eq(z - 1, y'), 1 + (z - 1), l) :|: z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 2 }-> ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 Function symbols to be analyzed: {if}, {app}, {eq}, {ifmem,mem}, {inter,ifinter} Previous analysis results are: if: runtime: ?, size: O(n^1) [z' + z''] ---------------------------------------- (23) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: if after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 1 }-> 1 + x + app(l1, z') :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 1 }-> mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y''), x, l'), x, l1, 1 + y'' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(eq(z - 1, y'), 1 + (z - 1), l) :|: z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 2 }-> ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 Function symbols to be analyzed: {app}, {eq}, {ifmem,mem}, {inter,ifinter} Previous analysis results are: if: runtime: O(1) [1], size: O(n^1) [z' + z''] ---------------------------------------- (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: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 1 }-> 1 + x + app(l1, z') :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 1 }-> mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y''), x, l'), x, l1, 1 + y'' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(eq(z - 1, y'), 1 + (z - 1), l) :|: z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 2 }-> ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 Function symbols to be analyzed: {app}, {eq}, {ifmem,mem}, {inter,ifinter} Previous analysis results are: if: runtime: O(1) [1], size: O(n^1) [z' + z''] ---------------------------------------- (27) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: app after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z + z' ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 1 }-> 1 + x + app(l1, z') :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 1 }-> mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y''), x, l'), x, l1, 1 + y'' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(eq(z - 1, y'), 1 + (z - 1), l) :|: z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 2 }-> ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 Function symbols to be analyzed: {app}, {eq}, {ifmem,mem}, {inter,ifinter} Previous analysis results are: if: runtime: O(1) [1], size: O(n^1) [z' + z''] app: runtime: ?, size: O(n^1) [z + z'] ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: app after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 1 }-> 1 + x + app(l1, z') :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 1 }-> mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y''), x, l'), x, l1, 1 + y'' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(eq(z - 1, y'), 1 + (z - 1), l) :|: z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 2 }-> ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 Function symbols to be analyzed: {eq}, {ifmem,mem}, {inter,ifinter} Previous analysis results are: if: runtime: O(1) [1], size: O(n^1) [z' + z''] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] ---------------------------------------- (31) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 2 + l1 }-> 1 + x + s :|: s >= 0, s <= l1 + z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 1 }-> mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y''), x, l'), x, l1, 1 + y'' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(eq(z - 1, y'), 1 + (z - 1), l) :|: z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 2 }-> ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 Function symbols to be analyzed: {eq}, {ifmem,mem}, {inter,ifinter} Previous analysis results are: if: runtime: O(1) [1], size: O(n^1) [z' + z''] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] ---------------------------------------- (33) 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 ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 2 + l1 }-> 1 + x + s :|: s >= 0, s <= l1 + z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 1 }-> mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y''), x, l'), x, l1, 1 + y'' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(eq(z - 1, y'), 1 + (z - 1), l) :|: z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 2 }-> ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 Function symbols to be analyzed: {eq}, {ifmem,mem}, {inter,ifinter} Previous analysis results are: if: runtime: O(1) [1], size: O(n^1) [z' + z''] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] eq: runtime: ?, size: O(1) [1] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: eq after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 3 + z' ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 2 + l1 }-> 1 + x + s :|: s >= 0, s <= l1 + z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 1 }-> mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y''), x, l'), x, l1, 1 + y'' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 2 }-> ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(eq(z - 1, y'), 1 + (z - 1), l) :|: z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 2 }-> ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 Function symbols to be analyzed: {ifmem,mem}, {inter,ifinter} Previous analysis results are: if: runtime: O(1) [1], size: O(n^1) [z' + z''] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] eq: runtime: O(n^1) [3 + z'], size: O(1) [1] ---------------------------------------- (37) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 2 + l1 }-> 1 + x + s :|: s >= 0, s <= l1 + z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 3 + z' }-> s' :|: s' >= 0, s' <= 1, z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 1 }-> mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 5 + y'' }-> ifinter(ifmem(s1, x, l'), x, l1, 1 + y'' + l') :|: s1 >= 0, s1 <= 1, x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 5 + y1 }-> ifinter(ifmem(s2, x, l''), x, l2, 1 + y1 + l'') :|: s2 >= 0, s2 <= 1, y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ 5 + y' }-> ifmem(s'', 1 + (z - 1), l) :|: s'' >= 0, s'' <= 1, z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 2 }-> ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 Function symbols to be analyzed: {ifmem,mem}, {inter,ifinter} Previous analysis results are: if: runtime: O(1) [1], size: O(n^1) [z' + z''] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] eq: runtime: O(n^1) [3 + z'], size: O(1) [1] ---------------------------------------- (39) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: ifmem after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 Computed SIZE bound using CoFloCo for: mem after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 2 + l1 }-> 1 + x + s :|: s >= 0, s <= l1 + z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 3 + z' }-> s' :|: s' >= 0, s' <= 1, z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 1 }-> mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 5 + y'' }-> ifinter(ifmem(s1, x, l'), x, l1, 1 + y'' + l') :|: s1 >= 0, s1 <= 1, x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 5 + y1 }-> ifinter(ifmem(s2, x, l''), x, l2, 1 + y1 + l'') :|: s2 >= 0, s2 <= 1, y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ 5 + y' }-> ifmem(s'', 1 + (z - 1), l) :|: s'' >= 0, s'' <= 1, z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 2 }-> ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 Function symbols to be analyzed: {ifmem,mem}, {inter,ifinter} Previous analysis results are: if: runtime: O(1) [1], size: O(n^1) [z' + z''] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] eq: runtime: O(n^1) [3 + z'], size: O(1) [1] ifmem: runtime: ?, size: O(1) [1] mem: runtime: ?, size: O(1) [1] ---------------------------------------- (41) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: ifmem after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 7 + 11*z'' Computed RUNTIME bound using CoFloCo for: mem after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 13 + 11*z' ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 2 + l1 }-> 1 + x + s :|: s >= 0, s <= l1 + z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 3 + z' }-> s' :|: s' >= 0, s' <= 1, z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 1 }-> mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 5 + y'' }-> ifinter(ifmem(s1, x, l'), x, l1, 1 + y'' + l') :|: s1 >= 0, s1 <= 1, x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 5 + y1 }-> ifinter(ifmem(s2, x, l''), x, l2, 1 + y1 + l'') :|: s2 >= 0, s2 <= 1, y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ 5 + y' }-> ifmem(s'', 1 + (z - 1), l) :|: s'' >= 0, s'' <= 1, z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 2 }-> ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ 2 }-> ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 Function symbols to be analyzed: {inter,ifinter} Previous analysis results are: if: runtime: O(1) [1], size: O(n^1) [z' + z''] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] eq: runtime: O(n^1) [3 + z'], size: O(1) [1] ifmem: runtime: O(n^1) [7 + 11*z''], size: O(1) [1] mem: runtime: O(n^1) [13 + 11*z'], size: O(1) [1] ---------------------------------------- (43) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 2 + l1 }-> 1 + x + s :|: s >= 0, s <= l1 + z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 3 + z' }-> s' :|: s' >= 0, s' <= 1, z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 14 + 11*z'' }-> s7 :|: s7 >= 0, s7 <= 1, z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 12 + 11*l' + y'' }-> ifinter(s8, x, l1, 1 + y'' + l') :|: s8 >= 0, s8 <= 1, s1 >= 0, s1 <= 1, x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 12 + 11*l'' + y1 }-> ifinter(s9, x, l2, 1 + y1 + l'') :|: s9 >= 0, s9 <= 1, s2 >= 0, s2 <= 1, y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ -2 + 11*z' }-> s3 :|: s3 >= 0, s3 <= 1, z' - 1 >= 0, z = 0 mem(z, z') -{ 9 + 11*l }-> s4 :|: s4 >= 0, s4 <= 1, x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ -2 + 11*z' }-> s5 :|: s5 >= 0, s5 <= 1, z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 12 + 11*l + y' }-> s6 :|: s6 >= 0, s6 <= 1, s'' >= 0, s'' <= 1, z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 Function symbols to be analyzed: {inter,ifinter} Previous analysis results are: if: runtime: O(1) [1], size: O(n^1) [z' + z''] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] eq: runtime: O(n^1) [3 + z'], size: O(1) [1] ifmem: runtime: O(n^1) [7 + 11*z''], size: O(1) [1] mem: runtime: O(n^1) [13 + 11*z'], size: O(1) [1] ---------------------------------------- (45) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: inter after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z + z' Computed SIZE bound using CoFloCo for: ifinter after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z' + z'' + z1 ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 2 + l1 }-> 1 + x + s :|: s >= 0, s <= l1 + z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 3 + z' }-> s' :|: s' >= 0, s' <= 1, z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 14 + 11*z'' }-> s7 :|: s7 >= 0, s7 <= 1, z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 12 + 11*l' + y'' }-> ifinter(s8, x, l1, 1 + y'' + l') :|: s8 >= 0, s8 <= 1, s1 >= 0, s1 <= 1, x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 12 + 11*l'' + y1 }-> ifinter(s9, x, l2, 1 + y1 + l'') :|: s9 >= 0, s9 <= 1, s2 >= 0, s2 <= 1, y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ -2 + 11*z' }-> s3 :|: s3 >= 0, s3 <= 1, z' - 1 >= 0, z = 0 mem(z, z') -{ 9 + 11*l }-> s4 :|: s4 >= 0, s4 <= 1, x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ -2 + 11*z' }-> s5 :|: s5 >= 0, s5 <= 1, z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 12 + 11*l + y' }-> s6 :|: s6 >= 0, s6 <= 1, s'' >= 0, s'' <= 1, z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 Function symbols to be analyzed: {inter,ifinter} Previous analysis results are: if: runtime: O(1) [1], size: O(n^1) [z' + z''] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] eq: runtime: O(n^1) [3 + z'], size: O(1) [1] ifmem: runtime: O(n^1) [7 + 11*z''], size: O(1) [1] mem: runtime: O(n^1) [13 + 11*z'], size: O(1) [1] inter: runtime: ?, size: O(n^1) [z + z'] ifinter: runtime: ?, size: O(n^1) [1 + z' + z'' + z1] ---------------------------------------- (47) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: inter after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 2 + 60*z + 96*z*z' + 48*z^2 + 60*z' + 48*z'^2 Computed RUNTIME bound using KoAT for: ifinter after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 6 + 120*z'' + 192*z''*z1 + 96*z''^2 + 120*z1 + 96*z1^2 ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 2 + l1 }-> 1 + x + s :|: s >= 0, s <= l1 + z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0 eq(z, z') -{ 3 + z' }-> s' :|: s' >= 0, s' <= 1, z - 1 >= 0, z' - 1 >= 0 eq(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0 eq(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0 if(z, z', z'') -{ 1 }-> z' :|: z = 1, z' >= 0, z'' >= 0 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 ifinter(z, z', z'', z1) -{ 1 }-> inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0 ifinter(z, z', z'', z1) -{ 1 }-> 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0 ifmem(z, z', z'') -{ 14 + 11*z'' }-> s7 :|: s7 >= 0, s7 <= 1, z' >= 0, z'' >= 0, z = 0 ifmem(z, z', z'') -{ 1 }-> 1 :|: z = 1, z' >= 0, z'' >= 0 inter(z, z') -{ 12 + 11*l' + y'' }-> ifinter(s8, x, l1, 1 + y'' + l') :|: s8 >= 0, s8 <= 1, s1 >= 0, s1 <= 1, x >= 0, z = 1 + x + l1, l' >= 0, y'' >= 0, z' = 1 + y'' + l', l1 >= 0 inter(z, z') -{ 12 + 11*l'' + y1 }-> ifinter(s9, x, l2, 1 + y1 + l'') :|: s9 >= 0, s9 <= 1, s2 >= 0, s2 <= 1, y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l'' inter(z, z') -{ 2 }-> ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0 inter(z, z') -{ 2 }-> ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0 inter(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 inter(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 mem(z, z') -{ -2 + 11*z' }-> s3 :|: s3 >= 0, s3 <= 1, z' - 1 >= 0, z = 0 mem(z, z') -{ 9 + 11*l }-> s4 :|: s4 >= 0, s4 <= 1, x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0 mem(z, z') -{ -2 + 11*z' }-> s5 :|: s5 >= 0, s5 <= 1, z' - 1 >= 0, z - 1 >= 0 mem(z, z') -{ 12 + 11*l + y' }-> s6 :|: s6 >= 0, s6 <= 1, s'' >= 0, s'' <= 1, z' = 1 + (1 + y') + l, z - 1 >= 0, y' >= 0, l >= 0 mem(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 Function symbols to be analyzed: Previous analysis results are: if: runtime: O(1) [1], size: O(n^1) [z' + z''] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] eq: runtime: O(n^1) [3 + z'], size: O(1) [1] ifmem: runtime: O(n^1) [7 + 11*z''], size: O(1) [1] mem: runtime: O(n^1) [13 + 11*z'], size: O(1) [1] inter: runtime: O(n^2) [2 + 60*z + 96*z*z' + 48*z^2 + 60*z' + 48*z'^2], size: O(n^1) [z + z'] ifinter: runtime: O(n^2) [6 + 120*z'' + 192*z''*z1 + 96*z''^2 + 120*z1 + 96*z1^2], size: O(n^1) [1 + z' + z'' + z1] ---------------------------------------- (49) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (50) BOUNDS(1, n^2) ---------------------------------------- (51) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (52) 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: if(true, x, y) -> x if(false, x, y) -> y eq(0', 0') -> true eq(0', s(x)) -> false eq(s(x), 0') -> false eq(s(x), s(y)) -> eq(x, y) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) app(app(l1, l2), l3) -> app(l1, app(l2, l3)) mem(x, nil) -> false mem(x, cons(y, l)) -> ifmem(eq(x, y), x, l) ifmem(true, x, l) -> true ifmem(false, x, l) -> mem(x, l) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) S is empty. Rewrite Strategy: FULL ---------------------------------------- (53) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (54) Obligation: TRS: Rules: if(true, x, y) -> x if(false, x, y) -> y eq(0', 0') -> true eq(0', s(x)) -> false eq(s(x), 0') -> false eq(s(x), s(y)) -> eq(x, y) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) app(app(l1, l2), l3) -> app(l1, app(l2, l3)) mem(x, nil) -> false mem(x, cons(y, l)) -> ifmem(eq(x, y), x, l) ifmem(true, x, l) -> true ifmem(false, x, l) -> mem(x, l) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Types: if :: true:false -> if -> if -> if true :: true:false false :: true:false eq :: 0':s -> 0':s -> true:false 0' :: 0':s s :: 0':s -> 0':s app :: nil:cons -> nil:cons -> nil:cons nil :: nil:cons cons :: 0':s -> nil:cons -> nil:cons mem :: 0':s -> nil:cons -> true:false ifmem :: true:false -> 0':s -> nil:cons -> true:false inter :: nil:cons -> nil:cons -> nil:cons ifinter :: true:false -> 0':s -> nil:cons -> nil:cons -> nil:cons hole_if1_0 :: if hole_true:false2_0 :: true:false hole_0':s3_0 :: 0':s hole_nil:cons4_0 :: nil:cons gen_0':s5_0 :: Nat -> 0':s gen_nil:cons6_0 :: Nat -> nil:cons ---------------------------------------- (55) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: eq, app, mem, inter They will be analysed ascendingly in the following order: eq < mem app < inter mem < inter ---------------------------------------- (56) Obligation: TRS: Rules: if(true, x, y) -> x if(false, x, y) -> y eq(0', 0') -> true eq(0', s(x)) -> false eq(s(x), 0') -> false eq(s(x), s(y)) -> eq(x, y) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) app(app(l1, l2), l3) -> app(l1, app(l2, l3)) mem(x, nil) -> false mem(x, cons(y, l)) -> ifmem(eq(x, y), x, l) ifmem(true, x, l) -> true ifmem(false, x, l) -> mem(x, l) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Types: if :: true:false -> if -> if -> if true :: true:false false :: true:false eq :: 0':s -> 0':s -> true:false 0' :: 0':s s :: 0':s -> 0':s app :: nil:cons -> nil:cons -> nil:cons nil :: nil:cons cons :: 0':s -> nil:cons -> nil:cons mem :: 0':s -> nil:cons -> true:false ifmem :: true:false -> 0':s -> nil:cons -> true:false inter :: nil:cons -> nil:cons -> nil:cons ifinter :: true:false -> 0':s -> nil:cons -> nil:cons -> nil:cons hole_if1_0 :: if hole_true:false2_0 :: true:false hole_0':s3_0 :: 0':s hole_nil:cons4_0 :: nil:cons gen_0':s5_0 :: Nat -> 0':s gen_nil:cons6_0 :: Nat -> nil:cons Generator Equations: gen_0':s5_0(0) <=> 0' gen_0':s5_0(+(x, 1)) <=> s(gen_0':s5_0(x)) gen_nil:cons6_0(0) <=> nil gen_nil:cons6_0(+(x, 1)) <=> cons(0', gen_nil:cons6_0(x)) The following defined symbols remain to be analysed: eq, app, mem, inter They will be analysed ascendingly in the following order: eq < mem app < inter mem < inter ---------------------------------------- (57) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: eq(gen_0':s5_0(n8_0), gen_0':s5_0(n8_0)) -> true, rt in Omega(1 + n8_0) Induction Base: eq(gen_0':s5_0(0), gen_0':s5_0(0)) ->_R^Omega(1) true Induction Step: eq(gen_0':s5_0(+(n8_0, 1)), gen_0':s5_0(+(n8_0, 1))) ->_R^Omega(1) eq(gen_0':s5_0(n8_0), gen_0':s5_0(n8_0)) ->_IH true We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (58) Complex Obligation (BEST) ---------------------------------------- (59) Obligation: Proved the lower bound n^1 for the following obligation: TRS: Rules: if(true, x, y) -> x if(false, x, y) -> y eq(0', 0') -> true eq(0', s(x)) -> false eq(s(x), 0') -> false eq(s(x), s(y)) -> eq(x, y) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) app(app(l1, l2), l3) -> app(l1, app(l2, l3)) mem(x, nil) -> false mem(x, cons(y, l)) -> ifmem(eq(x, y), x, l) ifmem(true, x, l) -> true ifmem(false, x, l) -> mem(x, l) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Types: if :: true:false -> if -> if -> if true :: true:false false :: true:false eq :: 0':s -> 0':s -> true:false 0' :: 0':s s :: 0':s -> 0':s app :: nil:cons -> nil:cons -> nil:cons nil :: nil:cons cons :: 0':s -> nil:cons -> nil:cons mem :: 0':s -> nil:cons -> true:false ifmem :: true:false -> 0':s -> nil:cons -> true:false inter :: nil:cons -> nil:cons -> nil:cons ifinter :: true:false -> 0':s -> nil:cons -> nil:cons -> nil:cons hole_if1_0 :: if hole_true:false2_0 :: true:false hole_0':s3_0 :: 0':s hole_nil:cons4_0 :: nil:cons gen_0':s5_0 :: Nat -> 0':s gen_nil:cons6_0 :: Nat -> nil:cons Generator Equations: gen_0':s5_0(0) <=> 0' gen_0':s5_0(+(x, 1)) <=> s(gen_0':s5_0(x)) gen_nil:cons6_0(0) <=> nil gen_nil:cons6_0(+(x, 1)) <=> cons(0', gen_nil:cons6_0(x)) The following defined symbols remain to be analysed: eq, app, mem, inter They will be analysed ascendingly in the following order: eq < mem app < inter mem < inter ---------------------------------------- (60) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (61) BOUNDS(n^1, INF) ---------------------------------------- (62) Obligation: TRS: Rules: if(true, x, y) -> x if(false, x, y) -> y eq(0', 0') -> true eq(0', s(x)) -> false eq(s(x), 0') -> false eq(s(x), s(y)) -> eq(x, y) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) app(app(l1, l2), l3) -> app(l1, app(l2, l3)) mem(x, nil) -> false mem(x, cons(y, l)) -> ifmem(eq(x, y), x, l) ifmem(true, x, l) -> true ifmem(false, x, l) -> mem(x, l) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Types: if :: true:false -> if -> if -> if true :: true:false false :: true:false eq :: 0':s -> 0':s -> true:false 0' :: 0':s s :: 0':s -> 0':s app :: nil:cons -> nil:cons -> nil:cons nil :: nil:cons cons :: 0':s -> nil:cons -> nil:cons mem :: 0':s -> nil:cons -> true:false ifmem :: true:false -> 0':s -> nil:cons -> true:false inter :: nil:cons -> nil:cons -> nil:cons ifinter :: true:false -> 0':s -> nil:cons -> nil:cons -> nil:cons hole_if1_0 :: if hole_true:false2_0 :: true:false hole_0':s3_0 :: 0':s hole_nil:cons4_0 :: nil:cons gen_0':s5_0 :: Nat -> 0':s gen_nil:cons6_0 :: Nat -> nil:cons Lemmas: eq(gen_0':s5_0(n8_0), gen_0':s5_0(n8_0)) -> true, rt in Omega(1 + n8_0) Generator Equations: gen_0':s5_0(0) <=> 0' gen_0':s5_0(+(x, 1)) <=> s(gen_0':s5_0(x)) gen_nil:cons6_0(0) <=> nil gen_nil:cons6_0(+(x, 1)) <=> cons(0', gen_nil:cons6_0(x)) The following defined symbols remain to be analysed: app, mem, inter They will be analysed ascendingly in the following order: app < inter mem < inter ---------------------------------------- (63) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: app(gen_nil:cons6_0(n537_0), gen_nil:cons6_0(b)) -> gen_nil:cons6_0(+(n537_0, b)), rt in Omega(1 + n537_0) Induction Base: app(gen_nil:cons6_0(0), gen_nil:cons6_0(b)) ->_R^Omega(1) gen_nil:cons6_0(b) Induction Step: app(gen_nil:cons6_0(+(n537_0, 1)), gen_nil:cons6_0(b)) ->_R^Omega(1) cons(0', app(gen_nil:cons6_0(n537_0), gen_nil:cons6_0(b))) ->_IH cons(0', gen_nil:cons6_0(+(b, c538_0))) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (64) Obligation: TRS: Rules: if(true, x, y) -> x if(false, x, y) -> y eq(0', 0') -> true eq(0', s(x)) -> false eq(s(x), 0') -> false eq(s(x), s(y)) -> eq(x, y) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) app(app(l1, l2), l3) -> app(l1, app(l2, l3)) mem(x, nil) -> false mem(x, cons(y, l)) -> ifmem(eq(x, y), x, l) ifmem(true, x, l) -> true ifmem(false, x, l) -> mem(x, l) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Types: if :: true:false -> if -> if -> if true :: true:false false :: true:false eq :: 0':s -> 0':s -> true:false 0' :: 0':s s :: 0':s -> 0':s app :: nil:cons -> nil:cons -> nil:cons nil :: nil:cons cons :: 0':s -> nil:cons -> nil:cons mem :: 0':s -> nil:cons -> true:false ifmem :: true:false -> 0':s -> nil:cons -> true:false inter :: nil:cons -> nil:cons -> nil:cons ifinter :: true:false -> 0':s -> nil:cons -> nil:cons -> nil:cons hole_if1_0 :: if hole_true:false2_0 :: true:false hole_0':s3_0 :: 0':s hole_nil:cons4_0 :: nil:cons gen_0':s5_0 :: Nat -> 0':s gen_nil:cons6_0 :: Nat -> nil:cons Lemmas: eq(gen_0':s5_0(n8_0), gen_0':s5_0(n8_0)) -> true, rt in Omega(1 + n8_0) app(gen_nil:cons6_0(n537_0), gen_nil:cons6_0(b)) -> gen_nil:cons6_0(+(n537_0, b)), rt in Omega(1 + n537_0) Generator Equations: gen_0':s5_0(0) <=> 0' gen_0':s5_0(+(x, 1)) <=> s(gen_0':s5_0(x)) gen_nil:cons6_0(0) <=> nil gen_nil:cons6_0(+(x, 1)) <=> cons(0', gen_nil:cons6_0(x)) The following defined symbols remain to be analysed: mem, inter They will be analysed ascendingly in the following order: mem < inter