An ML-like language with a type system for program verification