A Formal Algebraic Framework for DSL Composition