VML and Promela Haskell implementations both generated automatically using imparse.