Executable formal specifications of complex distributed systems with CoreASM