Synthesis of fault-tolerant concurrent programs