327.54/291.46 WORST_CASE(Omega(n^1), O(n^2)) 327.54/291.47 proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml 327.54/291.47 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 327.54/291.47 327.54/291.47 327.54/291.47 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). 327.54/291.47 327.54/291.47 (0) CpxRelTRS 327.54/291.47 (1) STerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 204 ms] 327.54/291.47 (2) CpxRelTRS 327.54/291.47 (3) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] 327.54/291.47 (4) CpxWeightedTrs 327.54/291.47 (5) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 327.54/291.47 (6) CpxTypedWeightedTrs 327.54/291.47 (7) CompletionProof [UPPER BOUND(ID), 0 ms] 327.54/291.47 (8) CpxTypedWeightedCompleteTrs 327.54/291.47 (9) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] 327.54/291.47 (10) CpxTypedWeightedCompleteTrs 327.54/291.47 (11) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] 327.54/291.47 (12) CpxRNTS 327.54/291.47 (13) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] 327.54/291.47 (14) CpxRNTS 327.54/291.47 (15) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] 327.54/291.47 (16) CpxRNTS 327.54/291.47 (17) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 327.54/291.47 (18) CpxRNTS 327.54/291.47 (19) IntTrsBoundProof [UPPER BOUND(ID), 171 ms] 327.54/291.47 (20) CpxRNTS 327.54/291.47 (21) IntTrsBoundProof [UPPER BOUND(ID), 55 ms] 327.54/291.47 (22) CpxRNTS 327.54/291.47 (23) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 327.54/291.47 (24) CpxRNTS 327.54/291.47 (25) IntTrsBoundProof [UPPER BOUND(ID), 514 ms] 327.54/291.47 (26) CpxRNTS 327.54/291.47 (27) IntTrsBoundProof [UPPER BOUND(ID), 74 ms] 327.54/291.47 (28) CpxRNTS 327.54/291.47 (29) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 327.54/291.47 (30) CpxRNTS 327.54/291.47 (31) IntTrsBoundProof [UPPER BOUND(ID), 1220 ms] 327.54/291.47 (32) CpxRNTS 327.54/291.47 (33) IntTrsBoundProof [UPPER BOUND(ID), 433 ms] 327.54/291.47 (34) CpxRNTS 327.54/291.47 (35) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 327.54/291.47 (36) CpxRNTS 327.54/291.47 (37) IntTrsBoundProof [UPPER BOUND(ID), 1006 ms] 327.54/291.47 (38) CpxRNTS 327.54/291.47 (39) IntTrsBoundProof [UPPER BOUND(ID), 494 ms] 327.54/291.47 (40) CpxRNTS 327.54/291.47 (41) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 327.54/291.47 (42) CpxRNTS 327.54/291.47 (43) IntTrsBoundProof [UPPER BOUND(ID), 146 ms] 327.54/291.47 (44) CpxRNTS 327.54/291.47 (45) IntTrsBoundProof [UPPER BOUND(ID), 0 ms] 327.54/291.47 (46) CpxRNTS 327.54/291.47 (47) FinalProof [FINISHED, 0 ms] 327.54/291.47 (48) BOUNDS(1, n^2) 327.54/291.47 (49) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] 327.54/291.47 (50) CpxRelTRS 327.54/291.47 (51) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 327.54/291.47 (52) typed CpxTrs 327.54/291.47 (53) OrderProof [LOWER BOUND(ID), 0 ms] 327.54/291.47 (54) typed CpxTrs 327.54/291.47 (55) RewriteLemmaProof [LOWER BOUND(ID), 285 ms] 327.54/291.47 (56) typed CpxTrs 327.54/291.47 (57) RewriteLemmaProof [LOWER BOUND(ID), 23 ms] 327.54/291.47 (58) BEST 327.54/291.47 (59) proven lower bound 327.54/291.47 (60) LowerBoundPropagationProof [FINISHED, 0 ms] 327.54/291.47 (61) BOUNDS(n^1, INF) 327.54/291.47 (62) typed CpxTrs 327.54/291.47 (63) RewriteLemmaProof [LOWER BOUND(ID), 13 ms] 327.54/291.47 (64) BOUNDS(1, INF) 327.54/291.47 327.54/291.47 327.54/291.47 ---------------------------------------- 327.54/291.47 327.54/291.47 (0) 327.54/291.47 Obligation: 327.54/291.47 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). 327.54/291.47 327.54/291.47 327.54/291.47 The TRS R consists of the following rules: 327.54/291.47 327.54/291.47 overlap(Cons(x, xs), ys) -> overlap[Ite][True][Ite](member(x, ys), Cons(x, xs), ys) 327.54/291.47 overlap(Nil, ys) -> False 327.54/291.47 member(x', Cons(x, xs)) -> member[Ite][True][Ite](!EQ(x, x'), x', Cons(x, xs)) 327.54/291.47 member(x, Nil) -> False 327.54/291.47 notEmpty(Cons(x, xs)) -> True 327.54/291.47 notEmpty(Nil) -> False 327.54/291.47 goal(xs, ys) -> overlap(xs, ys) 327.54/291.47 327.54/291.47 The (relative) TRS S consists of the following rules: 327.54/291.47 327.54/291.47 !EQ(S(x), S(y)) -> !EQ(x, y) 327.54/291.47 !EQ(0, S(y)) -> False 327.54/291.47 !EQ(S(x), 0) -> False 327.54/291.47 !EQ(0, 0) -> True 327.54/291.47 overlap[Ite][True][Ite](False, Cons(x, xs), ys) -> overlap(xs, ys) 327.54/291.47 member[Ite][True][Ite](False, x', Cons(x, xs)) -> member(x', xs) 327.54/291.47 overlap[Ite][True][Ite](True, xs, ys) -> True 327.54/291.47 member[Ite][True][Ite](True, x, xs) -> True 327.54/291.47 327.54/291.47 Rewrite Strategy: INNERMOST 327.54/291.47 ---------------------------------------- 327.54/291.47 327.54/291.47 (1) STerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) 327.54/291.47 proved termination of relative rules 327.54/291.47 ---------------------------------------- 327.54/291.47 327.54/291.47 (2) 327.54/291.47 Obligation: 327.54/291.47 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). 327.54/291.47 327.54/291.47 327.54/291.47 The TRS R consists of the following rules: 327.54/291.47 327.54/291.47 overlap(Cons(x, xs), ys) -> overlap[Ite][True][Ite](member(x, ys), Cons(x, xs), ys) 327.54/291.47 overlap(Nil, ys) -> False 327.54/291.47 member(x', Cons(x, xs)) -> member[Ite][True][Ite](!EQ(x, x'), x', Cons(x, xs)) 327.54/291.47 member(x, Nil) -> False 327.54/291.47 notEmpty(Cons(x, xs)) -> True 327.54/291.47 notEmpty(Nil) -> False 327.54/291.47 goal(xs, ys) -> overlap(xs, ys) 327.54/291.47 327.54/291.47 The (relative) TRS S consists of the following rules: 327.54/291.47 327.54/291.47 !EQ(S(x), S(y)) -> !EQ(x, y) 327.54/291.47 !EQ(0, S(y)) -> False 327.54/291.47 !EQ(S(x), 0) -> False 327.54/291.47 !EQ(0, 0) -> True 327.54/291.47 overlap[Ite][True][Ite](False, Cons(x, xs), ys) -> overlap(xs, ys) 327.54/291.47 member[Ite][True][Ite](False, x', Cons(x, xs)) -> member(x', xs) 327.54/291.47 overlap[Ite][True][Ite](True, xs, ys) -> True 327.54/291.47 member[Ite][True][Ite](True, x, xs) -> True 327.54/291.47 327.54/291.47 Rewrite Strategy: INNERMOST 327.54/291.47 ---------------------------------------- 327.54/291.47 327.54/291.47 (3) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) 327.54/291.47 Transformed relative TRS to weighted TRS 327.54/291.47 ---------------------------------------- 327.54/291.47 327.54/291.47 (4) 327.54/291.47 Obligation: 327.54/291.47 The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^2). 327.54/291.47 327.54/291.47 327.54/291.47 The TRS R consists of the following rules: 327.54/291.47 327.54/291.47 overlap(Cons(x, xs), ys) -> overlap[Ite][True][Ite](member(x, ys), Cons(x, xs), ys) [1] 327.54/291.47 overlap(Nil, ys) -> False [1] 327.54/291.47 member(x', Cons(x, xs)) -> member[Ite][True][Ite](!EQ(x, x'), x', Cons(x, xs)) [1] 327.54/291.47 member(x, Nil) -> False [1] 327.54/291.47 notEmpty(Cons(x, xs)) -> True [1] 327.54/291.47 notEmpty(Nil) -> False [1] 327.54/291.47 goal(xs, ys) -> overlap(xs, ys) [1] 327.54/291.47 !EQ(S(x), S(y)) -> !EQ(x, y) [0] 327.54/291.47 !EQ(0, S(y)) -> False [0] 327.54/291.47 !EQ(S(x), 0) -> False [0] 327.54/291.47 !EQ(0, 0) -> True [0] 327.54/291.47 overlap[Ite][True][Ite](False, Cons(x, xs), ys) -> overlap(xs, ys) [0] 327.54/291.47 member[Ite][True][Ite](False, x', Cons(x, xs)) -> member(x', xs) [0] 327.54/291.47 overlap[Ite][True][Ite](True, xs, ys) -> True [0] 327.54/291.47 member[Ite][True][Ite](True, x, xs) -> True [0] 327.54/291.47 327.54/291.47 Rewrite Strategy: INNERMOST 327.54/291.47 ---------------------------------------- 327.54/291.47 327.54/291.47 (5) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 327.54/291.47 Infered types. 327.54/291.47 ---------------------------------------- 327.54/291.47 327.54/291.47 (6) 327.54/291.47 Obligation: 327.54/291.47 Runtime Complexity Weighted TRS with Types. 327.54/291.47 The TRS R consists of the following rules: 327.54/291.47 327.54/291.47 overlap(Cons(x, xs), ys) -> overlap[Ite][True][Ite](member(x, ys), Cons(x, xs), ys) [1] 327.54/291.47 overlap(Nil, ys) -> False [1] 327.54/291.47 member(x', Cons(x, xs)) -> member[Ite][True][Ite](!EQ(x, x'), x', Cons(x, xs)) [1] 327.54/291.47 member(x, Nil) -> False [1] 327.54/291.47 notEmpty(Cons(x, xs)) -> True [1] 327.54/291.47 notEmpty(Nil) -> False [1] 327.54/291.47 goal(xs, ys) -> overlap(xs, ys) [1] 327.54/291.47 !EQ(S(x), S(y)) -> !EQ(x, y) [0] 327.54/291.47 !EQ(0, S(y)) -> False [0] 327.54/291.47 !EQ(S(x), 0) -> False [0] 327.54/291.47 !EQ(0, 0) -> True [0] 327.54/291.47 overlap[Ite][True][Ite](False, Cons(x, xs), ys) -> overlap(xs, ys) [0] 327.54/291.47 member[Ite][True][Ite](False, x', Cons(x, xs)) -> member(x', xs) [0] 327.54/291.47 overlap[Ite][True][Ite](True, xs, ys) -> True [0] 327.54/291.47 member[Ite][True][Ite](True, x, xs) -> True [0] 327.54/291.47 327.54/291.47 The TRS has the following type information: 327.54/291.47 overlap :: Cons:Nil -> Cons:Nil -> False:True 327.54/291.47 Cons :: S:0 -> Cons:Nil -> Cons:Nil 327.54/291.47 overlap[Ite][True][Ite] :: False:True -> Cons:Nil -> Cons:Nil -> False:True 327.54/291.47 member :: S:0 -> Cons:Nil -> False:True 327.54/291.47 Nil :: Cons:Nil 327.54/291.47 False :: False:True 327.54/291.47 member[Ite][True][Ite] :: False:True -> S:0 -> Cons:Nil -> False:True 327.54/291.47 !EQ :: S:0 -> S:0 -> False:True 327.54/291.47 notEmpty :: Cons:Nil -> False:True 327.54/291.47 True :: False:True 327.54/291.47 goal :: Cons:Nil -> Cons:Nil -> False:True 327.54/291.47 S :: S:0 -> S:0 327.54/291.47 0 :: S:0 327.54/291.47 327.54/291.47 Rewrite Strategy: INNERMOST 327.54/291.47 ---------------------------------------- 327.54/291.47 327.54/291.47 (7) CompletionProof (UPPER BOUND(ID)) 327.54/291.47 The transformation into a RNTS is sound, since: 327.54/291.47 327.54/291.47 (a) The obligation is a constructor system where every type has a constant constructor, 327.54/291.47 327.54/291.47 (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: 327.54/291.47 327.54/291.47 overlap_2 327.54/291.47 notEmpty_1 327.54/291.47 goal_2 327.54/291.47 327.54/291.47 (c) The following functions are completely defined: 327.54/291.47 327.54/291.47 member_2 327.54/291.47 !EQ_2 327.54/291.47 overlap[Ite][True][Ite]_3 327.54/291.47 member[Ite][True][Ite]_3 327.54/291.47 327.54/291.47 Due to the following rules being added: 327.54/291.47 327.54/291.47 !EQ(v0, v1) -> null_!EQ [0] 327.54/291.47 overlap[Ite][True][Ite](v0, v1, v2) -> null_overlap[Ite][True][Ite] [0] 327.54/291.47 member[Ite][True][Ite](v0, v1, v2) -> null_member[Ite][True][Ite] [0] 327.54/291.47 327.54/291.47 And the following fresh constants: null_!EQ, null_overlap[Ite][True][Ite], null_member[Ite][True][Ite] 327.54/291.47 327.54/291.47 ---------------------------------------- 327.54/291.47 327.54/291.47 (8) 327.54/291.47 Obligation: 327.54/291.47 Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: 327.54/291.48 327.54/291.48 Runtime Complexity Weighted TRS with Types. 327.54/291.48 The TRS R consists of the following rules: 327.54/291.48 327.54/291.48 overlap(Cons(x, xs), ys) -> overlap[Ite][True][Ite](member(x, ys), Cons(x, xs), ys) [1] 327.54/291.48 overlap(Nil, ys) -> False [1] 327.54/291.48 member(x', Cons(x, xs)) -> member[Ite][True][Ite](!EQ(x, x'), x', Cons(x, xs)) [1] 327.54/291.48 member(x, Nil) -> False [1] 327.54/291.48 notEmpty(Cons(x, xs)) -> True [1] 327.54/291.48 notEmpty(Nil) -> False [1] 327.54/291.48 goal(xs, ys) -> overlap(xs, ys) [1] 327.54/291.48 !EQ(S(x), S(y)) -> !EQ(x, y) [0] 327.54/291.48 !EQ(0, S(y)) -> False [0] 327.54/291.48 !EQ(S(x), 0) -> False [0] 327.54/291.48 !EQ(0, 0) -> True [0] 327.54/291.48 overlap[Ite][True][Ite](False, Cons(x, xs), ys) -> overlap(xs, ys) [0] 327.54/291.48 member[Ite][True][Ite](False, x', Cons(x, xs)) -> member(x', xs) [0] 327.54/291.48 overlap[Ite][True][Ite](True, xs, ys) -> True [0] 327.54/291.48 member[Ite][True][Ite](True, x, xs) -> True [0] 327.54/291.48 !EQ(v0, v1) -> null_!EQ [0] 327.54/291.48 overlap[Ite][True][Ite](v0, v1, v2) -> null_overlap[Ite][True][Ite] [0] 327.54/291.48 member[Ite][True][Ite](v0, v1, v2) -> null_member[Ite][True][Ite] [0] 327.54/291.48 327.54/291.48 The TRS has the following type information: 327.54/291.48 overlap :: Cons:Nil -> Cons:Nil -> False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 Cons :: S:0 -> Cons:Nil -> Cons:Nil 327.54/291.48 overlap[Ite][True][Ite] :: False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] -> Cons:Nil -> Cons:Nil -> False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 member :: S:0 -> Cons:Nil -> False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 Nil :: Cons:Nil 327.54/291.48 False :: False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 member[Ite][True][Ite] :: False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] -> S:0 -> Cons:Nil -> False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 !EQ :: S:0 -> S:0 -> False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 notEmpty :: Cons:Nil -> False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 True :: False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 goal :: Cons:Nil -> Cons:Nil -> False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 S :: S:0 -> S:0 327.54/291.48 0 :: S:0 327.54/291.48 null_!EQ :: False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 null_overlap[Ite][True][Ite] :: False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 null_member[Ite][True][Ite] :: False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 327.54/291.48 Rewrite Strategy: INNERMOST 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (9) NarrowingProof (BOTH BOUNDS(ID, ID)) 327.54/291.48 Narrowed the inner basic terms of all right-hand sides by a single narrowing step. 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (10) 327.54/291.48 Obligation: 327.54/291.48 Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: 327.54/291.48 327.54/291.48 Runtime Complexity Weighted TRS with Types. 327.54/291.48 The TRS R consists of the following rules: 327.54/291.48 327.54/291.48 overlap(Cons(x, xs), Cons(x1, xs')) -> overlap[Ite][True][Ite](member[Ite][True][Ite](!EQ(x1, x), x, Cons(x1, xs')), Cons(x, xs), Cons(x1, xs')) [2] 327.54/291.48 overlap(Cons(x, xs), Nil) -> overlap[Ite][True][Ite](False, Cons(x, xs), Nil) [2] 327.54/291.48 overlap(Nil, ys) -> False [1] 327.54/291.48 member(S(y'), Cons(S(x''), xs)) -> member[Ite][True][Ite](!EQ(x'', y'), S(y'), Cons(S(x''), xs)) [1] 327.54/291.48 member(S(y''), Cons(0, xs)) -> member[Ite][True][Ite](False, S(y''), Cons(0, xs)) [1] 327.54/291.48 member(0, Cons(S(x2), xs)) -> member[Ite][True][Ite](False, 0, Cons(S(x2), xs)) [1] 327.54/291.48 member(0, Cons(0, xs)) -> member[Ite][True][Ite](True, 0, Cons(0, xs)) [1] 327.54/291.48 member(x', Cons(x, xs)) -> member[Ite][True][Ite](null_!EQ, x', Cons(x, xs)) [1] 327.54/291.48 member(x, Nil) -> False [1] 327.54/291.48 notEmpty(Cons(x, xs)) -> True [1] 327.54/291.48 notEmpty(Nil) -> False [1] 327.54/291.48 goal(xs, ys) -> overlap(xs, ys) [1] 327.54/291.48 !EQ(S(x), S(y)) -> !EQ(x, y) [0] 327.54/291.48 !EQ(0, S(y)) -> False [0] 327.54/291.48 !EQ(S(x), 0) -> False [0] 327.54/291.48 !EQ(0, 0) -> True [0] 327.54/291.48 overlap[Ite][True][Ite](False, Cons(x, xs), ys) -> overlap(xs, ys) [0] 327.54/291.48 member[Ite][True][Ite](False, x', Cons(x, xs)) -> member(x', xs) [0] 327.54/291.48 overlap[Ite][True][Ite](True, xs, ys) -> True [0] 327.54/291.48 member[Ite][True][Ite](True, x, xs) -> True [0] 327.54/291.48 !EQ(v0, v1) -> null_!EQ [0] 327.54/291.48 overlap[Ite][True][Ite](v0, v1, v2) -> null_overlap[Ite][True][Ite] [0] 327.54/291.48 member[Ite][True][Ite](v0, v1, v2) -> null_member[Ite][True][Ite] [0] 327.54/291.48 327.54/291.48 The TRS has the following type information: 327.54/291.48 overlap :: Cons:Nil -> Cons:Nil -> False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 Cons :: S:0 -> Cons:Nil -> Cons:Nil 327.54/291.48 overlap[Ite][True][Ite] :: False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] -> Cons:Nil -> Cons:Nil -> False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 member :: S:0 -> Cons:Nil -> False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 Nil :: Cons:Nil 327.54/291.48 False :: False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 member[Ite][True][Ite] :: False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] -> S:0 -> Cons:Nil -> False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 !EQ :: S:0 -> S:0 -> False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 notEmpty :: Cons:Nil -> False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 True :: False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 goal :: Cons:Nil -> Cons:Nil -> False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 S :: S:0 -> S:0 327.54/291.48 0 :: S:0 327.54/291.48 null_!EQ :: False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 null_overlap[Ite][True][Ite] :: False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 null_member[Ite][True][Ite] :: False:True:null_!EQ:null_overlap[Ite][True][Ite]:null_member[Ite][True][Ite] 327.54/291.48 327.54/291.48 Rewrite Strategy: INNERMOST 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (11) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) 327.54/291.48 Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. 327.54/291.48 The constant constructors are abstracted as follows: 327.54/291.48 327.54/291.48 Nil => 0 327.54/291.48 False => 1 327.54/291.48 True => 2 327.54/291.48 0 => 0 327.54/291.48 null_!EQ => 0 327.54/291.48 null_overlap[Ite][True][Ite] => 0 327.54/291.48 null_member[Ite][True][Ite] => 0 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (12) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' = 1 + y, y >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: x >= 0, z = 1 + x, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 327.54/291.48 !EQ(z, z') -{ 0 }-> !EQ(x, y) :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x 327.54/291.48 goal(z, z') -{ 1 }-> overlap(xs, ys) :|: xs >= 0, z = xs, z' = ys, ys >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](2, 0, 1 + 0 + xs) :|: xs >= 0, z' = 1 + 0 + xs, z = 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 0, 1 + (1 + x2) + xs) :|: xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 1 + y'', 1 + 0 + xs) :|: xs >= 0, z = 1 + y'', z' = 1 + 0 + xs, y'' >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](0, x', 1 + x + xs) :|: xs >= 0, z' = 1 + x + xs, x' >= 0, x >= 0, z = x' 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](!EQ(x'', y'), 1 + y', 1 + (1 + x'') + xs) :|: xs >= 0, z = 1 + y', y' >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: x >= 0, z = x, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> member(x', xs) :|: z' = x', xs >= 0, z = 1, x' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, xs >= 0, z' = x, x >= 0, z'' = xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](member[Ite][True][Ite](!EQ(x1, x), x, 1 + x1 + xs'), 1 + x + xs, 1 + x1 + xs') :|: z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](1, 1 + x + xs, 0) :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' = ys, ys >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> overlap(xs, ys) :|: xs >= 0, z' = 1 + x + xs, z = 1, ys >= 0, x >= 0, z'' = ys 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, xs >= 0, ys >= 0, z'' = ys, z' = xs 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 327.54/291.48 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (13) SimplificationProof (BOTH BOUNDS(ID, ID)) 327.54/291.48 Simplified the RNTS by moving equalities from the constraints into the right-hand sides. 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (14) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 327.54/291.48 goal(z, z') -{ 1 }-> overlap(z, z') :|: z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](2, 0, 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 0, 1 + (1 + x2) + xs) :|: xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](0, z, 1 + x + xs) :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](!EQ(x'', z - 1), 1 + (z - 1), 1 + (1 + x'') + xs) :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> member(z', xs) :|: xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](member[Ite][True][Ite](!EQ(x1, x), x, 1 + x1 + xs'), 1 + x + xs, 1 + x1 + xs') :|: z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](1, 1 + x + xs, 0) :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> overlap(xs, z'') :|: xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (15) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) 327.54/291.48 Found the following analysis order by SCC decomposition: 327.54/291.48 327.54/291.48 { notEmpty } 327.54/291.48 { !EQ } 327.54/291.48 { member, member[Ite][True][Ite] } 327.54/291.48 { overlap[Ite][True][Ite], overlap } 327.54/291.48 { goal } 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (16) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 327.54/291.48 goal(z, z') -{ 1 }-> overlap(z, z') :|: z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](2, 0, 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 0, 1 + (1 + x2) + xs) :|: xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](0, z, 1 + x + xs) :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](!EQ(x'', z - 1), 1 + (z - 1), 1 + (1 + x'') + xs) :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> member(z', xs) :|: xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](member[Ite][True][Ite](!EQ(x1, x), x, 1 + x1 + xs'), 1 + x + xs, 1 + x1 + xs') :|: z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](1, 1 + x + xs, 0) :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> overlap(xs, z'') :|: xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 Function symbols to be analyzed: {notEmpty}, {!EQ}, {member,member[Ite][True][Ite]}, {overlap[Ite][True][Ite],overlap}, {goal} 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (17) ResultPropagationProof (UPPER BOUND(ID)) 327.54/291.48 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (18) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 327.54/291.48 goal(z, z') -{ 1 }-> overlap(z, z') :|: z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](2, 0, 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 0, 1 + (1 + x2) + xs) :|: xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](0, z, 1 + x + xs) :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](!EQ(x'', z - 1), 1 + (z - 1), 1 + (1 + x'') + xs) :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> member(z', xs) :|: xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](member[Ite][True][Ite](!EQ(x1, x), x, 1 + x1 + xs'), 1 + x + xs, 1 + x1 + xs') :|: z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](1, 1 + x + xs, 0) :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> overlap(xs, z'') :|: xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 Function symbols to be analyzed: {notEmpty}, {!EQ}, {member,member[Ite][True][Ite]}, {overlap[Ite][True][Ite],overlap}, {goal} 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (19) IntTrsBoundProof (UPPER BOUND(ID)) 327.54/291.48 327.54/291.48 Computed SIZE bound using CoFloCo for: notEmpty 327.54/291.48 after applying outer abstraction to obtain an ITS, 327.54/291.48 resulting in: O(1) with polynomial bound: 2 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (20) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 327.54/291.48 goal(z, z') -{ 1 }-> overlap(z, z') :|: z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](2, 0, 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 0, 1 + (1 + x2) + xs) :|: xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](0, z, 1 + x + xs) :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](!EQ(x'', z - 1), 1 + (z - 1), 1 + (1 + x'') + xs) :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> member(z', xs) :|: xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](member[Ite][True][Ite](!EQ(x1, x), x, 1 + x1 + xs'), 1 + x + xs, 1 + x1 + xs') :|: z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](1, 1 + x + xs, 0) :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> overlap(xs, z'') :|: xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 Function symbols to be analyzed: {notEmpty}, {!EQ}, {member,member[Ite][True][Ite]}, {overlap[Ite][True][Ite],overlap}, {goal} 327.54/291.48 Previous analysis results are: 327.54/291.48 notEmpty: runtime: ?, size: O(1) [2] 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (21) IntTrsBoundProof (UPPER BOUND(ID)) 327.54/291.48 327.54/291.48 Computed RUNTIME bound using CoFloCo for: notEmpty 327.54/291.48 after applying outer abstraction to obtain an ITS, 327.54/291.48 resulting in: O(1) with polynomial bound: 1 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (22) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 327.54/291.48 goal(z, z') -{ 1 }-> overlap(z, z') :|: z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](2, 0, 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 0, 1 + (1 + x2) + xs) :|: xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](0, z, 1 + x + xs) :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](!EQ(x'', z - 1), 1 + (z - 1), 1 + (1 + x'') + xs) :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> member(z', xs) :|: xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](member[Ite][True][Ite](!EQ(x1, x), x, 1 + x1 + xs'), 1 + x + xs, 1 + x1 + xs') :|: z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](1, 1 + x + xs, 0) :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> overlap(xs, z'') :|: xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 Function symbols to be analyzed: {!EQ}, {member,member[Ite][True][Ite]}, {overlap[Ite][True][Ite],overlap}, {goal} 327.54/291.48 Previous analysis results are: 327.54/291.48 notEmpty: runtime: O(1) [1], size: O(1) [2] 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (23) ResultPropagationProof (UPPER BOUND(ID)) 327.54/291.48 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (24) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 327.54/291.48 goal(z, z') -{ 1 }-> overlap(z, z') :|: z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](2, 0, 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 0, 1 + (1 + x2) + xs) :|: xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](0, z, 1 + x + xs) :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](!EQ(x'', z - 1), 1 + (z - 1), 1 + (1 + x'') + xs) :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> member(z', xs) :|: xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](member[Ite][True][Ite](!EQ(x1, x), x, 1 + x1 + xs'), 1 + x + xs, 1 + x1 + xs') :|: z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](1, 1 + x + xs, 0) :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> overlap(xs, z'') :|: xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 Function symbols to be analyzed: {!EQ}, {member,member[Ite][True][Ite]}, {overlap[Ite][True][Ite],overlap}, {goal} 327.54/291.48 Previous analysis results are: 327.54/291.48 notEmpty: runtime: O(1) [1], size: O(1) [2] 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (25) IntTrsBoundProof (UPPER BOUND(ID)) 327.54/291.48 327.54/291.48 Computed SIZE bound using CoFloCo for: !EQ 327.54/291.48 after applying outer abstraction to obtain an ITS, 327.54/291.48 resulting in: O(1) with polynomial bound: 2 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (26) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 327.54/291.48 goal(z, z') -{ 1 }-> overlap(z, z') :|: z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](2, 0, 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 0, 1 + (1 + x2) + xs) :|: xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](0, z, 1 + x + xs) :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](!EQ(x'', z - 1), 1 + (z - 1), 1 + (1 + x'') + xs) :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> member(z', xs) :|: xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](member[Ite][True][Ite](!EQ(x1, x), x, 1 + x1 + xs'), 1 + x + xs, 1 + x1 + xs') :|: z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](1, 1 + x + xs, 0) :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> overlap(xs, z'') :|: xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 Function symbols to be analyzed: {!EQ}, {member,member[Ite][True][Ite]}, {overlap[Ite][True][Ite],overlap}, {goal} 327.54/291.48 Previous analysis results are: 327.54/291.48 notEmpty: runtime: O(1) [1], size: O(1) [2] 327.54/291.48 !EQ: runtime: ?, size: O(1) [2] 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (27) IntTrsBoundProof (UPPER BOUND(ID)) 327.54/291.48 327.54/291.48 Computed RUNTIME bound using CoFloCo for: !EQ 327.54/291.48 after applying outer abstraction to obtain an ITS, 327.54/291.48 resulting in: O(1) with polynomial bound: 0 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (28) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> !EQ(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 327.54/291.48 goal(z, z') -{ 1 }-> overlap(z, z') :|: z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](2, 0, 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 0, 1 + (1 + x2) + xs) :|: xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](0, z, 1 + x + xs) :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](!EQ(x'', z - 1), 1 + (z - 1), 1 + (1 + x'') + xs) :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> member(z', xs) :|: xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](member[Ite][True][Ite](!EQ(x1, x), x, 1 + x1 + xs'), 1 + x + xs, 1 + x1 + xs') :|: z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](1, 1 + x + xs, 0) :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> overlap(xs, z'') :|: xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 Function symbols to be analyzed: {member,member[Ite][True][Ite]}, {overlap[Ite][True][Ite],overlap}, {goal} 327.54/291.48 Previous analysis results are: 327.54/291.48 notEmpty: runtime: O(1) [1], size: O(1) [2] 327.54/291.48 !EQ: runtime: O(1) [0], size: O(1) [2] 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (29) ResultPropagationProof (UPPER BOUND(ID)) 327.54/291.48 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (30) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 goal(z, z') -{ 1 }-> overlap(z, z') :|: z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](s', 1 + (z - 1), 1 + (1 + x'') + xs) :|: s' >= 0, s' <= 2, xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](2, 0, 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 0, 1 + (1 + x2) + xs) :|: xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](0, z, 1 + x + xs) :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> member(z', xs) :|: xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](member[Ite][True][Ite](s, x, 1 + x1 + xs'), 1 + x + xs, 1 + x1 + xs') :|: s >= 0, s <= 2, z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](1, 1 + x + xs, 0) :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> overlap(xs, z'') :|: xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 Function symbols to be analyzed: {member,member[Ite][True][Ite]}, {overlap[Ite][True][Ite],overlap}, {goal} 327.54/291.48 Previous analysis results are: 327.54/291.48 notEmpty: runtime: O(1) [1], size: O(1) [2] 327.54/291.48 !EQ: runtime: O(1) [0], size: O(1) [2] 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (31) IntTrsBoundProof (UPPER BOUND(ID)) 327.54/291.48 327.54/291.48 Computed SIZE bound using CoFloCo for: member 327.54/291.48 after applying outer abstraction to obtain an ITS, 327.54/291.48 resulting in: O(1) with polynomial bound: 2 327.54/291.48 327.54/291.48 Computed SIZE bound using CoFloCo for: member[Ite][True][Ite] 327.54/291.48 after applying outer abstraction to obtain an ITS, 327.54/291.48 resulting in: O(1) with polynomial bound: 2 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (32) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 goal(z, z') -{ 1 }-> overlap(z, z') :|: z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](s', 1 + (z - 1), 1 + (1 + x'') + xs) :|: s' >= 0, s' <= 2, xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](2, 0, 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 0, 1 + (1 + x2) + xs) :|: xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](0, z, 1 + x + xs) :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> member(z', xs) :|: xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](member[Ite][True][Ite](s, x, 1 + x1 + xs'), 1 + x + xs, 1 + x1 + xs') :|: s >= 0, s <= 2, z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](1, 1 + x + xs, 0) :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> overlap(xs, z'') :|: xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 Function symbols to be analyzed: {member,member[Ite][True][Ite]}, {overlap[Ite][True][Ite],overlap}, {goal} 327.54/291.48 Previous analysis results are: 327.54/291.48 notEmpty: runtime: O(1) [1], size: O(1) [2] 327.54/291.48 !EQ: runtime: O(1) [0], size: O(1) [2] 327.54/291.48 member: runtime: ?, size: O(1) [2] 327.54/291.48 member[Ite][True][Ite]: runtime: ?, size: O(1) [2] 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (33) IntTrsBoundProof (UPPER BOUND(ID)) 327.54/291.48 327.54/291.48 Computed RUNTIME bound using CoFloCo for: member 327.54/291.48 after applying outer abstraction to obtain an ITS, 327.54/291.48 resulting in: O(n^1) with polynomial bound: 2 + z' 327.54/291.48 327.54/291.48 Computed RUNTIME bound using CoFloCo for: member[Ite][True][Ite] 327.54/291.48 after applying outer abstraction to obtain an ITS, 327.54/291.48 resulting in: O(n^1) with polynomial bound: 1 + z'' 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (34) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 goal(z, z') -{ 1 }-> overlap(z, z') :|: z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](s', 1 + (z - 1), 1 + (1 + x'') + xs) :|: s' >= 0, s' <= 2, xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](2, 0, 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 0, 1 + (1 + x2) + xs) :|: xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 1 }-> member[Ite][True][Ite](0, z, 1 + x + xs) :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> member(z', xs) :|: xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](member[Ite][True][Ite](s, x, 1 + x1 + xs'), 1 + x + xs, 1 + x1 + xs') :|: s >= 0, s <= 2, z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](1, 1 + x + xs, 0) :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> overlap(xs, z'') :|: xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 Function symbols to be analyzed: {overlap[Ite][True][Ite],overlap}, {goal} 327.54/291.48 Previous analysis results are: 327.54/291.48 notEmpty: runtime: O(1) [1], size: O(1) [2] 327.54/291.48 !EQ: runtime: O(1) [0], size: O(1) [2] 327.54/291.48 member: runtime: O(n^1) [2 + z'], size: O(1) [2] 327.54/291.48 member[Ite][True][Ite]: runtime: O(n^1) [1 + z''], size: O(1) [2] 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (35) ResultPropagationProof (UPPER BOUND(ID)) 327.54/291.48 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (36) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 goal(z, z') -{ 1 }-> overlap(z, z') :|: z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 4 + x'' + xs }-> s2 :|: s2 >= 0, s2 <= 2, s' >= 0, s' <= 2, xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 2 + z' }-> s3 :|: s3 >= 0, s3 <= 2, z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 4 + x2 + xs }-> s4 :|: s4 >= 0, s4 <= 2, xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 2 + z' }-> s5 :|: s5 >= 0, s5 <= 2, z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 3 + x + xs }-> s6 :|: s6 >= 0, s6 <= 2, xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 2 + xs }-> s7 :|: s7 >= 0, s7 <= 2, xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 4 + x1 + xs' }-> overlap[Ite][True][Ite](s1, 1 + x + xs, 1 + x1 + xs') :|: s1 >= 0, s1 <= 2, s >= 0, s <= 2, z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](1, 1 + x + xs, 0) :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> overlap(xs, z'') :|: xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 Function symbols to be analyzed: {overlap[Ite][True][Ite],overlap}, {goal} 327.54/291.48 Previous analysis results are: 327.54/291.48 notEmpty: runtime: O(1) [1], size: O(1) [2] 327.54/291.48 !EQ: runtime: O(1) [0], size: O(1) [2] 327.54/291.48 member: runtime: O(n^1) [2 + z'], size: O(1) [2] 327.54/291.48 member[Ite][True][Ite]: runtime: O(n^1) [1 + z''], size: O(1) [2] 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (37) IntTrsBoundProof (UPPER BOUND(ID)) 327.54/291.48 327.54/291.48 Computed SIZE bound using CoFloCo for: overlap[Ite][True][Ite] 327.54/291.48 after applying outer abstraction to obtain an ITS, 327.54/291.48 resulting in: O(1) with polynomial bound: 2 327.54/291.48 327.54/291.48 Computed SIZE bound using CoFloCo for: overlap 327.54/291.48 after applying outer abstraction to obtain an ITS, 327.54/291.48 resulting in: O(1) with polynomial bound: 2 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (38) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 goal(z, z') -{ 1 }-> overlap(z, z') :|: z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 4 + x'' + xs }-> s2 :|: s2 >= 0, s2 <= 2, s' >= 0, s' <= 2, xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 2 + z' }-> s3 :|: s3 >= 0, s3 <= 2, z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 4 + x2 + xs }-> s4 :|: s4 >= 0, s4 <= 2, xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 2 + z' }-> s5 :|: s5 >= 0, s5 <= 2, z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 3 + x + xs }-> s6 :|: s6 >= 0, s6 <= 2, xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 2 + xs }-> s7 :|: s7 >= 0, s7 <= 2, xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 4 + x1 + xs' }-> overlap[Ite][True][Ite](s1, 1 + x + xs, 1 + x1 + xs') :|: s1 >= 0, s1 <= 2, s >= 0, s <= 2, z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](1, 1 + x + xs, 0) :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> overlap(xs, z'') :|: xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 Function symbols to be analyzed: {overlap[Ite][True][Ite],overlap}, {goal} 327.54/291.48 Previous analysis results are: 327.54/291.48 notEmpty: runtime: O(1) [1], size: O(1) [2] 327.54/291.48 !EQ: runtime: O(1) [0], size: O(1) [2] 327.54/291.48 member: runtime: O(n^1) [2 + z'], size: O(1) [2] 327.54/291.48 member[Ite][True][Ite]: runtime: O(n^1) [1 + z''], size: O(1) [2] 327.54/291.48 overlap[Ite][True][Ite]: runtime: ?, size: O(1) [2] 327.54/291.48 overlap: runtime: ?, size: O(1) [2] 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (39) IntTrsBoundProof (UPPER BOUND(ID)) 327.54/291.48 327.54/291.48 Computed RUNTIME bound using CoFloCo for: overlap[Ite][True][Ite] 327.54/291.48 after applying outer abstraction to obtain an ITS, 327.54/291.48 resulting in: O(n^2) with polynomial bound: 4 + 3*z' + z'*z'' + z'' 327.54/291.48 327.54/291.48 Computed RUNTIME bound using KoAT for: overlap 327.54/291.48 after applying outer abstraction to obtain an ITS, 327.54/291.48 resulting in: O(n^2) with polynomial bound: 23 + 14*z + 4*z*z' + 6*z' 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (40) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 goal(z, z') -{ 1 }-> overlap(z, z') :|: z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 4 + x'' + xs }-> s2 :|: s2 >= 0, s2 <= 2, s' >= 0, s' <= 2, xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 2 + z' }-> s3 :|: s3 >= 0, s3 <= 2, z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 4 + x2 + xs }-> s4 :|: s4 >= 0, s4 <= 2, xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 2 + z' }-> s5 :|: s5 >= 0, s5 <= 2, z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 3 + x + xs }-> s6 :|: s6 >= 0, s6 <= 2, xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 2 + xs }-> s7 :|: s7 >= 0, s7 <= 2, xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 4 + x1 + xs' }-> overlap[Ite][True][Ite](s1, 1 + x + xs, 1 + x1 + xs') :|: s1 >= 0, s1 <= 2, s >= 0, s <= 2, z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 2 }-> overlap[Ite][True][Ite](1, 1 + x + xs, 0) :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> overlap(xs, z'') :|: xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 Function symbols to be analyzed: {goal} 327.54/291.48 Previous analysis results are: 327.54/291.48 notEmpty: runtime: O(1) [1], size: O(1) [2] 327.54/291.48 !EQ: runtime: O(1) [0], size: O(1) [2] 327.54/291.48 member: runtime: O(n^1) [2 + z'], size: O(1) [2] 327.54/291.48 member[Ite][True][Ite]: runtime: O(n^1) [1 + z''], size: O(1) [2] 327.54/291.48 overlap[Ite][True][Ite]: runtime: O(n^2) [4 + 3*z' + z'*z'' + z''], size: O(1) [2] 327.54/291.48 overlap: runtime: O(n^2) [23 + 14*z + 4*z*z' + 6*z'], size: O(1) [2] 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (41) ResultPropagationProof (UPPER BOUND(ID)) 327.54/291.48 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (42) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 goal(z, z') -{ 24 + 14*z + 4*z*z' + 6*z' }-> s10 :|: s10 >= 0, s10 <= 2, z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 4 + x'' + xs }-> s2 :|: s2 >= 0, s2 <= 2, s' >= 0, s' <= 2, xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 2 + z' }-> s3 :|: s3 >= 0, s3 <= 2, z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 4 + x2 + xs }-> s4 :|: s4 >= 0, s4 <= 2, xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 2 + z' }-> s5 :|: s5 >= 0, s5 <= 2, z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 3 + x + xs }-> s6 :|: s6 >= 0, s6 <= 2, xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 2 + xs }-> s7 :|: s7 >= 0, s7 <= 2, xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 13 + 4*x + x*x1 + x*xs' + 3*x1 + x1*xs + 4*xs + xs*xs' + 3*xs' }-> s8 :|: s8 >= 0, s8 <= 2, s1 >= 0, s1 <= 2, s >= 0, s <= 2, z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 9 + 3*x + 3*xs }-> s9 :|: s9 >= 0, s9 <= 2, z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 23 + 14*xs + 4*xs*z'' + 6*z'' }-> s11 :|: s11 >= 0, s11 <= 2, xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 Function symbols to be analyzed: {goal} 327.54/291.48 Previous analysis results are: 327.54/291.48 notEmpty: runtime: O(1) [1], size: O(1) [2] 327.54/291.48 !EQ: runtime: O(1) [0], size: O(1) [2] 327.54/291.48 member: runtime: O(n^1) [2 + z'], size: O(1) [2] 327.54/291.48 member[Ite][True][Ite]: runtime: O(n^1) [1 + z''], size: O(1) [2] 327.54/291.48 overlap[Ite][True][Ite]: runtime: O(n^2) [4 + 3*z' + z'*z'' + z''], size: O(1) [2] 327.54/291.48 overlap: runtime: O(n^2) [23 + 14*z + 4*z*z' + 6*z'], size: O(1) [2] 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (43) IntTrsBoundProof (UPPER BOUND(ID)) 327.54/291.48 327.54/291.48 Computed SIZE bound using CoFloCo for: goal 327.54/291.48 after applying outer abstraction to obtain an ITS, 327.54/291.48 resulting in: O(1) with polynomial bound: 2 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (44) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 goal(z, z') -{ 24 + 14*z + 4*z*z' + 6*z' }-> s10 :|: s10 >= 0, s10 <= 2, z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 4 + x'' + xs }-> s2 :|: s2 >= 0, s2 <= 2, s' >= 0, s' <= 2, xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 2 + z' }-> s3 :|: s3 >= 0, s3 <= 2, z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 4 + x2 + xs }-> s4 :|: s4 >= 0, s4 <= 2, xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 2 + z' }-> s5 :|: s5 >= 0, s5 <= 2, z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 3 + x + xs }-> s6 :|: s6 >= 0, s6 <= 2, xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 2 + xs }-> s7 :|: s7 >= 0, s7 <= 2, xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 13 + 4*x + x*x1 + x*xs' + 3*x1 + x1*xs + 4*xs + xs*xs' + 3*xs' }-> s8 :|: s8 >= 0, s8 <= 2, s1 >= 0, s1 <= 2, s >= 0, s <= 2, z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 9 + 3*x + 3*xs }-> s9 :|: s9 >= 0, s9 <= 2, z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 23 + 14*xs + 4*xs*z'' + 6*z'' }-> s11 :|: s11 >= 0, s11 <= 2, xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 Function symbols to be analyzed: {goal} 327.54/291.48 Previous analysis results are: 327.54/291.48 notEmpty: runtime: O(1) [1], size: O(1) [2] 327.54/291.48 !EQ: runtime: O(1) [0], size: O(1) [2] 327.54/291.48 member: runtime: O(n^1) [2 + z'], size: O(1) [2] 327.54/291.48 member[Ite][True][Ite]: runtime: O(n^1) [1 + z''], size: O(1) [2] 327.54/291.48 overlap[Ite][True][Ite]: runtime: O(n^2) [4 + 3*z' + z'*z'' + z''], size: O(1) [2] 327.54/291.48 overlap: runtime: O(n^2) [23 + 14*z + 4*z*z' + 6*z'], size: O(1) [2] 327.54/291.48 goal: runtime: ?, size: O(1) [2] 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (45) IntTrsBoundProof (UPPER BOUND(ID)) 327.54/291.48 327.54/291.48 Computed RUNTIME bound using KoAT for: goal 327.54/291.48 after applying outer abstraction to obtain an ITS, 327.54/291.48 resulting in: O(n^2) with polynomial bound: 24 + 14*z + 4*z*z' + 6*z' 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (46) 327.54/291.48 Obligation: 327.54/291.48 Complexity RNTS consisting of the following rules: 327.54/291.48 327.54/291.48 !EQ(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 327.54/291.48 !EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 327.54/291.48 goal(z, z') -{ 24 + 14*z + 4*z*z' + 6*z' }-> s10 :|: s10 >= 0, s10 <= 2, z >= 0, z' >= 0 327.54/291.48 member(z, z') -{ 4 + x'' + xs }-> s2 :|: s2 >= 0, s2 <= 2, s' >= 0, s' <= 2, xs >= 0, z - 1 >= 0, z' = 1 + (1 + x'') + xs, x'' >= 0 327.54/291.48 member(z, z') -{ 2 + z' }-> s3 :|: s3 >= 0, s3 <= 2, z' - 1 >= 0, z - 1 >= 0 327.54/291.48 member(z, z') -{ 4 + x2 + xs }-> s4 :|: s4 >= 0, s4 <= 2, xs >= 0, z' = 1 + (1 + x2) + xs, z = 0, x2 >= 0 327.54/291.48 member(z, z') -{ 2 + z' }-> s5 :|: s5 >= 0, s5 <= 2, z' - 1 >= 0, z = 0 327.54/291.48 member(z, z') -{ 3 + x + xs }-> s6 :|: s6 >= 0, s6 <= 2, xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0 327.54/291.48 member(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 2 + xs }-> s7 :|: s7 >= 0, s7 <= 2, xs >= 0, z = 1, z' >= 0, x >= 0, z'' = 1 + x + xs 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z'' >= 0, z' >= 0 327.54/291.48 member[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 327.54/291.48 notEmpty(z) -{ 1 }-> 1 :|: z = 0 327.54/291.48 overlap(z, z') -{ 13 + 4*x + x*x1 + x*xs' + 3*x1 + x1*xs + 4*xs + xs*xs' + 3*xs' }-> s8 :|: s8 >= 0, s8 <= 2, s1 >= 0, s1 <= 2, s >= 0, s <= 2, z = 1 + x + xs, xs >= 0, x1 >= 0, z' = 1 + x1 + xs', x >= 0, xs' >= 0 327.54/291.48 overlap(z, z') -{ 9 + 3*x + 3*xs }-> s9 :|: s9 >= 0, s9 <= 2, z = 1 + x + xs, xs >= 0, x >= 0, z' = 0 327.54/291.48 overlap(z, z') -{ 1 }-> 1 :|: z' >= 0, z = 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 23 + 14*xs + 4*xs*z'' + 6*z'' }-> s11 :|: s11 >= 0, s11 <= 2, xs >= 0, z' = 1 + x + xs, z = 1, z'' >= 0, x >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 327.54/291.48 overlap[Ite][True][Ite](z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 327.54/291.48 327.54/291.48 Function symbols to be analyzed: 327.54/291.48 Previous analysis results are: 327.54/291.48 notEmpty: runtime: O(1) [1], size: O(1) [2] 327.54/291.48 !EQ: runtime: O(1) [0], size: O(1) [2] 327.54/291.48 member: runtime: O(n^1) [2 + z'], size: O(1) [2] 327.54/291.48 member[Ite][True][Ite]: runtime: O(n^1) [1 + z''], size: O(1) [2] 327.54/291.48 overlap[Ite][True][Ite]: runtime: O(n^2) [4 + 3*z' + z'*z'' + z''], size: O(1) [2] 327.54/291.48 overlap: runtime: O(n^2) [23 + 14*z + 4*z*z' + 6*z'], size: O(1) [2] 327.54/291.48 goal: runtime: O(n^2) [24 + 14*z + 4*z*z' + 6*z'], size: O(1) [2] 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (47) FinalProof (FINISHED) 327.54/291.48 Computed overall runtime complexity 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (48) 327.54/291.48 BOUNDS(1, n^2) 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (49) RenamingProof (BOTH BOUNDS(ID, ID)) 327.54/291.48 Renamed function symbols to avoid clashes with predefined symbol. 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (50) 327.54/291.48 Obligation: 327.54/291.48 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). 327.54/291.48 327.54/291.48 327.54/291.48 The TRS R consists of the following rules: 327.54/291.48 327.54/291.48 overlap(Cons(x, xs), ys) -> overlap[Ite][True][Ite](member(x, ys), Cons(x, xs), ys) 327.54/291.48 overlap(Nil, ys) -> False 327.54/291.48 member(x', Cons(x, xs)) -> member[Ite][True][Ite](!EQ(x, x'), x', Cons(x, xs)) 327.54/291.48 member(x, Nil) -> False 327.54/291.48 notEmpty(Cons(x, xs)) -> True 327.54/291.48 notEmpty(Nil) -> False 327.54/291.48 goal(xs, ys) -> overlap(xs, ys) 327.54/291.48 327.54/291.48 The (relative) TRS S consists of the following rules: 327.54/291.48 327.54/291.48 !EQ(S(x), S(y)) -> !EQ(x, y) 327.54/291.48 !EQ(0', S(y)) -> False 327.54/291.48 !EQ(S(x), 0') -> False 327.54/291.48 !EQ(0', 0') -> True 327.54/291.48 overlap[Ite][True][Ite](False, Cons(x, xs), ys) -> overlap(xs, ys) 327.54/291.48 member[Ite][True][Ite](False, x', Cons(x, xs)) -> member(x', xs) 327.54/291.48 overlap[Ite][True][Ite](True, xs, ys) -> True 327.54/291.48 member[Ite][True][Ite](True, x, xs) -> True 327.54/291.48 327.54/291.48 Rewrite Strategy: INNERMOST 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (51) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 327.54/291.48 Infered types. 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (52) 327.54/291.48 Obligation: 327.54/291.48 Innermost TRS: 327.54/291.48 Rules: 327.54/291.48 overlap(Cons(x, xs), ys) -> overlap[Ite][True][Ite](member(x, ys), Cons(x, xs), ys) 327.54/291.48 overlap(Nil, ys) -> False 327.54/291.48 member(x', Cons(x, xs)) -> member[Ite][True][Ite](!EQ(x, x'), x', Cons(x, xs)) 327.54/291.48 member(x, Nil) -> False 327.54/291.48 notEmpty(Cons(x, xs)) -> True 327.54/291.48 notEmpty(Nil) -> False 327.54/291.48 goal(xs, ys) -> overlap(xs, ys) 327.54/291.48 !EQ(S(x), S(y)) -> !EQ(x, y) 327.54/291.48 !EQ(0', S(y)) -> False 327.54/291.48 !EQ(S(x), 0') -> False 327.54/291.48 !EQ(0', 0') -> True 327.54/291.48 overlap[Ite][True][Ite](False, Cons(x, xs), ys) -> overlap(xs, ys) 327.54/291.48 member[Ite][True][Ite](False, x', Cons(x, xs)) -> member(x', xs) 327.54/291.48 overlap[Ite][True][Ite](True, xs, ys) -> True 327.54/291.48 member[Ite][True][Ite](True, x, xs) -> True 327.54/291.48 327.54/291.48 Types: 327.54/291.48 overlap :: Cons:Nil -> Cons:Nil -> False:True 327.54/291.48 Cons :: S:0' -> Cons:Nil -> Cons:Nil 327.54/291.48 overlap[Ite][True][Ite] :: False:True -> Cons:Nil -> Cons:Nil -> False:True 327.54/291.48 member :: S:0' -> Cons:Nil -> False:True 327.54/291.48 Nil :: Cons:Nil 327.54/291.48 False :: False:True 327.54/291.48 member[Ite][True][Ite] :: False:True -> S:0' -> Cons:Nil -> False:True 327.54/291.48 !EQ :: S:0' -> S:0' -> False:True 327.54/291.48 notEmpty :: Cons:Nil -> False:True 327.54/291.48 True :: False:True 327.54/291.48 goal :: Cons:Nil -> Cons:Nil -> False:True 327.54/291.48 S :: S:0' -> S:0' 327.54/291.48 0' :: S:0' 327.54/291.48 hole_False:True1_0 :: False:True 327.54/291.48 hole_Cons:Nil2_0 :: Cons:Nil 327.54/291.48 hole_S:0'3_0 :: S:0' 327.54/291.48 gen_Cons:Nil4_0 :: Nat -> Cons:Nil 327.54/291.48 gen_S:0'5_0 :: Nat -> S:0' 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (53) OrderProof (LOWER BOUND(ID)) 327.54/291.48 Heuristically decided to analyse the following defined symbols: 327.54/291.48 overlap, member, !EQ 327.54/291.48 327.54/291.48 They will be analysed ascendingly in the following order: 327.54/291.48 member < overlap 327.54/291.48 !EQ < member 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (54) 327.54/291.48 Obligation: 327.54/291.48 Innermost TRS: 327.54/291.48 Rules: 327.54/291.48 overlap(Cons(x, xs), ys) -> overlap[Ite][True][Ite](member(x, ys), Cons(x, xs), ys) 327.54/291.48 overlap(Nil, ys) -> False 327.54/291.48 member(x', Cons(x, xs)) -> member[Ite][True][Ite](!EQ(x, x'), x', Cons(x, xs)) 327.54/291.48 member(x, Nil) -> False 327.54/291.48 notEmpty(Cons(x, xs)) -> True 327.54/291.48 notEmpty(Nil) -> False 327.54/291.48 goal(xs, ys) -> overlap(xs, ys) 327.54/291.48 !EQ(S(x), S(y)) -> !EQ(x, y) 327.54/291.48 !EQ(0', S(y)) -> False 327.54/291.48 !EQ(S(x), 0') -> False 327.54/291.48 !EQ(0', 0') -> True 327.54/291.48 overlap[Ite][True][Ite](False, Cons(x, xs), ys) -> overlap(xs, ys) 327.54/291.48 member[Ite][True][Ite](False, x', Cons(x, xs)) -> member(x', xs) 327.54/291.48 overlap[Ite][True][Ite](True, xs, ys) -> True 327.54/291.48 member[Ite][True][Ite](True, x, xs) -> True 327.54/291.48 327.54/291.48 Types: 327.54/291.48 overlap :: Cons:Nil -> Cons:Nil -> False:True 327.54/291.48 Cons :: S:0' -> Cons:Nil -> Cons:Nil 327.54/291.48 overlap[Ite][True][Ite] :: False:True -> Cons:Nil -> Cons:Nil -> False:True 327.54/291.48 member :: S:0' -> Cons:Nil -> False:True 327.54/291.48 Nil :: Cons:Nil 327.54/291.48 False :: False:True 327.54/291.48 member[Ite][True][Ite] :: False:True -> S:0' -> Cons:Nil -> False:True 327.54/291.48 !EQ :: S:0' -> S:0' -> False:True 327.54/291.48 notEmpty :: Cons:Nil -> False:True 327.54/291.48 True :: False:True 327.54/291.48 goal :: Cons:Nil -> Cons:Nil -> False:True 327.54/291.48 S :: S:0' -> S:0' 327.54/291.48 0' :: S:0' 327.54/291.48 hole_False:True1_0 :: False:True 327.54/291.48 hole_Cons:Nil2_0 :: Cons:Nil 327.54/291.48 hole_S:0'3_0 :: S:0' 327.54/291.48 gen_Cons:Nil4_0 :: Nat -> Cons:Nil 327.54/291.48 gen_S:0'5_0 :: Nat -> S:0' 327.54/291.48 327.54/291.48 327.54/291.48 Generator Equations: 327.54/291.48 gen_Cons:Nil4_0(0) <=> Nil 327.54/291.48 gen_Cons:Nil4_0(+(x, 1)) <=> Cons(0', gen_Cons:Nil4_0(x)) 327.54/291.48 gen_S:0'5_0(0) <=> 0' 327.54/291.48 gen_S:0'5_0(+(x, 1)) <=> S(gen_S:0'5_0(x)) 327.54/291.48 327.54/291.48 327.54/291.48 The following defined symbols remain to be analysed: 327.54/291.48 !EQ, overlap, member 327.54/291.48 327.54/291.48 They will be analysed ascendingly in the following order: 327.54/291.48 member < overlap 327.54/291.48 !EQ < member 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (55) RewriteLemmaProof (LOWER BOUND(ID)) 327.54/291.48 Proved the following rewrite lemma: 327.54/291.48 !EQ(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) -> False, rt in Omega(0) 327.54/291.48 327.54/291.48 Induction Base: 327.54/291.48 !EQ(gen_S:0'5_0(0), gen_S:0'5_0(+(1, 0))) ->_R^Omega(0) 327.54/291.48 False 327.54/291.48 327.54/291.48 Induction Step: 327.54/291.48 !EQ(gen_S:0'5_0(+(n7_0, 1)), gen_S:0'5_0(+(1, +(n7_0, 1)))) ->_R^Omega(0) 327.54/291.48 !EQ(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) ->_IH 327.54/291.48 False 327.54/291.48 327.54/291.48 We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (56) 327.54/291.48 Obligation: 327.54/291.48 Innermost TRS: 327.54/291.48 Rules: 327.54/291.48 overlap(Cons(x, xs), ys) -> overlap[Ite][True][Ite](member(x, ys), Cons(x, xs), ys) 327.54/291.48 overlap(Nil, ys) -> False 327.54/291.48 member(x', Cons(x, xs)) -> member[Ite][True][Ite](!EQ(x, x'), x', Cons(x, xs)) 327.54/291.48 member(x, Nil) -> False 327.54/291.48 notEmpty(Cons(x, xs)) -> True 327.54/291.48 notEmpty(Nil) -> False 327.54/291.48 goal(xs, ys) -> overlap(xs, ys) 327.54/291.48 !EQ(S(x), S(y)) -> !EQ(x, y) 327.54/291.48 !EQ(0', S(y)) -> False 327.54/291.48 !EQ(S(x), 0') -> False 327.54/291.48 !EQ(0', 0') -> True 327.54/291.48 overlap[Ite][True][Ite](False, Cons(x, xs), ys) -> overlap(xs, ys) 327.54/291.48 member[Ite][True][Ite](False, x', Cons(x, xs)) -> member(x', xs) 327.54/291.48 overlap[Ite][True][Ite](True, xs, ys) -> True 327.54/291.48 member[Ite][True][Ite](True, x, xs) -> True 327.54/291.48 327.54/291.48 Types: 327.54/291.48 overlap :: Cons:Nil -> Cons:Nil -> False:True 327.54/291.48 Cons :: S:0' -> Cons:Nil -> Cons:Nil 327.54/291.48 overlap[Ite][True][Ite] :: False:True -> Cons:Nil -> Cons:Nil -> False:True 327.54/291.48 member :: S:0' -> Cons:Nil -> False:True 327.54/291.48 Nil :: Cons:Nil 327.54/291.48 False :: False:True 327.54/291.48 member[Ite][True][Ite] :: False:True -> S:0' -> Cons:Nil -> False:True 327.54/291.48 !EQ :: S:0' -> S:0' -> False:True 327.54/291.48 notEmpty :: Cons:Nil -> False:True 327.54/291.48 True :: False:True 327.54/291.48 goal :: Cons:Nil -> Cons:Nil -> False:True 327.54/291.48 S :: S:0' -> S:0' 327.54/291.48 0' :: S:0' 327.54/291.48 hole_False:True1_0 :: False:True 327.54/291.48 hole_Cons:Nil2_0 :: Cons:Nil 327.54/291.48 hole_S:0'3_0 :: S:0' 327.54/291.48 gen_Cons:Nil4_0 :: Nat -> Cons:Nil 327.54/291.48 gen_S:0'5_0 :: Nat -> S:0' 327.54/291.48 327.54/291.48 327.54/291.48 Lemmas: 327.54/291.48 !EQ(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) -> False, rt in Omega(0) 327.54/291.48 327.54/291.48 327.54/291.48 Generator Equations: 327.54/291.48 gen_Cons:Nil4_0(0) <=> Nil 327.54/291.48 gen_Cons:Nil4_0(+(x, 1)) <=> Cons(0', gen_Cons:Nil4_0(x)) 327.54/291.48 gen_S:0'5_0(0) <=> 0' 327.54/291.48 gen_S:0'5_0(+(x, 1)) <=> S(gen_S:0'5_0(x)) 327.54/291.48 327.54/291.48 327.54/291.48 The following defined symbols remain to be analysed: 327.54/291.48 member, overlap 327.54/291.48 327.54/291.48 They will be analysed ascendingly in the following order: 327.54/291.48 member < overlap 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (57) RewriteLemmaProof (LOWER BOUND(ID)) 327.54/291.48 Proved the following rewrite lemma: 327.54/291.48 member(gen_S:0'5_0(1), gen_Cons:Nil4_0(n286_0)) -> False, rt in Omega(1 + n286_0) 327.54/291.48 327.54/291.48 Induction Base: 327.54/291.48 member(gen_S:0'5_0(1), gen_Cons:Nil4_0(0)) ->_R^Omega(1) 327.54/291.48 False 327.54/291.48 327.54/291.48 Induction Step: 327.54/291.48 member(gen_S:0'5_0(1), gen_Cons:Nil4_0(+(n286_0, 1))) ->_R^Omega(1) 327.54/291.48 member[Ite][True][Ite](!EQ(0', gen_S:0'5_0(1)), gen_S:0'5_0(1), Cons(0', gen_Cons:Nil4_0(n286_0))) ->_L^Omega(0) 327.54/291.48 member[Ite][True][Ite](False, gen_S:0'5_0(1), Cons(0', gen_Cons:Nil4_0(n286_0))) ->_R^Omega(0) 327.54/291.48 member(gen_S:0'5_0(1), gen_Cons:Nil4_0(n286_0)) ->_IH 327.54/291.48 False 327.54/291.48 327.54/291.48 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (58) 327.54/291.48 Complex Obligation (BEST) 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (59) 327.54/291.48 Obligation: 327.54/291.48 Proved the lower bound n^1 for the following obligation: 327.54/291.48 327.54/291.48 Innermost TRS: 327.54/291.48 Rules: 327.54/291.48 overlap(Cons(x, xs), ys) -> overlap[Ite][True][Ite](member(x, ys), Cons(x, xs), ys) 327.54/291.48 overlap(Nil, ys) -> False 327.54/291.48 member(x', Cons(x, xs)) -> member[Ite][True][Ite](!EQ(x, x'), x', Cons(x, xs)) 327.54/291.48 member(x, Nil) -> False 327.54/291.48 notEmpty(Cons(x, xs)) -> True 327.54/291.48 notEmpty(Nil) -> False 327.54/291.48 goal(xs, ys) -> overlap(xs, ys) 327.54/291.48 !EQ(S(x), S(y)) -> !EQ(x, y) 327.54/291.48 !EQ(0', S(y)) -> False 327.54/291.48 !EQ(S(x), 0') -> False 327.54/291.48 !EQ(0', 0') -> True 327.54/291.48 overlap[Ite][True][Ite](False, Cons(x, xs), ys) -> overlap(xs, ys) 327.54/291.48 member[Ite][True][Ite](False, x', Cons(x, xs)) -> member(x', xs) 327.54/291.48 overlap[Ite][True][Ite](True, xs, ys) -> True 327.54/291.48 member[Ite][True][Ite](True, x, xs) -> True 327.54/291.48 327.54/291.48 Types: 327.54/291.48 overlap :: Cons:Nil -> Cons:Nil -> False:True 327.54/291.48 Cons :: S:0' -> Cons:Nil -> Cons:Nil 327.54/291.48 overlap[Ite][True][Ite] :: False:True -> Cons:Nil -> Cons:Nil -> False:True 327.54/291.48 member :: S:0' -> Cons:Nil -> False:True 327.54/291.48 Nil :: Cons:Nil 327.54/291.48 False :: False:True 327.54/291.48 member[Ite][True][Ite] :: False:True -> S:0' -> Cons:Nil -> False:True 327.54/291.48 !EQ :: S:0' -> S:0' -> False:True 327.54/291.48 notEmpty :: Cons:Nil -> False:True 327.54/291.48 True :: False:True 327.54/291.48 goal :: Cons:Nil -> Cons:Nil -> False:True 327.54/291.48 S :: S:0' -> S:0' 327.54/291.48 0' :: S:0' 327.54/291.48 hole_False:True1_0 :: False:True 327.54/291.48 hole_Cons:Nil2_0 :: Cons:Nil 327.54/291.48 hole_S:0'3_0 :: S:0' 327.54/291.48 gen_Cons:Nil4_0 :: Nat -> Cons:Nil 327.54/291.48 gen_S:0'5_0 :: Nat -> S:0' 327.54/291.48 327.54/291.48 327.54/291.48 Lemmas: 327.54/291.48 !EQ(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) -> False, rt in Omega(0) 327.54/291.48 327.54/291.48 327.54/291.48 Generator Equations: 327.54/291.48 gen_Cons:Nil4_0(0) <=> Nil 327.54/291.48 gen_Cons:Nil4_0(+(x, 1)) <=> Cons(0', gen_Cons:Nil4_0(x)) 327.54/291.48 gen_S:0'5_0(0) <=> 0' 327.54/291.48 gen_S:0'5_0(+(x, 1)) <=> S(gen_S:0'5_0(x)) 327.54/291.48 327.54/291.48 327.54/291.48 The following defined symbols remain to be analysed: 327.54/291.48 member, overlap 327.54/291.48 327.54/291.48 They will be analysed ascendingly in the following order: 327.54/291.48 member < overlap 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (60) LowerBoundPropagationProof (FINISHED) 327.54/291.48 Propagated lower bound. 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (61) 327.54/291.48 BOUNDS(n^1, INF) 327.54/291.48 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (62) 327.54/291.48 Obligation: 327.54/291.48 Innermost TRS: 327.54/291.48 Rules: 327.54/291.48 overlap(Cons(x, xs), ys) -> overlap[Ite][True][Ite](member(x, ys), Cons(x, xs), ys) 327.54/291.48 overlap(Nil, ys) -> False 327.54/291.48 member(x', Cons(x, xs)) -> member[Ite][True][Ite](!EQ(x, x'), x', Cons(x, xs)) 327.54/291.48 member(x, Nil) -> False 327.54/291.48 notEmpty(Cons(x, xs)) -> True 327.54/291.48 notEmpty(Nil) -> False 327.54/291.48 goal(xs, ys) -> overlap(xs, ys) 327.54/291.48 !EQ(S(x), S(y)) -> !EQ(x, y) 327.54/291.48 !EQ(0', S(y)) -> False 327.54/291.48 !EQ(S(x), 0') -> False 327.54/291.48 !EQ(0', 0') -> True 327.54/291.48 overlap[Ite][True][Ite](False, Cons(x, xs), ys) -> overlap(xs, ys) 327.54/291.48 member[Ite][True][Ite](False, x', Cons(x, xs)) -> member(x', xs) 327.54/291.48 overlap[Ite][True][Ite](True, xs, ys) -> True 327.54/291.48 member[Ite][True][Ite](True, x, xs) -> True 327.54/291.48 327.54/291.48 Types: 327.54/291.48 overlap :: Cons:Nil -> Cons:Nil -> False:True 327.54/291.48 Cons :: S:0' -> Cons:Nil -> Cons:Nil 327.54/291.48 overlap[Ite][True][Ite] :: False:True -> Cons:Nil -> Cons:Nil -> False:True 327.54/291.48 member :: S:0' -> Cons:Nil -> False:True 327.54/291.48 Nil :: Cons:Nil 327.54/291.48 False :: False:True 327.54/291.48 member[Ite][True][Ite] :: False:True -> S:0' -> Cons:Nil -> False:True 327.54/291.48 !EQ :: S:0' -> S:0' -> False:True 327.54/291.48 notEmpty :: Cons:Nil -> False:True 327.54/291.48 True :: False:True 327.54/291.48 goal :: Cons:Nil -> Cons:Nil -> False:True 327.54/291.48 S :: S:0' -> S:0' 327.54/291.48 0' :: S:0' 327.54/291.48 hole_False:True1_0 :: False:True 327.54/291.48 hole_Cons:Nil2_0 :: Cons:Nil 327.54/291.48 hole_S:0'3_0 :: S:0' 327.54/291.48 gen_Cons:Nil4_0 :: Nat -> Cons:Nil 327.54/291.48 gen_S:0'5_0 :: Nat -> S:0' 327.54/291.48 327.54/291.48 327.54/291.48 Lemmas: 327.54/291.48 !EQ(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) -> False, rt in Omega(0) 327.54/291.48 member(gen_S:0'5_0(1), gen_Cons:Nil4_0(n286_0)) -> False, rt in Omega(1 + n286_0) 327.54/291.48 327.54/291.48 327.54/291.48 Generator Equations: 327.54/291.48 gen_Cons:Nil4_0(0) <=> Nil 327.54/291.48 gen_Cons:Nil4_0(+(x, 1)) <=> Cons(0', gen_Cons:Nil4_0(x)) 327.54/291.48 gen_S:0'5_0(0) <=> 0' 327.54/291.48 gen_S:0'5_0(+(x, 1)) <=> S(gen_S:0'5_0(x)) 327.54/291.48 327.54/291.48 327.54/291.48 The following defined symbols remain to be analysed: 327.54/291.48 overlap 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (63) RewriteLemmaProof (LOWER BOUND(ID)) 327.54/291.48 Proved the following rewrite lemma: 327.54/291.48 overlap(gen_Cons:Nil4_0(n633_0), gen_Cons:Nil4_0(0)) -> False, rt in Omega(1 + n633_0) 327.54/291.48 327.54/291.48 Induction Base: 327.54/291.48 overlap(gen_Cons:Nil4_0(0), gen_Cons:Nil4_0(0)) ->_R^Omega(1) 327.54/291.48 False 327.54/291.48 327.54/291.48 Induction Step: 327.54/291.48 overlap(gen_Cons:Nil4_0(+(n633_0, 1)), gen_Cons:Nil4_0(0)) ->_R^Omega(1) 327.54/291.48 overlap[Ite][True][Ite](member(0', gen_Cons:Nil4_0(0)), Cons(0', gen_Cons:Nil4_0(n633_0)), gen_Cons:Nil4_0(0)) ->_R^Omega(1) 327.54/291.48 overlap[Ite][True][Ite](False, Cons(0', gen_Cons:Nil4_0(n633_0)), gen_Cons:Nil4_0(0)) ->_R^Omega(0) 327.54/291.48 overlap(gen_Cons:Nil4_0(n633_0), gen_Cons:Nil4_0(0)) ->_IH 327.54/291.48 False 327.54/291.48 327.54/291.48 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 327.54/291.48 ---------------------------------------- 327.54/291.48 327.54/291.48 (64) 327.54/291.48 BOUNDS(1, INF) 327.67/291.52 EOF