(0) Obligation:

The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^2).


The TRS R consists of the following rules:

if(true, t, e) → t
if(false, t, e) → e
member(x, nil) → false
member(x, cons(y, ys)) → if(eq(x, y), true, member(x, ys))
eq(nil, nil) → true
eq(O(x), 0(y)) → eq(x, y)
eq(0(x), 1(y)) → false
eq(1(x), 0(y)) → false
eq(1(x), 1(y)) → eq(x, y)
negate(0(x)) → 1(x)
negate(1(x)) → 0(x)
choice(cons(x, xs)) → x
choice(cons(x, xs)) → choice(xs)
guess(nil) → nil
guess(cons(clause, cnf)) → cons(choice(clause), guess(cnf))
verify(nil) → true
verify(cons(l, ls)) → if(member(negate(l), ls), false, verify(ls))
sat(cnf) → satck(cnf, guess(cnf))
satck(cnf, assign) → if(verify(assign), assign, unsat)

Rewrite Strategy: INNERMOST

(1) TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID) transformation)

Transformed TRS to weighted TRS

(2) Obligation:

The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^2).


The TRS R consists of the following rules:

if(true, t, e) → t [1]
if(false, t, e) → e [1]
member(x, nil) → false [1]
member(x, cons(y, ys)) → if(eq(x, y), true, member(x, ys)) [1]
eq(nil, nil) → true [1]
eq(O(x), 0(y)) → eq(x, y) [1]
eq(0(x), 1(y)) → false [1]
eq(1(x), 0(y)) → false [1]
eq(1(x), 1(y)) → eq(x, y) [1]
negate(0(x)) → 1(x) [1]
negate(1(x)) → 0(x) [1]
choice(cons(x, xs)) → x [1]
choice(cons(x, xs)) → choice(xs) [1]
guess(nil) → nil [1]
guess(cons(clause, cnf)) → cons(choice(clause), guess(cnf)) [1]
verify(nil) → true [1]
verify(cons(l, ls)) → if(member(negate(l), ls), false, verify(ls)) [1]
sat(cnf) → satck(cnf, guess(cnf)) [1]
satck(cnf, assign) → if(verify(assign), assign, unsat) [1]

Rewrite Strategy: INNERMOST

(3) TypeInferenceProof (BOTH BOUNDS(ID, ID) transformation)

Infered types.

(4) Obligation:

Runtime Complexity Weighted TRS with Types.
The TRS R consists of the following rules:

if(true, t, e) → t [1]
if(false, t, e) → e [1]
member(x, nil) → false [1]
member(x, cons(y, ys)) → if(eq(x, y), true, member(x, ys)) [1]
eq(nil, nil) → true [1]
eq(O(x), 0(y)) → eq(x, y) [1]
eq(0(x), 1(y)) → false [1]
eq(1(x), 0(y)) → false [1]
eq(1(x), 1(y)) → eq(x, y) [1]
negate(0(x)) → 1(x) [1]
negate(1(x)) → 0(x) [1]
choice(cons(x, xs)) → x [1]
choice(cons(x, xs)) → choice(xs) [1]
guess(nil) → nil [1]
guess(cons(clause, cnf)) → cons(choice(clause), guess(cnf)) [1]
verify(nil) → true [1]
verify(cons(l, ls)) → if(member(negate(l), ls), false, verify(ls)) [1]
sat(cnf) → satck(cnf, guess(cnf)) [1]
satck(cnf, assign) → if(verify(assign), assign, unsat) [1]

The TRS has the following type information:
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
true :: true:false:nil:cons:O:0:1:unsat
false :: true:false:nil:cons:O:0:1:unsat
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
nil :: true:false:nil:cons:O:0:1:unsat
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
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
O :: true:false:nil:cons:O:0:1:unsat → true:false:nil:cons:O:0:1:unsat
0 :: true:false:nil:cons:O:0:1:unsat → true:false:nil:cons:O:0:1:unsat
1 :: true:false:nil:cons:O:0:1:unsat → true:false:nil:cons:O:0:1:unsat
negate :: true:false:nil:cons:O:0:1:unsat → true:false:nil:cons:O:0:1:unsat
choice :: true:false:nil:cons:O:0:1:unsat → true:false:nil:cons:O:0:1:unsat
guess :: true:false:nil:cons:O:0:1:unsat → true:false:nil:cons:O:0:1:unsat
verify :: true:false:nil:cons:O:0:1:unsat → true:false:nil:cons:O:0:1:unsat
sat :: true:false:nil:cons:O:0:1:unsat → true:false:nil:cons:O:0:1:unsat
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
unsat :: true:false:nil:cons:O:0:1:unsat

Rewrite Strategy: INNERMOST

(5) CompletionProof (UPPER BOUND(ID) transformation)

The transformation into a RNTS is sound, since:

(a) The obligation is a constructor system where every type has a constant constructor,

