Given a bipartite graph G = (X ∪̇ D, E ⊆ X × D), an X-perfect matching is a matching in G that covers every node in X. In this paper we study the following generalisation of the X-perfect matching problem, which has applications in constraint programming: Given a bipartite graph as above and a collection F ⊆ 2 of k subsets of X, find a subset M ⊆ E of the edges such that for each C ∈ F , the edg...