def __clean_cnf(cnf, is_first_order): cnf = Braces.flatten(cnf, is_first_order) clauses = set() for disjunct_text in cnf.split(LogicOperator.Conjuction): disjunct_text = disjunct_text.replace(Braces.Left, "")\ .replace(Braces.Right, "") if len(disjunct_text) == 0: continue disjunct_text = disjunct_text.replace(Braces.FO_Left, Braces.Left)\ .replace(Braces.FO_Right, Braces.Right) disjunct = frozenset(symbol.strip() for symbol in disjunct_text.split(LogicOperator.Disjunction)) if not is_disjunction_tautology(disjunct): clauses.add(disjunct) return __clean_clauses(clauses)
def __clean_cnf(cnf, is_first_order): cnf = Braces.flatten(cnf, is_first_order) clauses = set() for disjunct_text in cnf.split(LogicOperator.Conjuction): disjunct_text = disjunct_text.replace(Braces.Left, "")\ .replace(Braces.Right, "") if len(disjunct_text) == 0: continue disjunct_text = disjunct_text.replace(Braces.FO_Left, Braces.Left)\ .replace(Braces.FO_Right, Braces.Right) disjunct = frozenset( symbol.strip() for symbol in disjunct_text.split(LogicOperator.Disjunction)) if not is_disjunction_tautology(disjunct): clauses.add(disjunct) return __clean_clauses(clauses)