A SAT Solver Based on Truth Value Calculation

preprint OA: closed
Full text JSON View at publisher
Full text 200,469 characters · extracted from preprint-html · click to expand
A SAT Solver Based on Truth Value Calculation | Research Square window.SnipcartSettings = { analytics: { enabled: false } }; (function() { var accessVector = localStorage.getItem('access_vector') || ''; window.dataLayer = window.dataLayer || []; if (accessVector) { window.dataLayer.push({ user: { profile: { profileInfo: { snid: accessVector } } } }); } })(); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-K279D39R'); Browse Preprints In Review Journals COVID-19 Preprints AJE Video Bytes Research Tools Research Promotion AJE Professional Editing AJE Rubriq About Preprint Platform In Review Editorial Policies Our Team Advisory Board Help Center Sign In Submit a Preprint Cite Share Download PDF Research Article A SAT Solver Based on Truth Value Calculation Nongjian Zhou This is a preprint; it has not been peer reviewed by a journal. https://doi.org/ 10.21203/rs.3.rs-8468445/v1 This work is licensed under a CC BY 4.0 License Status: Posted Version 1 posted You are reading this latest preprint version Abstract This paper presents a novel SAT solver based on truth value calculation. Compared with conventional tree-like graph-based approaches, it calculates the truth value of a given formula, determine the satisfiability, and generate the assignments. This method demonstrates advantages in terms of simplicity, directness and accuracy. Logic SAT Satisfiability problem Truth value Boolean logic Figures Figure 1 Figure 2 1. Introduction The Boolean Satisfiability Problem (SAT) is one of the major challenges in computational logic and theoretical computer science. Modern SAT-solving techniques trace their origins to the Davis–Putnam–Logemann–Loveland (DPLL) algorithm, introduced by Martin Davis, George Logemann, and Donald W. Loveland [1]. Not long after, M. R. Krom [2] proposed a specialized class of CNF formulas, now known as Krom formulas, which restrict clauses to at most two literals. His contribution paved the way for efficient, graph‑based algorithms for 2‑SAT, a notable subclass of SAT that can be solved in polynomial time. Based on Krom’s work, researchers Even, Itai & Shamir [3] and Aspvall, Plass & Tarjan [4] developed a linear-time algorithm for 2-SAT using strongly connected components (SCC) in directed graphs, further optimizing SAT-solving techniques for specific problem classes. As the need to solve more complex SAT instances grew, researchers extended SAT-solving techniques beyond 2-SAT, leading to the development of Conflict-Driven Clause Learning (CDCL) in the 1990s–2000s. This method was proposed by Marques-Silva and Karem A. Sakallah [5] and Bayardo and Schrag [6]. CDCL refined DPLL by incorporating conflict analysis, clause learning, implication graphs, and non-chronological backtracking, significantly improving performance for large-scale SAT problems. Today, DPLL and CDCL remain widely regarded as core techniques for solving SAT problems. Both approaches fundamentally depend on tree‑like graph structures for their search procedures. Although they have proven highly effective, there remains room for exploring alternative solutions. This paper presents a novel SAT solver – applying a truth-value calculation method - for solving the satisfiability problem. Unlike conventional approaches, it introduces an alternative framework that diverges from the use of graph-like structures and associated tracking techniques in SAT-solving methodologies. 2. Notation System and Primitive Numbers The Digital Calculation Method for Propositional Logic (DCMPL) [7] was first introduced in 2024. And this method can be used for solving the satisfiability problem. DCMPL is a fixed‑value‑assignment system in which every primitive unit (e.g., an element or an existence state) is associated with a predetermined truth value (named primitive number). A primitive number is a binary number representing a truth value of a basic expression, such as A, B, C, etc. Irrespective of variation, all propositional formulas are composed of a small number of primitive units - basic expressions. We can calculate the truth value of a formula based on the primitive numbers of the basic expressions, regardless of how complex it is. For instance, in three-element expressions, the first element (variable) A is assigned a primitive number 11110000, and the second element B has its primitive number 11001100. These primitive numbers remain unchanged across the entire system and throughout all computations. Based on these primitive numbers, we can calculate the truth value of a formula such as (A ∨ B), or (A → B), etc. This framework incorporates the following design principles: Unify propositional elements (variables): for small-scale implementations (no more than 26 distinct elements), letters A, B, C, etc. are used to represent elements. This 26-letter alphabet system can be referred to as the “AB Notation System”. And for large-scale implementations (more than 26 distinct elements), x1, x2, … xn are used to represent elements. The notation system employing x1, x2, …, xn can be referred to as the “XN Notation System”. The symbols ∧, ∨, →, ⊕, ↔, ↑, ↓, and ← are used to represent AND, OR, IMPLIES, XOR, EQUIVALENT, NAND, NOR, and the converse of IMPLIES. Negation is uniformly represented as symbol ¬, and affirmation is uniformly represented as symbol +, which can be omitted. Negation is not classified into the category of operators, but treated as a state expression. There are two state expressions: affirmation and negation. They are represented as + and ¬ respectively, or 1 and 0 respectively. In this framework, existence, affirmation, and Truth are equivalent in their conceptual essence, while non-existence, negation, and Falsity are conceptually equivalent. By fixing and standardizing the variable symbols, and assigning truth values to them, a table comprising a restricted set of primitive numbers is constructed for demonstration purposes [7]. See below: Table 1: Primitive Numbers (non-element to four-element) Exp AB Exp XN Non-element +/¬ 1-element A x1 2-element AB x1,x2 3-element ABC x1,x2,x3 4- element ABCD x1,x2,x3,x4 + + 1 11 1111 11111111 1111111111111111 ¬ ¬ 0 00 0000 00000000 0000000000000000 A x 1 10 1100 11110000 1111111100000000 ¬A ¬x 1 01 0011 00001111 0000000011111111 B x 2 1010 11001100 1111000011110000 ¬B ¬x 2 0101 00110011 0000111100001111 C x 3 10101010 1100110011001100 ¬C ¬x 3 01010101 0011001100110011 D x 4 1010101010101010 ¬D ¬x 4 0101010101010101 The table above provides a limited set of primitive numbers, sufficient for computing the formulas involving elements indexed from A to D for demonstration purposes. However, this restriction imposes limitation: formulas that incorporate elements beyond D (such as E, F, G, etc.) cannot be evaluated, as their corresponding primitive numbers are undefined. Extending the range of primitive numbers is therefore essential to broaden the applicability of the computational framework and to support formulas of substantially greater scale and complexity. To address this, we need a method capable of generating primitive numbers for any element, not just those assigned in the table. This method should be systematic and scalable, allowing us to generate primitive numbers for all elements represented by letters beyond D. For this purpose, a primitive number generator is developed. Due to space limitations, we do not illustrate the details of the generation in this paper. A live implementation of the Primitive Number Generator is available online [R1, see Primitive Number Generator]. 3. Verification Rules for Satisfiability 3.1 Case Study The new framework can be applied to any formula, regardless of its complexity or the number of elements (variables) and clauses. However, to clearly illustrate how it works, we present a simple example as a case study. Let us see a standard 2-SAT formula: (A ∨ ¬B) ∧ (B ∨ C) According to the digital method DCMPL, this is a three-element formula as it contains A, B and C three elements (variables). In the three-element column of the primitive number lookup table [7], we find the following primitive numbers: A: 11110000 ¬A: 00001111 B: 11001100 ¬B: 00110011 C: 10101010 ¬C: 01010101 By Replacing each basic expression of the formula above with its primitive number, we convert the symbolic formula (A ∨ ¬B) ∧ (B ∨ C) into a numerical formula: (11110000 ∨ 00110011) ∧ (11001100 ∨ 10101010) Let us apply the “∨” and “∧”formulas from the formula table below [7] to perform calculations: Table 2: Eight Sets of Digital Calculation Formulas ∧ ∨ → ⊕ (1 ∧ 1) ↔ 1 (1 ∧ 0) ↔ 0 (0 ∧ 1) ↔ 0 (0 ∧ 0) ↔ 0 (1 ∨ 1) ↔ 1 (1 ∨ 0) ↔ 1 (0 ∨ 1) ↔ 1 (0 ∨ 0) ↔ 0 (1 → 1) ↔ 1 (1 → 0) ↔ 0 (0 → 1) ↔ 1 (0 → 0) ↔ 1 (1 ⊕ 1) ↔ 0 (1 ⊕ 0) ↔ 1 (0 ⊕ 1) ↔ 1 (0 ⊕ 0) ↔ 0 ↑ ↓ ← ↔ (1 ↑ 1) ↔ 0 (1 ↑ 0) ↔ 1 (0 ↑ 1) ↔ 1 (0 ↑ 0) ↔ 1 (1 ↓ 1) ↔ 0 (1 ↓ 0) ↔ 0 (0 ↓ 1) ↔ 0 (0 ↓ 0) ↔ 1 (1 ← 1) ↔ 1 (1 ← 0) ↔ 1 (0 ← 1) ↔ 0 (0 ← 0) ↔ 1 (1 ↔ 1) ↔ 1 (1 ↔ 0) ↔ 0 (0 ↔ 1) ↔ 0 (0 ↔ 0) ↔ 1 Calculate the first clause: 11110000 //A 00110011 ∨ //¬B 11110011 //(A ∨ ¬B) Calculate the second clause: 11001100 //B 10101010 ∨ //C 11101110 //(B ∨ C) Calculate two clauses 11110011 //(A ∨ ¬B) 11101110 ∧ //(B ∨ C) 11100010 //(A ∨ ¬B) ∧ (B ∨ C) Conclusion: the truth value of (A ∨ ¬B) ∧ (B ∨ C) is 11100010 This calculation can be verified using online truth value calculator [R1, see Truth Value Calculator]. The given formula (A ∨ ¬B) ∧ (B ∨ C) contains three distinct elements: A, B and C, and the three elements yield eight possible combinations. Let + or 1 represent True, and ¬ or 0 represent False, the eight possible combinations can be listed as follows: Table 3: Combinations of Three Elements +/¬ 1/0 +/¬ABC ABC = 1/0 +++ 111 +A+B+C A=1, B=1, C=1 ++¬ 110 +A+B¬C A=1, B=1, C=0 +¬+ 101 +A¬B+C A=1, B=0, C=1 +¬¬ 100 +A¬B¬C A=1, B=0, C=0 ¬++ 011 ¬A+B+C A=0, B=1, C=1 ¬+¬ 010 ¬A+B¬C A=0, B=1, C=0 ¬¬+ 001 ¬A¬B+C A=0, B=0, C=1 ¬¬¬ 000 ¬A¬B¬C A=0, B=0, C=0 Substituting each set of element-value assignments into the original formula (A ∨ ¬B) ∧ (B ∨ C) yields eight parsed formulas: (1 ∨ 0) ∧ (1 ∨ 1) (1 ∨ 0) ∧ (1 ∨ 0) (1 ∨ 1) ∧ (0 ∨ 1) (1 ∨ 1) ∧ (0 ∨ 0) (0 ∨ 0) ∧ (1 ∨ 1) (0 ∨ 0) ∧ (1 ∨ 0) (0 ∨ 1) ∧ (0 ∨ 1) (0 ∨ 1) ∧ (0 ∨ 0) Let us apply the Digital Calculation Method to calculate the first parsed formula: Given: (1 ∨ 0) ∧ (1 ∨ 1) Calculation: 1 //1 0 ∨ //0 1 //R1: (1 ∨ 0) 1 //1 1 ∨ //1 1 //R2: (1 ∨ 1) 1 //R1 1 ∧ //R2 1 //R3: (R1 ∧ R2) Final result: 1 Calculating all eight formulas (from top to bottom) produces the following results: 1, 1, 1, 0, 0, 0, 1, and 0. Put them together, and mark each row with truth value 1 as “SAT”, and each row with truth value 0 as “UNSAT”, we have the following table: Table 4: Satisfiability Table of Formula (A ∨ ¬B) ∧ (B ∨ C) By concatenating the eight values in the “Truth Value” column (from top to bottom) in horizontal order, we obtain the number 11100010. Notably, the number 11100010 obtained through this list-all-combinations method matches exactly the truth value 11100010 derived from the digital method DCMPL. This correspondence demonstrates the effectiveness of the digital method in solving SAT problem. This discovery reveals the equivalence of the two approaches in achieving the same result, with one being comparatively simpler and more straightforward. 3.2 Direct and Simple Approach In the case study above, we analyzed the given formula (A ∨ ¬B) ∧ (B ∨ C) and by applying the digital method and we obtained the truth value 11100010, then from the binary number, we can directly find: the given formula is satisfiable; the 8 digits represent the total 8 assignments; 4 ‘1’s of the 8 digits represent 4 satisfying assignments; 4 ‘0’s of the 8 digits indicate 4 unsatisfying assignments; the digits in the positions 1, 2, 3 and 7 indicate that the assignments 1, 2, 3, and 7 are SAT; the digits in the positions 4, 5, 6 and 8 indicate that the assignments 4, 5, 6, and 8 are UNSAT. See figure below: We have a summary: Given formula: (A ∨ ¬B) ∧ (B ∨ C) Truth value: 11100010 Total assignments: 8 Total SAT assignments: 4, including assignments 1, 2, 3 and 7 Total UNSAT assignments: 4, including assignments 4, 5, 6 and 8 All the above information can be read directly from the binary number 11100010, and this is straightforward, since it only requires reading the number. 3.3 Length of Truth Value and Number of Assignments In the case study above, we observed: The given formula contains three elements, and the three elements yield eight combinations – eight assignments. The given formula has a truth value that contains eight digits. This correspondence suggests that the number of digits in the truth value is equal to the number of the assignments. Equivalently, we can state the rule as: For any formula, the length of its truth value is equal to the number of its assignments. It should be noted that the number of digits in truth value and the number of assignments both are determined by the number of elements (variables), not by the number of clauses. In Table 1: Primitive Numbers, the primitive number of an expression may be represented by different binary numbers depending on how many elements are involved. In Row A, we observe that the primitive numbers across columns differ based on the number of distinct elements: A (or x1) = 10 //in one-element expression A (or x1) = 1100 //in two-element expression A (or x1) = 11110000 //in three-element expression A (or x1) = 1111111100000000 //in four-element expression We observe the digit-representing length pattern in the table: Non-element expression: 1 digit One-element expression: 2 digits Two-element expression: 4 digits Three-element expression: 8 digits Four-element expression: 16 digits Let n represent the number of distinct elements and L represent the length of digits, we can then have the truth value length formula: L = 2^n Or we can write it as: L = 2 n . Or: L = pow(2, n). The length of digits indicates the total number of assignments. Therefore, the length formula is also the formula for determining the total number of assignments. Given we have a logical expression: (A ∧ ¬B) ∧ (C ∨ D) ∧ (E ∨ F). It consists of 6 distinct elements: A, B, C, D, E, and F. That is: n = 6. Applying the length formula, we can calculate the length: 2 to the power of 6 equals 64. It indicates that a six-element expression has 64 assignments. It should be noted that, “The number of distinct elements” refers to the total count in the sequence, with the last element acting as a token to indicate inclusion of all preceding elements, up to and including the last element, regardless of whether all preceding elements are explicitly displayed or rearranged. In summary, if the terminal element is the n‑th in the alphabetical or numerical sequence, then the total number of elements is n. 3.4 Five Digital Verification Rules for Satisfiability From case studies such as the one illustrated above, the following SAT verification rules were discovered: Rule 1: The truth value of a satisfiable formula contains at least one 1. If a formula is satisfiable, then its truth value is a number that necessarily contains at least one digit 1. For example, (A ∨ ¬B) ∧ (B ∨ C) is satisfiable, and its truth value is 11100010, which consists of eight digits, including four '1's. Rule 2: The truth value of an unsatisfiable formula necessarily consists only of '0's. If a formula is unsatisfiable, then its truth value is a number that necessarily consists entirely of '0's. For example, (A ∨ B) ∧ (A ∨ ¬B) ∧ (¬A ∨ C) ∧ (¬A ∨ ¬C) is unsatisfiable, and its true value is a number consisting of eight '0's: 00000000. Rule 3: The number of digits in a truth value indicates the total number of assignments. Given a formula, whether it is satisfiable or unsatisfiable, the number of digits in its truth value reveals the total number of assignments. For example, (A ∨ ¬B) ∧ (B ∨ ¬A) has a truth value 1001. The 4 digits of the number indicate that there are 4 assignments for this formula. Rule 4: In a numerical truth value, each digit 1 indicates a satisfying assignment, while each digit 0 indicates an unsatisfying assignment. In a numerical truth value of a formula, each digit 1 indicates a satisfying assignment, while each digit 0 indicates an unsatisfying assignment. Therefore, the count of '1's corresponds to the number of satisfying assignments, and the count of '0's corresponds to the number of unsatisfying assignments. For example, the formula (A ∨ B) ∧ (¬B ∨ C) has a truth value 10111000, which contains four '1's and four '0's. Therefore, the formula has 4 satisfying assignments and 4 unsatisfying assignments. Rule 5: The position of a digit 1 or digit 0 in a numerical truth value exactly corresponds to its position in the sequential order of all assignments. The position of a digit 1 or digit 0 in a numerical truth value exactly indicates the position where is its position in the sequential order of all assignments. For example, (A ∨ ¬B) ∧ (B ∨ C) has the truth value 11100010, it indicates that in the sequence of all 8 assignments, assignments 1, 2, 3 and 7 are SAT, and assignments 4, 5, 6, and 8 are UNSAT. 4. A SAT Solver Based on Truth Value Calculation With the truth-value calculation method and the five verification rules that we discussed above, we can build a digitally-based SAT Solver. This solver is different from the conventional solvers, and it uses a numerical calculation method to verify a formula's satisfiability and find its satisfying assignments, instead of applying a graph-analysis and path tracking approach. By calculating the numerical truth-value, a formula can be verified whether it is satisfiable or unsatisfiable, and can be found how many assignments are contained, including satisfying and unsatisfying assignments, and the positions of them. The workflow of the SAT solver can be described in the following steps: 4.1 Steps 1–4: Verify Satisfiability and Count Assignments Whether processing a small or large set of variables, the steps 1 to 4 in the process are the same. Step 1: Validate the input formula Validate that the input string constitutes a valid SAT formula. Under the restrictive definition, a standard SAT formula is in Conjunctive Normal Form (CNF), which is expressed as a conjunction of disjunctive clauses, such as: (A ∨ ¬B) ∧ (B ∨ C) // or: (x1 ∨ ¬x2) ∧ (x2 ∨ x3) Any input that does not conform to this format is considered invalid. If the formula validation returns “valid”, then go to the next step. Step 2: Calculate the truth value of the formula Apply the digital method DCMPL to calculate the truth value of the given formula. Let us see an example: Given: (A ∨ ¬B) ∧ (B ∨ C) Calculation: 11110000 //A 00110011 ∨ //¬B 11110011 //R1: (A ∨ ¬B) 11001100 //B 10101010 ∨ //C 11101110 //R2: (B ∨ C) 11110011 //R1 11101110 ∧ //R2 11100010 //R3: (R1 ∧ R2) Final result: 11100010. This is the truth value of the given formula. With the numerical truth value obtained, we can use it to verify the satisfiability of the formula. Step 3: Verify the satisfiability of the formula Based on the calculation result (the numerical truth value), and the digital verification rules, we can directly determine whether the given formula is satisfiable or unsatisfiable: If the number of the truth value contains at least one 1, then the formula is satisfiable. As we can see, the truth value 11100010 contains four ‘1’s. Therefore, the formula is satisfiable. Step 4: Count assignments of the formula Based on the numerical truth value of the formula, and the digital verification rules, we can determine the total number of assignments, according to the occurrences of '1's and '0's. Given the numerical truth value is "11100010", a simple count yields a total of 8 digits. This confirms that the total number of assignments is 8. Among them, 1 appears 4 times, while 0 also appears 4 times. Consequently, this corresponds to 4 instances of satisfying assignments and 4 instances of unsatisfying assignments. We have a summary: Given formula: (A ∨ ¬B) ∧ (B ∨ C) Truth value: 11100010 Satisfiability: SAT Total assignments: 8 Satisfying assignments: 4 Unsatisfying assignments: 4 4.2 Steps 5: List and Find Assignments Having illustrated the application of Verification Rules 1-4 in Steps 1-4, we now demonstrate how to apply Rule 5 in Step 5 to list and identify assignments. In realistic applications, if a given formula contains a small number of distinct elements, we can generate and list all possible assignments. But if it contains a vast number of variables (hundreds or more of them), this “generate-and-list-all” method is impractical. The responsibility of a SAT solver is to find a satisfying assignment efficiently and quickly. Therefore, there are two options: 1. List all assignments if the formula consists of a small number of elements (variables); 2. Find a satisfying assignment if the formula consists of a vast number of elements (variables). Option 1: List all assignments if the formula consists of a small number of elements In this step, we will generate all possible assignments. Since the total number of possible combinations depends on the number of distinct elements (variables), in this step, we first need to find the distinct elements. Given the formula is: (A ∨ ¬B) ∧ (B ∨ C), we can find that the distinct elements are ABC. Then we will generate all possible combinations of the three elements. The core procedure of this step is demonstrated in the following algorithm. Algorithm 1: List and parse all assignments function getDistinctElements (formula) tokens ← TOKENIZE(formula) // Extract all tokens elements ← FILTER_WORDS(tokens) // Keep only alphanumeric elements distinctElements ← UNIQUE_SORTED(elements) // Remove duplicates and sort return CONCATENATE(distinctElements) end function function listAllAssignments (element_string, index ← 0, current_comb ← "", result ← empty list) // If we have reached the end of the string, store the combination if index = LENGTH (elementString) then APPEND currentComb TO result return end if // Get the current character char ← elementString [index] // Create two combinations: one with =1, one with =0 assign1 ← currentComb + char + "=1; " assign0 ← currentComb + char + "=0; " // Recursive calls to generate combinations for remaining characters CALL listAllAssignments (elementString, index + 1, assign1, result) CALL listAllAssignments (elementString, index + 1, assign0, result) return result end function function parseFormula (formula, assignments) // Get parsed formulas, for example (1 ∨ 1) ∧ (0 ∨ 1) // (Details of parsing are omitted) return parsedFormulaArr end function // Example usage formula ← "(A ∨ ¬B) ∧ (B ∨ C)" elementString ← getDistinctElements (formula) assignments ← listAllAssignments (elementString) parsedFormulaArr ← parseFormula (formula, assignments) // Display each generated combination foreach assignment IN assignments do print assignment end foreach // Display each parsed formula foreach psFormula IN parsedFormulaArr do psTruthValue ← calculateTruthValue (psFormula) print psFormula + " = " + psTruthValue end foreach The output combinations are: A=1; B=1; C=1; A=1; B=1; C=0; A=1; B=0; C=1; A=1; B=0; C=0; A=0; B=1; C=1; A=0; B=1; C=0; A=0; B=0; C=1; A=0; B=0; C=0; The parsed formulas from the output are: (1 ∨ 0) ∧ (1 ∨ 1) = 1 (1 ∨ 0) ∧ (1 ∨ 0) = 1 (1 ∨ 1) ∧ (0 ∨ 1) = 1 (1 ∨ 1) ∧ (0 ∨ 0) = 0 (0 ∨ 0) ∧ (1 ∨ 1) = 0 (0 ∨ 0) ∧ (1 ∨ 0) = 0 (0 ∨ 1) ∧ (0 ∨ 1) = 1 (0 ∨ 1) ∧ (0 ∨ 0) = 0 Put all together, we have an assignment table. See Table 4: Satisfiability Table of Formula (A ∨ ¬B) ∧ (B ∨ C), which we illustrated earlier in Section 3. Option 2: Find a satisfying assignment if the formula consists of a vast number of variables The digitally-based solver provides a simple solution for finding a satisfying assignment. Recall the Rule 5 of the Five Digital Verification Rules for Satisfiability: “The position of a digit 1 or digit 0 in a numerical truth value exactly corresponds to its position in the sequential order of all assignments”. Based on this rule, we just need to locate the first 1, and use it to find the corresponding assignment, and evaluate it, instead of listing and calculating all of the assignments. We can directly access and print a specific combination based on the key number without generating all combinations in an array. The approach is to compute the combination directly based on its index in the sequence. In a variable string, like ABCD, each character in the input string has two choices (1 or 0), so the total number of combinations is 2^n, where n is the number of variables. The key number (k) represents the position in the sequence. We can determine each digit (1 or 0) by inspecting bits in k's binary representation. For example, given a formula: (¬A ∨ ¬B) ∧ (C ∨ ¬D). And by calculation, we obtained its truth value: 0000110111011101. Then it can be observed that the first 1 occurs at position 5 in the 16-digit string 0000110111011101. And we can also find the distinct elements in the given formula are: ABCD. Now we know the first 1 is at position 5 and know the distinct elements are ABCD. Then based on these two pieces of information, we can find the first satisfying assignment: A=1, B=0, C=1, D=1 Table 5: Satisfiability Table of Formula (¬A ∨ ¬B) ∧ (C ∨ ¬D) The mechanism of this assignment-finding approach is that: the distinct elements are used to make possible combinations in sequence, and the position is used as a key for locating a specific combination in the sequence. To verify it, we can substitute the assignment into the original formula (¬A ∨ ¬B) ∧ (C ∨ ¬D) to produce a parsed formula: (0 ∨ 1) ∧ (1 ∨ 0) Applying the digital calculation formulas to calculate the parsed formula: 0 //0 1 ∨ //1 1 //R1: (0 ∨ 1) 1 //1 0 ∨ //0 1 //R2: (1 ∨ 0) 1 //R1 1 ∧ //R2 1 //R3: (R1 ∧ R2) Final result: 1 We get the result: 1. This proves that the assignment is satisfying. Therefore, the formula is satisfiable. Due to space limitations, we do not present an example involving a vast number of digits and assignments, instead, to demonstrate the feasibility of the solution, we use an example of a formular with 10 elements and 1,024 assignments. For example, given a formula: (¬A ∨ ¬B) ∧ (C ∨ ¬D) ∧ (¬E ∨ F) ∧ (G ∨ ¬H) ∧ (¬I ∨ J). By calculation, we obtain its truth value, which is a long binary string: 000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000 000000 0000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000010111011000010110000000000000000101110110000101110111 0110000101 110111011000010110000000000000000101110110000101110111011000010110000000000000 00000000000000000000000000000000000000000000000000010111011000010110000000 0000000001011 101100001011101110110000101110111011000010110000000000000000101110110000101110 111011000010111011101100001011000000000000000010111011000010111011101100001011 0000000000000000000000000000000000000000000000000000000000000000101110110000 10110000000 000000000101110110000101110111011000010111011101100001011000 0000000000000101110110000101110111011000010111011101100001011000000 0000000000101110110000101110111011000010110000000000000000000000000000000 00000000000000000000000000000000010111011000010110000000000000000101110110 00010111011101100001011 By counting the length of digits, we find that there are 1,024 digits, indicating the total assignments are 1,024. We can also find that the first occur of the digit 1 is at the position: 257, indicating that the first satisfying assignment is the 257th item in the sequence. Then with this position information, we can get the assignment. We can summarize the results as follows: Given formula: (¬A ∨ ¬B) ∧ (C ∨ ¬D) ∧ (¬E ∨ F) ∧ (G ∨ ¬H) ∧ (¬I ∨ J) A satisfying assignment found at #: 257 The satisfying assignment: A=1, B=0, C=1, D=1, E=1, F=1, G=1, H=1, I=1, J=1 5. Advanced SAT Solver and Universal SAT Solver The essence of the Boolean Satisfiability Problem (SAT) can be described as a question: whether a given Boolean formula can be made satisfied by some assignment of its variables. According to the strict definition, a SAT formula has a very specific structure. It must be in Conjunctive Normal Form (CNF), where each clause is a disjunction (OR) of one or two literals. In other words, A SAT formula is typically an AND of clauses, where each clause is an OR of at most two literals. A typical and widely known CNF formula has the following pattern: (literal ∨ literal) ∧ (literal ∨ literal) For example: (x1 ∨ ¬x2) ∧ (x2 ∨ x3). A deeper understanding of SAT's essence suggests that SAT problem cannot be understood only within a narrow scope. Since its task is to find a satisfying assignment, logically, this problem or task exists for any expression, not just for certain expressions. Based on this broader understanding, we can set different scopes and develop the SAT solvers that are applicable to the scopes. By removing the restriction on CNF formulas, we can have the advanced SAT Solver, which is designed to solve a broader SAT problem. The advanced SAT Solver allows any logical connective operator, such as →, ⊕, ↔, ↑, ↓, and ←, to be used inside a clause. Let symbol # represent any logical connective operator, the allowed formulas have the following pattern: (literal # literal) ∧ (literal # literal) For example: (x1 → ¬x2) ∧ (x2 ↔ x3). We can have another SAT Solver named Universal SAT Solver, which is designed to solve a general or a universal SAT problem, and it removes most of the restrictions on SAT formulas. Any logical connective operator, such as →, ⊕, ↔, ↑, ↓, and ←, can be used within a clause and also can be used between clauses. Let symbol # represent any logical connective operator, the universal SAT Solver allows a formula in the following pattern: (literal # literal) # (literal # literal) For example: (¬x1 → x2) ↔ (x3 ⊕ x4). Owing to space constraints, the detailed calculation process is not included here. The live implements of the advanced solver and the universal solver are available online [R1, see Advanced SAT Solver and Universal SAT Solver]. 6. Conclusion This paper presents a new SAT solver for solving the Satisfiability Problem in a broad range of logical expressions. Unlike conventional approaches, it introduces an alternative framework that diverges from the use of graph-like structures and associated tracking techniques. The new solver applies a numerical method to calculate the truth value of a given formula, and determine the satisfiability and the assignments. It offers significant advantages in terms of simplicity, directness, and accuracy, particularly when applied to a modest set of variables under constrained computational resources. Live demonstrations are available online ([R1], see SAT Solvers). It should be noted that the current online implementation, hosted on a resource limited server and subject to internet traffic, is therefore intended primarily for demonstration purposes. In practice, the solver can readily be applied to larger scale tasks when these restrictions are not present. Declarations Supplementary Resources [R1] Tools of the DCL: https://dclge.com/t01-tools Conflict of Interest Statement The author declares no conflicts of interest. Funding Statement This research received no specific grant from any funding agency in the public, commercial, or not-for-profit sectors. Data Availability Statement The author confirms that all data generated or analysed during this study are included in this article. Furthermore, all sources and data supporting the findings of this study were all publicly available at the time of submission. Open Access This article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article’s Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article’s Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by/4.0/. References Davis, Martin; Logemann, George; Loveland, Donald (1962). A Machine Program for Theorem Proving. Communications of the ACM . 5 (7): 394–397 M. R. Krom (1967) The Decision Problem for a Class of First‐Order Formulas in Which all Disjunctions are Binary, Mathematical Logic Quarterly 13 (1‐2):15-20 Even, S.; Itai, A.; Shamir, A. (1976), On the complexity of time table and multi-commodity flow problems, SIAM Journal on Computing , 5 (4): 691–703 Aspvall, Bengt; Plass, Michael F.; Tarjan, Robert E. (1979), A linear-time algorithm for testing the truth of certain quantified boolean formulas, Information Processing Letters , 8 (3): 121–123 J.P. Marques-Silva; Karem A. Sakallah (1996). GRASP-A New Search Algorithm for Satisfiability. Digest of IEEE International Conference on Computer-Aided Design (ICCAD) . pp. 220–227 Roberto J. Bayardo Jr.; Robert C. Schrag (1997). Using CSP look-back techniques to solve real world SAT instances. Proc. 14th Nat. Conf. on Artificial Intelligence (AAAI) . pp. 203–208. Zhou, Nongjian (2024), A Digital Calculation Method for Propositional Logic, https://philsci-archive.pitt.edu/24527/ Additional Declarations No competing interests reported. Cite Share Download PDF Status: Posted Version 1 posted You are reading this latest preprint version Research Square lets you share your work early, gain feedback from the community, and start making changes to your manuscript prior to peer review in a journal. As a division of Research Square Company, we’re committed to making research communication faster, fairer, and more useful. We do this by developing innovative software and high quality services for the global research community. Our growing team is made up of researchers and industry professionals working together to solve the most critical problems facing scientific publishing. Also discoverable on Platform About Our Team In Review Editorial Policies Advisory Board Help Center Resources Author Services Accessibility API Access RSS feed Manage Cookie Preferences © Research Square 2026 | ISSN 2693-5015 (online) Privacy Policy Terms of Service Do Not Sell My Personal Information {"props":{"pageProps":{"initialData":{"identity":"rs-8468445","acceptedTermsAndConditions":true,"allowDirectSubmit":true,"archivedVersions":[],"articleType":"Research Article","associatedPublications":[],"authors":[{"id":584678470,"identity":"a3e353b6-7f36-4a35-b80c-80a651c14f63","order_by":0,"name":"Nongjian Zhou","email":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAAyAQMAAABI0h/eAAAABlBMVEX///8AAABVwtN+AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA20lEQVRIiWNgGAWjYLACCQMgwd4DZvPwEa+F5wwDwwEgxUaCVTlgLQwEtZiz9x5+YVFglyc/8+3Bxx9z7GTYGJgfPrqBR4tlz7k0CwmD5GLG2XnJBge3JQMdxmZsnINHi8GNHDMDCQPmxGbpHDOJg9uYgVp42KSJ0FKf2CZ5BqSlnigtxg8kDA4n9kjwgLQcJkLLmTNmwEA+njiDJ8fY4Oy24zxszIT8crzH+LPEn+rE+e1nDB9Ubqu252dvfvgYnxYgYJOWQOEz41cOVvLxA2FFo2AUjIJRMJIBAODKQwt/3EEWAAAAAElFTkSuQmCC","orcid":"","institution":"Matrix Information Science and Technology Association","correspondingAuthor":true,"prefix":"","firstName":"Nongjian","middleName":"","lastName":"Zhou","suffix":""}],"badges":[],"createdAt":"2025-12-29 02:23:12","currentVersionCode":1,"declarations":"","doi":"10.21203/rs.3.rs-8468445/v1","doiUrl":"https://doi.org/10.21203/rs.3.rs-8468445/v1","draftVersion":[],"editorialEvents":[],"editorialNote":"","failedWorkflow":false,"files":[{"id":101832377,"identity":"b96b78eb-7027-4633-988e-e4fd8279a4e5","added_by":"auto","created_at":"2026-02-04 06:48:52","extension":"png","order_by":1,"title":"Figure 1","display":"","copyAsset":false,"role":"figure","size":74950,"visible":true,"origin":"","legend":"\u003cp\u003eDirectly read the SAT information from the truth value\u003c/p\u003e","description":"","filename":"1.png","url":"https://assets-eu.researchsquare.com/files/rs-8468445/v1/2d5b58c2c12ae7d73ff79f15.png"},{"id":101832376,"identity":"dd9464f1-6283-4daa-88bf-ca031a052b9b","added_by":"auto","created_at":"2026-02-04 06:48:52","extension":"png","order_by":2,"title":"Figure 2","display":"","copyAsset":false,"role":"figure","size":84084,"visible":true,"origin":"","legend":"\u003cp\u003eWorkflow of the digitally-based SAT solver\u003c/p\u003e","description":"","filename":"2.png","url":"https://assets-eu.researchsquare.com/files/rs-8468445/v1/5c08095acaf73c4d4275996a.png"},{"id":101881274,"identity":"2fb31623-d750-4c96-ab23-428e8b8f0a57","added_by":"auto","created_at":"2026-02-04 15:11:17","extension":"pdf","order_by":0,"title":"","display":"","copyAsset":false,"role":"manuscript-pdf","size":1383025,"visible":true,"origin":"","legend":"","description":"","filename":"manuscript.pdf","url":"https://assets-eu.researchsquare.com/files/rs-8468445/v1/1d8d9242-cf2b-4df5-904e-b9680caa55aa.pdf"}],"financialInterests":"No competing interests reported.","formattedTitle":"A SAT Solver Based on Truth Value Calculation","fulltext":[{"header":"1.\tIntroduction","content":"\u003cp\u003eThe Boolean Satisfiability Problem (SAT) is one of the major challenges in\u003cstrong\u003e\u0026nbsp;\u003c/strong\u003ecomputational logic and theoretical computer science. Modern SAT-solving techniques trace their origins to the Davis\u0026ndash;Putnam\u0026ndash;Logemann\u0026ndash;Loveland (DPLL) algorithm, introduced by Martin Davis, George Logemann, and Donald W. Loveland [1]. Not long after, M. R. Krom [2] proposed a specialized class of CNF formulas, now known as Krom formulas, which restrict clauses to at most two literals. His contribution paved the way for efficient, graph‑based algorithms for 2‑SAT, a notable subclass of SAT that can be solved in polynomial time.\u003c/p\u003e\n\u003cp\u003eBased on Krom\u0026rsquo;s work, researchers Even, Itai \u0026amp; Shamir [3]\u0026nbsp;and\u0026nbsp;Aspvall, Plass \u0026amp; Tarjan [4] developed a linear-time algorithm for 2-SAT using strongly connected components (SCC) in directed graphs, further optimizing SAT-solving techniques for specific problem classes. As the need to solve more complex SAT instances grew, researchers extended SAT-solving techniques beyond 2-SAT, leading to the development of Conflict-Driven Clause Learning (CDCL) in the 1990s\u0026ndash;2000s. This method was proposed by Marques-Silva and\u0026nbsp;Karem A. Sakallah [5]\u0026nbsp;and Bayardo and Schrag [6]. CDCL refined DPLL by incorporating conflict analysis, clause learning, implication graphs, and non-chronological backtracking, significantly improving performance for large-scale SAT problems.\u003c/p\u003e\n\u003cp\u003eToday, DPLL and CDCL remain widely regarded as core techniques for solving SAT problems. Both approaches fundamentally depend on tree‑like graph structures for their search procedures. Although they have proven highly effective, there remains room for exploring alternative solutions.\u003c/p\u003e\n\u003cp\u003eThis paper presents a novel SAT solver \u0026ndash; applying a truth-value calculation method - for solving the satisfiability problem. Unlike conventional approaches, it introduces an alternative framework that diverges from the use of graph-like structures and associated tracking techniques in SAT-solving methodologies.\u003c/p\u003e"},{"header":"2.\tNotation System and Primitive Numbers","content":"\u003cp\u003eThe Digital Calculation Method for Propositional Logic (DCMPL) [7] was first introduced in 2024. And this method can be used for solving the satisfiability problem.\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eDCMPL is a fixed‑value‑assignment system in which every primitive unit (e.g., an element or an existence state) is associated with a predetermined truth value (named primitive number). A primitive number is a binary number representing a truth value of a basic expression, such as A, B, C, etc. Irrespective of variation, all propositional formulas are composed of a small number of primitive units - basic expressions. We can calculate the truth value of a formula based on the primitive numbers of the basic expressions, regardless of how complex it is. For instance, in three-element expressions, the first element (variable) A is assigned a primitive number 11110000, and the second element B has its primitive number 11001100. These primitive numbers remain unchanged across the entire system and throughout all computations. Based on these primitive numbers, we can calculate the truth value of a formula such as (A\u0026nbsp;\u0026or;\u0026nbsp;B), or (A \u0026rarr; B), etc.\u003c/p\u003e\n\u003cp\u003eThis framework incorporates the following design principles:\u0026nbsp;\u003c/p\u003e\n\u003cul\u003e\n \u003cli\u003eUnify propositional elements (variables): for small-scale implementations (no more than 26 distinct elements), letters A, B, C, etc. are used to represent elements. This 26-letter alphabet system can be referred to as the \u0026ldquo;AB Notation System\u0026rdquo;. And for large-scale implementations (more than 26 distinct elements), x1, x2, \u0026hellip; xn are used to represent elements. The notation system employing x1, x2, \u0026hellip;, xn can be referred to as the \u0026ldquo;XN Notation System\u0026rdquo;.\u003c/li\u003e\n \u003cli\u003eThe symbols\u0026nbsp;\u0026and;,\u0026nbsp;\u0026or;, \u0026rarr;,\u0026nbsp;\u0026oplus;, \u0026harr;, \u0026uarr;, \u0026darr;, and \u0026larr; are used to represent AND, OR, IMPLIES, XOR, EQUIVALENT, NAND, NOR, and the converse of IMPLIES.\u003c/li\u003e\n \u003cli\u003eNegation is uniformly represented as symbol \u0026not;, and affirmation is uniformly represented as symbol +, which can be omitted.\u003c/li\u003e\n \u003cli\u003eNegation is not classified into the category of operators, but treated as a state expression.\u0026nbsp;\u003c/li\u003e\n \u003cli\u003eThere are two state expressions: affirmation and negation. They are represented as + and \u0026not; respectively, or 1 and 0 respectively. In this framework, existence, affirmation, and Truth are equivalent in their conceptual essence, while non-existence, negation, and Falsity are conceptually equivalent.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBy fixing and standardizing the variable symbols, and assigning truth values to them, a table comprising a restricted set of primitive numbers is constructed for demonstration purposes [7]. See below:\u003c/p\u003e\n\u003cp\u003eTable 1: Primitive Numbers (non-element to four-element)\u0026nbsp;\u003c/p\u003e\n\u003ctable border=\"1\" cellspacing=\"0\" cellpadding=\"0\" width=\"623\"\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 47px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eExp\u003c/strong\u003e\u003c/p\u003e\n \u003cp\u003eAB\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 47px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eExp\u003c/strong\u003e\u003c/p\u003e\n \u003cp\u003eXN\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eNon-element\u003c/strong\u003e\u003c/p\u003e\n \u003cp\u003e\u003cstrong\u003e+/\u0026not;\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e1-element\u003c/strong\u003e\u003c/p\u003e\n \u003cp\u003eA\u003c/p\u003e\n \u003cp\u003ex1\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e2-element\u003c/strong\u003e\u003c/p\u003e\n \u003cp\u003eAB\u003c/p\u003e\n \u003cp\u003ex1,x2\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e3-element\u003c/strong\u003e\u003c/p\u003e\n \u003cp\u003eABC\u003c/p\u003e\n \u003cp\u003ex1,x2,x3\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 151px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e4- element\u003c/strong\u003e\u003c/p\u003e\n \u003cp\u003eABCD\u003c/p\u003e\n \u003cp\u003ex1,x2,x3,x4\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e+\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e+\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e1\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e11\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e1111\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e11111111\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 151px;\"\u003e\n \u003cp\u003e1111111111111111\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e\u0026not;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e\u0026not;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e0\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e00\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e0000\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e00000000\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 151px;\"\u003e\n \u003cp\u003e0000000000000000\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003eA\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003ex\u003csub\u003e1\u003c/sub\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e10\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e1100\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e11110000\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 151px;\"\u003e\n \u003cp\u003e1111111100000000\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e\u0026not;A\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e\u0026not;x\u003csub\u003e1\u003c/sub\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e01\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e0011\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e00001111\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 151px;\"\u003e\n \u003cp\u003e0000000011111111\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003eB\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003ex\u003csub\u003e2\u003c/sub\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e1010\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e11001100\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 151px;\"\u003e\n \u003cp\u003e1111000011110000\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e\u0026not;B\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e\u0026not;x\u003csub\u003e2\u003c/sub\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e0101\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e00110011\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 151px;\"\u003e\n \u003cp\u003e0000111100001111\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003eC\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003ex\u003csub\u003e3\u003c/sub\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e10101010\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 151px;\"\u003e\n \u003cp\u003e1100110011001100\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e\u0026not;C\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e\u0026not;x\u003csub\u003e3\u003c/sub\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e01010101\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 151px;\"\u003e\n \u003cp\u003e0011001100110011\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003eD\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003ex\u003csub\u003e4\u003c/sub\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 151px;\"\u003e\n \u003cp\u003e1010101010101010\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e\u0026not;D\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e\u0026not;x\u003csub\u003e4\u003c/sub\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 85px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 104px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 151px;\"\u003e\n \u003cp\u003e0101010101010101\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eThe table above provides a limited set of primitive numbers, sufficient for computing the formulas involving elements indexed from A to D for demonstration purposes.\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eHowever, this restriction imposes limitation: formulas that incorporate elements beyond D (such as E, F, G, etc.) cannot be evaluated, as their corresponding primitive numbers are undefined. Extending the range of primitive numbers is therefore essential to broaden the applicability of the computational framework and to support formulas of substantially greater scale and complexity.\u003c/p\u003e\n\u003cp\u003eTo address this, we need a method capable of generating primitive numbers for any element, not just those assigned in the table. This method should be systematic and scalable, allowing us to generate primitive numbers for all elements represented by letters beyond D.\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eFor this purpose, a primitive number generator is developed. Due to space limitations, we do not illustrate the details of the generation in this paper. A live implementation of the Primitive Number Generator is available online [R1, see Primitive Number Generator].\u003c/p\u003e"},{"header":"3.\tVerification Rules for Satisfiability ","content":"\u003cp\u003e\u003cstrong\u003e3.1 Case Study\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe new framework can be applied to any formula, regardless of its complexity or the number of elements (variables) and clauses. However, to clearly illustrate how it works, we present a simple example as a case study.\u003c/p\u003e\n\u003cp\u003eLet us see a standard 2-SAT formula:\u003c/p\u003e\n\u003cp\u003e(A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(B\u0026nbsp;\u0026or;\u0026nbsp;C)\u003c/p\u003e\n\u003cp\u003eAccording to the digital method DCMPL, this is a three-element formula as it contains A, B and C three elements (variables). In the three-element column of the primitive number lookup table [7], we find the following primitive numbers:\u003c/p\u003e\n\u003cp\u003eA: 11110000\u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;\u0026nbsp;\u0026not;A: 00001111\u003c/p\u003e\n\u003cp\u003eB: 11001100\u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;\u0026nbsp;\u0026not;B: 00110011\u003c/p\u003e\n\u003cp\u003eC: 10101010\u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;\u0026not;C: 01010101\u003c/p\u003e\n\u003cp\u003eBy Replacing each basic expression of the formula above with its primitive number, we convert the symbolic formula (A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(B\u0026nbsp;\u0026or;\u0026nbsp;C) into a numerical formula:\u003c/p\u003e\n\u003cp\u003e(11110000\u0026nbsp;\u0026or;\u0026nbsp;00110011)\u0026nbsp;\u0026and;\u0026nbsp;(11001100\u0026nbsp;\u0026or;\u0026nbsp;10101010)\u003c/p\u003e\n\u003cp\u003eLet us apply the \u0026ldquo;\u0026or;\u0026rdquo; and \u0026ldquo;\u0026and;\u0026rdquo;formulas from the formula table below [7] to perform calculations:\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eTable 2: Eight Sets of Digital Calculation Formulas\u003c/p\u003e\n\u003ctable border=\"0\" cellspacing=\"0\" cellpadding=\"0\"\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd\u003e\n \u003cp\u003e\u0026and;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd\u003e\n \u003cp\u003e\u0026or;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd\u003e\n \u003cp\u003e\u0026rarr;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd\u003e\n \u003cp\u003e\u0026oplus;\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003e\n \u003cp\u003e(1\u0026nbsp;\u0026and;\u0026nbsp;1) \u0026harr; 1\u003cbr\u003e\u0026nbsp;(1 \u0026and; 0) \u0026harr; 0\u003cbr\u003e\u0026nbsp;(0 \u0026and; 1) \u0026harr; 0\u003cbr\u003e\u0026nbsp;(0 \u0026and; 0) \u0026harr; 0\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd\u003e\n \u003cp\u003e(1\u0026nbsp;\u0026or;\u0026nbsp;1) \u0026harr; 1\u003cbr\u003e\u0026nbsp;(1 \u0026or; 0) \u0026harr; 1\u003cbr\u003e\u0026nbsp;(0 \u0026or; 1) \u0026harr; 1\u003cbr\u003e\u0026nbsp;(0 \u0026or; 0) \u0026harr; 0\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd\u003e\n \u003cp\u003e(1 \u0026rarr; 1) \u0026harr; 1\u003cbr\u003e\u0026nbsp;(1 \u0026rarr; 0) \u0026harr; 0\u003cbr\u003e\u0026nbsp;(0 \u0026rarr; 1) \u0026harr; 1\u003cbr\u003e\u0026nbsp;(0 \u0026rarr; 0) \u0026harr; 1\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd\u003e\n \u003cp\u003e(1\u0026nbsp;\u0026oplus;\u0026nbsp;1) \u0026harr; 0\u003cbr\u003e\u0026nbsp;(1 \u0026oplus; 0) \u0026harr; 1\u003cbr\u003e\u0026nbsp;(0 \u0026oplus; 1) \u0026harr; 1\u003cbr\u003e\u0026nbsp;(0 \u0026oplus; 0) \u0026harr; 0\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003e\n \u003cp\u003e\u0026uarr;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd\u003e\n \u003cp\u003e\u0026darr;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd\u003e\n \u003cp\u003e\u0026larr;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd\u003e\n \u003cp\u003e\u0026harr;\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003e\n \u003cp\u003e(1 \u0026uarr; 1) \u0026harr; 0\u003cbr\u003e\u0026nbsp;(1 \u0026uarr; 0) \u0026harr; 1\u003cbr\u003e\u0026nbsp;(0 \u0026uarr; 1) \u0026harr; 1\u003cbr\u003e\u0026nbsp;(0 \u0026uarr; 0) \u0026harr; 1\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd\u003e\n \u003cp\u003e(1 \u0026darr; 1) \u0026harr; 0\u003cbr\u003e\u0026nbsp;(1 \u0026darr; 0) \u0026harr; 0\u003cbr\u003e\u0026nbsp;(0 \u0026darr; 1) \u0026harr; 0\u003cbr\u003e\u0026nbsp;(0 \u0026darr; 0) \u0026harr; 1\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd\u003e\n \u003cp\u003e(1 \u0026larr; 1) \u0026harr; 1\u003cbr\u003e\u0026nbsp;(1 \u0026larr; 0) \u0026harr; 1\u003cbr\u003e\u0026nbsp;(0 \u0026larr; 1) \u0026harr; 0\u003cbr\u003e\u0026nbsp;(0 \u0026larr; 0) \u0026harr; 1\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd\u003e\n \u003cp\u003e(1 \u0026harr; 1) \u0026harr; 1\u003cbr\u003e\u0026nbsp;(1 \u0026harr; 0) \u0026harr; 0\u003cbr\u003e\u0026nbsp;(0 \u0026harr; 1) \u0026harr; 0\u003cbr\u003e\u0026nbsp;(0 \u0026harr; 0) \u0026harr; 1\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eCalculate the first clause:\u003c/p\u003e\n\u003cp\u003e11110000 \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; //A\u003c/p\u003e\n\u003cp\u003e\u003cu\u003e00110011\u0026nbsp;\u003c/u\u003e\u003cu\u003e\u0026or;\u003c/u\u003e //\u0026not;B\u003c/p\u003e\n\u003cp\u003e11110011 //(A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eCalculate the second clause:\u003c/p\u003e\n\u003cp\u003e11001100 \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; //B\u003c/p\u003e\n\u003cp\u003e\u003cu\u003e10101010\u0026nbsp;\u003c/u\u003e\u003cu\u003e\u0026or;\u003c/u\u003e //C\u003c/p\u003e\n\u003cp\u003e11101110 //(B\u0026nbsp;\u0026or;\u0026nbsp;C)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eCalculate two clauses\u003c/p\u003e\n\u003cp\u003e11110011 //(A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u003c/p\u003e\n\u003cp\u003e\u003cu\u003e11101110\u0026nbsp;\u003c/u\u003e\u003cu\u003e\u0026and;\u003c/u\u003e //(B \u0026or; C)\u003c/p\u003e\n\u003cp\u003e11100010 //(A \u0026or; \u0026not;B) \u0026and; (B \u0026or; C)\u003c/p\u003e\n\u003cp\u003eConclusion: the truth value of (A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(B\u0026nbsp;\u0026or;\u0026nbsp;C) is 11100010\u003c/p\u003e\n\u003cp\u003eThis calculation can be verified using online truth value calculator [R1, see Truth Value Calculator].\u003c/p\u003e\n\u003cp\u003eThe given formula (A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(B\u0026nbsp;\u0026or;\u0026nbsp;C) contains three distinct elements: A, B and C, and the three elements yield eight possible combinations. Let + or 1 represent True, and \u0026not; or 0 represent False, the eight possible combinations can be listed as follows:\u003c/p\u003e\n\u003cp\u003eTable 3: Combinations of Three Elements\u003c/p\u003e\n\u003ctable border=\"1\" cellspacing=\"0\" cellpadding=\"0\"\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e+/\u0026not;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e1/0\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 76px;\"\u003e\n \u003cp\u003e+/\u0026not;ABC\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 123px;\"\u003e\n \u003cp\u003eABC = 1/0\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e+++\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e111\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 76px;\"\u003e\n \u003cp\u003e+A+B+C\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 123px;\"\u003e\n \u003cp\u003eA=1, B=1, C=1\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e++\u0026not;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e110\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 76px;\"\u003e\n \u003cp\u003e+A+B\u0026not;C\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 123px;\"\u003e\n \u003cp\u003eA=1, B=1, C=0\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e+\u0026not;+\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e101\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 76px;\"\u003e\n \u003cp\u003e+A\u0026not;B+C\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 123px;\"\u003e\n \u003cp\u003eA=1, B=0, C=1\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e+\u0026not;\u0026not;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e100\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 76px;\"\u003e\n \u003cp\u003e+A\u0026not;B\u0026not;C\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 123px;\"\u003e\n \u003cp\u003eA=1, B=0, C=0\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e\u0026not;++\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e011\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 76px;\"\u003e\n \u003cp\u003e\u0026not;A+B+C\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 123px;\"\u003e\n \u003cp\u003eA=0, B=1, C=1\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e\u0026not;+\u0026not;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e010\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 76px;\"\u003e\n \u003cp\u003e\u0026not;A+B\u0026not;C\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 123px;\"\u003e\n \u003cp\u003eA=0, B=1, C=0\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e\u0026not;\u0026not;+\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e001\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 76px;\"\u003e\n \u003cp\u003e\u0026not;A\u0026not;B+C\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 123px;\"\u003e\n \u003cp\u003eA=0, B=0, C=1\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e\u0026not;\u0026not;\u0026not;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 47px;\"\u003e\n \u003cp\u003e000\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 76px;\"\u003e\n \u003cp\u003e\u0026not;A\u0026not;B\u0026not;C\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 123px;\"\u003e\n \u003cp\u003eA=0, B=0, C=0\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSubstituting each set of element-value assignments into the original formula (A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(B\u0026nbsp;\u0026or;\u0026nbsp;C) yields eight parsed formulas:\u003c/p\u003e\n\u003cp\u003e(1\u0026nbsp;\u0026or;\u0026nbsp;0)\u0026nbsp;\u0026and;\u0026nbsp;(1\u0026nbsp;\u0026or;\u0026nbsp;1)\u003c/p\u003e\n\u003cp\u003e(1\u0026nbsp;\u0026or;\u0026nbsp;0)\u0026nbsp;\u0026and;\u0026nbsp;(1\u0026nbsp;\u0026or;\u0026nbsp;0)\u003c/p\u003e\n\u003cp\u003e(1\u0026nbsp;\u0026or;\u0026nbsp;1)\u0026nbsp;\u0026and;\u0026nbsp;(0\u0026nbsp;\u0026or;\u0026nbsp;1)\u003c/p\u003e\n\u003cp\u003e(1\u0026nbsp;\u0026or;\u0026nbsp;1)\u0026nbsp;\u0026and;\u0026nbsp;(0\u0026nbsp;\u0026or;\u0026nbsp;0)\u003c/p\u003e\n\u003cp\u003e(0\u0026nbsp;\u0026or;\u0026nbsp;0)\u0026nbsp;\u0026and;\u0026nbsp;(1\u0026nbsp;\u0026or;\u0026nbsp;1)\u003c/p\u003e\n\u003cp\u003e(0\u0026nbsp;\u0026or;\u0026nbsp;0)\u0026nbsp;\u0026and;\u0026nbsp;(1\u0026nbsp;\u0026or;\u0026nbsp;0)\u003c/p\u003e\n\u003cp\u003e(0\u0026nbsp;\u0026or;\u0026nbsp;1)\u0026nbsp;\u0026and;\u0026nbsp;(0\u0026nbsp;\u0026or;\u0026nbsp;1)\u003c/p\u003e\n\u003cp\u003e(0 \u0026or; 1) \u0026and; (0 \u0026or; 0)\u003c/p\u003e\n\u003cp\u003eLet us apply the Digital Calculation Method to calculate the first parsed formula:\u003c/p\u003e\n\u003cp\u003eGiven: (1\u0026nbsp;\u0026or;\u0026nbsp;0)\u0026nbsp;\u0026and;\u0026nbsp;(1\u0026nbsp;\u0026or;\u0026nbsp;1)\u003c/p\u003e\n\u003cp\u003eCalculation:\u003c/p\u003e\n\u003cp\u003e1 \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;//1\u003c/p\u003e\n\u003cp\u003e\u003cu\u003e0\u0026nbsp;\u003c/u\u003e\u003cu\u003e\u0026or;\u003c/u\u003e\u0026nbsp; //0\u003c/p\u003e\n\u003cp\u003e1 //R1: (1\u0026nbsp;\u0026or;\u0026nbsp;0)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003cp\u003e1 \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;//1\u003c/p\u003e\n\u003cp\u003e\u003cu\u003e1\u0026nbsp;\u003c/u\u003e\u003cu\u003e\u0026or;\u003c/u\u003e\u0026nbsp; //1\u003c/p\u003e\n\u003cp\u003e1 //R2: (1\u0026nbsp;\u0026or;\u0026nbsp;1)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003cp\u003e1 \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;//R1\u003c/p\u003e\n\u003cp\u003e\u003cu\u003e1\u0026nbsp;\u003c/u\u003e\u003cu\u003e\u0026and;\u003c/u\u003e\u0026nbsp; //R2\u003c/p\u003e\n\u003cp\u003e1 //R3: (R1\u0026nbsp;\u0026and;\u0026nbsp;R2)\u003c/p\u003e\n\u003cp\u003eFinal result: 1\u003c/p\u003e\n\u003cp\u003eCalculating all eight formulas (from top to bottom) produces the following results: 1, 1, 1, 0, 0, 0, 1, and 0.\u003c/p\u003e\n\u003cp\u003ePut them together, and mark each row with truth value 1 as \u0026ldquo;SAT\u0026rdquo;, and each row with truth value 0 as \u0026ldquo;UNSAT\u0026rdquo;, we have the following table:\u003c/p\u003e\n\u003cp\u003eTable 4: Satisfiability Table of Formula (A \u0026or; \u0026not;B) \u0026and; (B \u0026or; C)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp;\u003cimg src=\"data:image/png;base64,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\"\u003e\u003c/p\u003e\n\u003cp\u003eBy concatenating the eight values in the \u0026ldquo;Truth Value\u0026rdquo; column (from top to bottom) in horizontal order, we obtain the number 11100010.\u003c/p\u003e\n\u003cp\u003eNotably, the number 11100010 obtained through this list-all-combinations method matches exactly the truth value 11100010 derived from the digital method DCMPL. This correspondence demonstrates the effectiveness of the digital method in solving SAT problem.\u003c/p\u003e\n\u003cp\u003eThis discovery reveals the equivalence of the two approaches in achieving the same result, with one being comparatively simpler and more straightforward.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e3.2 Direct and Simple Approach\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eIn the case study above, we analyzed the given formula (A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(B\u0026nbsp;\u0026or;\u0026nbsp;C) and by applying the digital method and we obtained the truth value 11100010, then from the binary number, we can directly find:\u003c/p\u003e\n\u003cul\u003e\n \u003cli\u003ethe given formula is satisfiable;\u0026nbsp;\u003c/li\u003e\n \u003cli\u003ethe 8 digits represent the total 8 assignments;\u003c/li\u003e\n \u003cli\u003e4 \u0026lsquo;1\u0026rsquo;s of the 8 digits represent 4 satisfying assignments;\u003c/li\u003e\n \u003cli\u003e4 \u0026lsquo;0\u0026rsquo;s of the 8 digits indicate 4 unsatisfying assignments;\u003c/li\u003e\n \u003cli\u003ethe digits in the positions 1, 2, 3 and 7 indicate that the assignments 1, 2, 3, and 7 are SAT;\u003c/li\u003e\n \u003cli\u003ethe digits in the positions 4, 5, 6 and 8 indicate that the assignments 4, 5, 6, and 8 are UNSAT.\u0026nbsp;\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee figure below:\u003c/p\u003e\n\u003cp\u003eWe have a summary:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eGiven formula:\u003c/strong\u003e (A \u0026or; \u0026not;B) \u0026and; (B \u0026or; C)\u003cbr\u003e\u003cstrong\u003eTruth value:\u003c/strong\u003e 11100010\u003cbr\u003e\u003cstrong\u003eTotal assignments:\u003c/strong\u003e 8\u003cbr\u003e\u003cstrong\u003eTotal SAT assignments:\u003c/strong\u003e 4, including assignments 1, 2, 3 and 7\u003cbr\u003e\u003cstrong\u003eTotal UNSAT assignments:\u003c/strong\u003e 4, including assignments 4, 5, 6 and 8\u003c/p\u003e\n\u003cp\u003eAll the above information can be read directly from the binary number 11100010, and this is straightforward, since it only requires reading the number.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e3.3 Length of Truth Value and Number of Assignments\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eIn the case study above, we observed:\u003c/p\u003e\n\u003cul\u003e\n \u003cli\u003eThe given formula contains three elements, and the three elements yield eight combinations \u0026ndash; eight assignments.\u003c/li\u003e\n \u003cli\u003eThe given formula has a truth value that contains eight digits.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis correspondence suggests that the number of digits in the truth value is equal to the number of the assignments.\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eEquivalently, we can state the rule as: For any formula, the length of its truth value is equal to the number of its assignments.\u003c/p\u003e\n\u003cp\u003eIt should be noted that the number of digits in truth value and the number of assignments both are determined by the number of elements (variables), not by the number of clauses.\u003c/p\u003e\n\u003cp\u003eIn Table 1: Primitive Numbers, the primitive number of an expression may be represented by different binary numbers depending on how many elements are involved. In Row A, we observe that the primitive numbers across columns differ based on the number of distinct elements:\u003c/p\u003e\n\u003cp\u003eA (or x1)\u0026nbsp;= 10\u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;//in one-element expression\u003c/p\u003e\n\u003cp\u003eA (or x1)\u0026nbsp;= 1100 \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;\u0026nbsp;//in two-element expression\u003c/p\u003e\n\u003cp\u003eA (or x1)\u0026nbsp;= 11110000 \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;//in three-element expression\u003c/p\u003e\n\u003cp\u003eA (or x1)\u0026nbsp;= 1111111100000000 \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;//in four-element expression\u003c/p\u003e\n\u003cp\u003eWe observe the digit-representing length pattern in the table:\u003c/p\u003e\n\u003cp\u003eNon-element expression: 1 digit\u003c/p\u003e\n\u003cp\u003eOne-element expression: 2 digits\u003c/p\u003e\n\u003cp\u003eTwo-element expression: 4 digits\u003c/p\u003e\n\u003cp\u003eThree-element expression: 8 digits\u003c/p\u003e\n\u003cp\u003eFour-element expression: 16 digits\u003c/p\u003e\n\u003cp\u003eLet n represent the number of distinct elements and L represent the length of digits, we can then have the truth value length formula:\u003c/p\u003e\n\u003cp\u003eL = 2^n\u003c/p\u003e\n\u003cp\u003eOr we can write it as: L = 2\u003csup\u003en\u003c/sup\u003e. Or: L = pow(2, n).\u003c/p\u003e\n\u003cp\u003eThe length of digits indicates the total number of assignments. Therefore, the length formula is also the formula for determining the total number of assignments.\u003c/p\u003e\n\u003cp\u003eGiven we have a logical expression: (A\u0026nbsp;\u0026and;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(C\u0026nbsp;\u0026or;\u0026nbsp;D)\u0026nbsp;\u0026and;\u0026nbsp;(E\u0026nbsp;\u0026or;\u0026nbsp;F). It consists of 6 distinct elements: A, B, C, D, E, and F. That is: n = 6. Applying the length formula, we can calculate the length: 2 to the power of 6 equals 64. It indicates that a six-element expression has 64 assignments.\u003c/p\u003e\n\u003cp\u003eIt should be noted that, \u0026ldquo;The number of distinct elements\u0026rdquo; refers to the total count in the sequence, with the last element acting as a token to indicate inclusion of all preceding elements, up to and including the last element, regardless of whether all preceding elements are explicitly displayed or rearranged. In summary, if the terminal element is the n‑th in the alphabetical or numerical sequence, then the total number of elements is n.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e3.4 Five Digital Verification Rules for Satisfiability\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFrom case studies such as the one illustrated above, the following SAT verification rules were discovered:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRule 1: The truth value of a satisfiable formula contains at least one 1.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eIf a formula is satisfiable, then its truth value is a number that necessarily contains at least one digit 1. For example, (A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(B\u0026nbsp;\u0026or;\u0026nbsp;C) is satisfiable, and its truth value is 11100010, which consists of eight digits, including four \u0026apos;1\u0026apos;s.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRule 2: The truth value of an unsatisfiable formula necessarily consists only of \u0026apos;0\u0026apos;s.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eIf a formula is unsatisfiable, then its truth value is a number that necessarily consists entirely of \u0026apos;0\u0026apos;s. For example, (A\u0026nbsp;\u0026or;\u0026nbsp;B)\u0026nbsp;\u0026and;\u0026nbsp;(A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(\u0026not;A\u0026nbsp;\u0026or;\u0026nbsp;C)\u0026nbsp;\u0026and;\u0026nbsp;(\u0026not;A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;C) is unsatisfiable, and its true value is a number consisting of eight \u0026apos;0\u0026apos;s: 00000000.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRule 3: The number of digits in a truth value indicates the total number of assignments.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGiven a formula, whether it is satisfiable or unsatisfiable, the number of digits in its truth value reveals the total number of assignments. For example, (A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(B\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;A) has a truth value 1001. The 4 digits of the number indicate that there are 4 assignments for this formula.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRule 4: In a numerical truth value, each digit 1 indicates a satisfying assignment, while each digit 0 indicates an unsatisfying assignment.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eIn a numerical truth value of a formula, each digit 1 indicates a satisfying assignment, while each digit 0 indicates an unsatisfying assignment. Therefore, the count of \u0026apos;1\u0026apos;s corresponds to the number of satisfying assignments, and the count of \u0026apos;0\u0026apos;s corresponds to the number of unsatisfying assignments. For example, the formula (A\u0026nbsp;\u0026or;\u0026nbsp;B)\u0026nbsp;\u0026and;\u0026nbsp;(\u0026not;B\u0026nbsp;\u0026or;\u0026nbsp;C) has a truth value 10111000, which contains four \u0026apos;1\u0026apos;s and four \u0026apos;0\u0026apos;s. Therefore, the formula has 4 satisfying assignments and 4 unsatisfying assignments.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRule 5: The position of a digit 1 or digit 0 in a numerical truth value exactly corresponds to its position in the sequential order of all assignments.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe position of a digit 1 or digit 0 in a numerical truth value exactly indicates the position where is its position in the sequential order of all assignments. For example, (A \u0026or; \u0026not;B) \u0026and; (B \u0026or; C) has the truth value 11100010, it indicates that in the sequence of all 8 assignments, assignments 1, 2, 3 and 7 are SAT, and assignments 4, 5, 6, and 8 are UNSAT.\u003c/p\u003e"},{"header":"4.\tA SAT Solver Based on Truth Value Calculation","content":"\u003cp\u003eWith the truth-value calculation method and the five verification rules that we discussed above, we can build a digitally-based SAT Solver. This solver is different from the conventional solvers, and it uses a numerical calculation method to verify a formula\u0026apos;s satisfiability and find its satisfying assignments, instead of applying a graph-analysis and path tracking approach. By calculating the numerical truth-value, a formula can be verified whether it is satisfiable or unsatisfiable, and can be found how many assignments are contained, including satisfying and unsatisfying assignments, and the positions of them.\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eThe workflow of the SAT solver can be described in the following steps:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.1 Steps 1\u0026ndash;4: Verify Satisfiability and Count Assignments\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eWhether processing a small or large set of variables, the steps 1 to 4 in the process are the same.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 1: Validate the input formula\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eValidate that the input string constitutes a valid SAT formula. Under the restrictive definition, a standard SAT formula is in Conjunctive Normal Form (CNF), which is expressed as a conjunction of disjunctive clauses, such as:\u003c/p\u003e\n\u003cp\u003e(A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(B\u0026nbsp;\u0026or;\u0026nbsp;C) // or: (x1\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;x2)\u0026nbsp;\u0026and;\u0026nbsp;(x2\u0026nbsp;\u0026or;\u0026nbsp;x3)\u003c/p\u003e\n\u003cp\u003eAny input that does not conform to this format is considered invalid.\u0026nbsp;If the formula validation returns \u0026ldquo;valid\u0026rdquo;, then go to the next step.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2: Calculate the truth value of the formula\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eApply the digital method DCMPL to calculate the truth value of the given formula.\u003c/p\u003e\n\u003cp\u003eLet us see an example:\u003c/p\u003e\n\u003cp\u003eGiven: (A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(B\u0026nbsp;\u0026or;\u0026nbsp;C)\u003c/p\u003e\n\u003cp\u003eCalculation:\u003c/p\u003e\n\u003cp\u003e11110000 \u0026nbsp; \u0026nbsp;\u0026nbsp; \u0026nbsp; \u0026nbsp;//A\u003c/p\u003e\n\u003cp\u003e\u003cu\u003e00110011\u0026nbsp;\u003c/u\u003e\u003cu\u003e\u0026or;\u003c/u\u003e\u0026nbsp; //\u0026not;B\u003c/p\u003e\n\u003cp\u003e11110011 \u0026nbsp; \u0026nbsp; //R1: (A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003cp\u003e11001100 \u0026nbsp; \u0026nbsp;\u0026nbsp; \u0026nbsp;\u0026nbsp;//B\u003c/p\u003e\n\u003cp\u003e\u003cu\u003e10101010\u0026nbsp;\u003c/u\u003e\u003cu\u003e\u0026or;\u003c/u\u003e\u0026nbsp; //C\u003c/p\u003e\n\u003cp\u003e11101110 \u0026nbsp; \u0026nbsp; //R2: (B\u0026nbsp;\u0026or;\u0026nbsp;C)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003cp\u003e11110011 \u0026nbsp; \u0026nbsp;\u0026nbsp; \u0026nbsp; \u0026nbsp;//R1\u003c/p\u003e\n\u003cp\u003e\u003cu\u003e11101110\u0026nbsp;\u003c/u\u003e\u003cu\u003e\u0026and;\u003c/u\u003e\u0026nbsp; //R2\u003c/p\u003e\n\u003cp\u003e11100010 \u0026nbsp; \u0026nbsp; //R3: (R1\u0026nbsp;\u0026and;\u0026nbsp;R2)\u003c/p\u003e\n\u003cp\u003eFinal result: 11100010. This is the truth value of the given formula.\u003c/p\u003e\n\u003cp\u003eWith the numerical truth value obtained, we can use it to verify the satisfiability of the formula.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3: Verify the satisfiability of the formula\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eBased on the calculation result (the numerical truth value), and the digital verification rules, we can directly determine whether the given formula is satisfiable or unsatisfiable:\u003c/p\u003e\n\u003cp\u003eIf the number of the truth value contains at least one 1, then the formula is satisfiable.\u003c/p\u003e\n\u003cp\u003eAs we can see, the truth value 11100010 contains four \u0026lsquo;1\u0026rsquo;s. Therefore, the formula is satisfiable.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 4: Count assignments of the formula\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eBased on the numerical truth value of the formula, and the digital verification rules, we can determine the total number of assignments, according to the occurrences of \u0026apos;1\u0026apos;s and \u0026apos;0\u0026apos;s.\u003c/p\u003e\n\u003cp\u003eGiven the numerical truth value is \u0026quot;11100010\u0026quot;, a simple count yields a total of 8 digits. This confirms that the total number of assignments is 8. Among them, 1 appears 4 times, while 0 also appears 4 times. Consequently, this corresponds to 4 instances of satisfying assignments and 4 instances of unsatisfying assignments. We have a summary:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eGiven formula:\u003c/strong\u003e (A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(B\u0026nbsp;\u0026or;\u0026nbsp;C)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eTruth value:\u003c/strong\u003e 11100010\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eSatisfiability:\u003c/strong\u003e SAT\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eTotal assignments:\u003c/strong\u003e 8\u0026nbsp;\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eSatisfying assignments:\u003c/strong\u003e 4\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUnsatisfying assignments:\u003c/strong\u003e 4\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.2 Steps 5: List and Find Assignments\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eHaving illustrated the application of Verification Rules 1-4 in Steps 1-4, we now demonstrate how to apply Rule 5 in Step 5 to list and identify assignments.\u003c/p\u003e\n\u003cp\u003eIn realistic applications, if a given formula contains a small number of distinct elements, we can generate and list all possible assignments. But if it contains a vast number of variables (hundreds or more of them), this \u0026ldquo;generate-and-list-all\u0026rdquo; method is impractical. The responsibility of a SAT solver is to find a satisfying assignment efficiently and quickly.\u003c/p\u003e\n\u003cp\u003eTherefore, there are two options:\u003c/p\u003e\n\u003cp\u003e1. List all assignments if the formula consists of a small number of elements (variables);\u003c/p\u003e\n\u003cp\u003e2. Find a satisfying assignment if the formula consists of a vast number of elements (variables).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOption 1: List all assignments if the formula consists of a small number of elements\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eIn this step, we will generate all possible assignments. Since the total number of possible combinations depends on the number of distinct elements (variables), in this step, we first need to find the distinct elements.\u003c/p\u003e\n\u003cp\u003eGiven the formula is: (A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(B\u0026nbsp;\u0026or;\u0026nbsp;C), we can find that the distinct elements are ABC. Then we will generate all possible combinations of the three elements.\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eThe core procedure of this step is demonstrated in the following algorithm.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u0026nbsp; Algorithm 1: List and parse all assignments\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u0026nbsp;function\u003c/strong\u003e getDistinctElements (formula)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; \u0026nbsp; tokens\u0026nbsp;\u0026larr;\u0026nbsp;TOKENIZE(formula) \u0026nbsp;// Extract all tokens\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; \u0026nbsp; elements \u0026larr; FILTER_WORDS(tokens) \u0026nbsp;// Keep only alphanumeric elements\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; \u0026nbsp; distinctElements \u0026larr; UNIQUE_SORTED(elements) \u0026nbsp;// Remove duplicates and sort\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; \u0026nbsp; \u003cstrong\u003ereturn\u003c/strong\u003e CONCATENATE(distinctElements)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eend\u003c/strong\u003e \u003cstrong\u003efunction\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003efunction\u003c/strong\u003e listAllAssignments (element_string, index \u0026larr; 0, current_comb \u0026larr; \u0026quot;\u0026quot;, result \u0026larr; empty list)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; // If we have reached the end of the string, store the combination\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; \u003cstrong\u003eif\u003c/strong\u003e index = LENGTH (elementString) \u003cstrong\u003ethen\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; APPEND currentComb TO result\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u003cstrong\u003ereturn\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; \u003cstrong\u003eend\u003c/strong\u003e \u003cstrong\u003eif\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; // Get the current character\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; char \u0026larr; elementString [index]\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; // Create two combinations: one with =1, one with =0\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; assign1 \u0026larr; currentComb + char + \u0026quot;=1; \u0026quot;\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; assign0 \u0026larr; currentComb + char + \u0026quot;=0; \u0026quot;\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; // Recursive calls to generate combinations for remaining characters\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; CALL listAllAssignments (elementString, index + 1, assign1, result)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; CALL listAllAssignments (elementString, index + 1, assign0, result)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; \u003cstrong\u003ereturn\u003c/strong\u003e result\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eend\u003c/strong\u003e \u003cstrong\u003efunction\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003efunction\u003c/strong\u003e parseFormula (formula, assignments)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; // Get parsed formulas, for example (1 \u0026or; 1) \u0026and; (0 \u0026or; 1)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; // (Details of parsing are omitted)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; \u003cstrong\u003ereturn\u003c/strong\u003e parsedFormulaArr\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eend\u003c/strong\u003e \u003cstrong\u003efunction\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e// Example usage\u003c/p\u003e\n\u003cp\u003eformula\u0026nbsp;\u0026larr;\u0026nbsp;\u0026quot;(A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(B\u0026nbsp;\u0026or;\u0026nbsp;C)\u0026quot;\u003c/p\u003e\n\u003cp\u003eelementString\u0026nbsp;\u0026larr;\u0026nbsp;getDistinctElements (formula)\u003c/p\u003e\n\u003cp\u003eassignments\u0026nbsp;\u0026larr;\u0026nbsp;listAllAssignments (elementString)\u003c/p\u003e\n\u003cp\u003eparsedFormulaArr \u0026larr; parseFormula (formula, assignments)\u003c/p\u003e\n\u003cp\u003e// Display each generated combination\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eforeach\u003c/strong\u003e assignment IN assignments \u003cstrong\u003edo\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; \u003cstrong\u003eprint\u003c/strong\u003e assignment\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eend\u003c/strong\u003e \u003cstrong\u003eforeach\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e// Display each parsed formula\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eforeach\u003c/strong\u003e psFormula IN parsedFormulaArr \u003cstrong\u003edo\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; psTruthValue \u0026larr; calculateTruthValue (psFormula)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp; \u0026nbsp; \u003cstrong\u003eprint\u003c/strong\u003e psFormula + \u0026quot; = \u0026quot; + psTruthValue\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eend\u003c/strong\u003e \u003cstrong\u003eforeach\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe output combinations are:\u003c/p\u003e\n\u003cp\u003eA=1; B=1; C=1;\u003cbr\u003e\u0026nbsp;A=1; B=1; C=0;\u003cbr\u003e\u0026nbsp;A=1; B=0; C=1;\u003cbr\u003e\u0026nbsp;A=1; B=0; C=0;\u003cbr\u003e\u0026nbsp;A=0; B=1; C=1;\u003cbr\u003e\u0026nbsp;A=0; B=1; C=0;\u003cbr\u003e\u0026nbsp;A=0; B=0; C=1;\u003cbr\u003e\u0026nbsp;A=0; B=0; C=0;\u003c/p\u003e\n\u003cp\u003eThe parsed formulas from the output are:\u003c/p\u003e\n\u003cp\u003e(1\u0026nbsp;\u0026or;\u0026nbsp;0)\u0026nbsp;\u0026and;\u0026nbsp;(1\u0026nbsp;\u0026or;\u0026nbsp;1) = 1\u003c/p\u003e\n\u003cp\u003e(1\u0026nbsp;\u0026or;\u0026nbsp;0)\u0026nbsp;\u0026and;\u0026nbsp;(1\u0026nbsp;\u0026or;\u0026nbsp;0) = 1\u003c/p\u003e\n\u003cp\u003e(1\u0026nbsp;\u0026or;\u0026nbsp;1)\u0026nbsp;\u0026and;\u0026nbsp;(0\u0026nbsp;\u0026or;\u0026nbsp;1) = 1\u003c/p\u003e\n\u003cp\u003e(1\u0026nbsp;\u0026or;\u0026nbsp;1)\u0026nbsp;\u0026and;\u0026nbsp;(0\u0026nbsp;\u0026or;\u0026nbsp;0) = 0\u003c/p\u003e\n\u003cp\u003e(0\u0026nbsp;\u0026or;\u0026nbsp;0)\u0026nbsp;\u0026and;\u0026nbsp;(1\u0026nbsp;\u0026or;\u0026nbsp;1) = 0\u003c/p\u003e\n\u003cp\u003e(0\u0026nbsp;\u0026or;\u0026nbsp;0)\u0026nbsp;\u0026and;\u0026nbsp;(1\u0026nbsp;\u0026or;\u0026nbsp;0) = 0\u003c/p\u003e\n\u003cp\u003e(0\u0026nbsp;\u0026or;\u0026nbsp;1)\u0026nbsp;\u0026and;\u0026nbsp;(0\u0026nbsp;\u0026or;\u0026nbsp;1) = 1\u003c/p\u003e\n\u003cp\u003e(0 \u0026or; 1) \u0026and; (0 \u0026or; 0) = 0\u003c/p\u003e\n\u003cp\u003ePut all together, we have an assignment table. See Table 4: Satisfiability Table of Formula (A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(B\u0026nbsp;\u0026or;\u0026nbsp;C), which we illustrated earlier in Section 3.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOption 2: Find a satisfying assignment if the formula consists of a vast number of variables\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe digitally-based solver provides a simple solution for finding a satisfying assignment.\u003c/p\u003e\n\u003cp\u003eRecall the Rule 5 of the Five Digital Verification Rules for Satisfiability:\u0026nbsp;\u003c/p\u003e\n\u003cp\u003e\u0026ldquo;The position of a digit 1 or digit 0 in a numerical truth value exactly corresponds to its position in the sequential order of all assignments\u0026rdquo;. Based on this rule, we just need to locate the first 1, and use it to find the corresponding assignment, and evaluate it, instead of listing and calculating all of the assignments.\u003c/p\u003e\n\u003cp\u003eWe can directly access and print a specific combination based on the key number without generating all combinations in an array. The approach is to compute the combination directly based on its index in the sequence.\u003c/p\u003e\n\u003cp\u003eIn a variable string, like ABCD, each character in the input string has two choices (1 or 0), so the total number of combinations is 2^n, where n is the number of variables.\u003c/p\u003e\n\u003cp\u003eThe key number (k) represents the position in the sequence. We can determine each digit (1 or 0) by inspecting bits in k\u0026apos;s binary representation.\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eFor example, given a formula: (\u0026not;A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(C\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;D). And by calculation, we obtained its truth value: 0000110111011101. Then it can be observed that the first 1 occurs at position 5 in the 16-digit string 0000110111011101.\u003c/p\u003e\n\u003cp\u003eAnd we can also find the distinct elements in the given formula are: ABCD.\u003c/p\u003e\n\u003cp\u003eNow we know the first 1 is at position 5 and know the distinct elements are ABCD. Then based on these two pieces of information, we can find the first satisfying assignment:\u003c/p\u003e\n\u003cp\u003eA=1, B=0, C=1, D=1\u003c/p\u003e\n\u003cp\u003eTable 5: Satisfiability Table of Formula (\u0026not;A \u0026or; \u0026not;B) \u0026and; (C \u0026or; \u0026not;D)\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"data:image/png;base64,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\"\u003e\u003c/p\u003e\n\u003cp\u003eThe mechanism of this assignment-finding approach is that: the distinct elements are used to make possible combinations in sequence, and the position is used as a key for locating a specific combination in the sequence.\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eTo verify it, we can substitute the assignment into the original formula (\u0026not;A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(C\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;D) to produce a parsed formula:\u003c/p\u003e\n\u003cp\u003e(0\u0026nbsp;\u0026or;\u0026nbsp;1)\u0026nbsp;\u0026and;\u0026nbsp;(1\u0026nbsp;\u0026or;\u0026nbsp;0)\u003c/p\u003e\n\u003cp\u003eApplying the digital calculation formulas to calculate the parsed formula:\u003c/p\u003e\n\u003cp\u003e0 \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;//0\u003c/p\u003e\n\u003cp\u003e\u003cu\u003e1\u0026nbsp;\u003c/u\u003e\u003cu\u003e\u0026or;\u003c/u\u003e\u0026nbsp; //1\u003c/p\u003e\n\u003cp\u003e1 //R1: (0\u0026nbsp;\u0026or;\u0026nbsp;1)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003cp\u003e1 \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;//1\u003c/p\u003e\n\u003cp\u003e\u003cu\u003e0\u0026nbsp;\u003c/u\u003e\u003cu\u003e\u0026or;\u003c/u\u003e\u0026nbsp; //0\u003c/p\u003e\n\u003cp\u003e1 //R2: (1\u0026nbsp;\u0026or;\u0026nbsp;0)\u003c/p\u003e\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003cp\u003e1 \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;//R1\u003c/p\u003e\n\u003cp\u003e\u003cu\u003e1\u0026nbsp;\u003c/u\u003e\u003cu\u003e\u0026and;\u003c/u\u003e\u0026nbsp; //R2\u003c/p\u003e\n\u003cp\u003e1 //R3: (R1\u0026nbsp;\u0026and;\u0026nbsp;R2)\u003c/p\u003e\n\u003cp\u003eFinal result: 1\u003c/p\u003e\n\u003cp\u003eWe get the result: 1. This proves that the assignment is satisfying. Therefore, the formula is satisfiable.\u003c/p\u003e\n\u003cp\u003eDue to space limitations, we do not present an example involving a vast number of digits and assignments, instead, to demonstrate the feasibility of the solution, we use an example of a formular with 10 elements and 1,024 assignments.\u003c/p\u003e\n\u003cp\u003eFor example, given a formula: (\u0026not;A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(C\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;D)\u0026nbsp;\u0026and;\u0026nbsp;(\u0026not;E\u0026nbsp;\u0026or;\u0026nbsp;F)\u0026nbsp;\u0026and;\u0026nbsp;(G\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;H)\u0026nbsp;\u0026and;\u0026nbsp;(\u0026not;I\u0026nbsp;\u0026or;\u0026nbsp;J). By calculation, we obtain its truth value, which is a long binary string:\u003c/p\u003e\n\u003cp\u003e000000000000000000000000000000000000000000000000000000000000000000000000000\u003cbr\u003e000000000000000000000000000000000000000000000000000000000000000000000000000\u003cbr\u003e000000\u003cbr\u003e0000000000000000000000000000000000000000000000000000000000000000000000000000\u003cbr\u003e00000000000000000000000010111011000010110000000000000000101110110000101110111\u003cbr\u003e0110000101\u003cbr\u003e110111011000010110000000000000000101110110000101110111011000010110000000000000\u003cbr\u003e00000000000000000000000000000000000000000000000000010111011000010110000000\u003cbr\u003e0000000001011\u003cbr\u003e101100001011101110110000101110111011000010110000000000000000101110110000101110\u003cbr\u003e111011000010111011101100001011000000000000000010111011000010111011101100001011\u003cbr\u003e0000000000000000000000000000000000000000000000000000000000000000101110110000\u003cbr\u003e10110000000\u003cbr\u003e000000000101110110000101110111011000010111011101100001011000\u003cbr\u003e0000000000000101110110000101110111011000010111011101100001011000000\u003cbr\u003e0000000000101110110000101110111011000010110000000000000000000000000000000\u003cbr\u003e00000000000000000000000000000000010111011000010110000000000000000101110110\u003cbr\u003e00010111011101100001011\u003c/p\u003e\n\u003cp\u003eBy counting the length of digits, we find that there are 1,024 digits, indicating the total assignments are 1,024. We can also find that the first occur of the digit 1 is at the position: 257, indicating that the first satisfying assignment is the 257th item in the sequence. Then with this position information, we can get the assignment. We can summarize the results as follows:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eGiven formula:\u003c/strong\u003e (\u0026not;A\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;B)\u0026nbsp;\u0026and;\u0026nbsp;(C\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;D)\u0026nbsp;\u0026and;\u0026nbsp;(\u0026not;E\u0026nbsp;\u0026or;\u0026nbsp;F)\u0026nbsp;\u0026and;\u0026nbsp;(G\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;H)\u0026nbsp;\u0026and;\u0026nbsp;(\u0026not;I\u0026nbsp;\u0026or;\u0026nbsp;J)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eA satisfying assignment found at #:\u003c/strong\u003e 257\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe satisfying assignment:\u003c/strong\u003e A=1, B=0, C=1, D=1, E=1, F=1, G=1, H=1, I=1, J=1\u003c/p\u003e"},{"header":"5.\tAdvanced SAT Solver and Universal SAT Solver","content":"\u003cp\u003eThe essence of the Boolean Satisfiability Problem (SAT) can be described as a question: whether a given Boolean formula can be made satisfied by some assignment of its variables.\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eAccording to the strict definition, a SAT formula has a very specific structure. It must be in Conjunctive Normal Form (CNF), where each clause is a disjunction (OR) of one or two literals. In other words, A SAT formula is typically an AND of clauses, where each clause is an OR of at most two literals. A typical and widely known CNF formula has the following pattern:\u003c/p\u003e\n\u003cp\u003e(literal\u0026nbsp;\u0026or;\u0026nbsp;literal)\u0026nbsp;\u0026and;\u0026nbsp;(literal\u0026nbsp;\u0026or;\u0026nbsp;literal)\u003c/p\u003e\n\u003cp\u003eFor example:\u003c/p\u003e\n\u003cp\u003e(x1\u0026nbsp;\u0026or;\u0026nbsp;\u0026not;x2)\u0026nbsp;\u0026and;\u0026nbsp;(x2\u0026nbsp;\u0026or;\u0026nbsp;x3).\u003c/p\u003e\n\u003cp\u003eA deeper understanding of SAT\u0026apos;s essence suggests that SAT problem cannot be understood only within a narrow scope. Since its task is to find a satisfying assignment, logically, this problem or task exists for any expression, not just for certain expressions.\u003c/p\u003e\n\u003cp\u003eBased on this broader understanding, we can set different scopes and develop the SAT solvers that are applicable to the scopes.\u003c/p\u003e\n\u003cp\u003eBy removing the restriction on CNF formulas, we can have the advanced SAT Solver, which is designed to solve a broader SAT problem.\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eThe advanced SAT Solver allows any logical connective operator, such as \u0026rarr;,\u0026nbsp;\u0026oplus;, \u0026harr;, \u0026uarr;, \u0026darr;, and \u0026larr;, to be used inside a clause. Let symbol # represent any logical connective operator, the allowed formulas have the following pattern:\u003c/p\u003e\n\u003cp\u003e(literal # literal)\u0026nbsp;\u0026and;\u0026nbsp;(literal # literal)\u003c/p\u003e\n\u003cp\u003eFor example:\u003c/p\u003e\n\u003cp\u003e(x1 \u0026rarr; \u0026not;x2)\u0026nbsp;\u0026and;\u0026nbsp;(x2 \u0026harr; x3).\u003c/p\u003e\n\u003cp\u003eWe can have another SAT Solver named Universal SAT Solver, which is designed to solve a general or a universal SAT problem, and it removes most of the restrictions on SAT formulas. Any logical connective operator, such as \u0026rarr;,\u0026nbsp;\u0026oplus;, \u0026harr;, \u0026uarr;, \u0026darr;, and \u0026larr;, can be used within a clause and also can be used between clauses. Let symbol # represent any logical connective operator, the universal SAT Solver allows a formula in the following pattern:\u003c/p\u003e\n\u003cp\u003e(literal # literal) # (literal # literal)\u003c/p\u003e\n\u003cp\u003eFor example:\u003c/p\u003e\n\u003cp\u003e(\u0026not;x1 \u0026rarr; x2) \u0026harr; (x3\u0026nbsp;\u0026oplus;\u0026nbsp;x4).\u003c/p\u003e\n\u003cp\u003eOwing to space constraints, the detailed calculation process is not included here. The live implements of the advanced solver and the universal solver are available online [R1, see Advanced SAT Solver and Universal SAT Solver].\u003c/p\u003e"},{"header":"6.\tConclusion","content":"\u003cp\u003eThis paper presents a new SAT solver for solving the Satisfiability Problem in a broad range of logical expressions. Unlike conventional approaches, it introduces an alternative framework that diverges from the use of graph-like structures and associated tracking techniques. The new solver applies a numerical method to calculate the truth value of a given formula, and determine the satisfiability and the assignments. It offers significant advantages in terms of simplicity, directness, and accuracy, particularly when applied to a modest set of variables under constrained computational resources. Live demonstrations are available online ([R1], see SAT Solvers). It should be noted that the current online implementation, hosted on a resource limited server and subject to internet traffic, is therefore intended primarily for demonstration purposes. In practice, the solver can readily be applied to larger scale tasks when these restrictions are not present.\u003c/p\u003e"},{"header":"Declarations","content":"\u003cp\u003e\u003cstrong\u003eSupplementary Resources\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e[R1] Tools of the DCL: https://dclge.com/t01-tools\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eConflict of Interest Statement\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe author declares no conflicts of interest.\u0026nbsp;\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFunding Statement\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThis research received no specific grant from any funding agency in the public, commercial, or not-for-profit sectors.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eData Availability Statement\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe author confirms that all data generated or analysed during this study are included in this article. Furthermore, all sources and data supporting the findings of this study were all publicly available at the time of submission.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOpen Access\u0026nbsp;\u003c/strong\u003eThis article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article\u0026rsquo;s Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article\u0026rsquo;s Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by/4.0/.\u003c/p\u003e"},{"header":"References","content":"\u003col\u003e\n\u003cli\u003eDavis, Martin; Logemann, George; Loveland, Donald (1962). A Machine Program for Theorem Proving. \u003cem\u003eCommunications of the ACM\u003c/em\u003e. 5 (7): 394\u0026ndash;397\u003c/li\u003e\n\u003cli\u003eM. R. Krom (1967) The Decision Problem for a Class of First‐Order Formulas in Which all Disjunctions are Binary, \u003cem\u003eMathematical Logic Quarterly\u003c/em\u003e 13 (1‐2):15-20 \u003c/li\u003e\n\u003cli\u003eEven, S.; Itai, A.; Shamir, A. (1976), On the complexity of time table and multi-commodity flow problems, \u003cem\u003eSIAM Journal on Computing\u003c/em\u003e, 5 (4): 691\u0026ndash;703\u003c/li\u003e\n\u003cli\u003eAspvall, Bengt; Plass, Michael F.; Tarjan, Robert E. (1979), A linear-time algorithm for testing the truth of certain quantified boolean formulas, \u003cem\u003eInformation Processing Letters\u003c/em\u003e, 8 (3): 121\u0026ndash;123\u003c/li\u003e\n\u003cli\u003eJ.P. Marques-Silva; Karem A. Sakallah (1996). GRASP-A New Search Algorithm for Satisfiability. \u003cem\u003eDigest of IEEE International Conference on Computer-Aided Design (ICCAD)\u003c/em\u003e. pp. 220\u0026ndash;227\u003c/li\u003e\n\u003cli\u003eRoberto J. Bayardo Jr.; Robert C. Schrag (1997). Using CSP look-back techniques to solve real world SAT instances. \u003cem\u003eProc. 14th Nat. Conf. on Artificial Intelligence (AAAI)\u003c/em\u003e. pp. 203\u0026ndash;208.\u003c/li\u003e\n\u003cli\u003eZhou, Nongjian (2024), A Digital Calculation Method for Propositional Logic, https://philsci-archive.pitt.edu/24527/\u003c/li\u003e\n\u003c/ol\u003e"}],"fulltextSource":"","fullText":"","funders":[],"hasAdminPriorityOnWorkflow":false,"hasManuscriptDocX":true,"hasOptedInToPreprint":true,"hasPassedJournalQc":"","hasAnyPriority":true,"hideJournal":true,"highlight":"","institution":"","isAcceptedByJournal":false,"isAuthorSuppliedPdf":false,"isDeskRejected":"","isHiddenFromSearch":false,"isInQc":false,"isInWorkflow":false,"isPdf":false,"isPdfUpToDate":true,"isWithdrawnOrRetracted":false,"journal":{"display":true,"email":"[email protected]","identity":"researchsquare","isNatureJournal":false,"hasQc":true,"allowDirectSubmit":true,"externalIdentity":"","sideBox":"","snPcode":"","submissionUrl":"/submission","title":"Research Square","twitterHandle":"researchsquare","acdcEnabled":true,"dfaEnabled":false,"editorialSystem":"","reportingPortfolio":"","inReviewEnabled":false,"inReviewRevisionsEnabled":true},"keywords":"Logic, SAT, Satisfiability problem, Truth value, Boolean logic","lastPublishedDoi":"10.21203/rs.3.rs-8468445/v1","lastPublishedDoiUrl":"https://doi.org/10.21203/rs.3.rs-8468445/v1","license":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/"},"manuscriptAbstract":"This paper presents a novel SAT solver based on truth value calculation. Compared with conventional tree-like graph-based approaches, it calculates the truth value of a given formula, determine the satisfiability, and generate the assignments. This method demonstrates advantages in terms of simplicity, directness and accuracy.","manuscriptTitle":"A SAT Solver Based on Truth Value Calculation","msid":"","msnumber":"","nonDraftVersions":[{"code":1,"date":"2026-02-04 06:48:44","doi":"10.21203/rs.3.rs-8468445/v1","editorialEvents":[{"type":"communityComments","content":0}],"status":"published","journal":{"display":true,"email":"[email protected]","identity":"researchsquare","isNatureJournal":false,"hasQc":true,"allowDirectSubmit":true,"externalIdentity":"","sideBox":"","snPcode":"","submissionUrl":"/submission","title":"Research Square","twitterHandle":"researchsquare","acdcEnabled":true,"dfaEnabled":false,"editorialSystem":"","reportingPortfolio":"","inReviewEnabled":false,"inReviewRevisionsEnabled":true}}],"origin":"","ownerIdentity":"27a1c29e-f89e-4050-8848-752e06f010bf","owner":[],"postedDate":"February 4th, 2026","published":true,"recentEditorialEvents":[],"rejectedJournal":[],"revision":"","amendment":"","status":"posted","subjectAreas":[],"tags":[],"updatedAt":"2026-02-04T06:48:44+00:00","versionOfRecord":[],"versionCreatedAt":"2026-02-04 06:48:44","video":"","vorDoi":"","vorDoiUrl":"","workflowStages":[]},"version":"v1","identity":"rs-8468445","journalConfig":"researchsquare"},"__N_SSP":true},"page":"/article/[identity]/[[...version]]","query":{"redirect":"/article/rs-8468445","identity":"rs-8468445","version":["v1"]},"buildId":"XKTyCvWXoU3ODBz1xrDgd","isFallback":false,"isExperimentalCompile":false,"dynamicIds":[84888],"gssp":true,"scriptLoader":[]}

Text is read by the "Ask this paper" AI Q&A widget below. Extraction quality varies by source — PMC NXML preserves structure cleanly, OA-HTML may include some navigation residue, and OA-PDF can have broken hyphenation. The publisher copy (via DOI) is the canonical version.

My notes (saved in your browser only)

Ask this paper AI returns verbatim quotes from the full text · source: preprint-html

Answers must be backed by verbatim quotes from this paper's full text. Hallucinated quotes are dropped automatically; if no verbatim passage answers the question, we say so. How this works

Citation neighborhood (no data yet)

We don't have any in-corpus citations linked to this paper yet. This is a recent paper (2026) — citers typically take a year or two to land, and the OpenAlex reference graph may still be filling in.

Source provenance

europepmc
last seen: 2026-05-20T01:45:00.602351+00:00