151 lines
5.6 KiB
TeX
151 lines
5.6 KiB
TeX
\documentclass[fontsize=11pt,paper=a4,open=right,twoside,abstract=true]{scrreprt}
|
|
\usepackage{fixltx2e}
|
|
\usepackage{isabelle,isabellesym}
|
|
\usepackage[nocolortable, noaclist]{hol-ocl-isar}
|
|
\usepackage{booktabs}
|
|
\usepackage{graphicx}
|
|
\usepackage{amssymb}
|
|
\usepackage[numbers, sort&compress, sectionbib]{natbib}
|
|
\usepackage[caption=false]{subfig}
|
|
\usepackage{lstisar}
|
|
\usepackage{tabu}
|
|
\usepackage[]{mathtools}
|
|
\usepackage{prooftree}
|
|
\usepackage[english]{babel}
|
|
\usepackage[pdfpagelabels, pageanchor=false, plainpages=false]{hyperref}
|
|
% \usepackage[draft]{fixme}
|
|
|
|
% MathOCl expressions
|
|
\colorlet{MathOclColor}{Black}
|
|
\colorlet{HolOclColor}{Black}
|
|
\colorlet{OclColor}{Black}
|
|
%
|
|
\sloppy
|
|
|
|
\uchyph=0
|
|
\graphicspath{{data/},{figures/}}
|
|
\allowdisplaybreaks
|
|
|
|
\renewcommand{\HolTrue}{\mathrm{true}}
|
|
\renewcommand{\HolFalse}{\mathrm{false}}
|
|
\newcommand{\ptmi}[1]{\using{\mi{#1}}}
|
|
\newcommand{\Lemma}[1]{{\color{BrickRed}%
|
|
\mathbf{\operatorname{lemma}}}~\text{#1:}\quad}
|
|
\newcommand{\done}{{\color{OliveGreen}\operatorname{done}}}
|
|
\newcommand{\apply}[1]{{\holoclthykeywordstyle%
|
|
\operatorname{apply}}(\text{#1})}
|
|
\newcommand{\fun} {{\holoclthykeywordstyle\operatorname{fun}}}
|
|
\newcommand{\definitionS} {{\holoclthykeywordstyle\operatorname{definition}}}
|
|
\newcommand{\where} {{\holoclthykeywordstyle\operatorname{where}}}
|
|
\newcommand{\datatype} {{\holoclthykeywordstyle\operatorname{datatype}}}
|
|
\newcommand{\types} {{\holoclthykeywordstyle\operatorname{types}}}
|
|
\newcommand{\pglabel}[1]{\text{#1}}
|
|
\renewcommand{\isasymOclUndefined}{\ensuremath{\mathtt{invalid}}}
|
|
\newcommand{\isasymOclNull}{\ensuremath{\mathtt{null}}}
|
|
\newcommand{\isasymOclInvalid}{\isasymOclUndefined}
|
|
\DeclareMathOperator{\inv}{inv}
|
|
\newcommand{\Null}[1]{{\ensuremath{\mathtt{null}_\text{{#1}}}}}
|
|
\newcommand{\testgen}{HOL-TestGen\xspace}
|
|
\newcommand{\HolOption}{\mathrm{option}}
|
|
\newcommand{\ran}{\mathrm{ran}}
|
|
\newcommand{\dom}{\mathrm{dom}}
|
|
\newcommand{\typedef}{\mathrm{typedef}}
|
|
\newcommand{\mi}[1]{\,\text{#1}}
|
|
\newcommand{\state}[1]{\ifthenelse{\equal{}{#1}}%
|
|
{\operatorname{state}}%
|
|
{\operatorname{\mathit{state}}(#1)}%
|
|
}
|
|
\newcommand{\mocl}[1]{\text{\inlineocl|#1|}}
|
|
\DeclareMathOperator{\TCnull}{null}
|
|
\DeclareMathOperator{\HolNull}{null}
|
|
\DeclareMathOperator{\HolBot}{bot}
|
|
|
|
|
|
% urls in roman style, theory text in math-similar italics
|
|
\urlstyle{rm}
|
|
\isabellestyle{it}
|
|
\newcommand{\ie}{i.\,e.\xspace}
|
|
\newcommand{\eg}{e.\,g.\xspace}
|
|
|
|
\begin{document}
|
|
\renewcommand{\subsubsectionautorefname}{Section}
|
|
\renewcommand{\subsectionautorefname}{Section}
|
|
\renewcommand{\sectionautorefname}{Section}
|
|
\renewcommand{\chapterautorefname}{Chapter}
|
|
\newcommand{\subtableautorefname}{\tableautorefname}
|
|
\newcommand{\subfigureautorefname}{\figureautorefname}
|
|
|
|
\title{Featherweight OCL}
|
|
\subtitle{A Proposal for a Machine-Checked Formal Semantics for OCL 2.5}
|
|
\author{%
|
|
\href{http://www.brucker.ch/}{Achim D. Brucker}\footnotemark[1]
|
|
\and
|
|
\href{https://www.lri.fr/~tuong/}{Fr\'ed\'eric Tuong}\footnotemark[3]
|
|
\and
|
|
\href{https://www.lri.fr/~wolff/}{Burkhart Wolff}\footnotemark[2]}
|
|
\publishers{%
|
|
\footnotemark[1]~SAP AG, Vincenz-Priessnitz-Str. 1, 76131 Karlsruhe,
|
|
Germany \texorpdfstring{\\}{} \href{mailto:"Achim D. Brucker"
|
|
<achim.brucker@sap.com>}{achim.brucker@sap.com}\\[2em]
|
|
%
|
|
\footnotemark[3]~Univ. Paris-Sud, IRT SystemX, 8 av.~de la Vauve, \\
|
|
91120 Palaiseau, France\\
|
|
frederic.tuong@\{u-psud, irt-systemx\}.fr\\[2em]
|
|
%
|
|
\footnotemark[2]~Univ. Paris-Sud, Laboratoire LRI, UMR8623, 91405 Orsay, France\\
|
|
CNRS, 91405 Orsay, France\texorpdfstring{\\}{}
|
|
\href{mailto:"Burkhart Wolff" <burkhart.wolff@lri.fr>}{burkhart.wolff@lri.fr}
|
|
}
|
|
|
|
|
|
\maketitle
|
|
|
|
\begin{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 (\eg, visualizing class models),
|
|
it is complemented by a textual language, called Object Constraint
|
|
Language (OCL). OCL is a textual annotation language, based on a
|
|
three-valued logic, that turns UML into a formal language.
|
|
Unfortunately the semantics of this specification language, captured
|
|
in the ``Annex A'' of the OCL standard, leads to different
|
|
interpretations of corner cases. Many of these corner cases had
|
|
been subject to formal analysis since more than ten years.
|
|
|
|
The situation complicated when with version 2.3 the OCL was aligned
|
|
with the latest version of UML: this led to the extension of the
|
|
three-valued logic by a second exception element, called
|
|
\inlineocl{null}. While the first exception element
|
|
\inlineocl{invalid} has a strict semantics, \inlineocl{null} has a
|
|
non strict semantic interpretation. These semantic difficulties lead
|
|
to remarkable confusion for implementors of OCL compilers and
|
|
interpreters.
|
|
|
|
In this paper, we provide a formalization of the core of OCL in
|
|
HOL\@. It provides 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. They reflect a challenge to define and
|
|
implement OCL tools in a uniform manner. Overall, this document is
|
|
intended to provide the basis for a machine-checked text ``Annex A''
|
|
of the OCL standard targeting at tool implementors.
|
|
|
|
\end{abstract}
|
|
|
|
\tableofcontents
|
|
\include{introduction}
|
|
\include{formalization}
|
|
\include{conclusion}
|
|
\bibliographystyle{abbrvnat}
|
|
\bibliography{root}
|
|
|
|
\end{document}
|
|
|
|
%%% Local Variables:
|
|
%%% mode: latex
|
|
%%% TeX-master: t
|
|
%%% End:
|
|
|
|
% LocalWords: implementors denotational OCL UML
|