Abstract
The Unified Modeling Language (UML) is one of the few
modeling languages that is widely used in industry. While
UML is mostly known as diagrammatic modeling language
(e.g., visualizing class models), it is complemented by a
textual language, called Object Constraint Language
(OCL). The current version of OCL is based on a four-valued
logic that turns UML into a formal language. Any type
comprises the elements "invalid" and "null" which are
propagated as strict and non-strict, respectively.
Unfortunately, the former semi-formal semantics of this
specification language, captured in the "Annex A" of the
OCL standard, leads to different interpretations of corner
cases. We formalize the core of OCL: denotational
definitions, a logical calculus and operational rules that
allow for the execution of OCL expressions by a mixture of
term rewriting and code compilation. Our formalization
reveals several inconsistencies and contradictions in the
current version of the OCL standard. Overall, this document
is intended to provide the basis for a machine-checked text
"Annex A" of the OCL standard targeting at tool
implementors.
License
History
- October 13, 2015
- afp-devel@ea3b38fc54d6 and
hol-testgen@12148
Update of Featherweight OCL including a change in the abstract.
- January 16, 2014
- afp-devel@9091ce05cb20 and
hol-testgen@10241
New Entry: Featherweight OCL
Topics
Session Featherweight_OCL
- UML_Types
- UML_Logic
- UML_PropertyProfiles
- UML_Boolean
- UML_Void
- UML_Integer
- UML_Real
- UML_String
- UML_Pair
- UML_Bag
- UML_Set
- UML_Sequence
- UML_Library
- UML_State
- UML_Contracts
- UML_Tools
- UML_Main
- Analysis_UML
- Analysis_OCL
- Design_UML
- Design_OCL