Techniques for Integrating Erasure Codes and Model Checkers with Distributed Systems