<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def filter_edges(graph: BELGraph, edge_predicates: EdgePredicates) -> EdgeIterator: """Apply a set of filters to the edges iterator of a BEL graph. :return: An iterable of edges that pass all predicates """

    compound_edge_predicate = and_edge_predicates(edge_predicates=edge_predicates)
    for u, v, k in graph.edges(keys=True):
        if compound_edge_predicate(graph, u, v, k):
            yield u, v, k