My experience with OR is pretty limited, so I apologize if I'm using any sort of bespoke terminology.
I have a set of subsets ${ \{ S_1,\cdots,S_m\}}$ of $\mathbb{R}^n$, and corresponding functions $\{f_1,\cdots,f_m\}$, where the domain of $f_i$ is $S_i$.
Every set $S_i$ can be understood as a hypercube in $\mathbb{R}^n$; no discontinuities or funkiness happening there.
Assume that for every set $S_i$, across every dimension of the vector space, your index variable $x_h$ has some concrete constraints
$$a_{x_h} \leq x_h \lt b_{x_h} \forall h \in\{1,\cdots,n\}$$
Additionally, all of these sets are disjoint, eg $$S_i \cap S_j = \emptyset, i \neq j$$
The problem is that these sets don't necessarily cover $\mathbb{R}^n$, eg it's possible that
$$\bigcup_{i=1}^m S_i \neq\mathbb{R}^n$$
What I want is to enumerate the minimum number of disjoint subsets $\{S_{m+1}..S_{m+k}\}$ required to "cover" $\mathbb{R}^n$, eg
$$\bigcup_{i=1}^{m+k} S_i = \mathbb{R}^n$$
As an example, let's take $\mathbb{R}^2$ as the space we want to cover.
Our set of functions $f_i$ might have the following domains:
D1 : { (x, y) : x >= 2, y < -4 }
D2 : { (x, y) : x < -1, y > 5 }
D3 : { (x, y) : -1 <= x < 2 }
From inspection, it's clear that there's at least 2 disjoint subsets of $\mathbb{R}^2$ that are not covered by these domains.
They're depicted by the purple question marks in this image:
What I want to know is, is there an algorithm which can take these domains as input, and output all existing disjoint, uncovered domains in the larger space?