Dynamix: A Domain-Specific Language For Dynamic Semantics