(b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols:


sat
satck

(c) The following functions are completely defined:

verify
member
negate
eq
guess
if
choice

Due to the following rules being added:

verify(v0) → null_verify [0]
member(v0, v1) → null_member [0]
negate(v0) → null_negate [0]
eq(v0, v1) → null_eq [0]
guess(v0) → null_guess [0]
if(v0, v1, v2) → null_if [0]
choice(v0) → null_choice [0]

And the following fresh constants:

null_verify, null_member, null_negate, null_eq, null_guess, null_if, null_choice

(6) Obligation:

Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is:

Runtime Complexity Weighted TRS with Types.
The TRS R consists of the following rules:

if(true, t, e) → t [1]
if(false, t, e) → e [1]
member(x, nil) → false [1]
member(x, cons(y, ys)) → if(eq(x, y), true, member(x, ys)) [1]
eq(nil, nil) → true [1]
eq(O(x), 0(y)) → eq(x, y) [1]
eq(0(x), 1(y)) → false [1]
eq(1(x), 0(y)) → false [1]
eq(1(x), 1(y)) → eq(x, y) [1]
negate(0(x)) → 1(x) [1]
negate(1(x)) → 0(x) [1]
choice(cons(x, xs)) → x [1]
choice(cons(x, xs)) → choice(xs) [1]
guess(nil) → nil [1]
guess(cons(clause, cnf)) → cons(choice(clause), guess(cnf)) [1]
verify(nil) → true [1]
verify(cons(l, ls)) → if(member(negate(l), ls), false, verify(ls)) [1]
sat(cnf) → satck(cnf, guess(cnf)) [1]
satck(cnf, assign) → if(verify(assign), assign, unsat) [1]
verify(v0) → null_verify [0]
member(v0, v1) → null_member [0]
negate(v0) → null_negate [0]
eq(v0, v1) → null_eq [0]
guess(v0) → null_guess [0]
if(v0, v1, v2) → null_if [0]
choice(v0) → null_choice [0]

The TRS has the following type information:
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
true :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
false :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
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
nil :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
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
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
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
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
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
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
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
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
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
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
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
unsat :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
null_verify :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
null_member :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
null_negate :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
null_eq :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
null_guess :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
null_if :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
null_choice :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice

Rewrite Strategy: INNERMOST

(7) NarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Narrowed the inner basic terms of all right-hand sides by a single narrowing step.

(8) Obligation:

Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is:

Runtime Complexity Weighted TRS with Types.
The TRS R consists of the following rules:

if(true, t, e) → t [1]
if(false, t, e) → e [1]
member(x, nil) → false [1]
member(nil, cons(nil, nil)) → if(true, true, false) [3]
member(nil, cons(nil, cons(y3, ys'))) → if(true, true, if(eq(nil, y3), true, member(nil, ys'))) [3]
member(nil, cons(nil, ys)) → if(true, true, null_member) [2]
member(O(x'), cons(0(y'), nil)) → if(eq(x', y'), true, false) [3]
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]
member(O(x'), cons(0(y'), ys)) → if(eq(x', y'), true, null_member) [2]
member(0(x''), cons(1(y''), nil)) → if(false, true, false) [3]
member(0(x''), cons(1(y''), cons(y5, ys1))) → if(false, true, if(eq(0(x''), y5), true, member(0(x''), ys1))) [3]
member(0(x''), cons(1(y''), ys)) → if(false, true, null_member) [2]
member(1(x1), cons(0(y1), nil)) → if(false, true, false) [3]
member(1(x1), cons(0(y1), cons(y6, ys2))) → if(false, true, if(eq(1(x1), y6), true, member(1(x1), ys2))) [3]
member(1(x1), cons(0(y1), ys)) → if(false, true, null_member) [2]
member(1(x2), cons(1(y2), nil)) → if(eq(x2, y2), true, false) [3]
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]
member(1(x2), cons(1(y2), ys)) → if(eq(x2, y2), true, null_member) [2]
member(x, cons(y, nil)) → if(null_eq, true, false) [2]
member(x, cons(y, cons(y8, ys4))) → if(null_eq, true, if(eq(x, y8), true, member(x, ys4))) [2]
member(x, cons(y, ys)) → if(null_eq, true, null_member) [1]
eq(nil, nil) → true [1]
eq(O(x), 0(y)) → eq(x, y) [1]
eq(0(x), 1(y)) → false [1]
eq(1(x), 0(y)) → false [1]
eq(1(x), 1(y)) → eq(x, y) [1]
negate(0(x)) → 1(x) [1]
negate(1(x)) → 0(x) [1]
choice(cons(x, xs)) → x [1]
choice(cons(x, xs)) → choice(xs) [1]
guess(nil) → nil [1]
guess(cons(clause, cnf)) → cons(choice(clause), guess(cnf)) [1]
verify(nil) → true [1]
verify(cons(0(x3), nil)) → if(member(1(x3), nil), false, true) [3]
verify(cons(0(x3), cons(l', ls'))) → if(member(1(x3), cons(l', ls')), false, if(member(negate(l'), ls'), false, verify(ls'))) [3]
verify(cons(0(x3), ls)) → if(member(1(x3), ls), false, null_verify) [2]
verify(cons(1(x4), nil)) → if(member(0(x4), nil), false, true) [3]
verify(cons(1(x4), cons(l'', ls''))) → if(member(0(x4), cons(l'', ls'')), false, if(member(negate(l''), ls''), false, verify(ls''))) [3]
verify(cons(1(x4), ls)) → if(member(0(x4), ls), false, null_verify) [2]
verify(cons(l, nil)) → if(member(null_negate, nil), false, true) [2]
verify(cons(l, cons(l1, ls1))) → if(member(null_negate, cons(l1, ls1)), false, if(member(negate(l1), ls1), false, verify(ls1))) [2]
verify(cons(l, ls)) → if(member(null_negate, ls), false, null_verify) [1]
sat(nil) → satck(nil, nil) [2]
sat(cons(clause', cnf')) → satck(cons(clause', cnf'), cons(choice(clause'), guess(cnf'))) [2]
sat(cnf) → satck(cnf, null_guess) [1]
satck(cnf, nil) → if(true, nil, unsat) [2]
satck(cnf, cons(l2, ls2)) → if(if(member(negate(l2), ls2), false, verify(ls2)), cons(l2, ls2), unsat) [2]
satck(cnf, assign) → if(null_verify, assign, unsat) [1]
verify(v0) → null_verify [0]
member(v0, v1) → null_member [0]
negate(v0) → null_negate [0]
eq(v0, v1) → null_eq [0]
guess(v0) → null_guess [0]
if(v0, v1, v2) → null_if [0]
choice(v0) → null_choice [0]

The TRS has the following type information:
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
true :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
false :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
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
nil :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
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
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
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
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
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
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
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
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
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
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
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
unsat :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
null_verify :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
null_member :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
null_negate :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
null_eq :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
null_guess :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
null_if :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice
null_choice :: true:false:nil:cons:O:0:1:unsat:null_verify:null_member:null_negate:null_eq:null_guess:null_if:null_choice

Rewrite Strategy: INNERMOST

(9) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID) transformation)

Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction.
The constant constructors are abstracted as follows:

true => 2
false => 0
nil => 1
unsat => 3
null_verify => 0
null_member => 0
null_negate => 0
null_eq => 0
null_guess => 0
null_if => 0
null_choice => 0

(10) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ choice(xs) :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
eq(z, z') -{ 1 }→ eq(x, y) :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x
eq(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
guess(z) -{ 1 }→ 1 + choice(clause) + guess(cnf) :|: cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ e :|: z' = t, t >= 0, e >= 0, z = 0, z'' = e
if(z, z', z'') -{ 1 }→ t :|: z = 2, z' = t, t >= 0, e >= 0, z'' = e
if(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
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
member(z, z') -{ 3 }→ if(eq(x', y'), 2, 0) :|: z = 1 + x', x' >= 0, y' >= 0, z' = 1 + (1 + y') + 1
member(z, z') -{ 2 }→ if(eq(x', y'), 2, 0) :|: z = 1 + x', z' = 1 + (1 + y') + ys, ys >= 0, x' >= 0, y' >= 0
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)
member(z, z') -{ 3 }→ if(eq(x2, y2), 2, 0) :|: z = 1 + x2, z' = 1 + (1 + y2) + 1, y2 >= 0, x2 >= 0
member(z, z') -{ 2 }→ if(eq(x2, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, z = 1 + x2, y2 >= 0, x2 >= 0
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
member(z, z') -{ 3 }→ if(2, 2, 0) :|: z' = 1 + 1 + 1, z = 1
member(z, z') -{ 2 }→ if(2, 2, 0) :|: z = 1, ys >= 0, z' = 1 + 1 + ys
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
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
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
member(z, z') -{ 3 }→ if(0, 2, 0) :|: z = 1 + x'', z' = 1 + (1 + y'') + 1, y'' >= 0, x'' >= 0
member(z, z') -{ 2 }→ if(0, 2, 0) :|: z = 1 + x'', z' = 1 + (1 + y'') + ys, ys >= 0, y'' >= 0, x'' >= 0
member(z, z') -{ 3 }→ if(0, 2, 0) :|: y1 >= 0, x1 >= 0, z' = 1 + (1 + y1) + 1, z = 1 + x1
member(z, z') -{ 2 }→ if(0, 2, 0) :|: y1 >= 0, x1 >= 0, ys >= 0, z' = 1 + (1 + y1) + ys, z = 1 + x1
member(z, z') -{ 2 }→ if(0, 2, 0) :|: z' = 1 + y + 1, x >= 0, y >= 0, z = x
member(z, z') -{ 1 }→ if(0, 2, 0) :|: ys >= 0, x >= 0, y >= 0, z = x, z' = 1 + y + ys
member(z, z') -{ 1 }→ 0 :|: x >= 0, z' = 1, z = x
member(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
negate(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
negate(z) -{ 1 }→ 1 + x :|: x >= 0, z = 1 + x
sat(z) -{ 1 }→ satck(cnf, 0) :|: cnf >= 0, z = cnf
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 2 }→ satck(1 + clause' + cnf', 1 + choice(clause') + guess(cnf')) :|: clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
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
satck(z, z') -{ 2 }→ if(2, 1, 3) :|: cnf >= 0, z' = 1, z = cnf
satck(z, z') -{ 1 }→ if(0, assign, 3) :|: cnf >= 0, z' = assign, z = cnf, assign >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z = 1 + l + 1, l >= 0
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
verify(z) -{ 3 }→ if(member(1 + x3, 1), 0, 2) :|: z = 1 + (1 + x3) + 1, x3 >= 0
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
verify(z) -{ 3 }→ if(member(1 + x4, 1), 0, 2) :|: x4 >= 0, z = 1 + (1 + x4) + 1
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
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0

(11) InliningProof (UPPER BOUND(ID) transformation)

Inlined the following terminating rules on right-hand sides where appropriate:

if(z, z', z'') -{ 1 }→ t :|: z = 2, z' = t, t >= 0, e >= 0, z'' = e
if(z, z', z'') -{ 1 }→ e :|: z' = t, t >= 0, e >= 0, z = 0, z'' = e
if(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
negate(z) -{ 1 }→ 1 + x :|: x >= 0, z = 1 + x
negate(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0

(12) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ choice(xs) :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
eq(z, z') -{ 1 }→ eq(x, y) :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x
eq(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
guess(z) -{ 1 }→ 1 + choice(clause) + guess(cnf) :|: cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ e :|: z' = t, t >= 0, e >= 0, z = 0, z'' = e
if(z, z', z'') -{ 1 }→ t :|: z = 2, z' = t, t >= 0, e >= 0, z'' = e
if(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
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
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
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
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
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
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
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, ys >= 0, z' = 1 + 1 + ys, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
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
member(z, z') -{ 3 }→ if(eq(x', y'), 2, 0) :|: z = 1 + x', x' >= 0, y' >= 0, z' = 1 + (1 + y') + 1
member(z, z') -{ 2 }→ if(eq(x', y'), 2, 0) :|: z = 1 + x', z' = 1 + (1 + y') + ys, ys >= 0, x' >= 0, y' >= 0
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)
member(z, z') -{ 3 }→ if(eq(x2, y2), 2, 0) :|: z = 1 + x2, z' = 1 + (1 + y2) + 1, y2 >= 0, x2 >= 0
member(z, z') -{ 2 }→ if(eq(x2, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, z = 1 + x2, y2 >= 0, x2 >= 0
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
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
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
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
member(z, z') -{ 1 }→ 0 :|: x >= 0, z' = 1, z = x
member(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
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
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
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
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
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
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
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
negate(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
negate(z) -{ 1 }→ 1 + x :|: x >= 0, z = 1 + x
sat(z) -{ 1 }→ satck(cnf, 0) :|: cnf >= 0, z = cnf
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 2 }→ satck(1 + clause' + cnf', 1 + choice(clause') + guess(cnf')) :|: clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: cnf >= 0, z' = assign, z = cnf, assign >= 0, assign = t, t >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: cnf >= 0, z' = 1, z = cnf, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: cnf >= 0, z' = 1, z = cnf, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
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
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z = 1 + l + 1, l >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
verify(z) -{ 3 }→ if(member(1 + x3, 1), 0, 2) :|: z = 1 + (1 + x3) + 1, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
verify(z) -{ 3 }→ if(member(1 + x4, 1), 0, 2) :|: x4 >= 0, z = 1 + (1 + x4) + 1
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
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
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0

(13) SimplificationProof (BOTH BOUNDS(ID, ID) transformation)

Simplified the RNTS by moving equalities from the constraints into the right-hand sides.

(14) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ choice(xs) :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 1 }→ 1 + choice(clause) + guess(cnf) :|: cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
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
member(z, z') -{ 2 }→ if(eq(z - 1, y'), 2, 0) :|: z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
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)
member(z, z') -{ 2 }→ if(eq(z - 1, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 3 }→ if(eq(z - 1, z' - 3), 2, 0) :|: z - 1 >= 0, z' - 3 >= 0
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
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
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
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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 2 }→ satck(1 + clause' + cnf', 1 + choice(clause') + guess(cnf')) :|: clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

(15) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID) transformation)

Found the following analysis order by SCC decomposition:

{ choice }
{ eq }
{ negate }
{ if }
{ guess }
{ member }
{ verify }
{ satck }
{ sat }

(16) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ choice(xs) :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 1 }→ 1 + choice(clause) + guess(cnf) :|: cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
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
member(z, z') -{ 2 }→ if(eq(z - 1, y'), 2, 0) :|: z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
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)
member(z, z') -{ 2 }→ if(eq(z - 1, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 3 }→ if(eq(z - 1, z' - 3), 2, 0) :|: z - 1 >= 0, z' - 3 >= 0
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
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
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
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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 2 }→ satck(1 + clause' + cnf', 1 + choice(clause') + guess(cnf')) :|: clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {choice}, {eq}, {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat}

(17) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed SIZE bound using KoAT for: choice
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: z

(18) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ choice(xs) :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 1 }→ 1 + choice(clause) + guess(cnf) :|: cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
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
member(z, z') -{ 2 }→ if(eq(z - 1, y'), 2, 0) :|: z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
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)
member(z, z') -{ 2 }→ if(eq(z - 1, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 3 }→ if(eq(z - 1, z' - 3), 2, 0) :|: z - 1 >= 0, z' - 3 >= 0
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
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
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
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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 2 }→ satck(1 + clause' + cnf', 1 + choice(clause') + guess(cnf')) :|: clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {choice}, {eq}, {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: ?, size: O(n1) [z]

(19) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed RUNTIME bound using KoAT for: choice
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: 1 + z

(20) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ choice(xs) :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 1 }→ 1 + choice(clause) + guess(cnf) :|: cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
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
member(z, z') -{ 2 }→ if(eq(z - 1, y'), 2, 0) :|: z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
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)
member(z, z') -{ 2 }→ if(eq(z - 1, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 3 }→ if(eq(z - 1, z' - 3), 2, 0) :|: z - 1 >= 0, z' - 3 >= 0
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
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
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
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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 2 }→ satck(1 + clause' + cnf', 1 + choice(clause') + guess(cnf')) :|: clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {eq}, {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]

(21) ResultPropagationProof (UPPER BOUND(ID) transformation)

Applied inner abstraction using the recently inferred runtime/size bounds where possible.

(22) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 2 + clause }→ 1 + s' + guess(cnf) :|: s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
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
member(z, z') -{ 2 }→ if(eq(z - 1, y'), 2, 0) :|: z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
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)
member(z, z') -{ 2 }→ if(eq(z - 1, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 3 }→ if(eq(z - 1, z' - 3), 2, 0) :|: z - 1 >= 0, z' - 3 >= 0
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
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
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
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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 3 + clause' }→ satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {eq}, {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]

(23) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed SIZE bound using CoFloCo for: eq
after applying outer abstraction to obtain an ITS,
resulting in: O(1) with polynomial bound: 2

(24) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 2 + clause }→ 1 + s' + guess(cnf) :|: s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
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
member(z, z') -{ 2 }→ if(eq(z - 1, y'), 2, 0) :|: z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
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)
member(z, z') -{ 2 }→ if(eq(z - 1, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 3 }→ if(eq(z - 1, z' - 3), 2, 0) :|: z - 1 >= 0, z' - 3 >= 0
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
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
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
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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 3 + clause' }→ satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {eq}, {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: ?, size: O(1) [2]

(25) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed RUNTIME bound using PUBS for: eq
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: 1 + z'

(26) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 2 + clause }→ 1 + s' + guess(cnf) :|: s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
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
member(z, z') -{ 2 }→ if(eq(z - 1, y'), 2, 0) :|: z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
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)
member(z, z') -{ 2 }→ if(eq(z - 1, y2), 2, 0) :|: z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 3 }→ if(eq(z - 1, z' - 3), 2, 0) :|: z - 1 >= 0, z' - 3 >= 0
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
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
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
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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 3 + clause' }→ satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]

