What happens to edges between vertices that don't satisfy the predicate?  I would encourage calling this functions subgraph as well since it filters both vertices and edges.