Specification before implementation has been suggested as a sensible approach to software evolution. The quality of this approach may be improved by using formal specification. However, to serve as a trustable foundation for implementation and to help reduce the cost in program testing, the formal specification must be ensured to be satisfiable, consistent, complete, and accurate in recording t...