We consider the following Problem:
Strict Trs:
{ 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())}
StartTerms: basic terms
Strategy: innermost
Certificate: YES(?,O(n^2))
Proof:
We consider the following Problem:
Strict Trs:
{ 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())}
StartTerms: basic terms
Strategy: innermost
Certificate: YES(?,O(n^2))
Proof:
We consider the following Problem:
Strict Trs:
{ 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())}
StartTerms: basic terms
Strategy: innermost
Certificate: YES(?,O(n^2))
Proof:
The following argument positions are usable:
Uargs(if) = {1, 3}, Uargs(member) = {1}, Uargs(cons) = {1, 2},
Uargs(eq) = {}, Uargs(O) = {}, Uargs(0) = {}, Uargs(1) = {},
Uargs(negate) = {}, Uargs(choice) = {}, Uargs(guess) = {},
Uargs(verify) = {}, Uargs(sat) = {}, Uargs(satck) = {2}
We have the following constructor-based EDA-non-satisfying and IDA(2)-non-satisfying matrix interpretation:
Interpretation Functions:
if(x1, x2, x3) = [1 0 0] x1 + [1 0 0] x2 + [1 0 0] x3 + [0]
[0 0 0] [0 1 0] [0 1 0] [0]
[0 0 0] [0 0 1] [0 0 1] [0]
true() = [1]
[0]
[0]
false() = [1]
[0]
[0]
member(x1, x2) = [2 0 0] x1 + [0 1 0] x2 + [0]
[1 2 1] [0 0 0] [0]
[2 0 0] [0 0 0] [0]
nil() = [2]
[2]
[0]
cons(x1, x2) = [1 2 0] x1 + [1 2 0] x2 + [2]
[0 1 0] [0 1 0] [2]
[0 0 1] [0 0 1] [0]
eq(x1, x2) = [0 0 0] x1 + [0 1 0] x2 + [0]
[0 0 0] [0 0 2] [0]
[0 0 0] [0 0 0] [0]
O(x1) = [0 0 0] x1 + [0]
[0 0 0] [0]
[0 0 0] [0]
0(x1) = [0 0 0] x1 + [0]
[0 1 0] [2]
[0 0 1] [2]
1(x1) = [0 0 0] x1 + [0]
[0 1 0] [2]
[0 0 1] [0]
negate(x1) = [0 1 0] x1 + [0]
[0 1 0] [2]
[0 0 1] [2]
choice(x1) = [1 0 0] x1 + [0]
[0 1 0] [0]
[0 0 1] [0]
guess(x1) = [1 1 0] x1 + [0]
[0 1 0] [0]
[0 0 1] [0]
verify(x1) = [1 0 0] x1 + [0]
[0 0 0] [0]
[0 0 0] [0]
sat(x1) = [2 2 0] x1 + [2]
[2 1 1] [2]
[0 1 2] [2]
satck(x1, x2) = [0 0 0] x1 + [2 0 0] x2 + [1]
[1 0 1] [0 1 0] [1]
[0 1 0] [0 0 1] [1]
unsat() = [0]
[0]
[0]
Hurray, we answered YES(?,O(n^2))