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)