def _lower_neighbours(G, u):
    """ Given a graph `G` and a vertex `u` in `G`, we return a list with the
    vertices in `G` that are lower than `u` and are connected to `u` by an
    edge in `G`.

    Parameters
    ----------
    G : :obj:`Numpy Array(no. of edges, 2)`
        Matrix storing the edges of the graph.
    u : int
        Vertex of the graph.

    Returns
    -------
    lower_neighbours : :obj:`list`
        List of lower neighbours of `u` in `G`.
    """
    lower_neighbours = []
    for e in G:
        if e[1] == u:
            lower_neighbours.append(e[0])
    lower_neighbours.sort()
    return lower_neighbours
