/** * [PingPong.bpl] * * Two asynchronous procedures which can enter a coupled * infinite posting loop. */ var x: bool; procedure Ping () { if (!x) { call {:async} Ping (); x := true; } return; } procedure Pong () { if (x) { call {:async} Pong (); x := false; } return; } procedure Main () { x := false; call {:async} Ping (); call {:async} Pong (); return; }