Towards Proved Distributed Algorithms through Refinement, Composition and Local Computations