Given $n$ sets $X_1,X_2,..,X_n$, and what I am calling an ignore set $I = \{I_1, I_2,..,I_m : \forall i \in I_i, i \in \bigcup X_i\}$. I would like to find the cartesian product $X_1 \times X_2 \times.. \times X_n$ excluding any terms which are supersets of any of elements in $I$.
For instance if $X_1 = \{a,b,c\}, X_2 = \{d,e\}, X_3 = \{f\}$, and my ignore list $I = \{ \{a , e \}, \{c \}\}$, the result of this product would be $\{(a, d, f), (b, d, f), (b, e, f)\}$. Note any term with $c$ is not in there, neither is $(a, e, f)$.
I am looking for efficient methods to achieve this kind of product which ignores terms. Clearly one way I could do this would be to find the normal Cartesian product and then filter, but I would avoid this for efficiency purposes since the products I am seeking to do are very large, as are the ignore lists.
I have an initial solution which involves incrementally building each term in the Cartesian product, and at each stage I remove any elements from $X_i$ if adding them to the term I am building would cause it to be a superset of any element of $I$. This works fine, and is better than the naive solution above, but there is still a large amount of redundant checking, which also depends on the order in which the sets are presented. E.g. if $\{f\}$ was in my ignore set, I would still keep trying to create terms until I reach $\{f\}$ and then discard.
The motivation for this is in abstract interpretation of computer programs, to avoid exploring paths which I know would require inconsistent values for my variables.