Skip to main content
. 2018 Mar 29;18(4):1016. doi: 10.3390/s18041016
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