380.25/291.60 WORST_CASE(Omega(n^1), O(n^2)) 380.25/291.61 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 380.25/291.61 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 380.25/291.61 380.25/291.61 380.25/291.61 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^2). 380.25/291.61 380.25/291.61 (0) CpxTRS 380.25/291.61 (1) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] 380.25/291.61 (2) CpxWeightedTrs 380.25/291.61 (3) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 380.25/291.61 (4) CpxTypedWeightedTrs 380.25/291.61 (5) CompletionProof [UPPER BOUND(ID), 0 ms] 380.25/291.61 (6) CpxTypedWeightedCompleteTrs 380.25/291.61 (7) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] 380.25/291.61 (8) CpxTypedWeightedCompleteTrs 380.25/291.61 (9) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] 380.25/291.61 (10) CpxRNTS 380.25/291.61 (11) InliningProof [UPPER BOUND(ID), 853 ms] 380.25/291.61 (12) CpxRNTS 380.25/291.61 (13) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] 380.25/291.61 (14) CpxRNTS 380.25/291.61 (15) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] 380.25/291.61 (16) CpxRNTS 380.25/291.61 (17) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 380.25/291.61 (18) CpxRNTS 380.25/291.61 (19) IntTrsBoundProof [UPPER BOUND(ID), 263 ms] 380.25/291.61 (20) CpxRNTS 380.25/291.61 (21) IntTrsBoundProof [UPPER BOUND(ID), 75 ms] 380.25/291.61 (22) CpxRNTS 380.25/291.61 (23) ResultPropagationProof [UPPER BOUND(ID), 3 ms] 380.25/291.61 (24) CpxRNTS 380.25/291.61 (25) IntTrsBoundProof [UPPER BOUND(ID), 373 ms] 380.25/291.61 (26) CpxRNTS 380.25/291.61 (27) IntTrsBoundProof [UPPER BOUND(ID), 125 ms] 380.25/291.61 (28) CpxRNTS 380.25/291.61 (29) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 380.25/291.61 (30) CpxRNTS 380.25/291.61 (31) IntTrsBoundProof [UPPER BOUND(ID), 148 ms] 380.25/291.61 (32) CpxRNTS 380.25/291.61 (33) IntTrsBoundProof [UPPER BOUND(ID), 22 ms] 380.25/291.61 (34) CpxRNTS 380.25/291.61 (35) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 380.25/291.61 (36) CpxRNTS 380.25/291.61 (37) IntTrsBoundProof [UPPER BOUND(ID), 329 ms] 380.25/291.61 (38) CpxRNTS 380.25/291.61 (39) IntTrsBoundProof [UPPER BOUND(ID), 73 ms] 380.25/291.61 (40) CpxRNTS 380.25/291.61 (41) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 380.25/291.61 (42) CpxRNTS 380.25/291.61 (43) IntTrsBoundProof [UPPER BOUND(ID), 260 ms] 380.25/291.61 (44) CpxRNTS 380.25/291.61 (45) IntTrsBoundProof [UPPER BOUND(ID), 125 ms] 380.25/291.61 (46) CpxRNTS 380.25/291.61 (47) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 380.25/291.61 (48) CpxRNTS 380.25/291.61 (49) IntTrsBoundProof [UPPER BOUND(ID), 2233 ms] 380.25/291.61 (50) CpxRNTS 380.25/291.61 (51) IntTrsBoundProof [UPPER BOUND(ID), 1221 ms] 380.25/291.61 (52) CpxRNTS 380.25/291.61 (53) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 380.25/291.61 (54) CpxRNTS 380.25/291.61 (55) IntTrsBoundProof [UPPER BOUND(ID), 1303 ms] 380.25/291.61 (56) CpxRNTS 380.25/291.61 (57) IntTrsBoundProof [UPPER BOUND(ID), 1065 ms] 380.25/291.61 (58) CpxRNTS 380.25/291.61 (59) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 380.25/291.61 (60) CpxRNTS 380.25/291.61 (61) IntTrsBoundProof [UPPER BOUND(ID), 395 ms] 380.25/291.61 (62) CpxRNTS 380.25/291.61 (63) IntTrsBoundProof [UPPER BOUND(ID), 3 ms] 380.25/291.61 (64) CpxRNTS 380.25/291.61 (65) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 380.25/291.61 (66) CpxRNTS 380.25/291.61 (67) IntTrsBoundProof [UPPER BOUND(ID), 258 ms] 380.25/291.61 (68) CpxRNTS 380.25/291.61 (69) IntTrsBoundProof [UPPER BOUND(ID), 3 ms] 380.25/291.61 (70) CpxRNTS 380.25/291.61 (71) FinalProof [FINISHED, 0 ms] 380.25/291.61 (72) BOUNDS(1, n^2) 380.25/291.61 (73) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] 380.25/291.61 (74) TRS for Loop Detection 380.25/291.61 (75) DecreasingLoopProof [LOWER BOUND(ID), 0 ms] 380.25/291.61 (76) BEST 380.25/291.61 (77) proven lower bound 380.25/291.61 (78) LowerBoundPropagationProof [FINISHED, 0 ms] 380.25/291.61 (79) BOUNDS(n^1, INF) 380.25/291.61 (80) TRS for Loop Detection 380.25/291.61 380.25/291.61 380.25/291.61 ---------------------------------------- 380.25/291.61 380.25/291.61 (0) 380.25/291.61 Obligation: 380.25/291.61 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^2). 380.25/291.61 380.25/291.61 380.25/291.61 The TRS R consists of the following rules: 380.25/291.61 380.25/291.61 if(true, t, e) -> t 380.25/291.61 if(false, t, e) -> e 380.25/291.61 member(x, nil) -> false 380.25/291.61 member(x, cons(y, ys)) -> if(eq(x, y), true, member(x, ys)) 380.25/291.61 eq(nil, nil) -> true 380.25/291.61 eq(O(x), 0(y)) -> eq(x, y) 380.25/291.61 eq(0(x), 1(y)) -> false 380.25/291.61 eq(1(x), 0(y)) -> false 380.25/291.61 eq(1(x), 1(y)) -> eq(x, y) 380.25/291.61 negate(0(x)) -> 1(x) 380.25/291.61 negate(1(x)) -> 0(x) 380.25/291.61 choice(cons(x, xs)) -> x 380.25/291.61 choice(cons(x, xs)) -> choice(xs) 380.25/291.61 guess(nil) -> nil 380.25/291.61 guess(cons(clause, cnf)) -> cons(choice(clause), guess(cnf)) 380.25/291.61 verify(nil) -> true 380.25/291.61 verify(cons(l, ls)) -> if(member(negate(l), ls), false, verify(ls)) 380.25/291.61 sat(cnf) -> satck(cnf, guess(cnf)) 380.25/291.61 satck(cnf, assign) -> if(verify(assign), assign, unsat) 380.25/291.61 380.25/291.61 S is empty. 380.25/291.61 Rewrite Strategy: INNERMOST 380.25/291.61 ---------------------------------------- 380.25/291.61 380.25/291.61 (1) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) 380.25/291.61 Transformed relative TRS to weighted TRS 380.25/291.61 ---------------------------------------- 380.25/291.61 380.25/291.61 (2) 380.25/291.61 Obligation: 380.25/291.61 The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^2). 380.25/291.61 380.25/291.61 380.25/291.61 The TRS R consists of the following rules: 380.25/291.61 380.25/291.61 if(true, t, e) -> t [1] 380.25/291.61 if(false, t, e) -> e [1] 380.25/291.61 member(x, nil) -> false [1] 380.25/291.61 member(x, cons(y, ys)) -> if(eq(x, y), true, member(x, ys)) [1] 380.25/291.61 eq(nil, nil) -> true [1] 380.25/291.61 eq(O(x), 0(y)) -> eq(x, y) [1] 380.25/291.61 eq(0(x), 1(y)) -> false [1] 380.25/291.61 eq(1(x), 0(y)) -> false [1] 380.25/291.61 eq(1(x), 1(y)) -> eq(x, y) [1] 380.25/291.61 negate(0(x)) -> 1(x) [1] 380.25/291.61 negate(1(x)) -> 0(x) [1] 380.25/291.61 choice(cons(x, xs)) -> x [1] 380.25/291.61 choice(cons(x, xs)) -> choice(xs) [1] 380.25/291.61 guess(nil) -> nil [1] 380.25/291.61 guess(cons(clause, cnf)) -> cons(choice(clause), guess(cnf)) [1] 380.25/291.61 verify(nil) -> true [1] 380.25/291.61 verify(cons(l, ls)) -> if(member(negate(l), ls), false, verify(ls)) [1] 380.25/291.61 sat(cnf) -> satck(cnf, guess(cnf)) [1] 380.25/291.61 satck(cnf, assign) -> if(verify(assign), assign, unsat) [1] 380.25/291.61 380.25/291.61 Rewrite Strategy: INNERMOST 380.25/291.61 ---------------------------------------- 380.25/291.61 380.25/291.61 (3) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 380.25/291.61 Infered types. 380.25/291.61 ---------------------------------------- 380.25/291.61 380.25/291.61 (4) 380.25/291.61 Obligation: 380.25/291.61 Runtime Complexity Weighted TRS with Types. 380.25/291.61 The TRS R consists of the following rules: 380.25/291.61 380.25/291.61 if(true, t, e) -> t [1] 380.25/291.61 if(false, t, e) -> e [1] 380.25/291.61 member(x, nil) -> false [1] 380.25/291.61 member(x, cons(y, ys)) -> if(eq(x, y), true, member(x, ys)) [1] 380.25/291.61 eq(nil, nil) -> true [1] 380.25/291.61 eq(O(x), 0(y)) -> eq(x, y) [1] 380.25/291.61 eq(0(x), 1(y)) -> false [1] 380.25/291.61 eq(1(x), 0(y)) -> false [1] 380.25/291.61 eq(1(x), 1(y)) -> eq(x, y) [1] 380.25/291.61 negate(0(x)) -> 1(x) [1] 380.25/291.61 negate(1(x)) -> 0(x) [1] 380.25/291.61 choice(cons(x, xs)) -> x [1] 380.25/291.61 choice(cons(x, xs)) -> choice(xs) [1] 380.25/291.61 guess(nil) -> nil [1] 380.25/291.61 guess(cons(clause, cnf)) -> cons(choice(clause), guess(cnf)) [1] 380.25/291.61 verify(nil) -> true [1] 380.25/291.61 verify(cons(l, ls)) -> if(member(negate(l), ls), false, verify(ls)) [1] 380.25/291.61 sat(cnf) -> satck(cnf, guess(cnf)) [1] 380.25/291.61 satck(cnf, assign) -> if(verify(assign), assign, unsat) [1] 380.25/291.61 380.25/291.61 The TRS has the following type information: 380.25/291.61 if :: true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat 380.25/291.61 true :: true:false:nil:cons:O:0:1:unsat 380.25/291.61 false :: true:false:nil:cons:O:0:1:unsat 380.25/291.61 member :: true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat 380.25/291.61 nil :: true:false:nil:cons:O:0:1:unsat 380.25/291.61 cons :: true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat 380.25/291.61 eq :: true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat 380.25/291.61 O :: true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat 380.25/291.61 0 :: true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat 380.25/291.61 1 :: true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat 380.25/291.61 negate :: true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat 380.25/291.61 choice :: true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat 380.25/291.61 guess :: true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat 380.25/291.61 verify :: true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat 380.25/291.61 sat :: true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat 380.25/291.61 satck :: true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat -> true:false:nil:cons:O:0:1:unsat 380.25/291.61 unsat :: true:false:nil:cons:O:0:1:unsat 380.25/291.61 380.25/291.61 Rewrite Strategy: INNERMOST 380.25/291.61 ---------------------------------------- 380.25/291.61 380.25/291.61 (5) CompletionProof (UPPER BOUND(ID)) 380.25/291.61 The transformation into a RNTS is sound, since: 380.25/291.61 380.25/291.61 (a) The obligation is a constructor system where every type has a constant constructor, 380.25/291.61 380.25/291.61 (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: 380.25/291.61 380.25/291.61 sat_1 380.25/291.61 satck_2 380.25/291.61 380.25/291.61 (c) The following functions are completely defined: 380.25/291.61 380.25/291.61 verify_1 380.25/291.61 member_2 380.25/291.61 negate_1 380.25/291.61 eq_2 380.25/291.61 guess_1 380.25/291.61 if_3 380.25/291.61 choice_1 380.25/291.61 380.25/291.61 Due to the following rules being added: 380.25/291.61 380.25/291.61 verify(v0) -> null_verify [0] 380.25/291.61 member(v0, v1) -> null_member [0] 380.25/291.62 negate(v0) -> null_negate [0] 380.25/291.62 eq(v0, v1) -> null_eq [0] 380.25/291.62 guess(v0) -> null_guess [0] 380.25/291.62 if(v0, v1, v2) -> null_if [0] 380.25/291.62 choice(v0) -> null_choice [0] 380.25/291.62 380.25/291.62 And the following fresh constants: null_verify, null_member, null_negate, null_eq, null_guess, null_if, null_choice 380.25/291.62 380.25/291.62 ---------------------------------------- 380.25/291.62 380.25/291.62 (6) 380.25/291.62 Obligation: 380.25/291.62 Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: 380.25/291.62 380.25/291.62 Runtime Complexity Weighted TRS with Types. 380.25/291.62 The TRS R consists of the following rules: 380.25/291.62 380.25/291.62 if(true, t, e) -> t [1] 380.25/291.62 if(false, t, e) -> e [1] 380.25/291.62 member(x, nil) -> false [1] 380.25/291.62 member(x, cons(y, ys)) -> if(eq(x, y), true, member(x, ys)) [1] 380.25/291.62 eq(nil, nil) -> true [1] 380.25/291.62 eq(O(x), 0(y)) -> eq(x, y) [1] 380.25/291.62 eq(0(x), 1(y)) -> false [1] 380.25/291.62 eq(1(x), 0(y)) -> false [1] 380.25/291.62 eq(1(x), 1(y)) -> eq(x, y) [1] 380.25/291.62 negate(0(x)) -> 1(x) [1] 380.25/291.62 negate(1(x)) -> 0(x) [1] 380.25/291.62 choice(cons(x, xs)) -> x [1] 380.25/291.62 choice(cons(x, xs)) -> choice(xs) [1] 380.25/291.62 guess(nil) -> nil [1] 380.25/291.62 guess(cons(clause, cnf)) -> cons(choice(clause), guess(cnf)) [1] 380.25/291.62 verify(nil) -> true [1] 380.25/291.62 verify(cons(l, ls)) -> if(member(negate(l), ls), false, verify(ls)) [1] 380.25/291.62 sat(cnf) -> satck(cnf, guess(cnf)) [1] 380.25/291.62 satck(cnf, assign) -> if(verify(assign), assign, unsat) [1] 380.25/291.62 verify(v0) -> null_verify [0] 380.25/291.62 member(v0, v1) -> null_member [0] 380.25/291.62 negate(v0) -> null_negate [0] 380.25/291.62 eq(v0, v1) -> null_eq [0] 380.25/291.62 guess(v0) -> null_guess [0] 380.25/291.62 if(v0, v1, v2) -> null_if [0] 380.25/291.62 choice(v0) -> null_choice [0] 380.25/291.62 380.25/291.62 The TRS has the following type information: 380.25/291.62 if :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 true :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 false :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 member :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 nil :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 cons :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 eq :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 O :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 0 :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 1 :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 negate :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 choice :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 guess :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 verify :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 sat :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 satck :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 unsat :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 null_verify :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 null_member :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 null_negate :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 null_eq :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 null_guess :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 null_if :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 null_choice :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 380.25/291.62 Rewrite Strategy: INNERMOST 380.25/291.62 ---------------------------------------- 380.25/291.62 380.25/291.62 (7) NarrowingProof (BOTH BOUNDS(ID, ID)) 380.25/291.62 Narrowed the inner basic terms of all right-hand sides by a single narrowing step. 380.25/291.62 ---------------------------------------- 380.25/291.62 380.25/291.62 (8) 380.25/291.62 Obligation: 380.25/291.62 Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: 380.25/291.62 380.25/291.62 Runtime Complexity Weighted TRS with Types. 380.25/291.62 The TRS R consists of the following rules: 380.25/291.62 380.25/291.62 if(true, t, e) -> t [1] 380.25/291.62 if(false, t, e) -> e [1] 380.25/291.62 member(x, nil) -> false [1] 380.25/291.62 member(nil, cons(nil, nil)) -> if(true, true, false) [3] 380.25/291.62 member(nil, cons(nil, cons(y3, ys'))) -> if(true, true, if(eq(nil, y3), true, member(nil, ys'))) [3] 380.25/291.62 member(nil, cons(nil, ys)) -> if(true, true, null_member) [2] 380.25/291.62 member(O(x'), cons(0(y'), nil)) -> if(eq(x', y'), true, false) [3] 380.25/291.62 member(O(x'), cons(0(y'), cons(y4, ys''))) -> if(eq(x', y'), true, if(eq(O(x'), y4), true, member(O(x'), ys''))) [3] 380.25/291.62 member(O(x'), cons(0(y'), ys)) -> if(eq(x', y'), true, null_member) [2] 380.25/291.62 member(0(x''), cons(1(y''), nil)) -> if(false, true, false) [3] 380.25/291.62 member(0(x''), cons(1(y''), cons(y5, ys1))) -> if(false, true, if(eq(0(x''), y5), true, member(0(x''), ys1))) [3] 380.25/291.62 member(0(x''), cons(1(y''), ys)) -> if(false, true, null_member) [2] 380.25/291.62 member(1(x1), cons(0(y1), nil)) -> if(false, true, false) [3] 380.25/291.62 member(1(x1), cons(0(y1), cons(y6, ys2))) -> if(false, true, if(eq(1(x1), y6), true, member(1(x1), ys2))) [3] 380.25/291.62 member(1(x1), cons(0(y1), ys)) -> if(false, true, null_member) [2] 380.25/291.62 member(1(x2), cons(1(y2), nil)) -> if(eq(x2, y2), true, false) [3] 380.25/291.62 member(1(x2), cons(1(y2), cons(y7, ys3))) -> if(eq(x2, y2), true, if(eq(1(x2), y7), true, member(1(x2), ys3))) [3] 380.25/291.62 member(1(x2), cons(1(y2), ys)) -> if(eq(x2, y2), true, null_member) [2] 380.25/291.62 member(x, cons(y, nil)) -> if(null_eq, true, false) [2] 380.25/291.62 member(x, cons(y, cons(y8, ys4))) -> if(null_eq, true, if(eq(x, y8), true, member(x, ys4))) [2] 380.25/291.62 member(x, cons(y, ys)) -> if(null_eq, true, null_member) [1] 380.25/291.62 eq(nil, nil) -> true [1] 380.25/291.62 eq(O(x), 0(y)) -> eq(x, y) [1] 380.25/291.62 eq(0(x), 1(y)) -> false [1] 380.25/291.62 eq(1(x), 0(y)) -> false [1] 380.25/291.62 eq(1(x), 1(y)) -> eq(x, y) [1] 380.25/291.62 negate(0(x)) -> 1(x) [1] 380.25/291.62 negate(1(x)) -> 0(x) [1] 380.25/291.62 choice(cons(x, xs)) -> x [1] 380.25/291.62 choice(cons(x, xs)) -> choice(xs) [1] 380.25/291.62 guess(nil) -> nil [1] 380.25/291.62 guess(cons(clause, cnf)) -> cons(choice(clause), guess(cnf)) [1] 380.25/291.62 verify(nil) -> true [1] 380.25/291.62 verify(cons(0(x3), nil)) -> if(member(1(x3), nil), false, true) [3] 380.25/291.62 verify(cons(0(x3), cons(l', ls'))) -> if(member(1(x3), cons(l', ls')), false, if(member(negate(l'), ls'), false, verify(ls'))) [3] 380.25/291.62 verify(cons(0(x3), ls)) -> if(member(1(x3), ls), false, null_verify) [2] 380.25/291.62 verify(cons(1(x4), nil)) -> if(member(0(x4), nil), false, true) [3] 380.25/291.62 verify(cons(1(x4), cons(l'', ls''))) -> if(member(0(x4), cons(l'', ls'')), false, if(member(negate(l''), ls''), false, verify(ls''))) [3] 380.25/291.62 verify(cons(1(x4), ls)) -> if(member(0(x4), ls), false, null_verify) [2] 380.25/291.62 verify(cons(l, nil)) -> if(member(null_negate, nil), false, true) [2] 380.25/291.62 verify(cons(l, cons(l1, ls1))) -> if(member(null_negate, cons(l1, ls1)), false, if(member(negate(l1), ls1), false, verify(ls1))) [2] 380.25/291.62 verify(cons(l, ls)) -> if(member(null_negate, ls), false, null_verify) [1] 380.25/291.62 sat(nil) -> satck(nil, nil) [2] 380.25/291.62 sat(cons(clause', cnf')) -> satck(cons(clause', cnf'), cons(choice(clause'), guess(cnf'))) [2] 380.25/291.62 sat(cnf) -> satck(cnf, null_guess) [1] 380.25/291.62 satck(cnf, nil) -> if(true, nil, unsat) [2] 380.25/291.62 satck(cnf, cons(l2, ls2)) -> if(if(member(negate(l2), ls2), false, verify(ls2)), cons(l2, ls2), unsat) [2] 380.25/291.62 satck(cnf, assign) -> if(null_verify, assign, unsat) [1] 380.25/291.62 verify(v0) -> null_verify [0] 380.25/291.62 member(v0, v1) -> null_member [0] 380.25/291.62 negate(v0) -> null_negate [0] 380.25/291.62 eq(v0, v1) -> null_eq [0] 380.25/291.62 guess(v0) -> null_guess [0] 380.25/291.62 if(v0, v1, v2) -> null_if [0] 380.25/291.62 choice(v0) -> null_choice [0] 380.25/291.62 380.25/291.62 The TRS has the following type information: 380.25/291.62 if :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 true :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 false :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 member :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 nil :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 cons :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 eq :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 O :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 0 :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 1 :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 negate :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 choice :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 guess :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 verify :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 sat :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 satck :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice -> true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 unsat :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 null_verify :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 null_member :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 null_negate :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 null_eq :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 null_guess :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 null_if :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 null_choice :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice 380.25/291.62 380.25/291.62 Rewrite Strategy: INNERMOST 380.25/291.62 ---------------------------------------- 380.25/291.62 380.25/291.62 (9) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) 380.25/291.62 Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. 380.25/291.62 The constant constructors are abstracted as follows: 380.25/291.62 380.25/291.62 true => 2 380.25/291.62 false => 0 380.25/291.62 nil => 1 380.25/291.62 unsat => 3 380.25/291.62 null_verify => 0 380.25/291.62 null_member => 0 380.25/291.62 null_negate => 0 380.25/291.62 null_eq => 0 380.25/291.62 null_guess => 0 380.25/291.62 null_if => 0 380.25/291.62 null_choice => 0 380.25/291.62 380.25/291.62 ---------------------------------------- 380.25/291.62 380.25/291.62 (10) 380.25/291.62 Obligation: 380.25/291.62 Complexity RNTS consisting of the following rules: 380.25/291.62 380.25/291.62 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.62 choice(z) -{ 1 }-> choice(xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.62 choice(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 380.25/291.62 eq(z, z') -{ 1 }-> eq(x, y) :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x 380.25/291.62 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.25/291.62 eq(z, z') -{ 1 }-> 0 :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x 380.25/291.62 eq(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 380.25/291.62 guess(z) -{ 1 }-> 1 :|: z = 1 380.25/291.62 guess(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 380.25/291.62 guess(z) -{ 1 }-> 1 + choice(clause) + guess(cnf) :|: cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.25/291.62 if(z, z', z'') -{ 1 }-> e :|: z' = t, t >= 0, e >= 0, z = 0, z'' = e 380.25/291.62 if(z, z', z'') -{ 1 }-> t :|: z = 2, z' = t, t >= 0, e >= 0, z'' = e 380.25/291.62 if(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(eq(x', y'), 2, if(eq(1 + x', y4), 2, member(1 + x', ys''))) :|: z = 1 + x', z' = 1 + (1 + y') + (1 + y4 + ys''), x' >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(eq(x', y'), 2, 0) :|: z = 1 + x', x' >= 0, y' >= 0, z' = 1 + (1 + y') + 1 380.25/291.62 member(z, z') -{ 2 }-> if(eq(x', y'), 2, 0) :|: z = 1 + x', z' = 1 + (1 + y') + ys, ys >= 0, x' >= 0, y' >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(eq(x2, y2), 2, if(eq(1 + x2, y7), 2, member(1 + x2, ys3))) :|: z = 1 + x2, y7 >= 0, ys3 >= 0, y2 >= 0, x2 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.25/291.62 member(z, z') -{ 3 }-> if(eq(x2, y2), 2, 0) :|: z = 1 + x2, z' = 1 + (1 + y2) + 1, y2 >= 0, x2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> if(eq(x2, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, z = 1 + x2, y2 >= 0, x2 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(2, 2, if(eq(1, y3), 2, member(1, ys'))) :|: z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(2, 2, 0) :|: z' = 1 + 1 + 1, z = 1 380.25/291.62 member(z, z') -{ 2 }-> if(2, 2, 0) :|: z = 1, ys >= 0, z' = 1 + 1 + ys 380.25/291.62 member(z, z') -{ 2 }-> if(0, 2, if(eq(x, y8), 2, member(x, ys4))) :|: z' = 1 + y + (1 + y8 + ys4), y8 >= 0, x >= 0, y >= 0, ys4 >= 0, z = x 380.25/291.62 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + x'', y5), 2, member(1 + x'', ys1))) :|: z = 1 + x'', y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, x'' >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + x1, y6), 2, member(1 + x1, ys2))) :|: y1 >= 0, x1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, z = 1 + x1, ys2 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(0, 2, 0) :|: z = 1 + x'', z' = 1 + (1 + y'') + 1, y'' >= 0, x'' >= 0 380.25/291.62 member(z, z') -{ 2 }-> if(0, 2, 0) :|: z = 1 + x'', z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, x'' >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(0, 2, 0) :|: y1 >= 0, x1 >= 0, z' = 1 + (1 + y1) + 1, z = 1 + x1 380.25/291.62 member(z, z') -{ 2 }-> if(0, 2, 0) :|: y1 >= 0, x1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, z = 1 + x1 380.25/291.62 member(z, z') -{ 2 }-> if(0, 2, 0) :|: z' = 1 + y + 1, x >= 0, y >= 0, z = x 380.25/291.62 member(z, z') -{ 1 }-> if(0, 2, 0) :|: ys >= 0, x >= 0, y >= 0, z = x, z' = 1 + y + ys 380.25/291.62 member(z, z') -{ 1 }-> 0 :|: x >= 0, z' = 1, z = x 380.25/291.62 member(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 380.25/291.62 negate(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 380.25/291.62 negate(z) -{ 1 }-> 1 + x :|: x >= 0, z = 1 + x 380.25/291.62 sat(z) -{ 1 }-> satck(cnf, 0) :|: cnf >= 0, z = cnf 380.25/291.62 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.25/291.62 sat(z) -{ 2 }-> satck(1 + clause' + cnf', 1 + choice(clause') + guess(cnf')) :|: clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.25/291.62 satck(z, z') -{ 2 }-> if(if(member(negate(l2), ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, cnf >= 0, z = cnf, l2 >= 0, ls2 >= 0 380.25/291.62 satck(z, z') -{ 2 }-> if(2, 1, 3) :|: cnf >= 0, z' = 1, z = cnf 380.25/291.62 satck(z, z') -{ 1 }-> if(0, assign, 3) :|: cnf >= 0, z' = assign, z = cnf, assign >= 0 380.25/291.62 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.25/291.62 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z = 1 + l + 1, l >= 0 380.25/291.62 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(negate(l1), ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0 380.25/291.62 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + x3, 1), 0, 2) :|: z = 1 + (1 + x3) + 1, x3 >= 0 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(negate(l'), ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0 380.25/291.62 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + x4, 1), 0, 2) :|: x4 >= 0, z = 1 + (1 + x4) + 1 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(negate(l''), ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0 380.25/291.62 verify(z) -{ 1 }-> 2 :|: z = 1 380.25/291.62 verify(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 380.25/291.62 380.25/291.62 380.25/291.62 ---------------------------------------- 380.25/291.62 380.25/291.62 (11) InliningProof (UPPER BOUND(ID)) 380.25/291.62 Inlined the following terminating rules on right-hand sides where appropriate: 380.25/291.62 380.25/291.62 if(z, z', z'') -{ 1 }-> e :|: z' = t, t >= 0, e >= 0, z = 0, z'' = e 380.25/291.62 if(z, z', z'') -{ 1 }-> t :|: z = 2, z' = t, t >= 0, e >= 0, z'' = e 380.25/291.62 if(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 380.25/291.62 negate(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 380.25/291.62 negate(z) -{ 1 }-> 1 + x :|: x >= 0, z = 1 + x 380.25/291.62 380.25/291.62 ---------------------------------------- 380.25/291.62 380.25/291.62 (12) 380.25/291.62 Obligation: 380.25/291.62 Complexity RNTS consisting of the following rules: 380.25/291.62 380.25/291.62 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.62 choice(z) -{ 1 }-> choice(xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.62 choice(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 380.25/291.62 eq(z, z') -{ 1 }-> eq(x, y) :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x 380.25/291.62 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.25/291.62 eq(z, z') -{ 1 }-> 0 :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x 380.25/291.62 eq(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 380.25/291.62 guess(z) -{ 1 }-> 1 :|: z = 1 380.25/291.62 guess(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 380.25/291.62 guess(z) -{ 1 }-> 1 + choice(clause) + guess(cnf) :|: cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.25/291.62 if(z, z', z'') -{ 1 }-> e :|: z' = t, t >= 0, e >= 0, z = 0, z'' = e 380.25/291.62 if(z, z', z'') -{ 1 }-> t :|: z = 2, z' = t, t >= 0, e >= 0, z'' = e 380.25/291.62 if(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 4 }-> e :|: z = 1 + x'', z' = 1 + (1 + y'') + 1, y'' >= 0, x'' >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> e :|: z = 1 + x'', z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, x'' >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 4 }-> e :|: y1 >= 0, x1 >= 0, z' = 1 + (1 + y1) + 1, z = 1 + x1, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> e :|: y1 >= 0, x1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, z = 1 + x1, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> e :|: z' = 1 + y + 1, x >= 0, y >= 0, z = x, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 2 }-> e :|: ys >= 0, x >= 0, y >= 0, z = x, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> t :|: z = 1, ys >= 0, z' = 1 + 1 + ys, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> if(eq(x', y'), 2, if(eq(1 + x', y4), 2, member(1 + x', ys''))) :|: z = 1 + x', z' = 1 + (1 + y') + (1 + y4 + ys''), x' >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(eq(x', y'), 2, 0) :|: z = 1 + x', x' >= 0, y' >= 0, z' = 1 + (1 + y') + 1 380.25/291.62 member(z, z') -{ 2 }-> if(eq(x', y'), 2, 0) :|: z = 1 + x', z' = 1 + (1 + y') + ys, ys >= 0, x' >= 0, y' >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(eq(x2, y2), 2, if(eq(1 + x2, y7), 2, member(1 + x2, ys3))) :|: z = 1 + x2, y7 >= 0, ys3 >= 0, y2 >= 0, x2 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.25/291.62 member(z, z') -{ 3 }-> if(eq(x2, y2), 2, 0) :|: z = 1 + x2, z' = 1 + (1 + y2) + 1, y2 >= 0, x2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> if(eq(x2, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, z = 1 + x2, y2 >= 0, x2 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(2, 2, if(eq(1, y3), 2, member(1, ys'))) :|: z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.25/291.62 member(z, z') -{ 2 }-> if(0, 2, if(eq(x, y8), 2, member(x, ys4))) :|: z' = 1 + y + (1 + y8 + ys4), y8 >= 0, x >= 0, y >= 0, ys4 >= 0, z = x 380.25/291.62 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + x'', y5), 2, member(1 + x'', ys1))) :|: z = 1 + x'', y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, x'' >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + x1, y6), 2, member(1 + x1, ys2))) :|: y1 >= 0, x1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, z = 1 + x1, ys2 >= 0 380.25/291.62 member(z, z') -{ 1 }-> 0 :|: x >= 0, z' = 1, z = x 380.25/291.62 member(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 380.25/291.62 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> 0 :|: z = 1, ys >= 0, z' = 1 + 1 + ys, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 3 }-> 0 :|: z = 1 + x'', z' = 1 + (1 + y'') + 1, y'' >= 0, x'' >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> 0 :|: z = 1 + x'', z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, x'' >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 3 }-> 0 :|: y1 >= 0, x1 >= 0, z' = 1 + (1 + y1) + 1, z = 1 + x1, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, x1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, z = 1 + x1, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> 0 :|: z' = 1 + y + 1, x >= 0, y >= 0, z = x, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 1 }-> 0 :|: ys >= 0, x >= 0, y >= 0, z = x, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 negate(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 380.25/291.62 negate(z) -{ 1 }-> 1 + x :|: x >= 0, z = 1 + x 380.25/291.62 sat(z) -{ 1 }-> satck(cnf, 0) :|: cnf >= 0, z = cnf 380.25/291.62 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.25/291.62 sat(z) -{ 2 }-> satck(1 + clause' + cnf', 1 + choice(clause') + guess(cnf')) :|: clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.25/291.62 satck(z, z') -{ 2 }-> e :|: cnf >= 0, z' = assign, z = cnf, assign >= 0, assign = t, t >= 0, e >= 0, 0 = 0, 3 = e 380.25/291.62 satck(z, z') -{ 3 }-> t :|: cnf >= 0, z' = 1, z = cnf, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.25/291.62 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, cnf >= 0, z = cnf, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.25/291.62 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, cnf >= 0, z = cnf, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.25/291.62 satck(z, z') -{ 2 }-> 0 :|: cnf >= 0, z' = 1, z = cnf, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.25/291.62 satck(z, z') -{ 1 }-> 0 :|: cnf >= 0, z' = assign, z = cnf, assign >= 0, v0 >= 0, 3 = v2, v1 >= 0, 0 = v0, assign = v1, v2 >= 0 380.25/291.62 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.25/291.62 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z = 1 + l + 1, l >= 0 380.25/291.62 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.25/291.62 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.25/291.62 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + x3, 1), 0, 2) :|: z = 1 + (1 + x3) + 1, x3 >= 0 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.25/291.62 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.25/291.62 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + x4, 1), 0, 2) :|: x4 >= 0, z = 1 + (1 + x4) + 1 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.25/291.62 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.25/291.62 verify(z) -{ 1 }-> 2 :|: z = 1 380.25/291.62 verify(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 380.25/291.62 380.25/291.62 380.25/291.62 ---------------------------------------- 380.25/291.62 380.25/291.62 (13) SimplificationProof (BOTH BOUNDS(ID, ID)) 380.25/291.62 Simplified the RNTS by moving equalities from the constraints into the right-hand sides. 380.25/291.62 ---------------------------------------- 380.25/291.62 380.25/291.62 (14) 380.25/291.62 Obligation: 380.25/291.62 Complexity RNTS consisting of the following rules: 380.25/291.62 380.25/291.62 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.62 choice(z) -{ 1 }-> choice(xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.62 choice(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.62 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.62 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.25/291.62 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.62 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.62 guess(z) -{ 1 }-> 1 :|: z = 1 380.25/291.62 guess(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.62 guess(z) -{ 1 }-> 1 + choice(clause) + guess(cnf) :|: cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.25/291.62 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.25/291.62 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.25/291.62 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.25/291.62 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> if(eq(z - 1, y'), 2, if(eq(1 + (z - 1), y4), 2, member(1 + (z - 1), ys''))) :|: z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.25/291.62 member(z, z') -{ 2 }-> if(eq(z - 1, y'), 2, 0) :|: z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(eq(z - 1, y2), 2, if(eq(1 + (z - 1), y7), 2, member(1 + (z - 1), ys3))) :|: y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.25/291.62 member(z, z') -{ 2 }-> if(eq(z - 1, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(eq(z - 1, z' - 3), 2, 0) :|: z - 1 >= 0, z' - 3 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(2, 2, if(eq(1, y3), 2, member(1, ys'))) :|: z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.25/291.62 member(z, z') -{ 2 }-> if(0, 2, if(eq(z, y8), 2, member(z, ys4))) :|: z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + (z - 1), y5), 2, member(1 + (z - 1), ys1))) :|: y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + (z - 1), y6), 2, member(1 + (z - 1), ys2))) :|: y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.25/291.62 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.25/291.62 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.62 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 negate(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.62 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.25/291.62 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.25/291.62 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.25/291.62 sat(z) -{ 2 }-> satck(1 + clause' + cnf', 1 + choice(clause') + guess(cnf')) :|: clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.25/291.62 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.25/291.62 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.25/291.62 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.25/291.62 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.25/291.62 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.25/291.62 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.25/291.62 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.25/291.62 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.25/291.62 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.25/291.62 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.25/291.62 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.25/291.62 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.25/291.62 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.25/291.62 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.25/291.62 verify(z) -{ 1 }-> 2 :|: z = 1 380.25/291.62 verify(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.62 380.25/291.62 380.25/291.62 ---------------------------------------- 380.25/291.62 380.25/291.62 (15) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) 380.25/291.62 Found the following analysis order by SCC decomposition: 380.25/291.62 380.25/291.62 { choice } 380.25/291.62 { eq } 380.25/291.62 { negate } 380.25/291.62 { if } 380.25/291.62 { guess } 380.25/291.62 { member } 380.25/291.62 { verify } 380.25/291.62 { satck } 380.25/291.62 { sat } 380.25/291.62 380.25/291.62 ---------------------------------------- 380.25/291.62 380.25/291.62 (16) 380.25/291.62 Obligation: 380.25/291.62 Complexity RNTS consisting of the following rules: 380.25/291.62 380.25/291.62 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.62 choice(z) -{ 1 }-> choice(xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.62 choice(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.62 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.62 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.25/291.62 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.62 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.62 guess(z) -{ 1 }-> 1 :|: z = 1 380.25/291.62 guess(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.62 guess(z) -{ 1 }-> 1 + choice(clause) + guess(cnf) :|: cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.25/291.62 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.25/291.62 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.25/291.62 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.25/291.62 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> if(eq(z - 1, y'), 2, if(eq(1 + (z - 1), y4), 2, member(1 + (z - 1), ys''))) :|: z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.25/291.62 member(z, z') -{ 2 }-> if(eq(z - 1, y'), 2, 0) :|: z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(eq(z - 1, y2), 2, if(eq(1 + (z - 1), y7), 2, member(1 + (z - 1), ys3))) :|: y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.25/291.62 member(z, z') -{ 2 }-> if(eq(z - 1, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(eq(z - 1, z' - 3), 2, 0) :|: z - 1 >= 0, z' - 3 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(2, 2, if(eq(1, y3), 2, member(1, ys'))) :|: z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.25/291.62 member(z, z') -{ 2 }-> if(0, 2, if(eq(z, y8), 2, member(z, ys4))) :|: z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + (z - 1), y5), 2, member(1 + (z - 1), ys1))) :|: y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + (z - 1), y6), 2, member(1 + (z - 1), ys2))) :|: y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.25/291.62 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.25/291.62 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.62 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 negate(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.62 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.25/291.62 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.25/291.62 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.25/291.62 sat(z) -{ 2 }-> satck(1 + clause' + cnf', 1 + choice(clause') + guess(cnf')) :|: clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.25/291.62 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.25/291.62 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.25/291.62 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.25/291.62 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.25/291.62 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.25/291.62 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.25/291.62 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.25/291.62 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.25/291.62 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.25/291.62 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.25/291.62 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.25/291.62 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.25/291.62 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.25/291.62 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.25/291.62 verify(z) -{ 1 }-> 2 :|: z = 1 380.25/291.62 verify(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.62 380.25/291.62 Function symbols to be analyzed: {choice}, {eq}, {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat} 380.25/291.62 380.25/291.62 ---------------------------------------- 380.25/291.62 380.25/291.62 (17) ResultPropagationProof (UPPER BOUND(ID)) 380.25/291.62 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 380.25/291.62 ---------------------------------------- 380.25/291.62 380.25/291.62 (18) 380.25/291.62 Obligation: 380.25/291.62 Complexity RNTS consisting of the following rules: 380.25/291.62 380.25/291.62 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.62 choice(z) -{ 1 }-> choice(xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.62 choice(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.62 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.62 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.25/291.62 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.62 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.62 guess(z) -{ 1 }-> 1 :|: z = 1 380.25/291.62 guess(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.62 guess(z) -{ 1 }-> 1 + choice(clause) + guess(cnf) :|: cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.25/291.62 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.25/291.62 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.25/291.62 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.25/291.62 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> if(eq(z - 1, y'), 2, if(eq(1 + (z - 1), y4), 2, member(1 + (z - 1), ys''))) :|: z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.25/291.62 member(z, z') -{ 2 }-> if(eq(z - 1, y'), 2, 0) :|: z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(eq(z - 1, y2), 2, if(eq(1 + (z - 1), y7), 2, member(1 + (z - 1), ys3))) :|: y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.25/291.62 member(z, z') -{ 2 }-> if(eq(z - 1, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(eq(z - 1, z' - 3), 2, 0) :|: z - 1 >= 0, z' - 3 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(2, 2, if(eq(1, y3), 2, member(1, ys'))) :|: z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.25/291.62 member(z, z') -{ 2 }-> if(0, 2, if(eq(z, y8), 2, member(z, ys4))) :|: z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + (z - 1), y5), 2, member(1 + (z - 1), ys1))) :|: y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.25/291.62 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + (z - 1), y6), 2, member(1 + (z - 1), ys2))) :|: y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.25/291.62 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.25/291.62 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.62 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.62 negate(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.62 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.25/291.62 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.25/291.62 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.25/291.62 sat(z) -{ 2 }-> satck(1 + clause' + cnf', 1 + choice(clause') + guess(cnf')) :|: clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.25/291.62 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.25/291.62 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.25/291.62 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.25/291.62 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.25/291.62 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.25/291.62 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.25/291.62 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.25/291.62 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.25/291.62 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.25/291.62 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.25/291.62 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.25/291.62 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.25/291.62 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.25/291.62 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.25/291.62 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.25/291.62 verify(z) -{ 1 }-> 2 :|: z = 1 380.25/291.62 verify(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.62 380.25/291.62 Function symbols to be analyzed: {choice}, {eq}, {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat} 380.25/291.62 380.25/291.62 ---------------------------------------- 380.25/291.62 380.25/291.62 (19) IntTrsBoundProof (UPPER BOUND(ID)) 380.25/291.62 380.25/291.62 Computed SIZE bound using KoAT for: choice 380.25/291.62 after applying outer abstraction to obtain an ITS, 380.25/291.62 resulting in: O(n^1) with polynomial bound: z 380.25/291.62 380.25/291.62 ---------------------------------------- 380.25/291.62 380.25/291.62 (20) 380.25/291.62 Obligation: 380.25/291.62 Complexity RNTS consisting of the following rules: 380.25/291.62 380.25/291.62 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.62 choice(z) -{ 1 }-> choice(xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.62 choice(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.62 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.62 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.25/291.62 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.62 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.62 guess(z) -{ 1 }-> 1 :|: z = 1 380.25/291.62 guess(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.62 guess(z) -{ 1 }-> 1 + choice(clause) + guess(cnf) :|: cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.25/291.62 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.25/291.62 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.25/291.62 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.25/291.62 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.62 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> if(eq(z - 1, y'), 2, if(eq(1 + (z - 1), y4), 2, member(1 + (z - 1), ys''))) :|: z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.25/291.63 member(z, z') -{ 2 }-> if(eq(z - 1, y'), 2, 0) :|: z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(eq(z - 1, y2), 2, if(eq(1 + (z - 1), y7), 2, member(1 + (z - 1), ys3))) :|: y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.25/291.63 member(z, z') -{ 2 }-> if(eq(z - 1, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(eq(z - 1, z' - 3), 2, 0) :|: z - 1 >= 0, z' - 3 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(2, 2, if(eq(1, y3), 2, member(1, ys'))) :|: z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.25/291.63 member(z, z') -{ 2 }-> if(0, 2, if(eq(z, y8), 2, member(z, ys4))) :|: z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + (z - 1), y5), 2, member(1 + (z - 1), ys1))) :|: y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + (z - 1), y6), 2, member(1 + (z - 1), ys2))) :|: y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.25/291.63 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.25/291.63 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.63 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 negate(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.25/291.63 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.25/291.63 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.25/291.63 sat(z) -{ 2 }-> satck(1 + clause' + cnf', 1 + choice(clause') + guess(cnf')) :|: clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.25/291.63 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.25/291.63 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.25/291.63 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.25/291.63 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.25/291.63 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.25/291.63 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.25/291.63 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.25/291.63 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.25/291.63 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.25/291.63 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.25/291.63 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.25/291.63 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.25/291.63 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.25/291.63 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.25/291.63 verify(z) -{ 1 }-> 2 :|: z = 1 380.25/291.63 verify(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 380.25/291.63 Function symbols to be analyzed: {choice}, {eq}, {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat} 380.25/291.63 Previous analysis results are: 380.25/291.63 choice: runtime: ?, size: O(n^1) [z] 380.25/291.63 380.25/291.63 ---------------------------------------- 380.25/291.63 380.25/291.63 (21) IntTrsBoundProof (UPPER BOUND(ID)) 380.25/291.63 380.25/291.63 Computed RUNTIME bound using KoAT for: choice 380.25/291.63 after applying outer abstraction to obtain an ITS, 380.25/291.63 resulting in: O(n^1) with polynomial bound: 1 + z 380.25/291.63 380.25/291.63 ---------------------------------------- 380.25/291.63 380.25/291.63 (22) 380.25/291.63 Obligation: 380.25/291.63 Complexity RNTS consisting of the following rules: 380.25/291.63 380.25/291.63 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.63 choice(z) -{ 1 }-> choice(xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.63 choice(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.63 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.25/291.63 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.63 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.63 guess(z) -{ 1 }-> 1 :|: z = 1 380.25/291.63 guess(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 guess(z) -{ 1 }-> 1 + choice(clause) + guess(cnf) :|: cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.25/291.63 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.25/291.63 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.25/291.63 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.25/291.63 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> if(eq(z - 1, y'), 2, if(eq(1 + (z - 1), y4), 2, member(1 + (z - 1), ys''))) :|: z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.25/291.63 member(z, z') -{ 2 }-> if(eq(z - 1, y'), 2, 0) :|: z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(eq(z - 1, y2), 2, if(eq(1 + (z - 1), y7), 2, member(1 + (z - 1), ys3))) :|: y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.25/291.63 member(z, z') -{ 2 }-> if(eq(z - 1, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(eq(z - 1, z' - 3), 2, 0) :|: z - 1 >= 0, z' - 3 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(2, 2, if(eq(1, y3), 2, member(1, ys'))) :|: z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.25/291.63 member(z, z') -{ 2 }-> if(0, 2, if(eq(z, y8), 2, member(z, ys4))) :|: z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + (z - 1), y5), 2, member(1 + (z - 1), ys1))) :|: y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + (z - 1), y6), 2, member(1 + (z - 1), ys2))) :|: y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.25/291.63 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.25/291.63 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.63 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 negate(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.25/291.63 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.25/291.63 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.25/291.63 sat(z) -{ 2 }-> satck(1 + clause' + cnf', 1 + choice(clause') + guess(cnf')) :|: clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.25/291.63 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.25/291.63 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.25/291.63 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.25/291.63 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.25/291.63 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.25/291.63 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.25/291.63 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.25/291.63 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.25/291.63 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.25/291.63 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.25/291.63 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.25/291.63 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.25/291.63 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.25/291.63 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.25/291.63 verify(z) -{ 1 }-> 2 :|: z = 1 380.25/291.63 verify(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 380.25/291.63 Function symbols to be analyzed: {eq}, {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat} 380.25/291.63 Previous analysis results are: 380.25/291.63 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.25/291.63 380.25/291.63 ---------------------------------------- 380.25/291.63 380.25/291.63 (23) ResultPropagationProof (UPPER BOUND(ID)) 380.25/291.63 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 380.25/291.63 ---------------------------------------- 380.25/291.63 380.25/291.63 (24) 380.25/291.63 Obligation: 380.25/291.63 Complexity RNTS consisting of the following rules: 380.25/291.63 380.25/291.63 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.63 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.63 choice(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.63 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.25/291.63 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.63 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.63 guess(z) -{ 1 }-> 1 :|: z = 1 380.25/291.63 guess(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 guess(z) -{ 2 + clause }-> 1 + s' + guess(cnf) :|: s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.25/291.63 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.25/291.63 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.25/291.63 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.25/291.63 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> if(eq(z - 1, y'), 2, if(eq(1 + (z - 1), y4), 2, member(1 + (z - 1), ys''))) :|: z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.25/291.63 member(z, z') -{ 2 }-> if(eq(z - 1, y'), 2, 0) :|: z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(eq(z - 1, y2), 2, if(eq(1 + (z - 1), y7), 2, member(1 + (z - 1), ys3))) :|: y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.25/291.63 member(z, z') -{ 2 }-> if(eq(z - 1, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(eq(z - 1, z' - 3), 2, 0) :|: z - 1 >= 0, z' - 3 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(2, 2, if(eq(1, y3), 2, member(1, ys'))) :|: z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.25/291.63 member(z, z') -{ 2 }-> if(0, 2, if(eq(z, y8), 2, member(z, ys4))) :|: z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + (z - 1), y5), 2, member(1 + (z - 1), ys1))) :|: y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + (z - 1), y6), 2, member(1 + (z - 1), ys2))) :|: y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.25/291.63 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.25/291.63 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.63 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 negate(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.25/291.63 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.25/291.63 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.25/291.63 sat(z) -{ 3 + clause' }-> satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.25/291.63 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.25/291.63 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.25/291.63 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.25/291.63 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.25/291.63 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.25/291.63 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.25/291.63 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.25/291.63 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.25/291.63 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.25/291.63 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.25/291.63 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.25/291.63 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.25/291.63 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.25/291.63 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.25/291.63 verify(z) -{ 1 }-> 2 :|: z = 1 380.25/291.63 verify(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 380.25/291.63 Function symbols to be analyzed: {eq}, {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat} 380.25/291.63 Previous analysis results are: 380.25/291.63 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.25/291.63 380.25/291.63 ---------------------------------------- 380.25/291.63 380.25/291.63 (25) IntTrsBoundProof (UPPER BOUND(ID)) 380.25/291.63 380.25/291.63 Computed SIZE bound using CoFloCo for: eq 380.25/291.63 after applying outer abstraction to obtain an ITS, 380.25/291.63 resulting in: O(1) with polynomial bound: 2 380.25/291.63 380.25/291.63 ---------------------------------------- 380.25/291.63 380.25/291.63 (26) 380.25/291.63 Obligation: 380.25/291.63 Complexity RNTS consisting of the following rules: 380.25/291.63 380.25/291.63 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.63 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.63 choice(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.63 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.25/291.63 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.63 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.63 guess(z) -{ 1 }-> 1 :|: z = 1 380.25/291.63 guess(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 guess(z) -{ 2 + clause }-> 1 + s' + guess(cnf) :|: s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.25/291.63 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.25/291.63 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.25/291.63 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.25/291.63 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> if(eq(z - 1, y'), 2, if(eq(1 + (z - 1), y4), 2, member(1 + (z - 1), ys''))) :|: z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.25/291.63 member(z, z') -{ 2 }-> if(eq(z - 1, y'), 2, 0) :|: z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(eq(z - 1, y2), 2, if(eq(1 + (z - 1), y7), 2, member(1 + (z - 1), ys3))) :|: y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.25/291.63 member(z, z') -{ 2 }-> if(eq(z - 1, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(eq(z - 1, z' - 3), 2, 0) :|: z - 1 >= 0, z' - 3 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(2, 2, if(eq(1, y3), 2, member(1, ys'))) :|: z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.25/291.63 member(z, z') -{ 2 }-> if(0, 2, if(eq(z, y8), 2, member(z, ys4))) :|: z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + (z - 1), y5), 2, member(1 + (z - 1), ys1))) :|: y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + (z - 1), y6), 2, member(1 + (z - 1), ys2))) :|: y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.25/291.63 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.25/291.63 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.63 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 negate(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.25/291.63 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.25/291.63 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.25/291.63 sat(z) -{ 3 + clause' }-> satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.25/291.63 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.25/291.63 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.25/291.63 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.25/291.63 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.25/291.63 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.25/291.63 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.25/291.63 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.25/291.63 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.25/291.63 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.25/291.63 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.25/291.63 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.25/291.63 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.25/291.63 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.25/291.63 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.25/291.63 verify(z) -{ 1 }-> 2 :|: z = 1 380.25/291.63 verify(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 380.25/291.63 Function symbols to be analyzed: {eq}, {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat} 380.25/291.63 Previous analysis results are: 380.25/291.63 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.25/291.63 eq: runtime: ?, size: O(1) [2] 380.25/291.63 380.25/291.63 ---------------------------------------- 380.25/291.63 380.25/291.63 (27) IntTrsBoundProof (UPPER BOUND(ID)) 380.25/291.63 380.25/291.63 Computed RUNTIME bound using CoFloCo for: eq 380.25/291.63 after applying outer abstraction to obtain an ITS, 380.25/291.63 resulting in: O(n^1) with polynomial bound: 2 + z' 380.25/291.63 380.25/291.63 ---------------------------------------- 380.25/291.63 380.25/291.63 (28) 380.25/291.63 Obligation: 380.25/291.63 Complexity RNTS consisting of the following rules: 380.25/291.63 380.25/291.63 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.63 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.63 choice(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 eq(z, z') -{ 1 }-> eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.63 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.25/291.63 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.63 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.63 guess(z) -{ 1 }-> 1 :|: z = 1 380.25/291.63 guess(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 guess(z) -{ 2 + clause }-> 1 + s' + guess(cnf) :|: s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.25/291.63 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.25/291.63 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.25/291.63 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.25/291.63 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> if(eq(z - 1, y'), 2, if(eq(1 + (z - 1), y4), 2, member(1 + (z - 1), ys''))) :|: z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.25/291.63 member(z, z') -{ 2 }-> if(eq(z - 1, y'), 2, 0) :|: z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(eq(z - 1, y2), 2, if(eq(1 + (z - 1), y7), 2, member(1 + (z - 1), ys3))) :|: y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.25/291.63 member(z, z') -{ 2 }-> if(eq(z - 1, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(eq(z - 1, z' - 3), 2, 0) :|: z - 1 >= 0, z' - 3 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(2, 2, if(eq(1, y3), 2, member(1, ys'))) :|: z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.25/291.63 member(z, z') -{ 2 }-> if(0, 2, if(eq(z, y8), 2, member(z, ys4))) :|: z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + (z - 1), y5), 2, member(1 + (z - 1), ys1))) :|: y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.25/291.63 member(z, z') -{ 3 }-> if(0, 2, if(eq(1 + (z - 1), y6), 2, member(1 + (z - 1), ys2))) :|: y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.25/291.63 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.25/291.63 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.63 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 negate(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.25/291.63 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.25/291.63 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.25/291.63 sat(z) -{ 3 + clause' }-> satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.25/291.63 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.25/291.63 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.25/291.63 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.25/291.63 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.25/291.63 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.25/291.63 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.25/291.63 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.25/291.63 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.25/291.63 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.25/291.63 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.25/291.63 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.25/291.63 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.25/291.63 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.25/291.63 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.25/291.63 verify(z) -{ 1 }-> 2 :|: z = 1 380.25/291.63 verify(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 380.25/291.63 Function symbols to be analyzed: {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat} 380.25/291.63 Previous analysis results are: 380.25/291.63 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.25/291.63 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.25/291.63 380.25/291.63 ---------------------------------------- 380.25/291.63 380.25/291.63 (29) ResultPropagationProof (UPPER BOUND(ID)) 380.25/291.63 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 380.25/291.63 ---------------------------------------- 380.25/291.63 380.25/291.63 (30) 380.25/291.63 Obligation: 380.25/291.63 Complexity RNTS consisting of the following rules: 380.25/291.63 380.25/291.63 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.63 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.63 choice(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.25/291.63 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.25/291.63 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.63 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.63 guess(z) -{ 1 }-> 1 :|: z = 1 380.25/291.63 guess(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 guess(z) -{ 2 + clause }-> 1 + s' + guess(cnf) :|: s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.25/291.63 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.25/291.63 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.25/291.63 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.25/291.63 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.63 member(z, z') -{ 4 + y2 }-> if(s11, 2, 0) :|: s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.25/291.63 member(z, z') -{ 2 + z' }-> if(s3, 2, 0) :|: s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.25/291.63 member(z, z') -{ 7 + y' + y4 }-> if(s4, 2, if(s5, 2, member(1 + (z - 1), ys''))) :|: s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.25/291.63 member(z, z') -{ 4 + y' }-> if(s6, 2, 0) :|: s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.25/291.63 member(z, z') -{ 7 + y2 + y7 }-> if(s9, 2, if(s10, 2, member(1 + (z - 1), ys3))) :|: s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.25/291.63 member(z, z') -{ 5 + y3 }-> if(2, 2, if(s2, 2, member(1, ys'))) :|: s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.25/291.63 member(z, z') -{ 4 + y8 }-> if(0, 2, if(s12, 2, member(z, ys4))) :|: s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.25/291.63 member(z, z') -{ 5 + y5 }-> if(0, 2, if(s7, 2, member(1 + (z - 1), ys1))) :|: s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.25/291.63 member(z, z') -{ 5 + y6 }-> if(0, 2, if(s8, 2, member(1 + (z - 1), ys2))) :|: s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.25/291.63 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.25/291.63 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.63 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.25/291.63 negate(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.25/291.63 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.25/291.63 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.25/291.63 sat(z) -{ 3 + clause' }-> satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.25/291.63 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.25/291.63 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.25/291.63 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.25/291.63 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.25/291.63 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.25/291.63 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.25/291.63 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.25/291.63 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.25/291.63 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.25/291.63 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.25/291.63 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.25/291.63 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.25/291.63 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.25/291.63 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.25/291.63 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.25/291.63 verify(z) -{ 1 }-> 2 :|: z = 1 380.25/291.63 verify(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 380.25/291.63 Function symbols to be analyzed: {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat} 380.25/291.63 Previous analysis results are: 380.25/291.63 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.25/291.63 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.25/291.63 380.25/291.63 ---------------------------------------- 380.25/291.63 380.25/291.63 (31) IntTrsBoundProof (UPPER BOUND(ID)) 380.25/291.63 380.25/291.63 Computed SIZE bound using CoFloCo for: negate 380.25/291.63 after applying outer abstraction to obtain an ITS, 380.25/291.63 resulting in: O(n^1) with polynomial bound: z 380.25/291.63 380.25/291.63 ---------------------------------------- 380.25/291.63 380.25/291.63 (32) 380.25/291.63 Obligation: 380.25/291.63 Complexity RNTS consisting of the following rules: 380.25/291.63 380.25/291.63 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.63 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.25/291.63 choice(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.25/291.63 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.25/291.63 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.25/291.63 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.25/291.63 guess(z) -{ 1 }-> 1 :|: z = 1 380.25/291.63 guess(z) -{ 0 }-> 0 :|: z >= 0 380.25/291.63 guess(z) -{ 2 + clause }-> 1 + s' + guess(cnf) :|: s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.25/291.63 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.25/291.63 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.25/291.63 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.25/291.63 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.25/291.63 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.63 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.25/291.63 member(z, z') -{ 4 + y2 }-> if(s11, 2, 0) :|: s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.25/291.63 member(z, z') -{ 2 + z' }-> if(s3, 2, 0) :|: s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.25/291.63 member(z, z') -{ 7 + y' + y4 }-> if(s4, 2, if(s5, 2, member(1 + (z - 1), ys''))) :|: s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.25/291.63 member(z, z') -{ 4 + y' }-> if(s6, 2, 0) :|: s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.25/291.63 member(z, z') -{ 7 + y2 + y7 }-> if(s9, 2, if(s10, 2, member(1 + (z - 1), ys3))) :|: s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.64 member(z, z') -{ 5 + y3 }-> if(2, 2, if(s2, 2, member(1, ys'))) :|: s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.64 member(z, z') -{ 4 + y8 }-> if(0, 2, if(s12, 2, member(z, ys4))) :|: s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.64 member(z, z') -{ 5 + y5 }-> if(0, 2, if(s7, 2, member(1 + (z - 1), ys1))) :|: s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.64 member(z, z') -{ 5 + y6 }-> if(0, 2, if(s8, 2, member(1 + (z - 1), ys2))) :|: s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.64 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.64 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.64 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.64 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.64 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.64 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.64 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.64 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.64 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.64 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.64 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.64 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.64 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.64 sat(z) -{ 3 + clause' }-> satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.64 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.64 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.64 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.64 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.64 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.64 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.64 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.64 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.41/291.64 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.64 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.64 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.64 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.64 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.64 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.64 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.64 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.64 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.41/291.64 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.64 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.64 380.41/291.64 Function symbols to be analyzed: {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat} 380.41/291.64 Previous analysis results are: 380.41/291.64 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.64 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.64 negate: runtime: ?, size: O(n^1) [z] 380.41/291.64 380.41/291.64 ---------------------------------------- 380.41/291.64 380.41/291.64 (33) IntTrsBoundProof (UPPER BOUND(ID)) 380.41/291.64 380.41/291.64 Computed RUNTIME bound using CoFloCo for: negate 380.41/291.64 after applying outer abstraction to obtain an ITS, 380.41/291.64 resulting in: O(1) with polynomial bound: 1 380.41/291.64 380.41/291.64 ---------------------------------------- 380.41/291.64 380.41/291.64 (34) 380.41/291.64 Obligation: 380.41/291.64 Complexity RNTS consisting of the following rules: 380.41/291.64 380.41/291.64 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.64 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.64 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.64 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.64 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.64 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.64 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.64 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.64 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.64 guess(z) -{ 2 + clause }-> 1 + s' + guess(cnf) :|: s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.64 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.64 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.64 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.64 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.64 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.64 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.64 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.64 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.64 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.64 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.64 member(z, z') -{ 4 + y2 }-> if(s11, 2, 0) :|: s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.64 member(z, z') -{ 2 + z' }-> if(s3, 2, 0) :|: s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.64 member(z, z') -{ 7 + y' + y4 }-> if(s4, 2, if(s5, 2, member(1 + (z - 1), ys''))) :|: s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.64 member(z, z') -{ 4 + y' }-> if(s6, 2, 0) :|: s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.64 member(z, z') -{ 7 + y2 + y7 }-> if(s9, 2, if(s10, 2, member(1 + (z - 1), ys3))) :|: s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.64 member(z, z') -{ 5 + y3 }-> if(2, 2, if(s2, 2, member(1, ys'))) :|: s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.64 member(z, z') -{ 4 + y8 }-> if(0, 2, if(s12, 2, member(z, ys4))) :|: s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.64 member(z, z') -{ 5 + y5 }-> if(0, 2, if(s7, 2, member(1 + (z - 1), ys1))) :|: s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.64 member(z, z') -{ 5 + y6 }-> if(0, 2, if(s8, 2, member(1 + (z - 1), ys2))) :|: s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.64 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.64 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.64 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.64 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.64 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.64 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.64 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.64 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.64 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.64 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.64 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.64 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.64 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.64 sat(z) -{ 3 + clause' }-> satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.64 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.64 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.64 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.64 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.64 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.64 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.64 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.64 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.41/291.64 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.64 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.64 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.64 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.64 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.64 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.64 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.64 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.64 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.41/291.64 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.64 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.64 380.41/291.64 Function symbols to be analyzed: {if}, {guess}, {member}, {verify}, {satck}, {sat} 380.41/291.64 Previous analysis results are: 380.41/291.64 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.64 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.64 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.64 380.41/291.64 ---------------------------------------- 380.41/291.64 380.41/291.64 (35) ResultPropagationProof (UPPER BOUND(ID)) 380.41/291.64 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 380.41/291.64 ---------------------------------------- 380.41/291.64 380.41/291.64 (36) 380.41/291.64 Obligation: 380.41/291.64 Complexity RNTS consisting of the following rules: 380.41/291.64 380.41/291.64 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.64 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.64 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.64 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.64 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.64 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.64 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.64 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.64 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.64 guess(z) -{ 2 + clause }-> 1 + s' + guess(cnf) :|: s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.64 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.64 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.64 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.64 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.64 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.64 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.64 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.64 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.64 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.64 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.64 member(z, z') -{ 4 + y2 }-> if(s11, 2, 0) :|: s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.64 member(z, z') -{ 2 + z' }-> if(s3, 2, 0) :|: s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.64 member(z, z') -{ 7 + y' + y4 }-> if(s4, 2, if(s5, 2, member(1 + (z - 1), ys''))) :|: s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.65 member(z, z') -{ 4 + y' }-> if(s6, 2, 0) :|: s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.65 member(z, z') -{ 7 + y2 + y7 }-> if(s9, 2, if(s10, 2, member(1 + (z - 1), ys3))) :|: s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.65 member(z, z') -{ 5 + y3 }-> if(2, 2, if(s2, 2, member(1, ys'))) :|: s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.65 member(z, z') -{ 4 + y8 }-> if(0, 2, if(s12, 2, member(z, ys4))) :|: s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.65 member(z, z') -{ 5 + y5 }-> if(0, 2, if(s7, 2, member(1 + (z - 1), ys1))) :|: s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 5 + y6 }-> if(0, 2, if(s8, 2, member(1 + (z - 1), ys2))) :|: s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.65 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.65 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.65 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.65 sat(z) -{ 3 + clause' }-> satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.65 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.65 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.65 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.65 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.65 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.65 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.65 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.65 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.41/291.65 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.65 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 380.41/291.65 Function symbols to be analyzed: {if}, {guess}, {member}, {verify}, {satck}, {sat} 380.41/291.65 Previous analysis results are: 380.41/291.65 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.65 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.65 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (37) IntTrsBoundProof (UPPER BOUND(ID)) 380.41/291.65 380.41/291.65 Computed SIZE bound using CoFloCo for: if 380.41/291.65 after applying outer abstraction to obtain an ITS, 380.41/291.65 resulting in: O(n^1) with polynomial bound: z' + z'' 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (38) 380.41/291.65 Obligation: 380.41/291.65 Complexity RNTS consisting of the following rules: 380.41/291.65 380.41/291.65 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.65 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.65 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 guess(z) -{ 2 + clause }-> 1 + s' + guess(cnf) :|: s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.65 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.65 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 4 + y2 }-> if(s11, 2, 0) :|: s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 2 + z' }-> if(s3, 2, 0) :|: s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.65 member(z, z') -{ 7 + y' + y4 }-> if(s4, 2, if(s5, 2, member(1 + (z - 1), ys''))) :|: s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.65 member(z, z') -{ 4 + y' }-> if(s6, 2, 0) :|: s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.65 member(z, z') -{ 7 + y2 + y7 }-> if(s9, 2, if(s10, 2, member(1 + (z - 1), ys3))) :|: s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.65 member(z, z') -{ 5 + y3 }-> if(2, 2, if(s2, 2, member(1, ys'))) :|: s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.65 member(z, z') -{ 4 + y8 }-> if(0, 2, if(s12, 2, member(z, ys4))) :|: s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.65 member(z, z') -{ 5 + y5 }-> if(0, 2, if(s7, 2, member(1 + (z - 1), ys1))) :|: s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 5 + y6 }-> if(0, 2, if(s8, 2, member(1 + (z - 1), ys2))) :|: s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.65 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.65 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.65 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.65 sat(z) -{ 3 + clause' }-> satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.65 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.65 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.65 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.65 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.65 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.65 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.65 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.65 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.41/291.65 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.65 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 380.41/291.65 Function symbols to be analyzed: {if}, {guess}, {member}, {verify}, {satck}, {sat} 380.41/291.65 Previous analysis results are: 380.41/291.65 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.65 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.65 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.65 if: runtime: ?, size: O(n^1) [z' + z''] 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (39) IntTrsBoundProof (UPPER BOUND(ID)) 380.41/291.65 380.41/291.65 Computed RUNTIME bound using CoFloCo for: if 380.41/291.65 after applying outer abstraction to obtain an ITS, 380.41/291.65 resulting in: O(1) with polynomial bound: 1 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (40) 380.41/291.65 Obligation: 380.41/291.65 Complexity RNTS consisting of the following rules: 380.41/291.65 380.41/291.65 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.65 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.65 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 guess(z) -{ 2 + clause }-> 1 + s' + guess(cnf) :|: s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.65 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.65 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 4 + y2 }-> if(s11, 2, 0) :|: s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 2 + z' }-> if(s3, 2, 0) :|: s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.65 member(z, z') -{ 7 + y' + y4 }-> if(s4, 2, if(s5, 2, member(1 + (z - 1), ys''))) :|: s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.65 member(z, z') -{ 4 + y' }-> if(s6, 2, 0) :|: s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.65 member(z, z') -{ 7 + y2 + y7 }-> if(s9, 2, if(s10, 2, member(1 + (z - 1), ys3))) :|: s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.65 member(z, z') -{ 5 + y3 }-> if(2, 2, if(s2, 2, member(1, ys'))) :|: s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.65 member(z, z') -{ 4 + y8 }-> if(0, 2, if(s12, 2, member(z, ys4))) :|: s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.65 member(z, z') -{ 5 + y5 }-> if(0, 2, if(s7, 2, member(1 + (z - 1), ys1))) :|: s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 5 + y6 }-> if(0, 2, if(s8, 2, member(1 + (z - 1), ys2))) :|: s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.65 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.65 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.65 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.65 sat(z) -{ 3 + clause' }-> satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.65 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.65 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.65 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.65 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.65 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.65 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.65 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.65 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.41/291.65 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.65 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 380.41/291.65 Function symbols to be analyzed: {guess}, {member}, {verify}, {satck}, {sat} 380.41/291.65 Previous analysis results are: 380.41/291.65 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.65 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.65 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.65 if: runtime: O(1) [1], size: O(n^1) [z' + z''] 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (41) ResultPropagationProof (UPPER BOUND(ID)) 380.41/291.65 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (42) 380.41/291.65 Obligation: 380.41/291.65 Complexity RNTS consisting of the following rules: 380.41/291.65 380.41/291.65 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.65 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.65 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 guess(z) -{ 2 + clause }-> 1 + s' + guess(cnf) :|: s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.65 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.65 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 + z' }-> s13 :|: s13 >= 0, s13 <= 0 + 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.65 member(z, z') -{ 5 + y' }-> s14 :|: s14 >= 0, s14 <= 0 + 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.65 member(z, z') -{ 5 + y2 }-> s15 :|: s15 >= 0, s15 <= 0 + 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 7 + y' + y4 }-> if(s4, 2, if(s5, 2, member(1 + (z - 1), ys''))) :|: s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.65 member(z, z') -{ 7 + y2 + y7 }-> if(s9, 2, if(s10, 2, member(1 + (z - 1), ys3))) :|: s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.65 member(z, z') -{ 5 + y3 }-> if(2, 2, if(s2, 2, member(1, ys'))) :|: s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.65 member(z, z') -{ 4 + y8 }-> if(0, 2, if(s12, 2, member(z, ys4))) :|: s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.65 member(z, z') -{ 5 + y5 }-> if(0, 2, if(s7, 2, member(1 + (z - 1), ys1))) :|: s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 5 + y6 }-> if(0, 2, if(s8, 2, member(1 + (z - 1), ys2))) :|: s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.65 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.65 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.65 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.65 sat(z) -{ 3 + clause' }-> satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.65 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.65 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.65 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.65 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.65 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.65 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.65 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.65 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.41/291.65 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.65 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 380.41/291.65 Function symbols to be analyzed: {guess}, {member}, {verify}, {satck}, {sat} 380.41/291.65 Previous analysis results are: 380.41/291.65 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.65 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.65 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.65 if: runtime: O(1) [1], size: O(n^1) [z' + z''] 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (43) IntTrsBoundProof (UPPER BOUND(ID)) 380.41/291.65 380.41/291.65 Computed SIZE bound using KoAT for: guess 380.41/291.65 after applying outer abstraction to obtain an ITS, 380.41/291.65 resulting in: O(n^1) with polynomial bound: z 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (44) 380.41/291.65 Obligation: 380.41/291.65 Complexity RNTS consisting of the following rules: 380.41/291.65 380.41/291.65 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.65 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.65 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 guess(z) -{ 2 + clause }-> 1 + s' + guess(cnf) :|: s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.65 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.65 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 + z' }-> s13 :|: s13 >= 0, s13 <= 0 + 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.65 member(z, z') -{ 5 + y' }-> s14 :|: s14 >= 0, s14 <= 0 + 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.65 member(z, z') -{ 5 + y2 }-> s15 :|: s15 >= 0, s15 <= 0 + 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 7 + y' + y4 }-> if(s4, 2, if(s5, 2, member(1 + (z - 1), ys''))) :|: s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.65 member(z, z') -{ 7 + y2 + y7 }-> if(s9, 2, if(s10, 2, member(1 + (z - 1), ys3))) :|: s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.65 member(z, z') -{ 5 + y3 }-> if(2, 2, if(s2, 2, member(1, ys'))) :|: s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.65 member(z, z') -{ 4 + y8 }-> if(0, 2, if(s12, 2, member(z, ys4))) :|: s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.65 member(z, z') -{ 5 + y5 }-> if(0, 2, if(s7, 2, member(1 + (z - 1), ys1))) :|: s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 5 + y6 }-> if(0, 2, if(s8, 2, member(1 + (z - 1), ys2))) :|: s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.65 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.65 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.65 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.65 sat(z) -{ 3 + clause' }-> satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.65 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.65 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.65 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.65 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.65 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.65 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.65 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.65 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.41/291.65 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.65 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 380.41/291.65 Function symbols to be analyzed: {guess}, {member}, {verify}, {satck}, {sat} 380.41/291.65 Previous analysis results are: 380.41/291.65 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.65 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.65 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.65 if: runtime: O(1) [1], size: O(n^1) [z' + z''] 380.41/291.65 guess: runtime: ?, size: O(n^1) [z] 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (45) IntTrsBoundProof (UPPER BOUND(ID)) 380.41/291.65 380.41/291.65 Computed RUNTIME bound using CoFloCo for: guess 380.41/291.65 after applying outer abstraction to obtain an ITS, 380.41/291.65 resulting in: O(n^1) with polynomial bound: 3 + 2*z 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (46) 380.41/291.65 Obligation: 380.41/291.65 Complexity RNTS consisting of the following rules: 380.41/291.65 380.41/291.65 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.65 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.65 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 guess(z) -{ 2 + clause }-> 1 + s' + guess(cnf) :|: s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.65 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.65 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 + z' }-> s13 :|: s13 >= 0, s13 <= 0 + 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.65 member(z, z') -{ 5 + y' }-> s14 :|: s14 >= 0, s14 <= 0 + 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.65 member(z, z') -{ 5 + y2 }-> s15 :|: s15 >= 0, s15 <= 0 + 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 7 + y' + y4 }-> if(s4, 2, if(s5, 2, member(1 + (z - 1), ys''))) :|: s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.65 member(z, z') -{ 7 + y2 + y7 }-> if(s9, 2, if(s10, 2, member(1 + (z - 1), ys3))) :|: s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.65 member(z, z') -{ 5 + y3 }-> if(2, 2, if(s2, 2, member(1, ys'))) :|: s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.65 member(z, z') -{ 4 + y8 }-> if(0, 2, if(s12, 2, member(z, ys4))) :|: s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.65 member(z, z') -{ 5 + y5 }-> if(0, 2, if(s7, 2, member(1 + (z - 1), ys1))) :|: s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 5 + y6 }-> if(0, 2, if(s8, 2, member(1 + (z - 1), ys2))) :|: s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.65 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.65 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.65 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.65 sat(z) -{ 3 + clause' }-> satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.65 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.65 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.65 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.65 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.65 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.65 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.65 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.65 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.41/291.65 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.65 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 380.41/291.65 Function symbols to be analyzed: {member}, {verify}, {satck}, {sat} 380.41/291.65 Previous analysis results are: 380.41/291.65 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.65 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.65 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.65 if: runtime: O(1) [1], size: O(n^1) [z' + z''] 380.41/291.65 guess: runtime: O(n^1) [3 + 2*z], size: O(n^1) [z] 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (47) ResultPropagationProof (UPPER BOUND(ID)) 380.41/291.65 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (48) 380.41/291.65 Obligation: 380.41/291.65 Complexity RNTS consisting of the following rules: 380.41/291.65 380.41/291.65 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.65 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.65 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 guess(z) -{ 5 + clause + 2*cnf }-> 1 + s' + s16 :|: s16 >= 0, s16 <= cnf, s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.65 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.65 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 + z' }-> s13 :|: s13 >= 0, s13 <= 0 + 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.65 member(z, z') -{ 5 + y' }-> s14 :|: s14 >= 0, s14 <= 0 + 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.65 member(z, z') -{ 5 + y2 }-> s15 :|: s15 >= 0, s15 <= 0 + 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 7 + y' + y4 }-> if(s4, 2, if(s5, 2, member(1 + (z - 1), ys''))) :|: s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.65 member(z, z') -{ 7 + y2 + y7 }-> if(s9, 2, if(s10, 2, member(1 + (z - 1), ys3))) :|: s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.65 member(z, z') -{ 5 + y3 }-> if(2, 2, if(s2, 2, member(1, ys'))) :|: s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.65 member(z, z') -{ 4 + y8 }-> if(0, 2, if(s12, 2, member(z, ys4))) :|: s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.65 member(z, z') -{ 5 + y5 }-> if(0, 2, if(s7, 2, member(1 + (z - 1), ys1))) :|: s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 5 + y6 }-> if(0, 2, if(s8, 2, member(1 + (z - 1), ys2))) :|: s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.65 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.65 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.65 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.65 sat(z) -{ 6 + clause' + 2*cnf' }-> satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= cnf', s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.65 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.65 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.65 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.65 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.65 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.65 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.65 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.65 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.41/291.65 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.65 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 380.41/291.65 Function symbols to be analyzed: {member}, {verify}, {satck}, {sat} 380.41/291.65 Previous analysis results are: 380.41/291.65 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.65 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.65 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.65 if: runtime: O(1) [1], size: O(n^1) [z' + z''] 380.41/291.65 guess: runtime: O(n^1) [3 + 2*z], size: O(n^1) [z] 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (49) IntTrsBoundProof (UPPER BOUND(ID)) 380.41/291.65 380.41/291.65 Computed SIZE bound using KoAT for: member 380.41/291.65 after applying outer abstraction to obtain an ITS, 380.41/291.65 resulting in: O(n^1) with polynomial bound: 2*z' 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (50) 380.41/291.65 Obligation: 380.41/291.65 Complexity RNTS consisting of the following rules: 380.41/291.65 380.41/291.65 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.65 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.65 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 guess(z) -{ 5 + clause + 2*cnf }-> 1 + s' + s16 :|: s16 >= 0, s16 <= cnf, s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.65 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.65 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 + z' }-> s13 :|: s13 >= 0, s13 <= 0 + 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.65 member(z, z') -{ 5 + y' }-> s14 :|: s14 >= 0, s14 <= 0 + 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.65 member(z, z') -{ 5 + y2 }-> s15 :|: s15 >= 0, s15 <= 0 + 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 7 + y' + y4 }-> if(s4, 2, if(s5, 2, member(1 + (z - 1), ys''))) :|: s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.65 member(z, z') -{ 7 + y2 + y7 }-> if(s9, 2, if(s10, 2, member(1 + (z - 1), ys3))) :|: s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.65 member(z, z') -{ 5 + y3 }-> if(2, 2, if(s2, 2, member(1, ys'))) :|: s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.65 member(z, z') -{ 4 + y8 }-> if(0, 2, if(s12, 2, member(z, ys4))) :|: s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.65 member(z, z') -{ 5 + y5 }-> if(0, 2, if(s7, 2, member(1 + (z - 1), ys1))) :|: s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 5 + y6 }-> if(0, 2, if(s8, 2, member(1 + (z - 1), ys2))) :|: s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.65 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.65 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.65 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.65 sat(z) -{ 6 + clause' + 2*cnf' }-> satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= cnf', s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.65 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.65 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.65 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.65 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.65 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.65 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.65 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.65 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.41/291.65 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.65 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 380.41/291.65 Function symbols to be analyzed: {member}, {verify}, {satck}, {sat} 380.41/291.65 Previous analysis results are: 380.41/291.65 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.65 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.65 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.65 if: runtime: O(1) [1], size: O(n^1) [z' + z''] 380.41/291.65 guess: runtime: O(n^1) [3 + 2*z], size: O(n^1) [z] 380.41/291.65 member: runtime: ?, size: O(n^1) [2*z'] 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (51) IntTrsBoundProof (UPPER BOUND(ID)) 380.41/291.65 380.41/291.65 Computed RUNTIME bound using CoFloCo for: member 380.41/291.65 after applying outer abstraction to obtain an ITS, 380.41/291.65 resulting in: O(n^1) with polynomial bound: 39 + 27*z' 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (52) 380.41/291.65 Obligation: 380.41/291.65 Complexity RNTS consisting of the following rules: 380.41/291.65 380.41/291.65 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.65 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.65 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 guess(z) -{ 5 + clause + 2*cnf }-> 1 + s' + s16 :|: s16 >= 0, s16 <= cnf, s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.65 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.65 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 + z' }-> s13 :|: s13 >= 0, s13 <= 0 + 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.65 member(z, z') -{ 5 + y' }-> s14 :|: s14 >= 0, s14 <= 0 + 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.65 member(z, z') -{ 5 + y2 }-> s15 :|: s15 >= 0, s15 <= 0 + 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 7 + y' + y4 }-> if(s4, 2, if(s5, 2, member(1 + (z - 1), ys''))) :|: s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.65 member(z, z') -{ 7 + y2 + y7 }-> if(s9, 2, if(s10, 2, member(1 + (z - 1), ys3))) :|: s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.65 member(z, z') -{ 5 + y3 }-> if(2, 2, if(s2, 2, member(1, ys'))) :|: s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.65 member(z, z') -{ 4 + y8 }-> if(0, 2, if(s12, 2, member(z, ys4))) :|: s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.65 member(z, z') -{ 5 + y5 }-> if(0, 2, if(s7, 2, member(1 + (z - 1), ys1))) :|: s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 5 + y6 }-> if(0, 2, if(s8, 2, member(1 + (z - 1), ys2))) :|: s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.65 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.65 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.65 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.65 sat(z) -{ 6 + clause' + 2*cnf' }-> satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= cnf', s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.65 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.65 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.65 satck(z, z') -{ 2 }-> if(if(member(0, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.65 satck(z, z') -{ 3 }-> if(if(member(1 + x, ls2), 0, verify(ls2)), 1 + l2 + ls2, 3) :|: z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.65 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.65 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.65 verify(z) -{ 1 }-> if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1), 0, 2) :|: z - 2 >= 0 380.41/291.65 verify(z) -{ 2 }-> if(member(0, 1 + l1 + ls1), 0, if(member(0, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.65 verify(z) -{ 3 }-> if(member(0, 1 + l1 + ls1), 0, if(member(1 + x, ls1), 0, verify(ls1))) :|: z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(0, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x3, 1 + l' + ls'), 0, if(member(1 + x, ls'), 0, verify(ls'))) :|: ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.65 verify(z) -{ 2 }-> if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(0, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.65 verify(z) -{ 4 }-> if(member(1 + x4, 1 + l'' + ls''), 0, if(member(1 + x, ls''), 0, verify(ls''))) :|: x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.65 verify(z) -{ 3 }-> if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0 380.41/291.65 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.65 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 380.41/291.65 Function symbols to be analyzed: {verify}, {satck}, {sat} 380.41/291.65 Previous analysis results are: 380.41/291.65 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.65 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.65 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.65 if: runtime: O(1) [1], size: O(n^1) [z' + z''] 380.41/291.65 guess: runtime: O(n^1) [3 + 2*z], size: O(n^1) [z] 380.41/291.65 member: runtime: O(n^1) [39 + 27*z'], size: O(n^1) [2*z'] 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (53) ResultPropagationProof (UPPER BOUND(ID)) 380.41/291.65 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (54) 380.41/291.65 Obligation: 380.41/291.65 Complexity RNTS consisting of the following rules: 380.41/291.65 380.41/291.65 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.65 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.65 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 guess(z) -{ 5 + clause + 2*cnf }-> 1 + s' + s16 :|: s16 >= 0, s16 <= cnf, s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.65 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.65 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 + z' }-> s13 :|: s13 >= 0, s13 <= 0 + 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.65 member(z, z') -{ 5 + y' }-> s14 :|: s14 >= 0, s14 <= 0 + 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.65 member(z, z') -{ 5 + y2 }-> s15 :|: s15 >= 0, s15 <= 0 + 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 46 + y3 + 27*ys' }-> s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= s18 + 2, s20 >= 0, s20 <= s19 + 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.65 member(z, z') -{ 48 + y' + y4 + 27*ys'' }-> s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= s21 + 2, s23 >= 0, s23 <= s22 + 2, s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.65 member(z, z') -{ 46 + y5 + 27*ys1 }-> s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= s24 + 2, s26 >= 0, s26 <= s25 + 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 46 + y6 + 27*ys2 }-> s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= s27 + 2, s29 >= 0, s29 <= s28 + 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.65 member(z, z') -{ 48 + y2 + y7 + 27*ys3 }-> s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= s30 + 2, s32 >= 0, s32 <= s31 + 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.65 member(z, z') -{ 45 + y8 + 27*ys4 }-> s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= s33 + 2, s35 >= 0, s35 <= s34 + 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.65 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.65 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.65 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.65 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.65 sat(z) -{ 6 + clause' + 2*cnf' }-> satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= cnf', s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.65 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.65 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.65 satck(z, z') -{ 41 + 27*ls2 }-> if(if(s58, 0, verify(ls2)), 1 + l2 + ls2, 3) :|: s58 >= 0, s58 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.65 satck(z, z') -{ 42 + 27*ls2 }-> if(if(s59, 0, verify(ls2)), 1 + l2 + ls2, 3) :|: s59 >= 0, s59 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.65 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.65 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.65 verify(z) -{ 70 }-> s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 2 + 0, z - 3 >= 0 380.41/291.65 verify(z) -{ 42 + 27*ls }-> s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 0 + 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.65 verify(z) -{ 42 + 27*ls }-> s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 0 + 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.65 verify(z) -{ 69 }-> s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 2 + 0, z - 2 >= 0 380.41/291.65 verify(z) -{ 41 + 27*ls }-> s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 0 + 0, l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.65 verify(z) -{ 108 + 27*l' + 54*ls' }-> if(s46, 0, if(s47, 0, verify(ls'))) :|: s46 >= 0, s46 <= 2 * (1 + l' + ls'), s47 >= 0, s47 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.65 verify(z) -{ 109 + 27*l' + 54*ls' }-> if(s48, 0, if(s49, 0, verify(ls'))) :|: s48 >= 0, s48 <= 2 * (1 + l' + ls'), s49 >= 0, s49 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.65 verify(z) -{ 108 + 27*l'' + 54*ls'' }-> if(s50, 0, if(s51, 0, verify(ls''))) :|: s50 >= 0, s50 <= 2 * (1 + l'' + ls''), s51 >= 0, s51 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.65 verify(z) -{ 109 + 27*l'' + 54*ls'' }-> if(s52, 0, if(s53, 0, verify(ls''))) :|: s52 >= 0, s52 <= 2 * (1 + l'' + ls''), s53 >= 0, s53 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.65 verify(z) -{ 107 + 27*l1 + 54*ls1 }-> if(s54, 0, if(s55, 0, verify(ls1))) :|: s54 >= 0, s54 <= 2 * (1 + l1 + ls1), s55 >= 0, s55 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.65 verify(z) -{ 108 + 27*l1 + 54*ls1 }-> if(s56, 0, if(s57, 0, verify(ls1))) :|: s56 >= 0, s56 <= 2 * (1 + l1 + ls1), s57 >= 0, s57 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.65 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.65 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 380.41/291.65 Function symbols to be analyzed: {verify}, {satck}, {sat} 380.41/291.65 Previous analysis results are: 380.41/291.65 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.65 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.65 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.65 if: runtime: O(1) [1], size: O(n^1) [z' + z''] 380.41/291.65 guess: runtime: O(n^1) [3 + 2*z], size: O(n^1) [z] 380.41/291.65 member: runtime: O(n^1) [39 + 27*z'], size: O(n^1) [2*z'] 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (55) IntTrsBoundProof (UPPER BOUND(ID)) 380.41/291.65 380.41/291.65 Computed SIZE bound using CoFloCo for: verify 380.41/291.65 after applying outer abstraction to obtain an ITS, 380.41/291.65 resulting in: O(1) with polynomial bound: 2 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (56) 380.41/291.65 Obligation: 380.41/291.65 Complexity RNTS consisting of the following rules: 380.41/291.65 380.41/291.65 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.65 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.65 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 guess(z) -{ 5 + clause + 2*cnf }-> 1 + s' + s16 :|: s16 >= 0, s16 <= cnf, s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.65 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.65 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 + z' }-> s13 :|: s13 >= 0, s13 <= 0 + 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.65 member(z, z') -{ 5 + y' }-> s14 :|: s14 >= 0, s14 <= 0 + 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.65 member(z, z') -{ 5 + y2 }-> s15 :|: s15 >= 0, s15 <= 0 + 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 46 + y3 + 27*ys' }-> s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= s18 + 2, s20 >= 0, s20 <= s19 + 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.65 member(z, z') -{ 48 + y' + y4 + 27*ys'' }-> s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= s21 + 2, s23 >= 0, s23 <= s22 + 2, s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.65 member(z, z') -{ 46 + y5 + 27*ys1 }-> s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= s24 + 2, s26 >= 0, s26 <= s25 + 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 46 + y6 + 27*ys2 }-> s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= s27 + 2, s29 >= 0, s29 <= s28 + 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.65 member(z, z') -{ 48 + y2 + y7 + 27*ys3 }-> s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= s30 + 2, s32 >= 0, s32 <= s31 + 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.65 member(z, z') -{ 45 + y8 + 27*ys4 }-> s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= s33 + 2, s35 >= 0, s35 <= s34 + 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.65 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.65 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.65 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.65 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.65 sat(z) -{ 6 + clause' + 2*cnf' }-> satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= cnf', s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.65 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.65 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.65 satck(z, z') -{ 41 + 27*ls2 }-> if(if(s58, 0, verify(ls2)), 1 + l2 + ls2, 3) :|: s58 >= 0, s58 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.65 satck(z, z') -{ 42 + 27*ls2 }-> if(if(s59, 0, verify(ls2)), 1 + l2 + ls2, 3) :|: s59 >= 0, s59 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.65 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.65 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.65 verify(z) -{ 70 }-> s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 2 + 0, z - 3 >= 0 380.41/291.65 verify(z) -{ 42 + 27*ls }-> s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 0 + 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.65 verify(z) -{ 42 + 27*ls }-> s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 0 + 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.65 verify(z) -{ 69 }-> s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 2 + 0, z - 2 >= 0 380.41/291.65 verify(z) -{ 41 + 27*ls }-> s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 0 + 0, l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.65 verify(z) -{ 108 + 27*l' + 54*ls' }-> if(s46, 0, if(s47, 0, verify(ls'))) :|: s46 >= 0, s46 <= 2 * (1 + l' + ls'), s47 >= 0, s47 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.65 verify(z) -{ 109 + 27*l' + 54*ls' }-> if(s48, 0, if(s49, 0, verify(ls'))) :|: s48 >= 0, s48 <= 2 * (1 + l' + ls'), s49 >= 0, s49 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.65 verify(z) -{ 108 + 27*l'' + 54*ls'' }-> if(s50, 0, if(s51, 0, verify(ls''))) :|: s50 >= 0, s50 <= 2 * (1 + l'' + ls''), s51 >= 0, s51 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.65 verify(z) -{ 109 + 27*l'' + 54*ls'' }-> if(s52, 0, if(s53, 0, verify(ls''))) :|: s52 >= 0, s52 <= 2 * (1 + l'' + ls''), s53 >= 0, s53 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.65 verify(z) -{ 107 + 27*l1 + 54*ls1 }-> if(s54, 0, if(s55, 0, verify(ls1))) :|: s54 >= 0, s54 <= 2 * (1 + l1 + ls1), s55 >= 0, s55 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.65 verify(z) -{ 108 + 27*l1 + 54*ls1 }-> if(s56, 0, if(s57, 0, verify(ls1))) :|: s56 >= 0, s56 <= 2 * (1 + l1 + ls1), s57 >= 0, s57 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.65 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.65 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 380.41/291.65 Function symbols to be analyzed: {verify}, {satck}, {sat} 380.41/291.65 Previous analysis results are: 380.41/291.65 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.65 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.65 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.65 if: runtime: O(1) [1], size: O(n^1) [z' + z''] 380.41/291.65 guess: runtime: O(n^1) [3 + 2*z], size: O(n^1) [z] 380.41/291.65 member: runtime: O(n^1) [39 + 27*z'], size: O(n^1) [2*z'] 380.41/291.65 verify: runtime: ?, size: O(1) [2] 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (57) IntTrsBoundProof (UPPER BOUND(ID)) 380.41/291.65 380.41/291.65 Computed RUNTIME bound using CoFloCo for: verify 380.41/291.65 after applying outer abstraction to obtain an ITS, 380.41/291.65 resulting in: O(n^2) with polynomial bound: 617 + 505*z + 108*z^2 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (58) 380.41/291.65 Obligation: 380.41/291.65 Complexity RNTS consisting of the following rules: 380.41/291.65 380.41/291.65 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.65 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.65 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 guess(z) -{ 5 + clause + 2*cnf }-> 1 + s' + s16 :|: s16 >= 0, s16 <= cnf, s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.65 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.65 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 + z' }-> s13 :|: s13 >= 0, s13 <= 0 + 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.65 member(z, z') -{ 5 + y' }-> s14 :|: s14 >= 0, s14 <= 0 + 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.65 member(z, z') -{ 5 + y2 }-> s15 :|: s15 >= 0, s15 <= 0 + 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 46 + y3 + 27*ys' }-> s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= s18 + 2, s20 >= 0, s20 <= s19 + 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.65 member(z, z') -{ 48 + y' + y4 + 27*ys'' }-> s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= s21 + 2, s23 >= 0, s23 <= s22 + 2, s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.65 member(z, z') -{ 46 + y5 + 27*ys1 }-> s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= s24 + 2, s26 >= 0, s26 <= s25 + 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 46 + y6 + 27*ys2 }-> s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= s27 + 2, s29 >= 0, s29 <= s28 + 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.65 member(z, z') -{ 48 + y2 + y7 + 27*ys3 }-> s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= s30 + 2, s32 >= 0, s32 <= s31 + 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.65 member(z, z') -{ 45 + y8 + 27*ys4 }-> s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= s33 + 2, s35 >= 0, s35 <= s34 + 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.65 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.65 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.65 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.65 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.65 sat(z) -{ 6 + clause' + 2*cnf' }-> satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= cnf', s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.65 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.65 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.65 satck(z, z') -{ 41 + 27*ls2 }-> if(if(s58, 0, verify(ls2)), 1 + l2 + ls2, 3) :|: s58 >= 0, s58 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.65 satck(z, z') -{ 42 + 27*ls2 }-> if(if(s59, 0, verify(ls2)), 1 + l2 + ls2, 3) :|: s59 >= 0, s59 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.65 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.65 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.65 verify(z) -{ 70 }-> s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 2 + 0, z - 3 >= 0 380.41/291.65 verify(z) -{ 42 + 27*ls }-> s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 0 + 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.65 verify(z) -{ 42 + 27*ls }-> s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 0 + 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.65 verify(z) -{ 69 }-> s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 2 + 0, z - 2 >= 0 380.41/291.65 verify(z) -{ 41 + 27*ls }-> s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 0 + 0, l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.65 verify(z) -{ 108 + 27*l' + 54*ls' }-> if(s46, 0, if(s47, 0, verify(ls'))) :|: s46 >= 0, s46 <= 2 * (1 + l' + ls'), s47 >= 0, s47 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.65 verify(z) -{ 109 + 27*l' + 54*ls' }-> if(s48, 0, if(s49, 0, verify(ls'))) :|: s48 >= 0, s48 <= 2 * (1 + l' + ls'), s49 >= 0, s49 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.65 verify(z) -{ 108 + 27*l'' + 54*ls'' }-> if(s50, 0, if(s51, 0, verify(ls''))) :|: s50 >= 0, s50 <= 2 * (1 + l'' + ls''), s51 >= 0, s51 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.65 verify(z) -{ 109 + 27*l'' + 54*ls'' }-> if(s52, 0, if(s53, 0, verify(ls''))) :|: s52 >= 0, s52 <= 2 * (1 + l'' + ls''), s53 >= 0, s53 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.65 verify(z) -{ 107 + 27*l1 + 54*ls1 }-> if(s54, 0, if(s55, 0, verify(ls1))) :|: s54 >= 0, s54 <= 2 * (1 + l1 + ls1), s55 >= 0, s55 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.65 verify(z) -{ 108 + 27*l1 + 54*ls1 }-> if(s56, 0, if(s57, 0, verify(ls1))) :|: s56 >= 0, s56 <= 2 * (1 + l1 + ls1), s57 >= 0, s57 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.65 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.65 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 380.41/291.65 Function symbols to be analyzed: {satck}, {sat} 380.41/291.65 Previous analysis results are: 380.41/291.65 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.65 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.65 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.65 if: runtime: O(1) [1], size: O(n^1) [z' + z''] 380.41/291.65 guess: runtime: O(n^1) [3 + 2*z], size: O(n^1) [z] 380.41/291.65 member: runtime: O(n^1) [39 + 27*z'], size: O(n^1) [2*z'] 380.41/291.65 verify: runtime: O(n^2) [617 + 505*z + 108*z^2], size: O(1) [2] 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (59) ResultPropagationProof (UPPER BOUND(ID)) 380.41/291.65 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (60) 380.41/291.65 Obligation: 380.41/291.65 Complexity RNTS consisting of the following rules: 380.41/291.65 380.41/291.65 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.65 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.65 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 guess(z) -{ 5 + clause + 2*cnf }-> 1 + s' + s16 :|: s16 >= 0, s16 <= cnf, s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.65 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.65 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 + z' }-> s13 :|: s13 >= 0, s13 <= 0 + 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.65 member(z, z') -{ 5 + y' }-> s14 :|: s14 >= 0, s14 <= 0 + 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.65 member(z, z') -{ 5 + y2 }-> s15 :|: s15 >= 0, s15 <= 0 + 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 46 + y3 + 27*ys' }-> s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= s18 + 2, s20 >= 0, s20 <= s19 + 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.65 member(z, z') -{ 48 + y' + y4 + 27*ys'' }-> s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= s21 + 2, s23 >= 0, s23 <= s22 + 2, s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.65 member(z, z') -{ 46 + y5 + 27*ys1 }-> s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= s24 + 2, s26 >= 0, s26 <= s25 + 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 46 + y6 + 27*ys2 }-> s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= s27 + 2, s29 >= 0, s29 <= s28 + 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.65 member(z, z') -{ 48 + y2 + y7 + 27*ys3 }-> s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= s30 + 2, s32 >= 0, s32 <= s31 + 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.65 member(z, z') -{ 45 + y8 + 27*ys4 }-> s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= s33 + 2, s35 >= 0, s35 <= s34 + 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.65 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.65 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.65 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.65 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.65 sat(z) -{ 6 + clause' + 2*cnf' }-> satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= cnf', s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.65 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.65 satck(z, z') -{ 660 + 532*ls2 + 108*ls2^2 }-> s80 :|: s78 >= 0, s78 <= 2, s79 >= 0, s79 <= s78 + 0, s80 >= 0, s80 <= 3 + (1 + l2 + ls2), s58 >= 0, s58 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.65 satck(z, z') -{ 661 + 532*ls2 + 108*ls2^2 }-> s83 :|: s81 >= 0, s81 <= 2, s82 >= 0, s82 <= s81 + 0, s83 >= 0, s83 <= 3 + (1 + l2 + ls2), s59 >= 0, s59 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.65 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.65 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.65 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.65 verify(z) -{ 70 }-> s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 2 + 0, z - 3 >= 0 380.41/291.65 verify(z) -{ 42 + 27*ls }-> s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 0 + 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.65 verify(z) -{ 42 + 27*ls }-> s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 0 + 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.65 verify(z) -{ 69 }-> s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 2 + 0, z - 2 >= 0 380.41/291.65 verify(z) -{ 41 + 27*ls }-> s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 0 + 0, l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.65 verify(z) -{ 727 + 27*l' + 559*ls' + 108*ls'^2 }-> s62 :|: s60 >= 0, s60 <= 2, s61 >= 0, s61 <= s60 + 0, s62 >= 0, s62 <= s61 + 0, s46 >= 0, s46 <= 2 * (1 + l' + ls'), s47 >= 0, s47 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.65 verify(z) -{ 728 + 27*l' + 559*ls' + 108*ls'^2 }-> s65 :|: s63 >= 0, s63 <= 2, s64 >= 0, s64 <= s63 + 0, s65 >= 0, s65 <= s64 + 0, s48 >= 0, s48 <= 2 * (1 + l' + ls'), s49 >= 0, s49 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.65 verify(z) -{ 727 + 27*l'' + 559*ls'' + 108*ls''^2 }-> s68 :|: s66 >= 0, s66 <= 2, s67 >= 0, s67 <= s66 + 0, s68 >= 0, s68 <= s67 + 0, s50 >= 0, s50 <= 2 * (1 + l'' + ls''), s51 >= 0, s51 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.65 verify(z) -{ 728 + 27*l'' + 559*ls'' + 108*ls''^2 }-> s71 :|: s69 >= 0, s69 <= 2, s70 >= 0, s70 <= s69 + 0, s71 >= 0, s71 <= s70 + 0, s52 >= 0, s52 <= 2 * (1 + l'' + ls''), s53 >= 0, s53 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.65 verify(z) -{ 726 + 27*l1 + 559*ls1 + 108*ls1^2 }-> s74 :|: s72 >= 0, s72 <= 2, s73 >= 0, s73 <= s72 + 0, s74 >= 0, s74 <= s73 + 0, s54 >= 0, s54 <= 2 * (1 + l1 + ls1), s55 >= 0, s55 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.65 verify(z) -{ 727 + 27*l1 + 559*ls1 + 108*ls1^2 }-> s77 :|: s75 >= 0, s75 <= 2, s76 >= 0, s76 <= s75 + 0, s77 >= 0, s77 <= s76 + 0, s56 >= 0, s56 <= 2 * (1 + l1 + ls1), s57 >= 0, s57 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.65 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.65 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 380.41/291.65 Function symbols to be analyzed: {satck}, {sat} 380.41/291.65 Previous analysis results are: 380.41/291.65 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.65 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.65 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.65 if: runtime: O(1) [1], size: O(n^1) [z' + z''] 380.41/291.65 guess: runtime: O(n^1) [3 + 2*z], size: O(n^1) [z] 380.41/291.65 member: runtime: O(n^1) [39 + 27*z'], size: O(n^1) [2*z'] 380.41/291.65 verify: runtime: O(n^2) [617 + 505*z + 108*z^2], size: O(1) [2] 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (61) IntTrsBoundProof (UPPER BOUND(ID)) 380.41/291.65 380.41/291.65 Computed SIZE bound using CoFloCo for: satck 380.41/291.65 after applying outer abstraction to obtain an ITS, 380.41/291.65 resulting in: O(n^1) with polynomial bound: 3 + z' 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (62) 380.41/291.65 Obligation: 380.41/291.65 Complexity RNTS consisting of the following rules: 380.41/291.65 380.41/291.65 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.65 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.65 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 guess(z) -{ 5 + clause + 2*cnf }-> 1 + s' + s16 :|: s16 >= 0, s16 <= cnf, s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.65 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.65 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 + z' }-> s13 :|: s13 >= 0, s13 <= 0 + 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.65 member(z, z') -{ 5 + y' }-> s14 :|: s14 >= 0, s14 <= 0 + 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.65 member(z, z') -{ 5 + y2 }-> s15 :|: s15 >= 0, s15 <= 0 + 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 46 + y3 + 27*ys' }-> s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= s18 + 2, s20 >= 0, s20 <= s19 + 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.65 member(z, z') -{ 48 + y' + y4 + 27*ys'' }-> s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= s21 + 2, s23 >= 0, s23 <= s22 + 2, s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.65 member(z, z') -{ 46 + y5 + 27*ys1 }-> s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= s24 + 2, s26 >= 0, s26 <= s25 + 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 46 + y6 + 27*ys2 }-> s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= s27 + 2, s29 >= 0, s29 <= s28 + 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.65 member(z, z') -{ 48 + y2 + y7 + 27*ys3 }-> s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= s30 + 2, s32 >= 0, s32 <= s31 + 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.65 member(z, z') -{ 45 + y8 + 27*ys4 }-> s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= s33 + 2, s35 >= 0, s35 <= s34 + 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.65 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.65 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.65 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.65 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.65 sat(z) -{ 6 + clause' + 2*cnf' }-> satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= cnf', s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.65 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.65 satck(z, z') -{ 660 + 532*ls2 + 108*ls2^2 }-> s80 :|: s78 >= 0, s78 <= 2, s79 >= 0, s79 <= s78 + 0, s80 >= 0, s80 <= 3 + (1 + l2 + ls2), s58 >= 0, s58 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.65 satck(z, z') -{ 661 + 532*ls2 + 108*ls2^2 }-> s83 :|: s81 >= 0, s81 <= 2, s82 >= 0, s82 <= s81 + 0, s83 >= 0, s83 <= 3 + (1 + l2 + ls2), s59 >= 0, s59 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.65 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.65 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.65 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.65 verify(z) -{ 70 }-> s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 2 + 0, z - 3 >= 0 380.41/291.65 verify(z) -{ 42 + 27*ls }-> s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 0 + 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.65 verify(z) -{ 42 + 27*ls }-> s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 0 + 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.65 verify(z) -{ 69 }-> s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 2 + 0, z - 2 >= 0 380.41/291.65 verify(z) -{ 41 + 27*ls }-> s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 0 + 0, l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.65 verify(z) -{ 727 + 27*l' + 559*ls' + 108*ls'^2 }-> s62 :|: s60 >= 0, s60 <= 2, s61 >= 0, s61 <= s60 + 0, s62 >= 0, s62 <= s61 + 0, s46 >= 0, s46 <= 2 * (1 + l' + ls'), s47 >= 0, s47 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.65 verify(z) -{ 728 + 27*l' + 559*ls' + 108*ls'^2 }-> s65 :|: s63 >= 0, s63 <= 2, s64 >= 0, s64 <= s63 + 0, s65 >= 0, s65 <= s64 + 0, s48 >= 0, s48 <= 2 * (1 + l' + ls'), s49 >= 0, s49 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.65 verify(z) -{ 727 + 27*l'' + 559*ls'' + 108*ls''^2 }-> s68 :|: s66 >= 0, s66 <= 2, s67 >= 0, s67 <= s66 + 0, s68 >= 0, s68 <= s67 + 0, s50 >= 0, s50 <= 2 * (1 + l'' + ls''), s51 >= 0, s51 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.65 verify(z) -{ 728 + 27*l'' + 559*ls'' + 108*ls''^2 }-> s71 :|: s69 >= 0, s69 <= 2, s70 >= 0, s70 <= s69 + 0, s71 >= 0, s71 <= s70 + 0, s52 >= 0, s52 <= 2 * (1 + l'' + ls''), s53 >= 0, s53 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.65 verify(z) -{ 726 + 27*l1 + 559*ls1 + 108*ls1^2 }-> s74 :|: s72 >= 0, s72 <= 2, s73 >= 0, s73 <= s72 + 0, s74 >= 0, s74 <= s73 + 0, s54 >= 0, s54 <= 2 * (1 + l1 + ls1), s55 >= 0, s55 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.65 verify(z) -{ 727 + 27*l1 + 559*ls1 + 108*ls1^2 }-> s77 :|: s75 >= 0, s75 <= 2, s76 >= 0, s76 <= s75 + 0, s77 >= 0, s77 <= s76 + 0, s56 >= 0, s56 <= 2 * (1 + l1 + ls1), s57 >= 0, s57 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.65 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.65 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 380.41/291.65 Function symbols to be analyzed: {satck}, {sat} 380.41/291.65 Previous analysis results are: 380.41/291.65 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.65 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.65 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.65 if: runtime: O(1) [1], size: O(n^1) [z' + z''] 380.41/291.65 guess: runtime: O(n^1) [3 + 2*z], size: O(n^1) [z] 380.41/291.65 member: runtime: O(n^1) [39 + 27*z'], size: O(n^1) [2*z'] 380.41/291.65 verify: runtime: O(n^2) [617 + 505*z + 108*z^2], size: O(1) [2] 380.41/291.65 satck: runtime: ?, size: O(n^1) [3 + z'] 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (63) IntTrsBoundProof (UPPER BOUND(ID)) 380.41/291.65 380.41/291.65 Computed RUNTIME bound using KoAT for: satck 380.41/291.65 after applying outer abstraction to obtain an ITS, 380.41/291.65 resulting in: O(n^2) with polynomial bound: 1329 + 1064*z' + 216*z'^2 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (64) 380.41/291.65 Obligation: 380.41/291.65 Complexity RNTS consisting of the following rules: 380.41/291.65 380.41/291.65 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.65 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.65 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 guess(z) -{ 5 + clause + 2*cnf }-> 1 + s' + s16 :|: s16 >= 0, s16 <= cnf, s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.65 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.65 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 + z' }-> s13 :|: s13 >= 0, s13 <= 0 + 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.65 member(z, z') -{ 5 + y' }-> s14 :|: s14 >= 0, s14 <= 0 + 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.65 member(z, z') -{ 5 + y2 }-> s15 :|: s15 >= 0, s15 <= 0 + 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 46 + y3 + 27*ys' }-> s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= s18 + 2, s20 >= 0, s20 <= s19 + 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.65 member(z, z') -{ 48 + y' + y4 + 27*ys'' }-> s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= s21 + 2, s23 >= 0, s23 <= s22 + 2, s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.65 member(z, z') -{ 46 + y5 + 27*ys1 }-> s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= s24 + 2, s26 >= 0, s26 <= s25 + 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 46 + y6 + 27*ys2 }-> s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= s27 + 2, s29 >= 0, s29 <= s28 + 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.65 member(z, z') -{ 48 + y2 + y7 + 27*ys3 }-> s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= s30 + 2, s32 >= 0, s32 <= s31 + 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.65 member(z, z') -{ 45 + y8 + 27*ys4 }-> s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= s33 + 2, s35 >= 0, s35 <= s34 + 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.65 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.65 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.65 sat(z) -{ 1 }-> satck(z, 0) :|: z >= 0 380.41/291.65 sat(z) -{ 2 }-> satck(1, 1) :|: z = 1 380.41/291.65 sat(z) -{ 6 + clause' + 2*cnf' }-> satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= cnf', s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.65 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.65 satck(z, z') -{ 660 + 532*ls2 + 108*ls2^2 }-> s80 :|: s78 >= 0, s78 <= 2, s79 >= 0, s79 <= s78 + 0, s80 >= 0, s80 <= 3 + (1 + l2 + ls2), s58 >= 0, s58 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.65 satck(z, z') -{ 661 + 532*ls2 + 108*ls2^2 }-> s83 :|: s81 >= 0, s81 <= 2, s82 >= 0, s82 <= s81 + 0, s83 >= 0, s83 <= 3 + (1 + l2 + ls2), s59 >= 0, s59 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.65 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.65 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.65 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.65 verify(z) -{ 70 }-> s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 2 + 0, z - 3 >= 0 380.41/291.65 verify(z) -{ 42 + 27*ls }-> s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 0 + 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.65 verify(z) -{ 42 + 27*ls }-> s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 0 + 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.65 verify(z) -{ 69 }-> s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 2 + 0, z - 2 >= 0 380.41/291.65 verify(z) -{ 41 + 27*ls }-> s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 0 + 0, l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.65 verify(z) -{ 727 + 27*l' + 559*ls' + 108*ls'^2 }-> s62 :|: s60 >= 0, s60 <= 2, s61 >= 0, s61 <= s60 + 0, s62 >= 0, s62 <= s61 + 0, s46 >= 0, s46 <= 2 * (1 + l' + ls'), s47 >= 0, s47 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.65 verify(z) -{ 728 + 27*l' + 559*ls' + 108*ls'^2 }-> s65 :|: s63 >= 0, s63 <= 2, s64 >= 0, s64 <= s63 + 0, s65 >= 0, s65 <= s64 + 0, s48 >= 0, s48 <= 2 * (1 + l' + ls'), s49 >= 0, s49 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.65 verify(z) -{ 727 + 27*l'' + 559*ls'' + 108*ls''^2 }-> s68 :|: s66 >= 0, s66 <= 2, s67 >= 0, s67 <= s66 + 0, s68 >= 0, s68 <= s67 + 0, s50 >= 0, s50 <= 2 * (1 + l'' + ls''), s51 >= 0, s51 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.65 verify(z) -{ 728 + 27*l'' + 559*ls'' + 108*ls''^2 }-> s71 :|: s69 >= 0, s69 <= 2, s70 >= 0, s70 <= s69 + 0, s71 >= 0, s71 <= s70 + 0, s52 >= 0, s52 <= 2 * (1 + l'' + ls''), s53 >= 0, s53 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.65 verify(z) -{ 726 + 27*l1 + 559*ls1 + 108*ls1^2 }-> s74 :|: s72 >= 0, s72 <= 2, s73 >= 0, s73 <= s72 + 0, s74 >= 0, s74 <= s73 + 0, s54 >= 0, s54 <= 2 * (1 + l1 + ls1), s55 >= 0, s55 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.65 verify(z) -{ 727 + 27*l1 + 559*ls1 + 108*ls1^2 }-> s77 :|: s75 >= 0, s75 <= 2, s76 >= 0, s76 <= s75 + 0, s77 >= 0, s77 <= s76 + 0, s56 >= 0, s56 <= 2 * (1 + l1 + ls1), s57 >= 0, s57 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.65 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.65 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 380.41/291.65 Function symbols to be analyzed: {sat} 380.41/291.65 Previous analysis results are: 380.41/291.65 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.65 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.65 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.65 if: runtime: O(1) [1], size: O(n^1) [z' + z''] 380.41/291.65 guess: runtime: O(n^1) [3 + 2*z], size: O(n^1) [z] 380.41/291.65 member: runtime: O(n^1) [39 + 27*z'], size: O(n^1) [2*z'] 380.41/291.65 verify: runtime: O(n^2) [617 + 505*z + 108*z^2], size: O(1) [2] 380.41/291.65 satck: runtime: O(n^2) [1329 + 1064*z' + 216*z'^2], size: O(n^1) [3 + z'] 380.41/291.65 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (65) ResultPropagationProof (UPPER BOUND(ID)) 380.41/291.65 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 380.41/291.65 ---------------------------------------- 380.41/291.65 380.41/291.65 (66) 380.41/291.65 Obligation: 380.41/291.65 Complexity RNTS consisting of the following rules: 380.41/291.65 380.41/291.65 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.65 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.65 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.65 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.65 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 guess(z) -{ 5 + clause + 2*cnf }-> 1 + s' + s16 :|: s16 >= 0, s16 <= cnf, s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.65 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.65 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.65 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.65 member(z, z') -{ 3 + z' }-> s13 :|: s13 >= 0, s13 <= 0 + 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.65 member(z, z') -{ 5 + y' }-> s14 :|: s14 >= 0, s14 <= 0 + 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.65 member(z, z') -{ 5 + y2 }-> s15 :|: s15 >= 0, s15 <= 0 + 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 46 + y3 + 27*ys' }-> s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= s18 + 2, s20 >= 0, s20 <= s19 + 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.65 member(z, z') -{ 48 + y' + y4 + 27*ys'' }-> s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= s21 + 2, s23 >= 0, s23 <= s22 + 2, s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.65 member(z, z') -{ 46 + y5 + 27*ys1 }-> s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= s24 + 2, s26 >= 0, s26 <= s25 + 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.65 member(z, z') -{ 46 + y6 + 27*ys2 }-> s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= s27 + 2, s29 >= 0, s29 <= s28 + 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.65 member(z, z') -{ 48 + y2 + y7 + 27*ys3 }-> s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= s30 + 2, s32 >= 0, s32 <= s31 + 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.65 member(z, z') -{ 45 + y8 + 27*ys4 }-> s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= s33 + 2, s35 >= 0, s35 <= s34 + 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.65 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.65 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.65 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.65 sat(z) -{ 2611 }-> s84 :|: s84 >= 0, s84 <= 1 + 3, z = 1 380.41/291.65 sat(z) -{ 2615 + clause' + 2*cnf' + 1496*s'' + 432*s''*s17 + 216*s''^2 + 1496*s17 + 216*s17^2 }-> s85 :|: s85 >= 0, s85 <= 1 + s'' + s17 + 3, s17 >= 0, s17 <= cnf', s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.65 sat(z) -{ 1330 }-> s86 :|: s86 >= 0, s86 <= 0 + 3, z >= 0 380.41/291.65 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.65 satck(z, z') -{ 660 + 532*ls2 + 108*ls2^2 }-> s80 :|: s78 >= 0, s78 <= 2, s79 >= 0, s79 <= s78 + 0, s80 >= 0, s80 <= 3 + (1 + l2 + ls2), s58 >= 0, s58 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.65 satck(z, z') -{ 661 + 532*ls2 + 108*ls2^2 }-> s83 :|: s81 >= 0, s81 <= 2, s82 >= 0, s82 <= s81 + 0, s83 >= 0, s83 <= 3 + (1 + l2 + ls2), s59 >= 0, s59 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.65 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.65 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.65 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.65 verify(z) -{ 70 }-> s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 2 + 0, z - 3 >= 0 380.41/291.65 verify(z) -{ 42 + 27*ls }-> s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 0 + 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.65 verify(z) -{ 42 + 27*ls }-> s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 0 + 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.65 verify(z) -{ 69 }-> s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 2 + 0, z - 2 >= 0 380.41/291.65 verify(z) -{ 41 + 27*ls }-> s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 0 + 0, l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.65 verify(z) -{ 727 + 27*l' + 559*ls' + 108*ls'^2 }-> s62 :|: s60 >= 0, s60 <= 2, s61 >= 0, s61 <= s60 + 0, s62 >= 0, s62 <= s61 + 0, s46 >= 0, s46 <= 2 * (1 + l' + ls'), s47 >= 0, s47 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.65 verify(z) -{ 728 + 27*l' + 559*ls' + 108*ls'^2 }-> s65 :|: s63 >= 0, s63 <= 2, s64 >= 0, s64 <= s63 + 0, s65 >= 0, s65 <= s64 + 0, s48 >= 0, s48 <= 2 * (1 + l' + ls'), s49 >= 0, s49 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.65 verify(z) -{ 727 + 27*l'' + 559*ls'' + 108*ls''^2 }-> s68 :|: s66 >= 0, s66 <= 2, s67 >= 0, s67 <= s66 + 0, s68 >= 0, s68 <= s67 + 0, s50 >= 0, s50 <= 2 * (1 + l'' + ls''), s51 >= 0, s51 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.65 verify(z) -{ 728 + 27*l'' + 559*ls'' + 108*ls''^2 }-> s71 :|: s69 >= 0, s69 <= 2, s70 >= 0, s70 <= s69 + 0, s71 >= 0, s71 <= s70 + 0, s52 >= 0, s52 <= 2 * (1 + l'' + ls''), s53 >= 0, s53 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.65 verify(z) -{ 726 + 27*l1 + 559*ls1 + 108*ls1^2 }-> s74 :|: s72 >= 0, s72 <= 2, s73 >= 0, s73 <= s72 + 0, s74 >= 0, s74 <= s73 + 0, s54 >= 0, s54 <= 2 * (1 + l1 + ls1), s55 >= 0, s55 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.65 verify(z) -{ 727 + 27*l1 + 559*ls1 + 108*ls1^2 }-> s77 :|: s75 >= 0, s75 <= 2, s76 >= 0, s76 <= s75 + 0, s77 >= 0, s77 <= s76 + 0, s56 >= 0, s56 <= 2 * (1 + l1 + ls1), s57 >= 0, s57 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.65 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.65 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.65 380.41/291.65 Function symbols to be analyzed: {sat} 380.41/291.65 Previous analysis results are: 380.41/291.65 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.65 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.65 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.65 if: runtime: O(1) [1], size: O(n^1) [z' + z''] 380.41/291.66 guess: runtime: O(n^1) [3 + 2*z], size: O(n^1) [z] 380.41/291.66 member: runtime: O(n^1) [39 + 27*z'], size: O(n^1) [2*z'] 380.41/291.66 verify: runtime: O(n^2) [617 + 505*z + 108*z^2], size: O(1) [2] 380.41/291.66 satck: runtime: O(n^2) [1329 + 1064*z' + 216*z'^2], size: O(n^1) [3 + z'] 380.41/291.66 380.41/291.66 ---------------------------------------- 380.41/291.66 380.41/291.66 (67) IntTrsBoundProof (UPPER BOUND(ID)) 380.41/291.66 380.41/291.66 Computed SIZE bound using CoFloCo for: sat 380.41/291.66 after applying outer abstraction to obtain an ITS, 380.41/291.66 resulting in: O(n^1) with polynomial bound: 3 + z 380.41/291.66 380.41/291.66 ---------------------------------------- 380.41/291.66 380.41/291.66 (68) 380.41/291.66 Obligation: 380.41/291.66 Complexity RNTS consisting of the following rules: 380.41/291.66 380.41/291.66 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.66 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.66 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.66 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.66 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.66 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.66 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.66 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.66 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.66 guess(z) -{ 5 + clause + 2*cnf }-> 1 + s' + s16 :|: s16 >= 0, s16 <= cnf, s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.66 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.66 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.66 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.66 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.66 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.66 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.66 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.66 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.66 member(z, z') -{ 3 + z' }-> s13 :|: s13 >= 0, s13 <= 0 + 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.66 member(z, z') -{ 5 + y' }-> s14 :|: s14 >= 0, s14 <= 0 + 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.66 member(z, z') -{ 5 + y2 }-> s15 :|: s15 >= 0, s15 <= 0 + 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.66 member(z, z') -{ 46 + y3 + 27*ys' }-> s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= s18 + 2, s20 >= 0, s20 <= s19 + 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.66 member(z, z') -{ 48 + y' + y4 + 27*ys'' }-> s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= s21 + 2, s23 >= 0, s23 <= s22 + 2, s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.66 member(z, z') -{ 46 + y5 + 27*ys1 }-> s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= s24 + 2, s26 >= 0, s26 <= s25 + 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.66 member(z, z') -{ 46 + y6 + 27*ys2 }-> s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= s27 + 2, s29 >= 0, s29 <= s28 + 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.66 member(z, z') -{ 48 + y2 + y7 + 27*ys3 }-> s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= s30 + 2, s32 >= 0, s32 <= s31 + 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.66 member(z, z') -{ 45 + y8 + 27*ys4 }-> s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= s33 + 2, s35 >= 0, s35 <= s34 + 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.66 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.66 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.66 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.66 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.66 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.66 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.66 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.66 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.66 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.66 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.66 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.66 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.66 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.66 sat(z) -{ 2611 }-> s84 :|: s84 >= 0, s84 <= 1 + 3, z = 1 380.41/291.66 sat(z) -{ 2615 + clause' + 2*cnf' + 1496*s'' + 432*s''*s17 + 216*s''^2 + 1496*s17 + 216*s17^2 }-> s85 :|: s85 >= 0, s85 <= 1 + s'' + s17 + 3, s17 >= 0, s17 <= cnf', s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.66 sat(z) -{ 1330 }-> s86 :|: s86 >= 0, s86 <= 0 + 3, z >= 0 380.41/291.66 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.66 satck(z, z') -{ 660 + 532*ls2 + 108*ls2^2 }-> s80 :|: s78 >= 0, s78 <= 2, s79 >= 0, s79 <= s78 + 0, s80 >= 0, s80 <= 3 + (1 + l2 + ls2), s58 >= 0, s58 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.66 satck(z, z') -{ 661 + 532*ls2 + 108*ls2^2 }-> s83 :|: s81 >= 0, s81 <= 2, s82 >= 0, s82 <= s81 + 0, s83 >= 0, s83 <= 3 + (1 + l2 + ls2), s59 >= 0, s59 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.66 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.66 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.66 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.66 verify(z) -{ 70 }-> s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 2 + 0, z - 3 >= 0 380.41/291.66 verify(z) -{ 42 + 27*ls }-> s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 0 + 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.66 verify(z) -{ 42 + 27*ls }-> s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 0 + 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.66 verify(z) -{ 69 }-> s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 2 + 0, z - 2 >= 0 380.41/291.66 verify(z) -{ 41 + 27*ls }-> s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 0 + 0, l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.66 verify(z) -{ 727 + 27*l' + 559*ls' + 108*ls'^2 }-> s62 :|: s60 >= 0, s60 <= 2, s61 >= 0, s61 <= s60 + 0, s62 >= 0, s62 <= s61 + 0, s46 >= 0, s46 <= 2 * (1 + l' + ls'), s47 >= 0, s47 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.66 verify(z) -{ 728 + 27*l' + 559*ls' + 108*ls'^2 }-> s65 :|: s63 >= 0, s63 <= 2, s64 >= 0, s64 <= s63 + 0, s65 >= 0, s65 <= s64 + 0, s48 >= 0, s48 <= 2 * (1 + l' + ls'), s49 >= 0, s49 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.66 verify(z) -{ 727 + 27*l'' + 559*ls'' + 108*ls''^2 }-> s68 :|: s66 >= 0, s66 <= 2, s67 >= 0, s67 <= s66 + 0, s68 >= 0, s68 <= s67 + 0, s50 >= 0, s50 <= 2 * (1 + l'' + ls''), s51 >= 0, s51 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.66 verify(z) -{ 728 + 27*l'' + 559*ls'' + 108*ls''^2 }-> s71 :|: s69 >= 0, s69 <= 2, s70 >= 0, s70 <= s69 + 0, s71 >= 0, s71 <= s70 + 0, s52 >= 0, s52 <= 2 * (1 + l'' + ls''), s53 >= 0, s53 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.66 verify(z) -{ 726 + 27*l1 + 559*ls1 + 108*ls1^2 }-> s74 :|: s72 >= 0, s72 <= 2, s73 >= 0, s73 <= s72 + 0, s74 >= 0, s74 <= s73 + 0, s54 >= 0, s54 <= 2 * (1 + l1 + ls1), s55 >= 0, s55 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.66 verify(z) -{ 727 + 27*l1 + 559*ls1 + 108*ls1^2 }-> s77 :|: s75 >= 0, s75 <= 2, s76 >= 0, s76 <= s75 + 0, s77 >= 0, s77 <= s76 + 0, s56 >= 0, s56 <= 2 * (1 + l1 + ls1), s57 >= 0, s57 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.66 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.66 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.66 380.41/291.66 Function symbols to be analyzed: {sat} 380.41/291.66 Previous analysis results are: 380.41/291.66 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.66 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.66 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.66 if: runtime: O(1) [1], size: O(n^1) [z' + z''] 380.41/291.66 guess: runtime: O(n^1) [3 + 2*z], size: O(n^1) [z] 380.41/291.66 member: runtime: O(n^1) [39 + 27*z'], size: O(n^1) [2*z'] 380.41/291.66 verify: runtime: O(n^2) [617 + 505*z + 108*z^2], size: O(1) [2] 380.41/291.66 satck: runtime: O(n^2) [1329 + 1064*z' + 216*z'^2], size: O(n^1) [3 + z'] 380.41/291.66 sat: runtime: ?, size: O(n^1) [3 + z] 380.41/291.66 380.41/291.66 ---------------------------------------- 380.41/291.66 380.41/291.66 (69) IntTrsBoundProof (UPPER BOUND(ID)) 380.41/291.66 380.41/291.66 Computed RUNTIME bound using KoAT for: sat 380.41/291.66 after applying outer abstraction to obtain an ITS, 380.41/291.66 resulting in: O(n^2) with polynomial bound: 6556 + 2995*z + 864*z^2 380.41/291.66 380.41/291.66 ---------------------------------------- 380.41/291.66 380.41/291.66 (70) 380.41/291.66 Obligation: 380.41/291.66 Complexity RNTS consisting of the following rules: 380.41/291.66 380.41/291.66 choice(z) -{ 2 + xs }-> s :|: s >= 0, s <= xs, z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.66 choice(z) -{ 1 }-> x :|: z = 1 + x + xs, xs >= 0, x >= 0 380.41/291.66 choice(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.66 eq(z, z') -{ 2 + z' }-> s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0 380.41/291.66 eq(z, z') -{ 1 }-> 2 :|: z = 1, z' = 1 380.41/291.66 eq(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0 380.41/291.66 eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.66 guess(z) -{ 1 }-> 1 :|: z = 1 380.41/291.66 guess(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.66 guess(z) -{ 5 + clause + 2*cnf }-> 1 + s' + s16 :|: s16 >= 0, s16 <= cnf, s' >= 0, s' <= clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0 380.41/291.66 if(z, z', z'') -{ 1 }-> z' :|: z = 2, z' >= 0, z'' >= 0 380.41/291.66 if(z, z', z'') -{ 1 }-> z'' :|: z' >= 0, z'' >= 0, z = 0 380.41/291.66 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 380.41/291.66 member(z, z') -{ 4 }-> e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.66 member(z, z') -{ 3 }-> e :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.66 member(z, z') -{ 3 }-> e :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.66 member(z, z') -{ 3 }-> e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.66 member(z, z') -{ 2 }-> e :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e 380.41/291.66 member(z, z') -{ 3 + z' }-> s13 :|: s13 >= 0, s13 <= 0 + 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0 380.41/291.66 member(z, z') -{ 5 + y' }-> s14 :|: s14 >= 0, s14 <= 0 + 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0 380.41/291.66 member(z, z') -{ 5 + y2 }-> s15 :|: s15 >= 0, s15 <= 0 + 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0 380.41/291.66 member(z, z') -{ 46 + y3 + 27*ys' }-> s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= s18 + 2, s20 >= 0, s20 <= s19 + 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0 380.41/291.66 member(z, z') -{ 48 + y' + y4 + 27*ys'' }-> s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= s21 + 2, s23 >= 0, s23 <= s22 + 2, s4 >= 0, s4 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y') + (1 + y4 + ys''), z - 1 >= 0, y' >= 0, ys'' >= 0, y4 >= 0 380.41/291.66 member(z, z') -{ 46 + y5 + 27*ys1 }-> s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= s24 + 2, s26 >= 0, s26 <= s25 + 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0 380.41/291.66 member(z, z') -{ 46 + y6 + 27*ys2 }-> s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= s27 + 2, s29 >= 0, s29 <= s28 + 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0 380.41/291.66 member(z, z') -{ 48 + y2 + y7 + 27*ys3 }-> s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= s30 + 2, s32 >= 0, s32 <= s31 + 2, s9 >= 0, s9 <= 2, s10 >= 0, s10 <= 2, y7 >= 0, ys3 >= 0, y2 >= 0, z - 1 >= 0, z' = 1 + (1 + y2) + (1 + y7 + ys3) 380.41/291.66 member(z, z') -{ 45 + y8 + 27*ys4 }-> s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= s33 + 2, s35 >= 0, s35 <= s34 + 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0 380.41/291.66 member(z, z') -{ 4 }-> t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.66 member(z, z') -{ 3 }-> t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e 380.41/291.66 member(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 1 380.41/291.66 member(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 380.41/291.66 member(z, z') -{ 3 }-> 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.66 member(z, z') -{ 2 }-> 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0 380.41/291.66 member(z, z') -{ 3 }-> 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.66 member(z, z') -{ 2 }-> 0 :|: z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.66 member(z, z') -{ 2 }-> 0 :|: y1 >= 0, z - 1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.66 member(z, z') -{ 2 }-> 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.66 member(z, z') -{ 1 }-> 0 :|: ys >= 0, z >= 0, y >= 0, z' = 1 + y + ys, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0 380.41/291.66 negate(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.66 negate(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 380.41/291.66 sat(z) -{ 2611 }-> s84 :|: s84 >= 0, s84 <= 1 + 3, z = 1 380.41/291.66 sat(z) -{ 2615 + clause' + 2*cnf' + 1496*s'' + 432*s''*s17 + 216*s''^2 + 1496*s17 + 216*s17^2 }-> s85 :|: s85 >= 0, s85 <= 1 + s'' + s17 + 3, s17 >= 0, s17 <= cnf', s'' >= 0, s'' <= clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0 380.41/291.66 sat(z) -{ 1330 }-> s86 :|: s86 >= 0, s86 <= 0 + 3, z >= 0 380.41/291.66 satck(z, z') -{ 2 }-> e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e 380.41/291.66 satck(z, z') -{ 660 + 532*ls2 + 108*ls2^2 }-> s80 :|: s78 >= 0, s78 <= 2, s79 >= 0, s79 <= s78 + 0, s80 >= 0, s80 <= 3 + (1 + l2 + ls2), s58 >= 0, s58 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0 380.41/291.66 satck(z, z') -{ 661 + 532*ls2 + 108*ls2^2 }-> s83 :|: s81 >= 0, s81 <= 2, s82 >= 0, s82 <= s81 + 0, s83 >= 0, s83 <= 3 + (1 + l2 + ls2), s59 >= 0, s59 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x 380.41/291.66 satck(z, z') -{ 3 }-> t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e 380.41/291.66 satck(z, z') -{ 2 }-> 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0 380.41/291.66 satck(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0 380.41/291.66 verify(z) -{ 70 }-> s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 2 + 0, z - 3 >= 0 380.41/291.66 verify(z) -{ 42 + 27*ls }-> s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 0 + 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0 380.41/291.66 verify(z) -{ 42 + 27*ls }-> s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 0 + 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls 380.41/291.66 verify(z) -{ 69 }-> s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 2 + 0, z - 2 >= 0 380.41/291.66 verify(z) -{ 41 + 27*ls }-> s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 0 + 0, l >= 0, ls >= 0, z = 1 + l + ls 380.41/291.66 verify(z) -{ 727 + 27*l' + 559*ls' + 108*ls'^2 }-> s62 :|: s60 >= 0, s60 <= 2, s61 >= 0, s61 <= s60 + 0, s62 >= 0, s62 <= s61 + 0, s46 >= 0, s46 <= 2 * (1 + l' + ls'), s47 >= 0, s47 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, v0 >= 0, l' = v0 380.41/291.66 verify(z) -{ 728 + 27*l' + 559*ls' + 108*ls'^2 }-> s65 :|: s63 >= 0, s63 <= 2, s64 >= 0, s64 <= s63 + 0, s65 >= 0, s65 <= s64 + 0, s48 >= 0, s48 <= 2 * (1 + l' + ls'), s49 >= 0, s49 <= 2 * ls', ls' >= 0, l' >= 0, z = 1 + (1 + x3) + (1 + l' + ls'), x3 >= 0, x >= 0, l' = 1 + x 380.41/291.66 verify(z) -{ 727 + 27*l'' + 559*ls'' + 108*ls''^2 }-> s68 :|: s66 >= 0, s66 <= 2, s67 >= 0, s67 <= s66 + 0, s68 >= 0, s68 <= s67 + 0, s50 >= 0, s50 <= 2 * (1 + l'' + ls''), s51 >= 0, s51 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, v0 >= 0, l'' = v0 380.41/291.66 verify(z) -{ 728 + 27*l'' + 559*ls'' + 108*ls''^2 }-> s71 :|: s69 >= 0, s69 <= 2, s70 >= 0, s70 <= s69 + 0, s71 >= 0, s71 <= s70 + 0, s52 >= 0, s52 <= 2 * (1 + l'' + ls''), s53 >= 0, s53 <= 2 * ls'', x4 >= 0, l'' >= 0, z = 1 + (1 + x4) + (1 + l'' + ls''), ls'' >= 0, x >= 0, l'' = 1 + x 380.41/291.66 verify(z) -{ 726 + 27*l1 + 559*ls1 + 108*ls1^2 }-> s74 :|: s72 >= 0, s72 <= 2, s73 >= 0, s73 <= s72 + 0, s74 >= 0, s74 <= s73 + 0, s54 >= 0, s54 <= 2 * (1 + l1 + ls1), s55 >= 0, s55 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, v0 >= 0, l1 = v0 380.41/291.66 verify(z) -{ 727 + 27*l1 + 559*ls1 + 108*ls1^2 }-> s77 :|: s75 >= 0, s75 <= 2, s76 >= 0, s76 <= s75 + 0, s77 >= 0, s77 <= s76 + 0, s56 >= 0, s56 <= 2 * (1 + l1 + ls1), s57 >= 0, s57 <= 2 * ls1, z = 1 + l + (1 + l1 + ls1), l >= 0, l1 >= 0, ls1 >= 0, x >= 0, l1 = 1 + x 380.41/291.66 verify(z) -{ 1 }-> 2 :|: z = 1 380.41/291.66 verify(z) -{ 0 }-> 0 :|: z >= 0 380.41/291.66 380.41/291.66 Function symbols to be analyzed: 380.41/291.66 Previous analysis results are: 380.41/291.66 choice: runtime: O(n^1) [1 + z], size: O(n^1) [z] 380.41/291.66 eq: runtime: O(n^1) [2 + z'], size: O(1) [2] 380.41/291.66 negate: runtime: O(1) [1], size: O(n^1) [z] 380.41/291.66 if: runtime: O(1) [1], size: O(n^1) [z' + z''] 380.41/291.66 guess: runtime: O(n^1) [3 + 2*z], size: O(n^1) [z] 380.41/291.66 member: runtime: O(n^1) [39 + 27*z'], size: O(n^1) [2*z'] 380.41/291.66 verify: runtime: O(n^2) [617 + 505*z + 108*z^2], size: O(1) [2] 380.41/291.66 satck: runtime: O(n^2) [1329 + 1064*z' + 216*z'^2], size: O(n^1) [3 + z'] 380.41/291.66 sat: runtime: O(n^2) [6556 + 2995*z + 864*z^2], size: O(n^1) [3 + z] 380.41/291.66 380.41/291.66 ---------------------------------------- 380.41/291.66 380.41/291.66 (71) FinalProof (FINISHED) 380.41/291.66 Computed overall runtime complexity 380.41/291.66 ---------------------------------------- 380.41/291.66 380.41/291.66 (72) 380.41/291.66 BOUNDS(1, n^2) 380.41/291.66 380.41/291.66 ---------------------------------------- 380.41/291.66 380.41/291.66 (73) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) 380.41/291.66 Transformed a relative TRS into a decreasing-loop problem. 380.41/291.66 ---------------------------------------- 380.41/291.66 380.41/291.66 (74) 380.41/291.66 Obligation: 380.41/291.66 Analyzing the following TRS for decreasing loops: 380.41/291.66 380.41/291.66 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^2). 380.41/291.66 380.41/291.66 380.41/291.66 The TRS R consists of the following rules: 380.41/291.66 380.41/291.66 if(true, t, e) -> t 380.41/291.66 if(false, t, e) -> e 380.41/291.66 member(x, nil) -> false 380.41/291.66 member(x, cons(y, ys)) -> if(eq(x, y), true, member(x, ys)) 380.41/291.66 eq(nil, nil) -> true 380.41/291.66 eq(O(x), 0(y)) -> eq(x, y) 380.41/291.66 eq(0(x), 1(y)) -> false 380.41/291.66 eq(1(x), 0(y)) -> false 380.41/291.66 eq(1(x), 1(y)) -> eq(x, y) 380.41/291.66 negate(0(x)) -> 1(x) 380.41/291.66 negate(1(x)) -> 0(x) 380.41/291.66 choice(cons(x, xs)) -> x 380.41/291.66 choice(cons(x, xs)) -> choice(xs) 380.41/291.66 guess(nil) -> nil 380.41/291.66 guess(cons(clause, cnf)) -> cons(choice(clause), guess(cnf)) 380.41/291.66 verify(nil) -> true 380.41/291.66 verify(cons(l, ls)) -> if(member(negate(l), ls), false, verify(ls)) 380.41/291.66 sat(cnf) -> satck(cnf, guess(cnf)) 380.41/291.66 satck(cnf, assign) -> if(verify(assign), assign, unsat) 380.41/291.66 380.41/291.66 S is empty. 380.41/291.66 Rewrite Strategy: INNERMOST 380.41/291.66 ---------------------------------------- 380.41/291.66 380.41/291.66 (75) DecreasingLoopProof (LOWER BOUND(ID)) 380.41/291.66 The following loop(s) give(s) rise to the lower bound Omega(n^1): 380.41/291.66 380.41/291.66 The rewrite sequence 380.41/291.66 380.41/291.66 member(x, cons(y, ys)) ->^+ if(eq(x, y), true, member(x, ys)) 380.41/291.66 380.41/291.66 gives rise to a decreasing loop by considering the right hand sides subterm at position [2]. 380.41/291.66 380.41/291.66 The pumping substitution is [ys / cons(y, ys)]. 380.41/291.66 380.41/291.66 The result substitution is [ ]. 380.41/291.66 380.41/291.66 380.41/291.66 380.41/291.66 380.41/291.66 ---------------------------------------- 380.41/291.66 380.41/291.66 (76) 380.41/291.66 Complex Obligation (BEST) 380.41/291.66 380.41/291.66 ---------------------------------------- 380.41/291.66 380.41/291.66 (77) 380.41/291.66 Obligation: 380.41/291.66 Proved the lower bound n^1 for the following obligation: 380.41/291.66 380.41/291.66 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^2). 380.41/291.66 380.41/291.66 380.41/291.66 The TRS R consists of the following rules: 380.41/291.66 380.41/291.66 if(true, t, e) -> t 380.41/291.66 if(false, t, e) -> e 380.41/291.66 member(x, nil) -> false 380.41/291.66 member(x, cons(y, ys)) -> if(eq(x, y), true, member(x, ys)) 380.41/291.66 eq(nil, nil) -> true 380.41/291.66 eq(O(x), 0(y)) -> eq(x, y) 380.41/291.66 eq(0(x), 1(y)) -> false 380.41/291.66 eq(1(x), 0(y)) -> false 380.41/291.66 eq(1(x), 1(y)) -> eq(x, y) 380.41/291.66 negate(0(x)) -> 1(x) 380.41/291.66 negate(1(x)) -> 0(x) 380.41/291.66 choice(cons(x, xs)) -> x 380.41/291.66 choice(cons(x, xs)) -> choice(xs) 380.41/291.66 guess(nil) -> nil 380.41/291.66 guess(cons(clause, cnf)) -> cons(choice(clause), guess(cnf)) 380.41/291.66 verify(nil) -> true 380.41/291.66 verify(cons(l, ls)) -> if(member(negate(l), ls), false, verify(ls)) 380.41/291.66 sat(cnf) -> satck(cnf, guess(cnf)) 380.41/291.66 satck(cnf, assign) -> if(verify(assign), assign, unsat) 380.41/291.66 380.41/291.66 S is empty. 380.41/291.66 Rewrite Strategy: INNERMOST 380.41/291.66 ---------------------------------------- 380.41/291.66 380.41/291.66 (78) LowerBoundPropagationProof (FINISHED) 380.41/291.66 Propagated lower bound. 380.41/291.66 ---------------------------------------- 380.41/291.66 380.41/291.66 (79) 380.41/291.66 BOUNDS(n^1, INF) 380.41/291.66 380.41/291.66 ---------------------------------------- 380.41/291.66 380.41/291.66 (80) 380.41/291.66 Obligation: 380.41/291.66 Analyzing the following TRS for decreasing loops: 380.41/291.66 380.41/291.66 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^2). 380.41/291.66 380.41/291.66 380.41/291.66 The TRS R consists of the following rules: 380.41/291.66 380.41/291.66 if(true, t, e) -> t 380.41/291.66 if(false, t, e) -> e 380.41/291.66 member(x, nil) -> false 380.41/291.66 member(x, cons(y, ys)) -> if(eq(x, y), true, member(x, ys)) 380.41/291.66 eq(nil, nil) -> true 380.41/291.66 eq(O(x), 0(y)) -> eq(x, y) 380.41/291.66 eq(0(x), 1(y)) -> false 380.41/291.66 eq(1(x), 0(y)) -> false 380.41/291.66 eq(1(x), 1(y)) -> eq(x, y) 380.41/291.66 negate(0(x)) -> 1(x) 380.41/291.66 negate(1(x)) -> 0(x) 380.41/291.66 choice(cons(x, xs)) -> x 380.41/291.66 choice(cons(x, xs)) -> choice(xs) 380.41/291.66 guess(nil) -> nil 380.41/291.66 guess(cons(clause, cnf)) -> cons(choice(clause), guess(cnf)) 380.41/291.66 verify(nil) -> true 380.41/291.66 verify(cons(l, ls)) -> if(member(negate(l), ls), false, verify(ls)) 380.41/291.66 sat(cnf) -> satck(cnf, guess(cnf)) 380.41/291.66 satck(cnf, assign) -> if(verify(assign), assign, unsat) 380.41/291.66 380.41/291.66 S is empty. 380.41/291.66 Rewrite Strategy: INNERMOST 380.48/291.71 EOF