def remove_cross_state_neighbors(aug_school_info, school_assignment):
    """
    Removes any neighbouring edge between schools in different states.
  
    Args:
        aug_school_info (pandas.DataFrame): Target school information
            (containing neighbouring edges).
        school_assignment (pandas.DataFrame): Target school assignment
            (containing state assignment).
    
    Returns:
        pandas.DataFrame: Refined school information (with cross-state
            neighbours removed).
    """
    aug_school_info = aug_school_info.copy()

    # Filter out cross-state neighbors
    get_state = lambda school_id: school_assignment.loc[school_id]["state_name"]
    from_same_state = lambda id_l, id_r: get_state(id_l) == get_state(id_r)

    def filter_cross_state_neighbors(row):
        if len(row["neighbour_ids"]) == 0:
            return row
        neighbor_ids_set = set(row["neighbour_ids"].split(","))
        valid_neighbor_ids_set = set(filter(
            lambda neighbor_id: from_same_state(row.name, neighbor_id),
            neighbor_ids_set
        ))
        row["neighbour_ids"] = ",".join(list(valid_neighbor_ids_set))
        return row
        
    aug_school_info = aug_school_info.apply(
        filter_cross_state_neighbors,
        axis=1
    )

    return aug_school_info