(27) ResultPropagationProof (UPPER BOUND(ID) transformation)

Applied inner abstraction using the recently inferred runtime/size bounds where possible.

(28) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 2 + clause }→ 1 + s' + guess(cnf) :|: s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 + y2 }→ if(s11, 2, 0) :|: s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 1 + z' }→ if(s3, 2, 0) :|: s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 5 + 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
member(z, z') -{ 3 + y' }→ if(s6, 2, 0) :|: s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 5 + 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)
member(z, z') -{ 4 + 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
member(z, z') -{ 3 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 3 + clause' }→ satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]

(29) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed SIZE bound using CoFloCo for: negate
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: z

(30) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 2 + clause }→ 1 + s' + guess(cnf) :|: s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 + y2 }→ if(s11, 2, 0) :|: s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 1 + z' }→ if(s3, 2, 0) :|: s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 5 + 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
member(z, z') -{ 3 + y' }→ if(s6, 2, 0) :|: s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 5 + 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)
member(z, z') -{ 4 + 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
member(z, z') -{ 3 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 3 + clause' }→ satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {negate}, {if}, {guess}, {member}, {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: ?, size: O(n1) [z]

(31) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed RUNTIME bound using CoFloCo for: negate
after applying outer abstraction to obtain an ITS,
resulting in: O(1) with polynomial bound: 1

(32) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 2 + clause }→ 1 + s' + guess(cnf) :|: s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 + y2 }→ if(s11, 2, 0) :|: s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 1 + z' }→ if(s3, 2, 0) :|: s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 5 + 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
member(z, z') -{ 3 + y' }→ if(s6, 2, 0) :|: s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 5 + 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)
member(z, z') -{ 4 + 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
member(z, z') -{ 3 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 3 + clause' }→ satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {if}, {guess}, {member}, {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]

(33) ResultPropagationProof (UPPER BOUND(ID) transformation)

Applied inner abstraction using the recently inferred runtime/size bounds where possible.

(34) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 2 + clause }→ 1 + s' + guess(cnf) :|: s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 + y2 }→ if(s11, 2, 0) :|: s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 1 + z' }→ if(s3, 2, 0) :|: s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 5 + 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
member(z, z') -{ 3 + y' }→ if(s6, 2, 0) :|: s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 5 + 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)
member(z, z') -{ 4 + 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
member(z, z') -{ 3 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 3 + clause' }→ satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {if}, {guess}, {member}, {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]

(35) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed SIZE bound using CoFloCo for: if
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: z' + z''

(36) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 2 + clause }→ 1 + s' + guess(cnf) :|: s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 + y2 }→ if(s11, 2, 0) :|: s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 1 + z' }→ if(s3, 2, 0) :|: s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 5 + 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
member(z, z') -{ 3 + y' }→ if(s6, 2, 0) :|: s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 5 + 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)
member(z, z') -{ 4 + 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
member(z, z') -{ 3 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 3 + clause' }→ satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {if}, {guess}, {member}, {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: ?, size: O(n1) [z' + z'']

(37) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed RUNTIME bound using CoFloCo for: if
after applying outer abstraction to obtain an ITS,
resulting in: O(1) with polynomial bound: 1

(38) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 2 + clause }→ 1 + s' + guess(cnf) :|: s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 + y2 }→ if(s11, 2, 0) :|: s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 1 + z' }→ if(s3, 2, 0) :|: s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 5 + 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
member(z, z') -{ 3 + y' }→ if(s6, 2, 0) :|: s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 5 + 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)
member(z, z') -{ 4 + 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
member(z, z') -{ 3 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 3 + clause' }→ satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {guess}, {member}, {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: O(1) [1], size: O(n1) [z' + z'']

(39) ResultPropagationProof (UPPER BOUND(ID) transformation)

Applied inner abstraction using the recently inferred runtime/size bounds where possible.

(40) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 2 + clause }→ 1 + s' + guess(cnf) :|: s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 2 + z' }→ s13 :|: s13 >= 0, s13 <= 1 * 0 + 1 * 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 4 + y' }→ s14 :|: s14 >= 0, s14 <= 1 * 0 + 1 * 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 4 + y2 }→ s15 :|: s15 >= 0, s15 <= 1 * 0 + 1 * 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 5 + 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
member(z, z') -{ 5 + 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)
member(z, z') -{ 4 + 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
member(z, z') -{ 3 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 3 + clause' }→ satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {guess}, {member}, {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: O(1) [1], size: O(n1) [z' + z'']

(41) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed SIZE bound using KoAT for: guess
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: z

(42) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 2 + clause }→ 1 + s' + guess(cnf) :|: s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 2 + z' }→ s13 :|: s13 >= 0, s13 <= 1 * 0 + 1 * 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 4 + y' }→ s14 :|: s14 >= 0, s14 <= 1 * 0 + 1 * 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 4 + y2 }→ s15 :|: s15 >= 0, s15 <= 1 * 0 + 1 * 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 5 + 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
member(z, z') -{ 5 + 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)
member(z, z') -{ 4 + 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
member(z, z') -{ 3 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 3 + clause' }→ satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {guess}, {member}, {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: O(1) [1], size: O(n1) [z' + z'']
guess: runtime: ?, size: O(n1) [z]

(43) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed RUNTIME bound using CoFloCo for: guess
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: 3 + 2·z

(44) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 2 + clause }→ 1 + s' + guess(cnf) :|: s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 2 + z' }→ s13 :|: s13 >= 0, s13 <= 1 * 0 + 1 * 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 4 + y' }→ s14 :|: s14 >= 0, s14 <= 1 * 0 + 1 * 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 4 + y2 }→ s15 :|: s15 >= 0, s15 <= 1 * 0 + 1 * 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 5 + 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
member(z, z') -{ 5 + 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)
member(z, z') -{ 4 + 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
member(z, z') -{ 3 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 3 + clause' }→ satck(1 + clause' + cnf', 1 + s'' + guess(cnf')) :|: s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {member}, {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: O(1) [1], size: O(n1) [z' + z'']
guess: runtime: O(n1) [3 + 2·z], size: O(n1) [z]

(45) ResultPropagationProof (UPPER BOUND(ID) transformation)

Applied inner abstraction using the recently inferred runtime/size bounds where possible.

(46) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 5 + clause + 2·cnf }→ 1 + s' + s16 :|: s16 >= 0, s16 <= 1 * cnf, s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 2 + z' }→ s13 :|: s13 >= 0, s13 <= 1 * 0 + 1 * 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 4 + y' }→ s14 :|: s14 >= 0, s14 <= 1 * 0 + 1 * 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 4 + y2 }→ s15 :|: s15 >= 0, s15 <= 1 * 0 + 1 * 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 5 + 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
member(z, z') -{ 5 + 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)
member(z, z') -{ 4 + 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
member(z, z') -{ 3 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 6 + clause' + 2·cnf' }→ satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= 1 * cnf', s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {member}, {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: O(1) [1], size: O(n1) [z' + z'']
guess: runtime: O(n1) [3 + 2·z], size: O(n1) [z]

(47) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed SIZE bound using KoAT for: member
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: 2·z'

(48) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 5 + clause + 2·cnf }→ 1 + s' + s16 :|: s16 >= 0, s16 <= 1 * cnf, s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 2 + z' }→ s13 :|: s13 >= 0, s13 <= 1 * 0 + 1 * 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 4 + y' }→ s14 :|: s14 >= 0, s14 <= 1 * 0 + 1 * 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 4 + y2 }→ s15 :|: s15 >= 0, s15 <= 1 * 0 + 1 * 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 5 + 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
member(z, z') -{ 5 + 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)
member(z, z') -{ 4 + 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
member(z, z') -{ 3 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 6 + clause' + 2·cnf' }→ satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= 1 * cnf', s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {member}, {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: O(1) [1], size: O(n1) [z' + z'']
guess: runtime: O(n1) [3 + 2·z], size: O(n1) [z]
member: runtime: ?, size: O(n1) [2·z']

(49) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed RUNTIME bound using CoFloCo for: member
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: 31 + 16·z'

(50) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 5 + clause + 2·cnf }→ 1 + s' + s16 :|: s16 >= 0, s16 <= 1 * cnf, s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 2 + z' }→ s13 :|: s13 >= 0, s13 <= 1 * 0 + 1 * 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 4 + y' }→ s14 :|: s14 >= 0, s14 <= 1 * 0 + 1 * 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 4 + y2 }→ s15 :|: s15 >= 0, s15 <= 1 * 0 + 1 * 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 5 + 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
member(z, z') -{ 5 + 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)
member(z, z') -{ 4 + 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
member(z, z') -{ 3 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 4 + 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
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 6 + clause' + 2·cnf' }→ satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= 1 * cnf', s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
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
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
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 1 }→ if(member(0, ls), 0, 0) :|: l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 2 }→ if(member(0, 1), 0, 2) :|: z - 2 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x3, ls), 0, 0) :|: z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
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
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
verify(z) -{ 2 }→ if(member(1 + x4, ls), 0, 0) :|: x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
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
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
verify(z) -{ 3 }→ if(member(1 + (z - 3), 1), 0, 2) :|: z - 3 >= 0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: O(1) [1], size: O(n1) [z' + z'']
guess: runtime: O(n1) [3 + 2·z], size: O(n1) [z]
member: runtime: O(n1) [31 + 16·z'], size: O(n1) [2·z']

(51) ResultPropagationProof (UPPER BOUND(ID) transformation)

Applied inner abstraction using the recently inferred runtime/size bounds where possible.

(52) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 5 + clause + 2·cnf }→ 1 + s' + s16 :|: s16 >= 0, s16 <= 1 * cnf, s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 2 + z' }→ s13 :|: s13 >= 0, s13 <= 1 * 0 + 1 * 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 4 + y' }→ s14 :|: s14 >= 0, s14 <= 1 * 0 + 1 * 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 4 + y2 }→ s15 :|: s15 >= 0, s15 <= 1 * 0 + 1 * 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 37 + y3 + 16·ys' }→ s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= 1 * s18 + 1 * 2, s20 >= 0, s20 <= 1 * s19 + 1 * 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0
member(z, z') -{ 38 + y' + y4 + 16·ys'' }→ s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= 1 * s21 + 1 * 2, s23 >= 0, s23 <= 1 * s22 + 1 * 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
member(z, z') -{ 37 + y5 + 16·ys1 }→ s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= 1 * s24 + 1 * 2, s26 >= 0, s26 <= 1 * s25 + 1 * 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0
member(z, z') -{ 37 + y6 + 16·ys2 }→ s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= 1 * s27 + 1 * 2, s29 >= 0, s29 <= 1 * s28 + 1 * 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0
member(z, z') -{ 38 + y2 + y7 + 16·ys3 }→ s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= 1 * s30 + 1 * 2, s32 >= 0, s32 <= 1 * s31 + 1 * 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)
member(z, z') -{ 36 + y8 + 16·ys4 }→ s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= 1 * s33 + 1 * 2, s35 >= 0, s35 <= 1 * s34 + 1 * 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 6 + clause' + 2·cnf' }→ satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= 1 * cnf', s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
satck(z, z') -{ 34 + 16·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, x >= 0, l2 = 1 + x
satck(z, z') -{ 33 + 16·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, v0 >= 0, l2 = v0
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 51 }→ s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 1 * 2 + 1 * 0, z - 3 >= 0
verify(z) -{ 34 + 16·ls }→ s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 1 * 0 + 1 * 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
verify(z) -{ 34 + 16·ls }→ s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 1 * 0 + 1 * 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
verify(z) -{ 50 }→ s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 1 * 2 + 1 * 0, z - 2 >= 0
verify(z) -{ 33 + 16·ls }→ s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 1 * 0 + 1 * 0, l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 82 + 16·l' + 32·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, x >= 0, l' = 1 + x
verify(z) -{ 81 + 16·l' + 32·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, v0 >= 0, l' = v0
verify(z) -{ 82 + 16·l'' + 32·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, x >= 0, l'' = 1 + x
verify(z) -{ 81 + 16·l'' + 32·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, v0 >= 0, l'' = v0
verify(z) -{ 81 + 16·l1 + 32·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, x >= 0, l1 = 1 + x
verify(z) -{ 80 + 16·l1 + 32·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, v0 >= 0, l1 = v0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: O(1) [1], size: O(n1) [z' + z'']
guess: runtime: O(n1) [3 + 2·z], size: O(n1) [z]
member: runtime: O(n1) [31 + 16·z'], size: O(n1) [2·z']

(53) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed SIZE bound using CoFloCo for: verify
after applying outer abstraction to obtain an ITS,
resulting in: O(1) with polynomial bound: 2

(54) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 5 + clause + 2·cnf }→ 1 + s' + s16 :|: s16 >= 0, s16 <= 1 * cnf, s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 2 + z' }→ s13 :|: s13 >= 0, s13 <= 1 * 0 + 1 * 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 4 + y' }→ s14 :|: s14 >= 0, s14 <= 1 * 0 + 1 * 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 4 + y2 }→ s15 :|: s15 >= 0, s15 <= 1 * 0 + 1 * 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 37 + y3 + 16·ys' }→ s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= 1 * s18 + 1 * 2, s20 >= 0, s20 <= 1 * s19 + 1 * 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0
member(z, z') -{ 38 + y' + y4 + 16·ys'' }→ s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= 1 * s21 + 1 * 2, s23 >= 0, s23 <= 1 * s22 + 1 * 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
member(z, z') -{ 37 + y5 + 16·ys1 }→ s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= 1 * s24 + 1 * 2, s26 >= 0, s26 <= 1 * s25 + 1 * 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0
member(z, z') -{ 37 + y6 + 16·ys2 }→ s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= 1 * s27 + 1 * 2, s29 >= 0, s29 <= 1 * s28 + 1 * 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0
member(z, z') -{ 38 + y2 + y7 + 16·ys3 }→ s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= 1 * s30 + 1 * 2, s32 >= 0, s32 <= 1 * s31 + 1 * 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)
member(z, z') -{ 36 + y8 + 16·ys4 }→ s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= 1 * s33 + 1 * 2, s35 >= 0, s35 <= 1 * s34 + 1 * 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 6 + clause' + 2·cnf' }→ satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= 1 * cnf', s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
satck(z, z') -{ 34 + 16·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, x >= 0, l2 = 1 + x
satck(z, z') -{ 33 + 16·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, v0 >= 0, l2 = v0
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 51 }→ s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 1 * 2 + 1 * 0, z - 3 >= 0
verify(z) -{ 34 + 16·ls }→ s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 1 * 0 + 1 * 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
verify(z) -{ 34 + 16·ls }→ s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 1 * 0 + 1 * 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
verify(z) -{ 50 }→ s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 1 * 2 + 1 * 0, z - 2 >= 0
verify(z) -{ 33 + 16·ls }→ s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 1 * 0 + 1 * 0, l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 82 + 16·l' + 32·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, x >= 0, l' = 1 + x
verify(z) -{ 81 + 16·l' + 32·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, v0 >= 0, l' = v0
verify(z) -{ 82 + 16·l'' + 32·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, x >= 0, l'' = 1 + x
verify(z) -{ 81 + 16·l'' + 32·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, v0 >= 0, l'' = v0
verify(z) -{ 81 + 16·l1 + 32·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, x >= 0, l1 = 1 + x
verify(z) -{ 80 + 16·l1 + 32·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, v0 >= 0, l1 = v0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {verify}, {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: O(1) [1], size: O(n1) [z' + z'']
guess: runtime: O(n1) [3 + 2·z], size: O(n1) [z]
member: runtime: O(n1) [31 + 16·z'], size: O(n1) [2·z']
verify: runtime: ?, size: O(1) [2]

(55) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed RUNTIME bound using CoFloCo for: verify
after applying outer abstraction to obtain an ITS,
resulting in: O(n2) with polynomial bound: 282 + 262·z + 64·z2

(56) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 5 + clause + 2·cnf }→ 1 + s' + s16 :|: s16 >= 0, s16 <= 1 * cnf, s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 2 + z' }→ s13 :|: s13 >= 0, s13 <= 1 * 0 + 1 * 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 4 + y' }→ s14 :|: s14 >= 0, s14 <= 1 * 0 + 1 * 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 4 + y2 }→ s15 :|: s15 >= 0, s15 <= 1 * 0 + 1 * 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 37 + y3 + 16·ys' }→ s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= 1 * s18 + 1 * 2, s20 >= 0, s20 <= 1 * s19 + 1 * 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0
member(z, z') -{ 38 + y' + y4 + 16·ys'' }→ s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= 1 * s21 + 1 * 2, s23 >= 0, s23 <= 1 * s22 + 1 * 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
member(z, z') -{ 37 + y5 + 16·ys1 }→ s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= 1 * s24 + 1 * 2, s26 >= 0, s26 <= 1 * s25 + 1 * 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0
member(z, z') -{ 37 + y6 + 16·ys2 }→ s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= 1 * s27 + 1 * 2, s29 >= 0, s29 <= 1 * s28 + 1 * 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0
member(z, z') -{ 38 + y2 + y7 + 16·ys3 }→ s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= 1 * s30 + 1 * 2, s32 >= 0, s32 <= 1 * s31 + 1 * 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)
member(z, z') -{ 36 + y8 + 16·ys4 }→ s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= 1 * s33 + 1 * 2, s35 >= 0, s35 <= 1 * s34 + 1 * 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 6 + clause' + 2·cnf' }→ satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= 1 * cnf', s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
satck(z, z') -{ 34 + 16·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, x >= 0, l2 = 1 + x
satck(z, z') -{ 33 + 16·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, v0 >= 0, l2 = v0
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 51 }→ s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 1 * 2 + 1 * 0, z - 3 >= 0
verify(z) -{ 34 + 16·ls }→ s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 1 * 0 + 1 * 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
verify(z) -{ 34 + 16·ls }→ s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 1 * 0 + 1 * 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
verify(z) -{ 50 }→ s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 1 * 2 + 1 * 0, z - 2 >= 0
verify(z) -{ 33 + 16·ls }→ s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 1 * 0 + 1 * 0, l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 82 + 16·l' + 32·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, x >= 0, l' = 1 + x
verify(z) -{ 81 + 16·l' + 32·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, v0 >= 0, l' = v0
verify(z) -{ 82 + 16·l'' + 32·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, x >= 0, l'' = 1 + x
verify(z) -{ 81 + 16·l'' + 32·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, v0 >= 0, l'' = v0
verify(z) -{ 81 + 16·l1 + 32·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, x >= 0, l1 = 1 + x
verify(z) -{ 80 + 16·l1 + 32·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, v0 >= 0, l1 = v0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: O(1) [1], size: O(n1) [z' + z'']
guess: runtime: O(n1) [3 + 2·z], size: O(n1) [z]
member: runtime: O(n1) [31 + 16·z'], size: O(n1) [2·z']
verify: runtime: O(n2) [282 + 262·z + 64·z2], size: O(1) [2]

(57) ResultPropagationProof (UPPER BOUND(ID) transformation)

Applied inner abstraction using the recently inferred runtime/size bounds where possible.

(58) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 5 + clause + 2·cnf }→ 1 + s' + s16 :|: s16 >= 0, s16 <= 1 * cnf, s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 2 + z' }→ s13 :|: s13 >= 0, s13 <= 1 * 0 + 1 * 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 4 + y' }→ s14 :|: s14 >= 0, s14 <= 1 * 0 + 1 * 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 4 + y2 }→ s15 :|: s15 >= 0, s15 <= 1 * 0 + 1 * 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 37 + y3 + 16·ys' }→ s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= 1 * s18 + 1 * 2, s20 >= 0, s20 <= 1 * s19 + 1 * 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0
member(z, z') -{ 38 + y' + y4 + 16·ys'' }→ s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= 1 * s21 + 1 * 2, s23 >= 0, s23 <= 1 * s22 + 1 * 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
member(z, z') -{ 37 + y5 + 16·ys1 }→ s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= 1 * s24 + 1 * 2, s26 >= 0, s26 <= 1 * s25 + 1 * 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0
member(z, z') -{ 37 + y6 + 16·ys2 }→ s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= 1 * s27 + 1 * 2, s29 >= 0, s29 <= 1 * s28 + 1 * 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0
member(z, z') -{ 38 + y2 + y7 + 16·ys3 }→ s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= 1 * s30 + 1 * 2, s32 >= 0, s32 <= 1 * s31 + 1 * 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)
member(z, z') -{ 36 + y8 + 16·ys4 }→ s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= 1 * s33 + 1 * 2, s35 >= 0, s35 <= 1 * s34 + 1 * 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 6 + clause' + 2·cnf' }→ satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= 1 * cnf', s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 318 + 278·ls2 + 64·ls22 }→ s80 :|: s78 >= 0, s78 <= 2, s79 >= 0, s79 <= 1 * s78 + 1 * 0, s80 >= 0, s80 <= 1 * 3 + 1 * (1 + l2 + ls2), s58 >= 0, s58 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x
satck(z, z') -{ 317 + 278·ls2 + 64·ls22 }→ s83 :|: s81 >= 0, s81 <= 2, s82 >= 0, s82 <= 1 * s81 + 1 * 0, s83 >= 0, s83 <= 1 * 3 + 1 * (1 + l2 + ls2), s59 >= 0, s59 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 51 }→ s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 1 * 2 + 1 * 0, z - 3 >= 0
verify(z) -{ 34 + 16·ls }→ s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 1 * 0 + 1 * 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
verify(z) -{ 34 + 16·ls }→ s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 1 * 0 + 1 * 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
verify(z) -{ 50 }→ s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 1 * 2 + 1 * 0, z - 2 >= 0
verify(z) -{ 33 + 16·ls }→ s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 1 * 0 + 1 * 0, l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 366 + 16·l' + 294·ls' + 64·ls'2 }→ s62 :|: s60 >= 0, s60 <= 2, s61 >= 0, s61 <= 1 * s60 + 1 * 0, s62 >= 0, s62 <= 1 * s61 + 1 * 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, x >= 0, l' = 1 + x
verify(z) -{ 365 + 16·l' + 294·ls' + 64·ls'2 }→ s65 :|: s63 >= 0, s63 <= 2, s64 >= 0, s64 <= 1 * s63 + 1 * 0, s65 >= 0, s65 <= 1 * s64 + 1 * 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, v0 >= 0, l' = v0
verify(z) -{ 366 + 16·l'' + 294·ls'' + 64·ls''2 }→ s68 :|: s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 1 * s66 + 1 * 0, s68 >= 0, s68 <= 1 * s67 + 1 * 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, x >= 0, l'' = 1 + x
verify(z) -{ 365 + 16·l'' + 294·ls'' + 64·ls''2 }→ s71 :|: s69 >= 0, s69 <= 2, s70 >= 0, s70 <= 1 * s69 + 1 * 0, s71 >= 0, s71 <= 1 * s70 + 1 * 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, v0 >= 0, l'' = v0
verify(z) -{ 365 + 16·l1 + 294·ls1 + 64·ls12 }→ s74 :|: s72 >= 0, s72 <= 2, s73 >= 0, s73 <= 1 * s72 + 1 * 0, s74 >= 0, s74 <= 1 * s73 + 1 * 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, x >= 0, l1 = 1 + x
verify(z) -{ 364 + 16·l1 + 294·ls1 + 64·ls12 }→ s77 :|: s75 >= 0, s75 <= 2, s76 >= 0, s76 <= 1 * s75 + 1 * 0, s77 >= 0, s77 <= 1 * s76 + 1 * 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, v0 >= 0, l1 = v0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: O(1) [1], size: O(n1) [z' + z'']
guess: runtime: O(n1) [3 + 2·z], size: O(n1) [z]
member: runtime: O(n1) [31 + 16·z'], size: O(n1) [2·z']
verify: runtime: O(n2) [282 + 262·z + 64·z2], size: O(1) [2]

(59) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed SIZE bound using CoFloCo for: satck
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: 3 + z'

(60) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 5 + clause + 2·cnf }→ 1 + s' + s16 :|: s16 >= 0, s16 <= 1 * cnf, s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 2 + z' }→ s13 :|: s13 >= 0, s13 <= 1 * 0 + 1 * 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 4 + y' }→ s14 :|: s14 >= 0, s14 <= 1 * 0 + 1 * 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 4 + y2 }→ s15 :|: s15 >= 0, s15 <= 1 * 0 + 1 * 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 37 + y3 + 16·ys' }→ s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= 1 * s18 + 1 * 2, s20 >= 0, s20 <= 1 * s19 + 1 * 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0
member(z, z') -{ 38 + y' + y4 + 16·ys'' }→ s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= 1 * s21 + 1 * 2, s23 >= 0, s23 <= 1 * s22 + 1 * 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
member(z, z') -{ 37 + y5 + 16·ys1 }→ s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= 1 * s24 + 1 * 2, s26 >= 0, s26 <= 1 * s25 + 1 * 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0
member(z, z') -{ 37 + y6 + 16·ys2 }→ s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= 1 * s27 + 1 * 2, s29 >= 0, s29 <= 1 * s28 + 1 * 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0
member(z, z') -{ 38 + y2 + y7 + 16·ys3 }→ s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= 1 * s30 + 1 * 2, s32 >= 0, s32 <= 1 * s31 + 1 * 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)
member(z, z') -{ 36 + y8 + 16·ys4 }→ s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= 1 * s33 + 1 * 2, s35 >= 0, s35 <= 1 * s34 + 1 * 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 6 + clause' + 2·cnf' }→ satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= 1 * cnf', s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 318 + 278·ls2 + 64·ls22 }→ s80 :|: s78 >= 0, s78 <= 2, s79 >= 0, s79 <= 1 * s78 + 1 * 0, s80 >= 0, s80 <= 1 * 3 + 1 * (1 + l2 + ls2), s58 >= 0, s58 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x
satck(z, z') -{ 317 + 278·ls2 + 64·ls22 }→ s83 :|: s81 >= 0, s81 <= 2, s82 >= 0, s82 <= 1 * s81 + 1 * 0, s83 >= 0, s83 <= 1 * 3 + 1 * (1 + l2 + ls2), s59 >= 0, s59 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 51 }→ s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 1 * 2 + 1 * 0, z - 3 >= 0
verify(z) -{ 34 + 16·ls }→ s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 1 * 0 + 1 * 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
verify(z) -{ 34 + 16·ls }→ s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 1 * 0 + 1 * 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
verify(z) -{ 50 }→ s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 1 * 2 + 1 * 0, z - 2 >= 0
verify(z) -{ 33 + 16·ls }→ s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 1 * 0 + 1 * 0, l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 366 + 16·l' + 294·ls' + 64·ls'2 }→ s62 :|: s60 >= 0, s60 <= 2, s61 >= 0, s61 <= 1 * s60 + 1 * 0, s62 >= 0, s62 <= 1 * s61 + 1 * 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, x >= 0, l' = 1 + x
verify(z) -{ 365 + 16·l' + 294·ls' + 64·ls'2 }→ s65 :|: s63 >= 0, s63 <= 2, s64 >= 0, s64 <= 1 * s63 + 1 * 0, s65 >= 0, s65 <= 1 * s64 + 1 * 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, v0 >= 0, l' = v0
verify(z) -{ 366 + 16·l'' + 294·ls'' + 64·ls''2 }→ s68 :|: s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 1 * s66 + 1 * 0, s68 >= 0, s68 <= 1 * s67 + 1 * 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, x >= 0, l'' = 1 + x
verify(z) -{ 365 + 16·l'' + 294·ls'' + 64·ls''2 }→ s71 :|: s69 >= 0, s69 <= 2, s70 >= 0, s70 <= 1 * s69 + 1 * 0, s71 >= 0, s71 <= 1 * s70 + 1 * 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, v0 >= 0, l'' = v0
verify(z) -{ 365 + 16·l1 + 294·ls1 + 64·ls12 }→ s74 :|: s72 >= 0, s72 <= 2, s73 >= 0, s73 <= 1 * s72 + 1 * 0, s74 >= 0, s74 <= 1 * s73 + 1 * 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, x >= 0, l1 = 1 + x
verify(z) -{ 364 + 16·l1 + 294·ls1 + 64·ls12 }→ s77 :|: s75 >= 0, s75 <= 2, s76 >= 0, s76 <= 1 * s75 + 1 * 0, s77 >= 0, s77 <= 1 * s76 + 1 * 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, v0 >= 0, l1 = v0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {satck}, {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: O(1) [1], size: O(n1) [z' + z'']
guess: runtime: O(n1) [3 + 2·z], size: O(n1) [z]
member: runtime: O(n1) [31 + 16·z'], size: O(n1) [2·z']
verify: runtime: O(n2) [282 + 262·z + 64·z2], size: O(1) [2]
satck: runtime: ?, size: O(n1) [3 + z']

(61) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed RUNTIME bound using KoAT for: satck
after applying outer abstraction to obtain an ITS,
resulting in: O(n2) with polynomial bound: 643 + 556·z' + 128·z'2

(62) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 5 + clause + 2·cnf }→ 1 + s' + s16 :|: s16 >= 0, s16 <= 1 * cnf, s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 2 + z' }→ s13 :|: s13 >= 0, s13 <= 1 * 0 + 1 * 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 4 + y' }→ s14 :|: s14 >= 0, s14 <= 1 * 0 + 1 * 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 4 + y2 }→ s15 :|: s15 >= 0, s15 <= 1 * 0 + 1 * 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 37 + y3 + 16·ys' }→ s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= 1 * s18 + 1 * 2, s20 >= 0, s20 <= 1 * s19 + 1 * 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0
member(z, z') -{ 38 + y' + y4 + 16·ys'' }→ s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= 1 * s21 + 1 * 2, s23 >= 0, s23 <= 1 * s22 + 1 * 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
member(z, z') -{ 37 + y5 + 16·ys1 }→ s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= 1 * s24 + 1 * 2, s26 >= 0, s26 <= 1 * s25 + 1 * 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0
member(z, z') -{ 37 + y6 + 16·ys2 }→ s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= 1 * s27 + 1 * 2, s29 >= 0, s29 <= 1 * s28 + 1 * 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0
member(z, z') -{ 38 + y2 + y7 + 16·ys3 }→ s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= 1 * s30 + 1 * 2, s32 >= 0, s32 <= 1 * s31 + 1 * 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)
member(z, z') -{ 36 + y8 + 16·ys4 }→ s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= 1 * s33 + 1 * 2, s35 >= 0, s35 <= 1 * s34 + 1 * 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1 }→ satck(z, 0) :|: z >= 0
sat(z) -{ 2 }→ satck(1, 1) :|: z = 1
sat(z) -{ 6 + clause' + 2·cnf' }→ satck(1 + clause' + cnf', 1 + s'' + s17) :|: s17 >= 0, s17 <= 1 * cnf', s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 318 + 278·ls2 + 64·ls22 }→ s80 :|: s78 >= 0, s78 <= 2, s79 >= 0, s79 <= 1 * s78 + 1 * 0, s80 >= 0, s80 <= 1 * 3 + 1 * (1 + l2 + ls2), s58 >= 0, s58 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x
satck(z, z') -{ 317 + 278·ls2 + 64·ls22 }→ s83 :|: s81 >= 0, s81 <= 2, s82 >= 0, s82 <= 1 * s81 + 1 * 0, s83 >= 0, s83 <= 1 * 3 + 1 * (1 + l2 + ls2), s59 >= 0, s59 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 51 }→ s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 1 * 2 + 1 * 0, z - 3 >= 0
verify(z) -{ 34 + 16·ls }→ s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 1 * 0 + 1 * 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
verify(z) -{ 34 + 16·ls }→ s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 1 * 0 + 1 * 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
verify(z) -{ 50 }→ s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 1 * 2 + 1 * 0, z - 2 >= 0
verify(z) -{ 33 + 16·ls }→ s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 1 * 0 + 1 * 0, l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 366 + 16·l' + 294·ls' + 64·ls'2 }→ s62 :|: s60 >= 0, s60 <= 2, s61 >= 0, s61 <= 1 * s60 + 1 * 0, s62 >= 0, s62 <= 1 * s61 + 1 * 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, x >= 0, l' = 1 + x
verify(z) -{ 365 + 16·l' + 294·ls' + 64·ls'2 }→ s65 :|: s63 >= 0, s63 <= 2, s64 >= 0, s64 <= 1 * s63 + 1 * 0, s65 >= 0, s65 <= 1 * s64 + 1 * 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, v0 >= 0, l' = v0
verify(z) -{ 366 + 16·l'' + 294·ls'' + 64·ls''2 }→ s68 :|: s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 1 * s66 + 1 * 0, s68 >= 0, s68 <= 1 * s67 + 1 * 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, x >= 0, l'' = 1 + x
verify(z) -{ 365 + 16·l'' + 294·ls'' + 64·ls''2 }→ s71 :|: s69 >= 0, s69 <= 2, s70 >= 0, s70 <= 1 * s69 + 1 * 0, s71 >= 0, s71 <= 1 * s70 + 1 * 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, v0 >= 0, l'' = v0
verify(z) -{ 365 + 16·l1 + 294·ls1 + 64·ls12 }→ s74 :|: s72 >= 0, s72 <= 2, s73 >= 0, s73 <= 1 * s72 + 1 * 0, s74 >= 0, s74 <= 1 * s73 + 1 * 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, x >= 0, l1 = 1 + x
verify(z) -{ 364 + 16·l1 + 294·ls1 + 64·ls12 }→ s77 :|: s75 >= 0, s75 <= 2, s76 >= 0, s76 <= 1 * s75 + 1 * 0, s77 >= 0, s77 <= 1 * s76 + 1 * 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, v0 >= 0, l1 = v0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: O(1) [1], size: O(n1) [z' + z'']
guess: runtime: O(n1) [3 + 2·z], size: O(n1) [z]
member: runtime: O(n1) [31 + 16·z'], size: O(n1) [2·z']
verify: runtime: O(n2) [282 + 262·z + 64·z2], size: O(1) [2]
satck: runtime: O(n2) [643 + 556·z' + 128·z'2], size: O(n1) [3 + z']

(63) ResultPropagationProof (UPPER BOUND(ID) transformation)

Applied inner abstraction using the recently inferred runtime/size bounds where possible.

(64) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 5 + clause + 2·cnf }→ 1 + s' + s16 :|: s16 >= 0, s16 <= 1 * cnf, s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 2 + z' }→ s13 :|: s13 >= 0, s13 <= 1 * 0 + 1 * 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 4 + y' }→ s14 :|: s14 >= 0, s14 <= 1 * 0 + 1 * 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 4 + y2 }→ s15 :|: s15 >= 0, s15 <= 1 * 0 + 1 * 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 37 + y3 + 16·ys' }→ s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= 1 * s18 + 1 * 2, s20 >= 0, s20 <= 1 * s19 + 1 * 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0
member(z, z') -{ 38 + y' + y4 + 16·ys'' }→ s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= 1 * s21 + 1 * 2, s23 >= 0, s23 <= 1 * s22 + 1 * 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
member(z, z') -{ 37 + y5 + 16·ys1 }→ s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= 1 * s24 + 1 * 2, s26 >= 0, s26 <= 1 * s25 + 1 * 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0
member(z, z') -{ 37 + y6 + 16·ys2 }→ s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= 1 * s27 + 1 * 2, s29 >= 0, s29 <= 1 * s28 + 1 * 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0
member(z, z') -{ 38 + y2 + y7 + 16·ys3 }→ s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= 1 * s30 + 1 * 2, s32 >= 0, s32 <= 1 * s31 + 1 * 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)
member(z, z') -{ 36 + y8 + 16·ys4 }→ s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= 1 * s33 + 1 * 2, s35 >= 0, s35 <= 1 * s34 + 1 * 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1329 }→ s84 :|: s84 >= 0, s84 <= 1 * 1 + 3, z = 1
sat(z) -{ 1333 + clause' + 2·cnf' + 812·s'' + 256·s''·s17 + 128·s''2 + 812·s17 + 128·s172 }→ s85 :|: s85 >= 0, s85 <= 1 * (1 + s'' + s17) + 3, s17 >= 0, s17 <= 1 * cnf', s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
sat(z) -{ 644 }→ s86 :|: s86 >= 0, s86 <= 1 * 0 + 3, z >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 318 + 278·ls2 + 64·ls22 }→ s80 :|: s78 >= 0, s78 <= 2, s79 >= 0, s79 <= 1 * s78 + 1 * 0, s80 >= 0, s80 <= 1 * 3 + 1 * (1 + l2 + ls2), s58 >= 0, s58 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x
satck(z, z') -{ 317 + 278·ls2 + 64·ls22 }→ s83 :|: s81 >= 0, s81 <= 2, s82 >= 0, s82 <= 1 * s81 + 1 * 0, s83 >= 0, s83 <= 1 * 3 + 1 * (1 + l2 + ls2), s59 >= 0, s59 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 51 }→ s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 1 * 2 + 1 * 0, z - 3 >= 0
verify(z) -{ 34 + 16·ls }→ s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 1 * 0 + 1 * 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
verify(z) -{ 34 + 16·ls }→ s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 1 * 0 + 1 * 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
verify(z) -{ 50 }→ s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 1 * 2 + 1 * 0, z - 2 >= 0
verify(z) -{ 33 + 16·ls }→ s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 1 * 0 + 1 * 0, l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 366 + 16·l' + 294·ls' + 64·ls'2 }→ s62 :|: s60 >= 0, s60 <= 2, s61 >= 0, s61 <= 1 * s60 + 1 * 0, s62 >= 0, s62 <= 1 * s61 + 1 * 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, x >= 0, l' = 1 + x
verify(z) -{ 365 + 16·l' + 294·ls' + 64·ls'2 }→ s65 :|: s63 >= 0, s63 <= 2, s64 >= 0, s64 <= 1 * s63 + 1 * 0, s65 >= 0, s65 <= 1 * s64 + 1 * 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, v0 >= 0, l' = v0
verify(z) -{ 366 + 16·l'' + 294·ls'' + 64·ls''2 }→ s68 :|: s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 1 * s66 + 1 * 0, s68 >= 0, s68 <= 1 * s67 + 1 * 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, x >= 0, l'' = 1 + x
verify(z) -{ 365 + 16·l'' + 294·ls'' + 64·ls''2 }→ s71 :|: s69 >= 0, s69 <= 2, s70 >= 0, s70 <= 1 * s69 + 1 * 0, s71 >= 0, s71 <= 1 * s70 + 1 * 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, v0 >= 0, l'' = v0
verify(z) -{ 365 + 16·l1 + 294·ls1 + 64·ls12 }→ s74 :|: s72 >= 0, s72 <= 2, s73 >= 0, s73 <= 1 * s72 + 1 * 0, s74 >= 0, s74 <= 1 * s73 + 1 * 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, x >= 0, l1 = 1 + x
verify(z) -{ 364 + 16·l1 + 294·ls1 + 64·ls12 }→ s77 :|: s75 >= 0, s75 <= 2, s76 >= 0, s76 <= 1 * s75 + 1 * 0, s77 >= 0, s77 <= 1 * s76 + 1 * 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, v0 >= 0, l1 = v0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: O(1) [1], size: O(n1) [z' + z'']
guess: runtime: O(n1) [3 + 2·z], size: O(n1) [z]
member: runtime: O(n1) [31 + 16·z'], size: O(n1) [2·z']
verify: runtime: O(n2) [282 + 262·z + 64·z2], size: O(1) [2]
satck: runtime: O(n2) [643 + 556·z' + 128·z'2], size: O(n1) [3 + z']

(65) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed SIZE bound using CoFloCo for: sat
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: 3 + z

(66) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 5 + clause + 2·cnf }→ 1 + s' + s16 :|: s16 >= 0, s16 <= 1 * cnf, s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 2 + z' }→ s13 :|: s13 >= 0, s13 <= 1 * 0 + 1 * 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 4 + y' }→ s14 :|: s14 >= 0, s14 <= 1 * 0 + 1 * 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 4 + y2 }→ s15 :|: s15 >= 0, s15 <= 1 * 0 + 1 * 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 37 + y3 + 16·ys' }→ s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= 1 * s18 + 1 * 2, s20 >= 0, s20 <= 1 * s19 + 1 * 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0
member(z, z') -{ 38 + y' + y4 + 16·ys'' }→ s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= 1 * s21 + 1 * 2, s23 >= 0, s23 <= 1 * s22 + 1 * 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
member(z, z') -{ 37 + y5 + 16·ys1 }→ s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= 1 * s24 + 1 * 2, s26 >= 0, s26 <= 1 * s25 + 1 * 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0
member(z, z') -{ 37 + y6 + 16·ys2 }→ s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= 1 * s27 + 1 * 2, s29 >= 0, s29 <= 1 * s28 + 1 * 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0
member(z, z') -{ 38 + y2 + y7 + 16·ys3 }→ s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= 1 * s30 + 1 * 2, s32 >= 0, s32 <= 1 * s31 + 1 * 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)
member(z, z') -{ 36 + y8 + 16·ys4 }→ s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= 1 * s33 + 1 * 2, s35 >= 0, s35 <= 1 * s34 + 1 * 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1329 }→ s84 :|: s84 >= 0, s84 <= 1 * 1 + 3, z = 1
sat(z) -{ 1333 + clause' + 2·cnf' + 812·s'' + 256·s''·s17 + 128·s''2 + 812·s17 + 128·s172 }→ s85 :|: s85 >= 0, s85 <= 1 * (1 + s'' + s17) + 3, s17 >= 0, s17 <= 1 * cnf', s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
sat(z) -{ 644 }→ s86 :|: s86 >= 0, s86 <= 1 * 0 + 3, z >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 318 + 278·ls2 + 64·ls22 }→ s80 :|: s78 >= 0, s78 <= 2, s79 >= 0, s79 <= 1 * s78 + 1 * 0, s80 >= 0, s80 <= 1 * 3 + 1 * (1 + l2 + ls2), s58 >= 0, s58 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x
satck(z, z') -{ 317 + 278·ls2 + 64·ls22 }→ s83 :|: s81 >= 0, s81 <= 2, s82 >= 0, s82 <= 1 * s81 + 1 * 0, s83 >= 0, s83 <= 1 * 3 + 1 * (1 + l2 + ls2), s59 >= 0, s59 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 51 }→ s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 1 * 2 + 1 * 0, z - 3 >= 0
verify(z) -{ 34 + 16·ls }→ s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 1 * 0 + 1 * 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
verify(z) -{ 34 + 16·ls }→ s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 1 * 0 + 1 * 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
verify(z) -{ 50 }→ s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 1 * 2 + 1 * 0, z - 2 >= 0
verify(z) -{ 33 + 16·ls }→ s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 1 * 0 + 1 * 0, l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 366 + 16·l' + 294·ls' + 64·ls'2 }→ s62 :|: s60 >= 0, s60 <= 2, s61 >= 0, s61 <= 1 * s60 + 1 * 0, s62 >= 0, s62 <= 1 * s61 + 1 * 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, x >= 0, l' = 1 + x
verify(z) -{ 365 + 16·l' + 294·ls' + 64·ls'2 }→ s65 :|: s63 >= 0, s63 <= 2, s64 >= 0, s64 <= 1 * s63 + 1 * 0, s65 >= 0, s65 <= 1 * s64 + 1 * 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, v0 >= 0, l' = v0
verify(z) -{ 366 + 16·l'' + 294·ls'' + 64·ls''2 }→ s68 :|: s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 1 * s66 + 1 * 0, s68 >= 0, s68 <= 1 * s67 + 1 * 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, x >= 0, l'' = 1 + x
verify(z) -{ 365 + 16·l'' + 294·ls'' + 64·ls''2 }→ s71 :|: s69 >= 0, s69 <= 2, s70 >= 0, s70 <= 1 * s69 + 1 * 0, s71 >= 0, s71 <= 1 * s70 + 1 * 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, v0 >= 0, l'' = v0
verify(z) -{ 365 + 16·l1 + 294·ls1 + 64·ls12 }→ s74 :|: s72 >= 0, s72 <= 2, s73 >= 0, s73 <= 1 * s72 + 1 * 0, s74 >= 0, s74 <= 1 * s73 + 1 * 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, x >= 0, l1 = 1 + x
verify(z) -{ 364 + 16·l1 + 294·ls1 + 64·ls12 }→ s77 :|: s75 >= 0, s75 <= 2, s76 >= 0, s76 <= 1 * s75 + 1 * 0, s77 >= 0, s77 <= 1 * s76 + 1 * 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, v0 >= 0, l1 = v0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed: {sat}
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: O(1) [1], size: O(n1) [z' + z'']
guess: runtime: O(n1) [3 + 2·z], size: O(n1) [z]
member: runtime: O(n1) [31 + 16·z'], size: O(n1) [2·z']
verify: runtime: O(n2) [282 + 262·z + 64·z2], size: O(1) [2]
satck: runtime: O(n2) [643 + 556·z' + 128·z'2], size: O(n1) [3 + z']
sat: runtime: ?, size: O(n1) [3 + z]

(67) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed RUNTIME bound using KoAT for: sat
after applying outer abstraction to obtain an ITS,
resulting in: O(n2) with polynomial bound: 3306 + 1627·z + 512·z2

(68) Obligation:

Complexity RNTS consisting of the following rules:

choice(z) -{ 2 + xs }→ s :|: s >= 0, s <= 1 * xs, z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 1 }→ x :|: z = 1 + x + xs, xs >= 0, x >= 0
choice(z) -{ 0 }→ 0 :|: z >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 2, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
guess(z) -{ 1 }→ 1 :|: z = 1
guess(z) -{ 0 }→ 0 :|: z >= 0
guess(z) -{ 5 + clause + 2·cnf }→ 1 + s' + s16 :|: s16 >= 0, s16 <= 1 * cnf, s' >= 0, s' <= 1 * clause, cnf >= 0, z = 1 + clause + cnf, clause >= 0
if(z, z', z'') -{ 1 }→ z' :|: z = 2, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
if(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
member(z, z') -{ 4 }→ e :|: z' - 3 >= 0, z - 1 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
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
member(z, z') -{ 3 }→ e :|: z >= 0, z' - 2 >= 0, 2 = t, t >= 0, e >= 0, 0 = 0, 0 = e
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
member(z, z') -{ 2 + z' }→ s13 :|: s13 >= 0, s13 <= 1 * 0 + 1 * 2, s3 >= 0, s3 <= 2, z - 1 >= 0, z' - 3 >= 0
member(z, z') -{ 4 + y' }→ s14 :|: s14 >= 0, s14 <= 1 * 0 + 1 * 2, s6 >= 0, s6 <= 2, z' = 1 + (1 + y') + ys, ys >= 0, z - 1 >= 0, y' >= 0
member(z, z') -{ 4 + y2 }→ s15 :|: s15 >= 0, s15 <= 1 * 0 + 1 * 2, s11 >= 0, s11 <= 2, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0, z - 1 >= 0
member(z, z') -{ 37 + y3 + 16·ys' }→ s20 :|: s18 >= 0, s18 <= 2 * ys', s19 >= 0, s19 <= 1 * s18 + 1 * 2, s20 >= 0, s20 <= 1 * s19 + 1 * 2, s2 >= 0, s2 <= 2, z = 1, ys' >= 0, z' = 1 + 1 + (1 + y3 + ys'), y3 >= 0
member(z, z') -{ 38 + y' + y4 + 16·ys'' }→ s23 :|: s21 >= 0, s21 <= 2 * ys'', s22 >= 0, s22 <= 1 * s21 + 1 * 2, s23 >= 0, s23 <= 1 * s22 + 1 * 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
member(z, z') -{ 37 + y5 + 16·ys1 }→ s26 :|: s24 >= 0, s24 <= 2 * ys1, s25 >= 0, s25 <= 1 * s24 + 1 * 2, s26 >= 0, s26 <= 1 * s25 + 1 * 2, s7 >= 0, s7 <= 2, y5 >= 0, ys1 >= 0, z' = 1 + (1 + y'') + (1 + y5 + ys1), y'' >= 0, z - 1 >= 0
member(z, z') -{ 37 + y6 + 16·ys2 }→ s29 :|: s27 >= 0, s27 <= 2 * ys2, s28 >= 0, s28 <= 1 * s27 + 1 * 2, s29 >= 0, s29 <= 1 * s28 + 1 * 2, s8 >= 0, s8 <= 2, y1 >= 0, z - 1 >= 0, z' = 1 + (1 + y1) + (1 + y6 + ys2), y6 >= 0, ys2 >= 0
member(z, z') -{ 38 + y2 + y7 + 16·ys3 }→ s32 :|: s30 >= 0, s30 <= 2 * ys3, s31 >= 0, s31 <= 1 * s30 + 1 * 2, s32 >= 0, s32 <= 1 * s31 + 1 * 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)
member(z, z') -{ 36 + y8 + 16·ys4 }→ s35 :|: s33 >= 0, s33 <= 2 * ys4, s34 >= 0, s34 <= 1 * s33 + 1 * 2, s35 >= 0, s35 <= 1 * s34 + 1 * 2, s12 >= 0, s12 <= 2, z' = 1 + y + (1 + y8 + ys4), y8 >= 0, z >= 0, y >= 0, ys4 >= 0
member(z, z') -{ 4 }→ t :|: z' = 1 + 1 + 1, z = 1, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 3 }→ t :|: z = 1, z' - 2 >= 0, 2 = 2, 2 = t, t >= 0, e >= 0, 0 = e
member(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 1
member(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
member(z, z') -{ 3 }→ 0 :|: z' = 1 + 1 + 1, z = 1, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 2 }→ 0 :|: z = 1, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 2 = v0, 2 = v1, v2 >= 0
member(z, z') -{ 3 }→ 0 :|: z' - 3 >= 0, z - 1 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
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
member(z, z') -{ 2 }→ 0 :|: z >= 0, z' - 2 >= 0, v0 >= 0, 0 = v2, v1 >= 0, 0 = v0, 2 = v1, v2 >= 0
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
negate(z) -{ 0 }→ 0 :|: z >= 0
negate(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
sat(z) -{ 1329 }→ s84 :|: s84 >= 0, s84 <= 1 * 1 + 3, z = 1
sat(z) -{ 1333 + clause' + 2·cnf' + 812·s'' + 256·s''·s17 + 128·s''2 + 812·s17 + 128·s172 }→ s85 :|: s85 >= 0, s85 <= 1 * (1 + s'' + s17) + 3, s17 >= 0, s17 <= 1 * cnf', s'' >= 0, s'' <= 1 * clause', clause' >= 0, z = 1 + clause' + cnf', cnf' >= 0
sat(z) -{ 644 }→ s86 :|: s86 >= 0, s86 <= 1 * 0 + 3, z >= 0
satck(z, z') -{ 2 }→ e :|: z >= 0, z' >= 0, e >= 0, 0 = 0, 3 = e
satck(z, z') -{ 318 + 278·ls2 + 64·ls22 }→ s80 :|: s78 >= 0, s78 <= 2, s79 >= 0, s79 <= 1 * s78 + 1 * 0, s80 >= 0, s80 <= 1 * 3 + 1 * (1 + l2 + ls2), s58 >= 0, s58 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, x >= 0, l2 = 1 + x
satck(z, z') -{ 317 + 278·ls2 + 64·ls22 }→ s83 :|: s81 >= 0, s81 <= 2, s82 >= 0, s82 <= 1 * s81 + 1 * 0, s83 >= 0, s83 <= 1 * 3 + 1 * (1 + l2 + ls2), s59 >= 0, s59 <= 2 * ls2, z' = 1 + l2 + ls2, z >= 0, l2 >= 0, ls2 >= 0, v0 >= 0, l2 = v0
satck(z, z') -{ 3 }→ t :|: z >= 0, z' = 1, 2 = 2, 1 = t, t >= 0, e >= 0, 3 = e
satck(z, z') -{ 2 }→ 0 :|: z >= 0, z' = 1, v0 >= 0, 3 = v2, v1 >= 0, 2 = v0, 1 = v1, v2 >= 0
satck(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 3 = v2, 0 = v0, v2 >= 0
verify(z) -{ 51 }→ s37 :|: s36 >= 0, s36 <= 2 * 1, s37 >= 0, s37 <= 1 * 2 + 1 * 0, z - 3 >= 0
verify(z) -{ 34 + 16·ls }→ s39 :|: s38 >= 0, s38 <= 2 * ls, s39 >= 0, s39 <= 1 * 0 + 1 * 0, z = 1 + (1 + x3) + ls, ls >= 0, x3 >= 0
verify(z) -{ 34 + 16·ls }→ s41 :|: s40 >= 0, s40 <= 2 * ls, s41 >= 0, s41 <= 1 * 0 + 1 * 0, x4 >= 0, ls >= 0, z = 1 + (1 + x4) + ls
verify(z) -{ 50 }→ s43 :|: s42 >= 0, s42 <= 2 * 1, s43 >= 0, s43 <= 1 * 2 + 1 * 0, z - 2 >= 0
verify(z) -{ 33 + 16·ls }→ s45 :|: s44 >= 0, s44 <= 2 * ls, s45 >= 0, s45 <= 1 * 0 + 1 * 0, l >= 0, ls >= 0, z = 1 + l + ls
verify(z) -{ 366 + 16·l' + 294·ls' + 64·ls'2 }→ s62 :|: s60 >= 0, s60 <= 2, s61 >= 0, s61 <= 1 * s60 + 1 * 0, s62 >= 0, s62 <= 1 * s61 + 1 * 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, x >= 0, l' = 1 + x
verify(z) -{ 365 + 16·l' + 294·ls' + 64·ls'2 }→ s65 :|: s63 >= 0, s63 <= 2, s64 >= 0, s64 <= 1 * s63 + 1 * 0, s65 >= 0, s65 <= 1 * s64 + 1 * 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, v0 >= 0, l' = v0
verify(z) -{ 366 + 16·l'' + 294·ls'' + 64·ls''2 }→ s68 :|: s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 1 * s66 + 1 * 0, s68 >= 0, s68 <= 1 * s67 + 1 * 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, x >= 0, l'' = 1 + x
verify(z) -{ 365 + 16·l'' + 294·ls'' + 64·ls''2 }→ s71 :|: s69 >= 0, s69 <= 2, s70 >= 0, s70 <= 1 * s69 + 1 * 0, s71 >= 0, s71 <= 1 * s70 + 1 * 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, v0 >= 0, l'' = v0
verify(z) -{ 365 + 16·l1 + 294·ls1 + 64·ls12 }→ s74 :|: s72 >= 0, s72 <= 2, s73 >= 0, s73 <= 1 * s72 + 1 * 0, s74 >= 0, s74 <= 1 * s73 + 1 * 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, x >= 0, l1 = 1 + x
verify(z) -{ 364 + 16·l1 + 294·ls1 + 64·ls12 }→ s77 :|: s75 >= 0, s75 <= 2, s76 >= 0, s76 <= 1 * s75 + 1 * 0, s77 >= 0, s77 <= 1 * s76 + 1 * 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, v0 >= 0, l1 = v0
verify(z) -{ 1 }→ 2 :|: z = 1
verify(z) -{ 0 }→ 0 :|: z >= 0

Function symbols to be analyzed:
Previous analysis results are:
choice: runtime: O(n1) [1 + z], size: O(n1) [z]
eq: runtime: O(n1) [1 + z'], size: O(1) [2]
negate: runtime: O(1) [1], size: O(n1) [z]
if: runtime: O(1) [1], size: O(n1) [z' + z'']
guess: runtime: O(n1) [3 + 2·z], size: O(n1) [z]
member: runtime: O(n1) [31 + 16·z'], size: O(n1) [2·z']
verify: runtime: O(n2) [282 + 262·z + 64·z2], size: O(1) [2]
satck: runtime: O(n2) [643 + 556·z' + 128·z'2], size: O(n1) [3 + z']
sat: runtime: O(n2) [3306 + 1627·z + 512·z2], size: O(n1) [3 + z]

(69) FinalProof (EQUIVALENT transformation)

Computed overall runtime complexity

(70) BOUNDS(1, n^2)