| Algorithm 2. Pseudocode of PROPAGATE_FORWARD for MCMC-LTMS. |
| PROPAGATE_FORWARD (clause_set) |
| Inputs: clause_set, the clauses describe system Outputs: a 3-bit flag, bit0 ~ unit propagate, bit1 ~ conflict, bit2 ~ true clause clause_set, clause_set is replaced by the clauses remain the same |
| bit<3> flag = 0 for clause in clause_set CLAUSE_SCAN(clause, false_assign, true_assign, unknown_literal)) if(true_assign is not empty) reason = (unknown_literal is empty)? true: false //rule 2 PROPAGATE_TRUE_CLAUSE(clause, true_assign, false_assign, reason)//rule 3 flag = flag | (1<<2) else if(unknown_literal.size > 1) remain_clause.insert(clause) else if(unknown_literal.size == 1) //rule 1 store clause, false_assign, unknown_literal in fringe else PROPAGATE_FALSE_CLAUSE(clause, false_assign) flag = flag | (1<<1) for clause, false_assign, literal in fringe flag = flag | PROPAGATE_FRINGE_CLAUSE(clause, false_assign, literal)?: (1<<0): (1<<1) clause_set = remain_clause return flag |