Certification Problem

Input (TPDB TRS_Standard/TCT_12/sat)

The rewrite relation of the following TRS is considered.

if(true,t,e) t (1)
if(false,t,e) e (2)
member(x,nil) false (3)
member(x,cons(y,ys)) if(eq(x,y),true,member(x,ys)) (4)
eq(nil,nil) true (5)
eq(O(x),0(y)) eq(x,y) (6)
eq(0(x),1(y)) false (7)
eq(1(x),0(y)) false (8)
eq(1(x),1(y)) eq(x,y) (9)
negate(0(x)) 1(x) (10)
negate(1(x)) 0(x) (11)
choice(cons(x,xs)) x (12)
choice(cons(x,xs)) choice(xs) (13)
guess(nil) nil (14)
guess(cons(clause,cnf)) cons(choice(clause),guess(cnf)) (15)
verify(nil) true (16)
verify(cons(l,ls)) if(member(negate(l),ls),false,verify(ls)) (17)
sat(cnf) satck(cnf,guess(cnf)) (18)
satck(cnf,assign) if(verify(assign),assign,unsat) (19)

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by NaTT @ termCOMP 2023)

1 Dependency Pair Transformation

The following set of initial dependency pairs has been identified.
choice#(cons(x,xs)) choice#(xs) (20)
verify#(cons(l,ls)) negate#(l) (21)
member#(x,cons(y,ys)) eq#(x,y) (22)
satck#(cnf,assign) verify#(assign) (23)
guess#(cons(clause,cnf)) guess#(cnf) (24)
member#(x,cons(y,ys)) if#(eq(x,y),true,member(x,ys)) (25)
member#(x,cons(y,ys)) member#(x,ys) (26)
verify#(cons(l,ls)) verify#(ls) (27)
guess#(cons(clause,cnf)) choice#(clause) (28)
verify#(cons(l,ls)) member#(negate(l),ls) (29)
sat#(cnf) guess#(cnf) (30)
eq#(1(x),1(y)) eq#(x,y) (31)
eq#(O(x),0(y)) eq#(x,y) (32)
satck#(cnf,assign) if#(verify(assign),assign,unsat) (33)
sat#(cnf) satck#(cnf,guess(cnf)) (34)
verify#(cons(l,ls)) if#(member(negate(l),ls),false,verify(ls)) (35)

1.1 Dependency Graph Processor

The dependency pairs are split into 5 components.