def AC_constraint_check(csp, x, Xi, Xj):
    """ Check if all AC constraints are satisfied
    
    Args:
        csp: CSP class object with current state of the sudoku puzzle board
        x: Current value evaluated at field Xi
        Xi: Current field id (row + column combination)
        Xj: Selected neighbor's field id (row + column combination)
        
    Returns: Boolean whether all AC contraints are satisfied (satisfied = True; constraint violation = False)
    
    """
    for neighbor in csp.values[Xj]:
        if Xj in csp.neighbors[Xi] and neighbor != x:
            return False
    return True