I am asking because UML is used for informal specifications and has some ambiguities in its semantics. However OCL can be used to specify pre/post conditions and invariants and other constraints quite efficiently I think.
I encountered the Z notation and algebraic specifications recently. My question, is combination of UML and OCL sufficient for formal specifications?