Algebraic modeling languages