WORST_CASE(?,O(n^1)) proof of input_zfBK40Kdjf.trs # AProVE Commit ID: 5b976082cb74a395683ed8cc7acf94bd611ab29f fuhs 20230524 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^1). (0) CpxTRS (1) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (2) CdtProblem (3) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CdtProblem (5) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CdtProblem (7) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CdtProblem (9) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (10) CdtProblem (11) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (12) CdtProblem (13) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 1 ms] (14) CdtProblem (15) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 103 ms] (16) CdtProblem (17) CdtKnowledgeProof [FINISHED, 0 ms] (18) BOUNDS(1, 1) ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^1). 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) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (2) Obligation: Complexity Dependency Tuples Problem Rules: if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 member(z0, nil) -> false member(z0, cons(z1, z2)) -> if(eq(z0, z1), true, member(z0, z2)) eq(nil, nil) -> true eq(O(z0), 0(z1)) -> eq(z0, z1) eq(0(z0), 1(z1)) -> false eq(1(z0), 0(z1)) -> false eq(1(z0), 1(z1)) -> eq(z0, z1) negate(0(z0)) -> 1(z0) negate(1(z0)) -> 0(z0) choice(cons(z0, z1)) -> z0 choice(cons(z0, z1)) -> choice(z1) guess(nil) -> nil guess(cons(z0, z1)) -> cons(choice(z0), guess(z1)) verify(nil) -> true verify(cons(z0, z1)) -> if(member(negate(z0), z1), false, verify(z1)) sat(z0) -> satck(z0, guess(z0)) satck(z0, z1) -> if(verify(z1), z1, unsat) Tuples: IF(true, z0, z1) -> c IF(false, z0, z1) -> c1 MEMBER(z0, nil) -> c2 MEMBER(z0, cons(z1, z2)) -> c3(IF(eq(z0, z1), true, member(z0, z2)), EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(IF(eq(z0, z1), true, member(z0, z2)), MEMBER(z0, z2)) EQ(nil, nil) -> c5 EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(0(z0), 1(z1)) -> c7 EQ(1(z0), 0(z1)) -> c8 EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) NEGATE(0(z0)) -> c10 NEGATE(1(z0)) -> c11 CHOICE(cons(z0, z1)) -> c12 CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(nil) -> c14 GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) VERIFY(nil) -> c17 VERIFY(cons(z0, z1)) -> c18(IF(member(negate(z0), z1), false, verify(z1)), MEMBER(negate(z0), z1), NEGATE(z0)) VERIFY(cons(z0, z1)) -> c19(IF(member(negate(z0), z1), false, verify(z1)), VERIFY(z1)) SAT(z0) -> c20(SATCK(z0, guess(z0)), GUESS(z0)) SATCK(z0, z1) -> c21(IF(verify(z1), z1, unsat), VERIFY(z1)) S tuples: IF(true, z0, z1) -> c IF(false, z0, z1) -> c1 MEMBER(z0, nil) -> c2 MEMBER(z0, cons(z1, z2)) -> c3(IF(eq(z0, z1), true, member(z0, z2)), EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(IF(eq(z0, z1), true, member(z0, z2)), MEMBER(z0, z2)) EQ(nil, nil) -> c5 EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(0(z0), 1(z1)) -> c7 EQ(1(z0), 0(z1)) -> c8 EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) NEGATE(0(z0)) -> c10 NEGATE(1(z0)) -> c11 CHOICE(cons(z0, z1)) -> c12 CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(nil) -> c14 GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) VERIFY(nil) -> c17 VERIFY(cons(z0, z1)) -> c18(IF(member(negate(z0), z1), false, verify(z1)), MEMBER(negate(z0), z1), NEGATE(z0)) VERIFY(cons(z0, z1)) -> c19(IF(member(negate(z0), z1), false, verify(z1)), VERIFY(z1)) SAT(z0) -> c20(SATCK(z0, guess(z0)), GUESS(z0)) SATCK(z0, z1) -> c21(IF(verify(z1), z1, unsat), VERIFY(z1)) K tuples:none Defined Rule Symbols: if_3, member_2, eq_2, negate_1, choice_1, guess_1, verify_1, sat_1, satck_2 Defined Pair Symbols: IF_3, MEMBER_2, EQ_2, NEGATE_1, CHOICE_1, GUESS_1, VERIFY_1, SAT_1, SATCK_2 Compound Symbols: c, c1, c2, c3_2, c4_2, c5, c6_1, c7, c8, c9_1, c10, c11, c12, c13_1, c14, c15_1, c16_1, c17, c18_3, c19_2, c20_2, c21_2 ---------------------------------------- (3) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 11 trailing nodes: NEGATE(0(z0)) -> c10 EQ(1(z0), 0(z1)) -> c8 IF(true, z0, z1) -> c EQ(nil, nil) -> c5 IF(false, z0, z1) -> c1 NEGATE(1(z0)) -> c11 EQ(0(z0), 1(z1)) -> c7 VERIFY(nil) -> c17 MEMBER(z0, nil) -> c2 CHOICE(cons(z0, z1)) -> c12 GUESS(nil) -> c14 ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 member(z0, nil) -> false member(z0, cons(z1, z2)) -> if(eq(z0, z1), true, member(z0, z2)) eq(nil, nil) -> true eq(O(z0), 0(z1)) -> eq(z0, z1) eq(0(z0), 1(z1)) -> false eq(1(z0), 0(z1)) -> false eq(1(z0), 1(z1)) -> eq(z0, z1) negate(0(z0)) -> 1(z0) negate(1(z0)) -> 0(z0) choice(cons(z0, z1)) -> z0 choice(cons(z0, z1)) -> choice(z1) guess(nil) -> nil guess(cons(z0, z1)) -> cons(choice(z0), guess(z1)) verify(nil) -> true verify(cons(z0, z1)) -> if(member(negate(z0), z1), false, verify(z1)) sat(z0) -> satck(z0, guess(z0)) satck(z0, z1) -> if(verify(z1), z1, unsat) Tuples: MEMBER(z0, cons(z1, z2)) -> c3(IF(eq(z0, z1), true, member(z0, z2)), EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(IF(eq(z0, z1), true, member(z0, z2)), MEMBER(z0, z2)) EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) VERIFY(cons(z0, z1)) -> c18(IF(member(negate(z0), z1), false, verify(z1)), MEMBER(negate(z0), z1), NEGATE(z0)) VERIFY(cons(z0, z1)) -> c19(IF(member(negate(z0), z1), false, verify(z1)), VERIFY(z1)) SAT(z0) -> c20(SATCK(z0, guess(z0)), GUESS(z0)) SATCK(z0, z1) -> c21(IF(verify(z1), z1, unsat), VERIFY(z1)) S tuples: MEMBER(z0, cons(z1, z2)) -> c3(IF(eq(z0, z1), true, member(z0, z2)), EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(IF(eq(z0, z1), true, member(z0, z2)), MEMBER(z0, z2)) EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) VERIFY(cons(z0, z1)) -> c18(IF(member(negate(z0), z1), false, verify(z1)), MEMBER(negate(z0), z1), NEGATE(z0)) VERIFY(cons(z0, z1)) -> c19(IF(member(negate(z0), z1), false, verify(z1)), VERIFY(z1)) SAT(z0) -> c20(SATCK(z0, guess(z0)), GUESS(z0)) SATCK(z0, z1) -> c21(IF(verify(z1), z1, unsat), VERIFY(z1)) K tuples:none Defined Rule Symbols: if_3, member_2, eq_2, negate_1, choice_1, guess_1, verify_1, sat_1, satck_2 Defined Pair Symbols: MEMBER_2, EQ_2, CHOICE_1, GUESS_1, VERIFY_1, SAT_1, SATCK_2 Compound Symbols: c3_2, c4_2, c6_1, c9_1, c13_1, c15_1, c16_1, c18_3, c19_2, c20_2, c21_2 ---------------------------------------- (5) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 6 trailing tuple parts ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 member(z0, nil) -> false member(z0, cons(z1, z2)) -> if(eq(z0, z1), true, member(z0, z2)) eq(nil, nil) -> true eq(O(z0), 0(z1)) -> eq(z0, z1) eq(0(z0), 1(z1)) -> false eq(1(z0), 0(z1)) -> false eq(1(z0), 1(z1)) -> eq(z0, z1) negate(0(z0)) -> 1(z0) negate(1(z0)) -> 0(z0) choice(cons(z0, z1)) -> z0 choice(cons(z0, z1)) -> choice(z1) guess(nil) -> nil guess(cons(z0, z1)) -> cons(choice(z0), guess(z1)) verify(nil) -> true verify(cons(z0, z1)) -> if(member(negate(z0), z1), false, verify(z1)) sat(z0) -> satck(z0, guess(z0)) satck(z0, z1) -> if(verify(z1), z1, unsat) Tuples: EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) SAT(z0) -> c20(SATCK(z0, guess(z0)), GUESS(z0)) MEMBER(z0, cons(z1, z2)) -> c3(EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(MEMBER(z0, z2)) VERIFY(cons(z0, z1)) -> c18(MEMBER(negate(z0), z1)) VERIFY(cons(z0, z1)) -> c19(VERIFY(z1)) SATCK(z0, z1) -> c21(VERIFY(z1)) S tuples: EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) SAT(z0) -> c20(SATCK(z0, guess(z0)), GUESS(z0)) MEMBER(z0, cons(z1, z2)) -> c3(EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(MEMBER(z0, z2)) VERIFY(cons(z0, z1)) -> c18(MEMBER(negate(z0), z1)) VERIFY(cons(z0, z1)) -> c19(VERIFY(z1)) SATCK(z0, z1) -> c21(VERIFY(z1)) K tuples:none Defined Rule Symbols: if_3, member_2, eq_2, negate_1, choice_1, guess_1, verify_1, sat_1, satck_2 Defined Pair Symbols: EQ_2, CHOICE_1, GUESS_1, SAT_1, MEMBER_2, VERIFY_1, SATCK_2 Compound Symbols: c6_1, c9_1, c13_1, c15_1, c16_1, c20_2, c3_1, c4_1, c18_1, c19_1, c21_1 ---------------------------------------- (7) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules: if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 member(z0, nil) -> false member(z0, cons(z1, z2)) -> if(eq(z0, z1), true, member(z0, z2)) eq(nil, nil) -> true eq(O(z0), 0(z1)) -> eq(z0, z1) eq(0(z0), 1(z1)) -> false eq(1(z0), 0(z1)) -> false eq(1(z0), 1(z1)) -> eq(z0, z1) negate(0(z0)) -> 1(z0) negate(1(z0)) -> 0(z0) choice(cons(z0, z1)) -> z0 choice(cons(z0, z1)) -> choice(z1) guess(nil) -> nil guess(cons(z0, z1)) -> cons(choice(z0), guess(z1)) verify(nil) -> true verify(cons(z0, z1)) -> if(member(negate(z0), z1), false, verify(z1)) sat(z0) -> satck(z0, guess(z0)) satck(z0, z1) -> if(verify(z1), z1, unsat) Tuples: EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) MEMBER(z0, cons(z1, z2)) -> c3(EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(MEMBER(z0, z2)) VERIFY(cons(z0, z1)) -> c18(MEMBER(negate(z0), z1)) VERIFY(cons(z0, z1)) -> c19(VERIFY(z1)) SATCK(z0, z1) -> c21(VERIFY(z1)) SAT(z0) -> c(SATCK(z0, guess(z0))) SAT(z0) -> c(GUESS(z0)) S tuples: EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) MEMBER(z0, cons(z1, z2)) -> c3(EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(MEMBER(z0, z2)) VERIFY(cons(z0, z1)) -> c18(MEMBER(negate(z0), z1)) VERIFY(cons(z0, z1)) -> c19(VERIFY(z1)) SATCK(z0, z1) -> c21(VERIFY(z1)) SAT(z0) -> c(SATCK(z0, guess(z0))) SAT(z0) -> c(GUESS(z0)) K tuples:none Defined Rule Symbols: if_3, member_2, eq_2, negate_1, choice_1, guess_1, verify_1, sat_1, satck_2 Defined Pair Symbols: EQ_2, CHOICE_1, GUESS_1, MEMBER_2, VERIFY_1, SATCK_2, SAT_1 Compound Symbols: c6_1, c9_1, c13_1, c15_1, c16_1, c3_1, c4_1, c18_1, c19_1, c21_1, c_1 ---------------------------------------- (9) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: SAT(z0) -> c(GUESS(z0)) ---------------------------------------- (10) Obligation: Complexity Dependency Tuples Problem Rules: if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 member(z0, nil) -> false member(z0, cons(z1, z2)) -> if(eq(z0, z1), true, member(z0, z2)) eq(nil, nil) -> true eq(O(z0), 0(z1)) -> eq(z0, z1) eq(0(z0), 1(z1)) -> false eq(1(z0), 0(z1)) -> false eq(1(z0), 1(z1)) -> eq(z0, z1) negate(0(z0)) -> 1(z0) negate(1(z0)) -> 0(z0) choice(cons(z0, z1)) -> z0 choice(cons(z0, z1)) -> choice(z1) guess(nil) -> nil guess(cons(z0, z1)) -> cons(choice(z0), guess(z1)) verify(nil) -> true verify(cons(z0, z1)) -> if(member(negate(z0), z1), false, verify(z1)) sat(z0) -> satck(z0, guess(z0)) satck(z0, z1) -> if(verify(z1), z1, unsat) Tuples: EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) MEMBER(z0, cons(z1, z2)) -> c3(EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(MEMBER(z0, z2)) VERIFY(cons(z0, z1)) -> c18(MEMBER(negate(z0), z1)) VERIFY(cons(z0, z1)) -> c19(VERIFY(z1)) SATCK(z0, z1) -> c21(VERIFY(z1)) SAT(z0) -> c(SATCK(z0, guess(z0))) S tuples: EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) MEMBER(z0, cons(z1, z2)) -> c3(EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(MEMBER(z0, z2)) VERIFY(cons(z0, z1)) -> c18(MEMBER(negate(z0), z1)) VERIFY(cons(z0, z1)) -> c19(VERIFY(z1)) SATCK(z0, z1) -> c21(VERIFY(z1)) SAT(z0) -> c(SATCK(z0, guess(z0))) K tuples:none Defined Rule Symbols: if_3, member_2, eq_2, negate_1, choice_1, guess_1, verify_1, sat_1, satck_2 Defined Pair Symbols: EQ_2, CHOICE_1, GUESS_1, MEMBER_2, VERIFY_1, SATCK_2, SAT_1 Compound Symbols: c6_1, c9_1, c13_1, c15_1, c16_1, c3_1, c4_1, c18_1, c19_1, c21_1, c_1 ---------------------------------------- (11) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: SAT(z0) -> c(SATCK(z0, guess(z0))) SATCK(z0, z1) -> c21(VERIFY(z1)) ---------------------------------------- (12) Obligation: Complexity Dependency Tuples Problem Rules: if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 member(z0, nil) -> false member(z0, cons(z1, z2)) -> if(eq(z0, z1), true, member(z0, z2)) eq(nil, nil) -> true eq(O(z0), 0(z1)) -> eq(z0, z1) eq(0(z0), 1(z1)) -> false eq(1(z0), 0(z1)) -> false eq(1(z0), 1(z1)) -> eq(z0, z1) negate(0(z0)) -> 1(z0) negate(1(z0)) -> 0(z0) choice(cons(z0, z1)) -> z0 choice(cons(z0, z1)) -> choice(z1) guess(nil) -> nil guess(cons(z0, z1)) -> cons(choice(z0), guess(z1)) verify(nil) -> true verify(cons(z0, z1)) -> if(member(negate(z0), z1), false, verify(z1)) sat(z0) -> satck(z0, guess(z0)) satck(z0, z1) -> if(verify(z1), z1, unsat) Tuples: EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) MEMBER(z0, cons(z1, z2)) -> c3(EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(MEMBER(z0, z2)) VERIFY(cons(z0, z1)) -> c18(MEMBER(negate(z0), z1)) VERIFY(cons(z0, z1)) -> c19(VERIFY(z1)) SATCK(z0, z1) -> c21(VERIFY(z1)) SAT(z0) -> c(SATCK(z0, guess(z0))) S tuples: EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) MEMBER(z0, cons(z1, z2)) -> c3(EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(MEMBER(z0, z2)) VERIFY(cons(z0, z1)) -> c18(MEMBER(negate(z0), z1)) VERIFY(cons(z0, z1)) -> c19(VERIFY(z1)) K tuples: SAT(z0) -> c(SATCK(z0, guess(z0))) SATCK(z0, z1) -> c21(VERIFY(z1)) Defined Rule Symbols: if_3, member_2, eq_2, negate_1, choice_1, guess_1, verify_1, sat_1, satck_2 Defined Pair Symbols: EQ_2, CHOICE_1, GUESS_1, MEMBER_2, VERIFY_1, SATCK_2, SAT_1 Compound Symbols: c6_1, c9_1, c13_1, c15_1, c16_1, c3_1, c4_1, c18_1, c19_1, c21_1, c_1 ---------------------------------------- (13) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 member(z0, nil) -> false member(z0, cons(z1, z2)) -> if(eq(z0, z1), true, member(z0, z2)) eq(nil, nil) -> true eq(O(z0), 0(z1)) -> eq(z0, z1) eq(0(z0), 1(z1)) -> false eq(1(z0), 0(z1)) -> false eq(1(z0), 1(z1)) -> eq(z0, z1) verify(nil) -> true verify(cons(z0, z1)) -> if(member(negate(z0), z1), false, verify(z1)) sat(z0) -> satck(z0, guess(z0)) satck(z0, z1) -> if(verify(z1), z1, unsat) ---------------------------------------- (14) Obligation: Complexity Dependency Tuples Problem Rules: negate(0(z0)) -> 1(z0) negate(1(z0)) -> 0(z0) guess(nil) -> nil guess(cons(z0, z1)) -> cons(choice(z0), guess(z1)) choice(cons(z0, z1)) -> z0 choice(cons(z0, z1)) -> choice(z1) Tuples: EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) MEMBER(z0, cons(z1, z2)) -> c3(EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(MEMBER(z0, z2)) VERIFY(cons(z0, z1)) -> c18(MEMBER(negate(z0), z1)) VERIFY(cons(z0, z1)) -> c19(VERIFY(z1)) SATCK(z0, z1) -> c21(VERIFY(z1)) SAT(z0) -> c(SATCK(z0, guess(z0))) S tuples: EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) MEMBER(z0, cons(z1, z2)) -> c3(EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(MEMBER(z0, z2)) VERIFY(cons(z0, z1)) -> c18(MEMBER(negate(z0), z1)) VERIFY(cons(z0, z1)) -> c19(VERIFY(z1)) K tuples: SAT(z0) -> c(SATCK(z0, guess(z0))) SATCK(z0, z1) -> c21(VERIFY(z1)) Defined Rule Symbols: negate_1, guess_1, choice_1 Defined Pair Symbols: EQ_2, CHOICE_1, GUESS_1, MEMBER_2, VERIFY_1, SATCK_2, SAT_1 Compound Symbols: c6_1, c9_1, c13_1, c15_1, c16_1, c3_1, c4_1, c18_1, c19_1, c21_1, c_1 ---------------------------------------- (15) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) MEMBER(z0, cons(z1, z2)) -> c3(EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(MEMBER(z0, z2)) VERIFY(cons(z0, z1)) -> c18(MEMBER(negate(z0), z1)) VERIFY(cons(z0, z1)) -> c19(VERIFY(z1)) We considered the (Usable) Rules: negate(1(z0)) -> 0(z0) guess(nil) -> nil guess(cons(z0, z1)) -> cons(choice(z0), guess(z1)) choice(cons(z0, z1)) -> choice(z1) choice(cons(z0, z1)) -> z0 negate(0(z0)) -> 1(z0) And the Tuples: EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) MEMBER(z0, cons(z1, z2)) -> c3(EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(MEMBER(z0, z2)) VERIFY(cons(z0, z1)) -> c18(MEMBER(negate(z0), z1)) VERIFY(cons(z0, z1)) -> c19(VERIFY(z1)) SATCK(z0, z1) -> c21(VERIFY(z1)) SAT(z0) -> c(SATCK(z0, guess(z0))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0(x_1)) = [1] + x_1 POL(1(x_1)) = [1] + x_1 POL(CHOICE(x_1)) = [1] + x_1 POL(EQ(x_1, x_2)) = [1] + x_1 + x_2 POL(GUESS(x_1)) = x_1 POL(MEMBER(x_1, x_2)) = [1] + x_1 + x_2 POL(O(x_1)) = [1] + x_1 POL(SAT(x_1)) = [1] + x_1 POL(SATCK(x_1, x_2)) = [1] + x_2 POL(VERIFY(x_1)) = [1] + x_1 POL(c(x_1)) = x_1 POL(c13(x_1)) = x_1 POL(c15(x_1)) = x_1 POL(c16(x_1)) = x_1 POL(c18(x_1)) = x_1 POL(c19(x_1)) = x_1 POL(c21(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c9(x_1)) = x_1 POL(choice(x_1)) = x_1 POL(cons(x_1, x_2)) = [1] + x_1 + x_2 POL(guess(x_1)) = x_1 POL(negate(x_1)) = x_1 POL(nil) = [1] ---------------------------------------- (16) Obligation: Complexity Dependency Tuples Problem Rules: negate(0(z0)) -> 1(z0) negate(1(z0)) -> 0(z0) guess(nil) -> nil guess(cons(z0, z1)) -> cons(choice(z0), guess(z1)) choice(cons(z0, z1)) -> z0 choice(cons(z0, z1)) -> choice(z1) Tuples: EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) MEMBER(z0, cons(z1, z2)) -> c3(EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(MEMBER(z0, z2)) VERIFY(cons(z0, z1)) -> c18(MEMBER(negate(z0), z1)) VERIFY(cons(z0, z1)) -> c19(VERIFY(z1)) SATCK(z0, z1) -> c21(VERIFY(z1)) SAT(z0) -> c(SATCK(z0, guess(z0))) S tuples: GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) K tuples: SAT(z0) -> c(SATCK(z0, guess(z0))) SATCK(z0, z1) -> c21(VERIFY(z1)) EQ(O(z0), 0(z1)) -> c6(EQ(z0, z1)) EQ(1(z0), 1(z1)) -> c9(EQ(z0, z1)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) GUESS(cons(z0, z1)) -> c16(GUESS(z1)) MEMBER(z0, cons(z1, z2)) -> c3(EQ(z0, z1)) MEMBER(z0, cons(z1, z2)) -> c4(MEMBER(z0, z2)) VERIFY(cons(z0, z1)) -> c18(MEMBER(negate(z0), z1)) VERIFY(cons(z0, z1)) -> c19(VERIFY(z1)) Defined Rule Symbols: negate_1, guess_1, choice_1 Defined Pair Symbols: EQ_2, CHOICE_1, GUESS_1, MEMBER_2, VERIFY_1, SATCK_2, SAT_1 Compound Symbols: c6_1, c9_1, c13_1, c15_1, c16_1, c3_1, c4_1, c18_1, c19_1, c21_1, c_1 ---------------------------------------- (17) CdtKnowledgeProof (FINISHED) The following tuples could be moved from S to K by knowledge propagation: GUESS(cons(z0, z1)) -> c15(CHOICE(z0)) CHOICE(cons(z0, z1)) -> c13(CHOICE(z1)) Now S is empty ---------------------------------------- (18) BOUNDS(1, 1)