def generate_discrete_predicates()

in rules/predicate.py [0:0]


def generate_discrete_predicates(attribute_name: str, values: Set) -> Set[Predicate]:
    preds = set()
    # In a boolean attribute (e.g., True, False), there is no need to generate 4 predicates:
    # (attribute_name != values[0]) implies (attribute_name == values[1])
    if len(values) == 2:
        values = list(values)
        preds.add(Predicate(attribute_name, "==", values[0]))
        preds.add(Predicate(attribute_name, "==", values[1]))
        return preds

    for v in values:
        pred_eq = Predicate(attribute_name, "==", v)
        preds.add(pred_eq)
        pred_neq = Predicate(attribute_name, "!=", v)
        preds.add(pred_neq)
    return preds