An implementation of the B programming language