def validate_deserialized_TFDC(tfdc): def decode_l_idx(k): n_vars = tf.cast(tfdc.n_vars, dtype="int32") if k + 1 > n_vars: return -(k + 1 - n_vars) else: return k + 1 fmla = CNF_of_TFDC(tfdc) core = CNF() for i in range(len(tfdc.core_clause_mask)): if (tfdc.core_clause_mask[i]) == True: core.append(fmla.clauses[i]) core.to_fp(sys.stdout) print("") print("%%%%%%%% FORMULA %%%%%%%%") print("") fmla.to_fp(sys.stdout) with Solver(name="cdl") as S: S.append_formula(core) assert S.solve() is False with Solver(name="cdl") as S: S.append_formula(fmla) assert S.solve() is False # all variables in the core_var_mask are in the core for i in range(len(tfdc.core_var_mask)): if tfdc.core_var_mask[i] == True: var = i + 1 flag = False for cls in core.clauses: for lit in cls: if abs(lit) == var: flag = True assert flag # all variables in the core are in the core_var_mask for cls in core.clauses: for lit in cls: l_idx = abs(lit) - 1 assert tfdc.core_var_mask[l_idx] == True print("ok")
def test_simplify_CNF(): clauses = [[1, 2], [4, 5], [-1, 2, 3]] fmla = CNF(from_clauses=clauses) simplify_CNF(fmla, [1, 4]).to_fp(sys.stdout) fmla.to_fp(sys.stdout)