Decompose without invented pairs
Split a small list, match cards by an identifier and see exactly when nonexistent pairs appear. Then separately check whether the dependency rules survive. No JOIN syntax is required.
Two separate checks: lossless reconstruction returns exactly the source, with no extra pairs; dependency preservation means local rules together imply the original rules. A chain may suffice even when an original dependency’s attributes do not all share one table.