Text this: Verifying Distributed Algorithms via Dynamic Analysis and Theorem Proving