violation_detection.py [57:68]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    existing_slots = set(state.keys())
    applicable_slots = set(constraint['slots'])

    # Skip the constraint if it contains any built-in slots which we cannot apply bi-jaccard entity linking
    if not all(s in distinct_slot_values for s in applicable_slots):
        return False, []

    # Compute only if the dialog state contains all the applicable slots
    if applicable_slots.issubset(existing_slots):
        slot_values = [state[s] for s in constraint['slots']]
        violations = []
        for slot_entities in itertools.product(*slot_values):
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



violation_detection.py [98:109]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    existing_slots = set(state.keys())
    applicable_slots = set(constraint['slots'])

    # Skip the constraint if it contains any built-in slots which we cannot apply bi-jaccard entity linking
    if not all(s in distinct_slot_values for s in applicable_slots):
        return False, []

    # Compute only if the dialog state contains all the applicable slots
    if applicable_slots.issubset(existing_slots):
        slot_values = [state[s] for s in constraint['slots']]
        violations = []
        for slot_entities in itertools.product(*slot_values):
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



