Theo.CombineSourceCombine(A)(B) creates a new theory that is the sum of A and B. This allows a single BDD to reason about multiple types of atoms simultaneously.
The resulting module provides Left and Right functors to lift a Formula operating on the combined theory back to a Formula operating on just A or B. This is the key mechanism that allows syntax modules to be specific to a theory but compatible with the combined BDD.
The sum type of theory atoms.
This type is crucial for introspection (via view_constraint). Pattern match on Left or Right to determine which specific theory an atom belongs to.