UserGuide.tex revision ab5781bda9fa3062a3a92c4b57fa6bc7b70c745a
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\documentclass{article}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\usepackage[hide]{ed} % set to hide for producing a released version
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\usepackage{alltt}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\usepackage{casl}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\usepackage{xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\usepackage{color}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\usepackage{url}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\usepackage{threeparttable,hhline}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\usepackage{paralist}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\usepackage[pdfborder=0 0 0,bookmarks,
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroederpdfauthor={Till Mossakowski, Christian Maeder, Mihai Codescu},
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroederpdftitle={Hets User Guide}]
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder{hyperref} %% do not load more packages after this line!!
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\input{xy}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\xyoption{v2}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\QUERY}[1]%{}
dc89cfbc150be3b6792f559f57b6e91cd7affacbJonathan von Schroeder{\marginpar{\raggedright\hspace{0pt}\small #1\\~}}
dc89cfbc150be3b6792f559f57b6e91cd7affacbJonathan von Schroeder
dc89cfbc150be3b6792f559f57b6e91cd7affacbJonathan von Schroeder\newcommand{\eat}[1]{}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newenvironment{EXAMPLE}[1][] {\par#1\begin{EXAMPLEFORMAT}\begin{ITEMS}}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder {\end{ITEMS}\end{EXAMPLEFORMAT}\par}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\IEXT}[1] {\\#1\I}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\IEND} {\I\END}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\newenvironment{EXAMPLEFORMAT} {}{}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder%% Added by MB to have some extra vertical space after the ``main'' examples
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder%% following the points (and some others in the text):
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newenvironment{BIGEXAMPLE} {\begin{EXAMPLE}} {\end{EXAMPLE}\medskip}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newenvironment{DETAILS}[1][] {#1\begin{DETAILSFORMAT}}{\end{DETAILSFORMAT}}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newenvironment{DETAILSFORMAT} {}{}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newenvironment{META}[1][] {#1\begin{METAFORMAT}}{\end{METAFORMAT}}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newenvironment{METAFORMAT} {\medskip\vrule\hspace{1ex}\vrule\hspace{1ex}%
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder \begin{minipage}{0.9\textwidth}\it}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder {\end{minipage}\par\medskip}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\SLIDESMALL} {}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\newcommand{\SLIDESONLY}[1] {}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder% SIMULATING SMALL-CAPS FOR BOLD, EMPH
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\normalTEXTSC}[2]{{#1\scriptsize#2}}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder%% NOT \newcommand{\normalTEXTSC}[2]{{\normalsize#1\scriptsize#2}}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\largeTEXTSC} [2]{{\large #1\small #2}}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\LargeTEXTSC} [2]{{\Large #1\normalsize#2}}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\LARGETEXTSC} [2]{{\LARGE #1\large #2}}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\hugeTEXTSC} [2]{{\huge #1\Large #2}}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\HugeTEXTSC} [2]{{\Huge #1\LARGE #2}}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder%\newcommand {\CASL}{\normalTEXTSC{C}{ASL}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\largeCASL} {\largeTEXTSC{C}{ASL}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\LargeCASL} {\LargeTEXTSC{C}{ASL}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\LARGECASL} {\LARGETEXTSC{C}{ASL}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand {\hugeCASL} {\hugeTEXTSC{C}{ASL}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand {\HugeCASL} {\HugeTEXTSC{C}{ASL}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder%\newcommand {\CoFI}{CoFI\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand {\MAYA}{\normalTEXTSC{M}{AYA}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\largeMAYA} {\largeTEXTSC{M}{AYA}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand {\Hets}{\normalTEXTSC{H}{ETS}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\largeHets} {\largeTEXTSC{H}{ETS}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\LARGEHets} {\LARGETEXTSC{H}{ETS}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand {\Cats}{\normalTEXTSC{C}{ATS}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\largeCats} {\largeTEXTSC{C}{ATS}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand {\ELAN}{\normalTEXTSC{E}{LAN}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\largeELAN} {\largeTEXTSC{E}{LAN}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand {\HOL}{\normalTEXTSC{H}{OL}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\largeHOL} {\largeTEXTSC{H}{OL}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand {\Isabelle}{\normalTEXTSC{I}{SABELLE}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\largeIsabelle} {\largeTEXTSC{I}{SABELLE}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\newcommand {\SPASS}{\normalTEXTSC{S}{PASS}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\newcommand {\Horn}{\normalTEXTSC{H}{ORN}}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder%%%%% Klaus macros
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\newcommand{\CASLDL}{\textmd{\textsc{Casl-DL}}\xspace}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\newcommand{\Dolce}{\textmd{\textsc{Dolce}}\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\SHOIN}{$\mathcal{SHOIN}$(\textbf{D})\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\SROIQ}{$\mathcal{SROIQ}$(\textbf{D})\xspace}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\newcommand{\DL}{DL\xspace}
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder%%%%% end of Klaus macros
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder%% Use \ELAN-\CASL, \HOL-\CASL, \Isabelle/\HOL
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\newcommand{\LCF}{LCF\xspace}
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\newcommand{\ASF}{ASF\xspace}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder%%\newcommand {\ASF}{\normalTEXTSC{A}{SF}\xspace}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder%%\newcommand{\largeASF} {\largeTEXTSC{A}{SF}\xspace}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\newcommand{\SDF}{SDF\xspace}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder%%\newcommand {\SDF}{\normalTEXTSC{S}{DF}\xspace}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder%%\newcommand{\largeSDF} {\largeTEXTSC{S}{DF}\xspace}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\newcommand {\ASFSDF}{\normalTEXTSC{A}{SF}+\normalTEXTSC{S}{DF}\xspace}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\newcommand{\largeASFSDF} {\largeTEXTSC{A}{SF}+\largeTEXTSC{S}{DF}\xspace}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\newcommand {\HasCASL}{\normalTEXTSC{H}{AS}\normalTEXTSC{C}{ASL}\xspace}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\newcommand{\largeHasCASL} {\largeTEXTSC{H}{AS}\largeTEXTSC{C}{ASL}\xspace}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder%% Do NOT use \ASF+\SDF (it gives a superfluous space in the middle)
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\newcommand{\CCC}{CCC\xspace}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\newcommand{\CoCASL}{\normalTEXTSC{C}{O}\normalTEXTSC{C}{ASL}\xspace}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\newcommand{\CspCASL}{\normalTEXTSC{C}{SP}-\normalTEXTSC{C}{ASL}\xspace}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\newcommand{\Csp}{\normalTEXTSC{C}{SP}\xspace}
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder\newcommand{\CcsCASL}{CCS-\normalTEXTSC{C}{ASL}\xspace}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\newcommand{\CASLLtl}{\normalTEXTSC{C}{ASL}-\normalTEXTSC{L}{TL}\xspace}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\newcommand{\CASLChart}{\normalTEXTSC{C}{ASL}-\normalTEXTSC{C}{HART}\xspace}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\newcommand{\SBCASL}{\normalTEXTSC{S}{B}-\normalTEXTSC{C}{ASL}\xspace}
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder\newcommand{\HetCASL}{\normalTEXTSC{H}{ET}\normalTEXTSC{C}{ASL}\xspace}
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder\newcommand{\ModalCASL}{\normalTEXTSC{M}{odal}\normalTEXTSC{C}{ASL}\xspace}
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\begin{document}
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\title{{\bf \protect{\LARGEHets} User Guide}\\
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder-- Version 0.98 --}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\author{Till Mossakowski, Christian Maeder,
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder Mihai Codescu\\[1em]
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederDFKI GmbH, Bremen, Germany.\\[1em]
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederComments to: hets-users@informatik.uni-bremen.de \\
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder(the latter needs subscription to the mailing list)
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\maketitle
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\section{Introduction}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederThe central idea of the Heterogeneous Tool Set (\protect\Hets) is to
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederprovide an open source general framework for formal methods
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederintegration and proof management. One can think of \Hets acting like a
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroedermotherboard where different expansion cards can be plugged in, the
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroederexpansion cards here being individual logics (with their analysis and
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroederproof tools) as well as logic translations. Individual logics and
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroedertheir analysis and proof tools can be plugged into the \Hets
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroedermotherboard using an object-oriented interface based on institutions
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\cite{GoguenBurstall92}. The \Hets motherboard already has plugged in
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroedera number of expansion cards (e.g., the theorem provers Isabelle, SPASS
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederand more, as well as model finders). Hence, a variety of tools is
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederavailable, without the need to hard-wire each tool to the logic at
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederhand.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\begin{figure}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\begin{center}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder \includegraphics[width=0.45\textwidth]{hets-motherboard}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\end{center}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\caption{The \Hets motherboard and some expansion cards}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\end{figure}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\Hets supports a number of input languages directly, such as \CASL,
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von SchroederCommon Logic, OWL-DL, Haskell, and Maude. For heterogeneous
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroederspecification, \Hets offers the language heterogeneous \CASL.
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von SchroederHeterogeneous \CASL (\HetCASL) generalises the structuring
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederconstructs of
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\CASL \cite{CASL-UM,CASL/RefManual} to arbitrary logics
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder(if they are formalised as institutions and plugged into
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroederthe \Hets motherboard), as well as to heterogeneous
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroedercombination of specification written in different logics.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederSee
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederFig.~\ref{fig:lang} for a simple subset of the
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\HetCASL syntax, where \emph{basic specifications} are unstructured
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederspecifications or modules written in a specific logic. The graph of
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroedercurrently supported logics and logic translations (the latter are also
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroedercalled comorphisms) is shown in Fig.~\ref{fig:LogicGraph}, and the
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederdegree of support by \Hets in Fig.~\ref{fig:Languages}.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\begin{figure}[ht]
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\centering
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder{\small
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\begin{verbatim}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederSPEC ::= BASIC-SPEC
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder | SPEC then SPEC
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder | SPEC then %implies SPEC
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder | SPEC with SYMBOL-MAP
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder | SPEC with logic ID
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederDEFINITION ::= logic ID
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder | spec ID = SPEC end
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder | view ID : SPEC to SPEC = SYMBOL-MAP end
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder | view ID : SPEC to SPEC = with logic ID end
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederLIBRARY = DEFINITION*
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\end{verbatim}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder}
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\caption{Syntax of a simple subset of the heterogeneous
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederspecification language.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\texttt{BASIC-SPEC} and \texttt{SYMBOL-MAP} have a logic
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederspecific syntax, while \texttt{ID} stands for some form of
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederidentifiers.\label{fig:lang}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\end{figure}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von SchroederWith \emph{heterogeneous structured specifications}, it is possible to
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroedercombine and rename specifications, hide parts thereof, and also
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroedertranslate them to other logics. \emph{Architectural specifications}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroederprescribe the structure of implementations. \emph{Specification
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder libraries} are collections of named structured and architectural
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroederspecifications.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\Hets consists of logic-specific tools for the parsing and static
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederanalysis of the different involved logics, as well as a
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederlogic-independent parsing and static analysis tool for structured and
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederarchitectural specifications and libraries. The latter of course needs
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederto call the logic-specific tools whenever a basic specification is
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederencountered.
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\Hets is based on the theory of institutions \cite{GoguenBurstall92},
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederwhich formalize the notion of a logic. The theory behind \Hets is laid
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederout in \cite{Habil}. A short overview of \Hets is given in
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\cite{MossakowskiEA06,MossakowskiEtAl07b}.
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\section{Logics supported by Hets}
a845310274d5bcd9da2df61599fd58eaf96ded13Jonathan von Schroeder
a845310274d5bcd9da2df61599fd58eaf96ded13Jonathan von SchroederThe following list of logics (formalized as so-called institutions
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\cite{GoguenBurstall92}) is currently supported by \Hets:
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\begin{figure}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder \begin{center}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder \includegraphics[scale=0.4]{LogicGraph}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder \end{center}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\caption{Graph of logics currently supported by \Hets. The more an
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroederellipse is filled with green, the more stable is the implementation of the logic. Blue indicates a prover-supported logic.}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\label{fig:LogicGraph}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\end{figure}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\begin{figure}
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\begin{center}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\begin{tabular}{|l|c|c|c|}\hline
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von SchroederLanguage & Parser & Static Analysis & Prover \\\hline
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\CASL & x & x & - \\\hline
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\CoCASL & x & x & - \\\hline
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\ModalCASL & x & x & - \\\hline
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\HasCASL & x & x & - \\\hline
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von SchroederHaskell & (x) & x & - \\\hline
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von SchroederCspCASL & x & x & - \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCspCASL\_Trace & - & - & x \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCspCASL\_Failure & - & - & - \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCommonLogic & x & x & - \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederConstraint\CASL & x & (x) & - \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederTemporal & x & (x) & - \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederRelScheme & x & (x) & - \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederDFOL & x & (x) & - \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederExtModal & x & (x) & - \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederLF & x & (x) & - \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder%Structured specifications & x & x & (x) \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder%Architectural specifications & x & x & -\\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\CASLDL & x & - & - \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederDMU & x & - & - \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederFreeCAD & - & - & - \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederOWL DL & x & x & x \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederPropositional & x & x & x \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederQBF & x & x & x \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederSoftFOL & x & - & x \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederMaude & x & x & - \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederVSE & x & x & x \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\Isabelle & (x) & - & x \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederHolLight & (x) & - & - \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederAdl & x & x & - \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederFpl & x & x & - \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederEnCL & x & x & x \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\end{tabular}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\end{center}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\caption{Current degree of \Hets support for the different languages. Languages without prover can still ``borrow'' provers
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroedervia logic translations.\label{fig:Languages}}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\end{figure}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\begin{description}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[CASL] extends many sorted first-order logic with partial
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder functions and subsorting. It also provides induction sentences,
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder expressing the (free) generation of datatypes.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder%It is mainly designed and used for the
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder%specification of requirements for software systems. But it is also
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder%used for the specification of \Dolce (Descriptive Ontology for
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder%Linguistic and Cognitive Engineering), an Upper Ontology for knowledge
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder%representation. \cite{Gangemi:2002:SOD} Further it is now used to
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder%specify calculi for time and space.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederFor more details on \CASL see \cite{CASL/RefManual,CASL-UM}.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder%
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederWe have implemented the \CASL logic in such a way that much of the
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederimplementation can be re-used for \CASL extensions as well; this
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederis achieved via ``holes'' (realized via polymorphic variables) in the
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroedertypes for signatures, morphisms, abstract syntax etc. This eases
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederintegration of \CASL extensions and keeps the effort of integrating
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\CASL extensions quite moderate.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[CoCASL] \cite{MossakowskiEA04} is a coalgebraic extension of \CASL,
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroedersuited for the specification of process types and reactive systems.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederThe central proof method is coinduction.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[ModalCASL] \cite{ModalCASL}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder is an extension of \CASL with multi-modalities and
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederterm modalities. It allows the specification of modal systems with
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederKripke's possible worlds semantics. It is also possible to express
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroedercertain forms of dynamic logic.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[ExtModal] is an extended modal logic, currently in an experimental state.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[HasCASL] is a higher order extension of \CASL allowing
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder polymorphic datatypes and functions. It is closely related to the
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder programming language Haskell and allows program constructs being
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder embedded in the specification.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder An overview of \HasCASL is given in \cite{Schroeder:2002:HIS};
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederthe language is summarized in \cite{HasCASL/Summary}, the semantics
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederin \cite{Schroder05b,Schroder-habil}.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[Haskell] is a modern, pure and strongly typed functional
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder programming language. It simultaneously is the implementation
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder language of \Hets, such that in the future, \Hets might be applied
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder to itself.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederThe definitive reference for Haskell is \cite{PeytonJones03},
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroedersee also \url{www.haskell.org}.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[CspCASL] \cite{Roggenbach06} is a combination of \CASL
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder with the process algebra \Csp.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[CommonLogic] \url{http://en.wikipedia.org/wiki/Common_logic}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[ConstraintCASL] is an experimental logic for the specification
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederof qualitative constraint calculi.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[OWL DL] is the Web Ontology Language (OWL) recommended by the
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder World Wide Web Consortium (W3C, \url{http://www.w3c.org}). It is
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder used for knowledge representation and the Semantic Web
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder \cite{berners:2001:SWeb}.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederHets calls an external OWL DL parser
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder written in JAVA to obtain the abstract syntax for an OWL file and its
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder imports. The JAVA parser is also doing a first analysis classifying
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder the OWL ontology into the sublanguages OWL Full, OWL DL and OWL
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder Lite.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder Hets only supports the last two, more restricted variants.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederThe
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder structuring of the OWL imports is displayed as Development Graph.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[CASL-DL] \cite{OWL-CASL-WADT2004}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederis an extension of a restriction of \CASL, realizing
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroedera strongly typed variant of OWL DL in \CASL syntax.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederIt extends
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder \CASL with cardinality restrictions for the description of sorts and
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder unary predicates. The restrictions are based on the equivalence
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder between \CASLDL, OWL~DL and \SHOIN. Compared to \CASL only unary
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder and binary predicates, predefined datatypes and concepts (subsorts
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder of the topsort Thing) are allowed. It is used to bring OWL DL and
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder \CASL closer together.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[Propositional] is classical propositional logic, with
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederthe zChaff SAT solver \cite{Herbstritt03} connected to it.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[QBF] are quantified boolean formulas, with
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederDepQBF \url{http://fmv.jku.at/depqbf/} connected to it.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[RelScheme] is a logic for relational databases \cite{DBLP:journals/ao/SchorlemmerK08}.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[SoftFOL] \cite{LuettichEA06a} offers several automated theorem
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder proving (ATP) systems for first-order logic with equality: \begin{inparaenum}[(1)]\item \SPASS
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder \cite{WeidenbachEtAl02}, see \url{http://www.spass-prover.org};
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item Vampire \cite{RiazanovV02} see \url{http://www.vprover.org};
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item Darwin \cite{Baumgartner:etal:Darwin:IJAIT:2005}, see \url{http://combination.cs.uiowa.edu/Darwin};
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item Eprover \cite{Schulz:AICOM-2002}, see {http://www.eprover.org};
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item E-KRHyper \cite{DBLP:conf/cade/PelzerW07}, see {http://www.uni-koblenz.de/~bpelzer/ekrhyper}, and
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder MathServe Broker\footnote{which chooses an appropriate ATP upon a
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder classification of the FOL problem} \cite{ZimmerAutexier06}.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\end{inparaenum}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder These together comprise some of the most advanced theorem provers
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder for first-order logic. SoftFOL is essentially the first-order
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder interchange language TPTP \cite{DBLP:conf/lpar/Sutcliffe10},
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroedersee \url{http://www.tptp.org}.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[\Isabelle] \cite{NipPauWen02} is an interactive theorem prover
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder for higher-order logic.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[HolLight] \url{http://www.cl.cam.ac.uk/~jrh13/hol-light/}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder is John Harrison's interactive theorem prover
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder for higher-order logic.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[VSE] is an interactive theorem prover, see \ref{subsec:VSE}.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[DMU] is a dummy logic to read output of ``Computer Aided
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder Three-dimensional Interactive Application'' (Catia).
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[FreeCAD] is a logic to read design files of the CAD system
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder FreeCAD\\\url{http://sourceforge.net/projects/free-cad}.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[Maude] is a rewrite system \url{http://maude.cs.uiuc.edu/} for
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder first-order logic. In order to use this logic the environment variable
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder \verb+HETS_MAUDE_LIB+ must be set to a directory containing the files
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder \verb+full-maude.maude+, \verb+hets.prj+, \verb+maude2haskell.maude+ and
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder \verb+parsing.maude+.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[DFOL] is an extension of first-order logic with dependent types \cite{rabe:dfol:06}.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item [LF] is the dependent type theory of Twelf \url{http://twelf.plparty.org/}. Hets
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder calls Twelf on \verb+.elf+ files (for this, the environment variable
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder \verb+TWELF_LIB+ must be set) and reads in the OMDoc generated by Twelf.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder Moreover, LF can be used as a logical framework to add new logics in Hets \cite{CHK+2011a}.
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder Logic definitions in LF are based in the logic atlas of the Latin project \cite{project:latin}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder and therefore the environment variable \verb+LATIN_LIB+ must be set to the
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder repository with the Latin logic definitions.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\item[Framework] is a dummy logic added for declarative logic definitions \cite{CHK+2011a}.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[Adl] is ``A Description Language'' based on relational algebra originally
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder designed for requirements engineering of business rules
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder \url{https://lab.cs.ru.nl/BusinessRules/Requirements_engineering}.
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item[Fpl] is a ``logic for functional programs'' as an extension of a
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder restriction of \CASL. (\CASL predicates are disabled.)
dc89cfbc150be3b6792f559f57b6e91cd7affacbJonathan von Schroeder A detailed description of FPL will appear elsewhere.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\item[EnCL] is an ``engineering calculation language'' based on first
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder order theory of real numbers with some predefined binders
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder \cite{logic:EnCL}. It allows the formulation of executable
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder specifications of engineering calculation methods. For the execution
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder of these specifications Hets provides connections to the computer
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder algebra systems Mathematica, Maple and Reduce.
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\item[THF] is an interchange language for higher-order logic
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder \cite{DBLP:conf/cade/BenzmullerRS08}, similar to what TPTP
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder is for first-order logic. \Hets connects THF to the automated
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder higher-order prover Leo-II.
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder\end{description}
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder
dfe355b50888d0dea1c12713288b652741844080Jonathan von SchroederVarious logics are supported with proof tools. Proof support for the
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroederother logics can be obtained by using logic translations to a
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroederprover-supported logic.
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder
dfe355b50888d0dea1c12713288b652741844080Jonathan von SchroederAn introduction to \CASL can be found in the \CASL User Manual
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder\cite{CASL-UM}; the detailed language reference is given in
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederthe \CASL Reference Manual \cite{CASL/RefManual}. These documents
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroederexplain both the \CASL logic and language of basic specifications as
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroederwell as the logic-independent constructs for structured and
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroederarchitectural specifications. The corresponding document explaining the
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder\HetCASL language constructs for \emph{heterogeneous} structured specifications
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroederis the \HetCASL language summary \cite{Mossakowski04}; a formal
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroedersemantics as well as a user manual with more examples are in preparation.
dfe355b50888d0dea1c12713288b652741844080Jonathan von SchroederSome of \HetCASL's heterogeneous constructs will be illustrated
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederin Sect.~\ref{sec:HetSpec} below.
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder\section{Logic translations supported
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroederby Hets}
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder\label{comorphisms}
dfe355b50888d0dea1c12713288b652741844080Jonathan von Schroeder
dfe355b50888d0dea1c12713288b652741844080Jonathan von SchroederLogic translations (formalized as institution comorphisms
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\cite{GoguenRosu02}) translate from a given source logic to a given
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroedertarget logic. More precisely, one and the same logic translation
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroedermay have several source and target \emph{sub}logics: for
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroedereach source sublogic, the corresponding sublogic of the target
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroederlogic is indicated.
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von SchroederA graph of the most important logics and sublogics, together with their
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroedercomorphisms, is shown in Fig.~\ref{fig:SublogicGraph}.
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\begin{figure}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder \begin{center}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder \includegraphics[scale=0.4]{SublogicGraph}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder \end{center}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\caption{Graph of most important sublogics currently supported by \Hets,
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroedertogether with their comorphisms.}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\label{fig:SublogicGraph}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\end{figure}
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von SchroederIn more detail, the following list of logic translations is currently
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroedersupported by \Hets:
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder\begin{tabular}{|l|p{8cm}|}\hline
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von SchroederAdl2CASL & inclusion taking relations to CASL predicates \\\hline
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von SchroederCASL2CoCASL & inclusion \\\hline
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von SchroederCASL2CspCASL & inclusion \\\hline
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von SchroederCASL2HasCASL & inclusion \\\hline
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von SchroederCASL2Isabelle & inclusion on sublogic CFOL=
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder(translation $(7)$ of \cite{Mossakowski02}) \\\hline
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von SchroederCASL2Modal & inclusion \\\hline
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von SchroederCASL2PCFOL & coding of subsorting (SubPCFOL=) by injections, see Chap.\ III:3.1 of the CASL Reference Manual \cite{CASL/RefManual} \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCASL2PCFOLTopSort & coding of subsorting (SulPeCFOL=) by a top sort and unary
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederpredicates for the subsorts \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCASL2Propositional & translation of propositional FOL \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCASL2SoftFOL & coding of CASL.SuleCFOL=E to SoftFOL \cite{LuettichEA06a},
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroedermapping types to soft types \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCASL2SoftFOLInduction & same as CASL2SoftFOL but with instances of induction
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroederaxioms for all proof goals \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCASL2SoftFOLInduction2 & similar to CASL2SoftFOLInduction but replaces goals with induction premises \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCASL2SubCFOL & coding of partial functions by error elements
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder(translation $(4a')$ of \cite{Mossakowski02}, but extended to subsorting, i.e. sublogic SubPCFOL=) \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCASL2VSE & inclusion on sublogic CFOL= \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCASL2VSEImport & inclusion on sublogic CFOL= \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCASL2VSERefine & refining translation of CASL.CFOL= to VSE \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCASL\_DL2CASL & inclusion \\\hline
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von SchroederCoCASL2CoPCFOL & coding of subsorting by injections, similar to CASL2PCFOL \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCoCASL2CoSubCFOL & coding of partial functions by error supersorts, similar to CASL2SubCFOL \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCoCASL2Isabelle & extended translation similar to CASL2Isabelle \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCommonLogic2CASL & Coding Common Logic to \CASL.Module elimination
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder is applied before translating to \CASL. \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCommonLogic2CASLCompact & Coding compact Common Logic to \CASL.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder Compact Common Logic is a sublogic of Common Logic
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder where no sequence markers occur. Module elimination
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder is applied before translating to \CASL. We recommend
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder using this comorphism whenever possible because it
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder results in simpler specifications.\\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCommonLogicModuleElimination & Eliminating modules from a Common Logic theory
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder resulting in an equivalent specification without
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von Schroeder modules. \\\hline
0f62c81f3b90f151d8b5adde2f039948e2f0dc16Jonathan von SchroederCspCASL2CspCASL\_Failure & inclusion \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCspCASL2CspCASL\_Trace & inclusion \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederCspCASL2Modal & translating the CASL data part to ModalCASL \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederDFOL2CASL & translating dependent types \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederDMU2OWL & interpreting Catia output as OWL \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\end{tabular}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\begin{tabular}{|l|p{7cm}|}\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederHasCASL2HasCASLNoSubtypes & coding out subtypes \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederHasCASL2HasCASLPrograms & coding of \HasCASL axiomatic recursive definitions
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederas \HasCASL recursive program definitions \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederHasCASL2Haskell & translation of \HasCASL recursive program definitions to Haskell \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederHasCASL2IsabelleOption & coding of HasCASL to Isabelle/HOL \cite{Groening05} \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederHaskell2Isabelle & coding of Haskell to Isabelle/HOL \cite{TorriniEtAl07} \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederHaskell2IsabelleHOLCF & coding of Haskell to Isabelle/HOLCF \cite{TorriniEtAl07} \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederHolLight2Isabelle & coding of HolLight to Isabelle/HOL \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederMaude2CASL & encoding of rewrites as predicates \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederModal2CASL & the standard translation of modal logic
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederto first-order logic \cite{blackburn_p-etal:2001a} \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederOWL2CASL & inclusion \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederOWL2CommonLogic & inclusion \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederPropositional2CASL & inclusion \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederPropositional2QBF & inclusion \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederQBF2Propositional & inclusion \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederRelScheme2CASL & inclusion \\\hline
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\end{tabular}
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\section{Getting started}
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von SchroederThe latest \Hets version can be obtained from the
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\Hets tools home page
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\begin{quote}
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\url{http://www.dfki.de/sks/hets}
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\end{quote}
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder Since \Hets is being
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroederimproved constantly, it is recommended always to use the latest version.
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\Hets is currently available (on Intel architectures only) for Linux
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroederand Mac OS-X.
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von SchroederThere are several possibilities to install \Hets.
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\begin{enumerate}
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\item
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von SchroederThe best support is currently given via Ubuntu packages.
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\begin{verbatim}
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroedersudo apt-add-repository ppa:hets/hets
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroedersudo apt-add-repository \
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder "deb http://archive.canonical.com/ubuntu lucid partner"
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroedersudo apt-get update
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroedersudo apt-get install hets
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\end{verbatim}
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von SchroederThis will also install quite a couple of tools for proving requiring about
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder800 MB of disk space. For a minimal installation \texttt{apt-get install
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder hets-core} instead of \texttt{hets}.
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\item For Mac OSX 10.6 (Snow Leopard) we provide a meta package
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder \texttt{Hets.mpkg} based on MacPorts that will be extended by further tools
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder for proving in the future.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederThen we have Java based \Hets installer that we may drop in the future.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederDownload a \texttt{.jar} file and start it with
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\begin{quote}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederjava -jar \texttt{file.jar}
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\end{quote}
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von SchroederNote that you need Sun Java 1.4.2 or later. On a Mac, you can just
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederdouble-click on the \texttt{.jar} file, but you have to install the MacPorts
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\texttt{libglade2} package (and all its dependencies) yourself. In order to
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederspeed this up we provide a meta package \texttt{libglade2.mpkg}, too.
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederThe installer will lead you through the installation with
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroedera graphical interface. It will download and install further
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroedersoftware (if not already installed on your computer):
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\medskip
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder{\small
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\begin{tabular}{|l|l|p{5cm}|}\hline
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von SchroederHets-lib & specification library & \url{http://www.cofi.info/Libraries}\\\hline
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von SchroederuDraw(Graph) & graph drawing & \url{http://www.informatik.uni-bremen.de/uDrawGraph/en/}\\\hline
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von SchroederTcl/Tk & graphics widget system & (version 8.4 or 8.5 must be installed before)\\\hline
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\SPASS & theorem prover & \url{http://spass.mpi-sb.mpg.de/}\\\hline
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von SchroederDarwin & theorem prover & should be installed manually from \url{http://combination.cs.uiowa.edu/Darwin/}\\\hline
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\Isabelle & theorem prover & \url{http://www.cl.cam.ac.uk/Research/HVG/Isabelle/}\\\hline
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder(X)Emacs & editor (for Isabelle) & (must be installed manually)\\\hline
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\end{tabular}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\medskip
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederIf you do not have Sun Java, you can just download the hets binary.
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederYou have to unpack it with \texttt{bunzip2} and then put it at
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroedersome place coverd by your \texttt{PATH}. You also have to
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederinstall the above mentioned software and set
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroederseveral environment variables, as explained on the installation page.
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\item
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederYou may compile \Hets from the sources (they are licensed under GPL),
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederplease follow the
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederlink ``Hets: source code and information for developers''
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederon the \Hets web page, download the sources (as tarball or from
b9343d2e9e7078d3261a05e7899c74bcde032a76Jonathan von Schroedersvn), and follow the
b9343d2e9e7078d3261a05e7899c74bcde032a76Jonathan von Schroederinstructions in the \texttt{INSTALL} file, but be prepared to take some time.
b9343d2e9e7078d3261a05e7899c74bcde032a76Jonathan von Schroeder\end{enumerate}
b9343d2e9e7078d3261a05e7899c74bcde032a76Jonathan von Schroeder
b9343d2e9e7078d3261a05e7899c74bcde032a76Jonathan von SchroederDepending on your application further tools are supported and may be
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroederinstalled in addition:
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\medskip
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder{\small
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder\begin{tabular}{|l|l|p{5cm}|}\hline
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederzChaff & SAT solver & \url{http://www.princeton.edu/~chaff/zchaff.html} \\\hline
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederminisat & SAT solver & \url{http://minisat.se/} \\\hline
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederPellet & OWL reasoner & \url{http://clarkparsia.com/pellet/} \\\hline
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederE-KRHyper & theorem prover
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder & \url{http://userpages.uni-koblenz.de/~bpelzer/ekrhyper/} \\\hline
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von SchroederReduce & computer algebra system
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder & \url{http://www.reduce-algebra.com/} \\\hline
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederMaude & rewrite system & \url{http://maude.cs.uiuc.edu/} \\\hline
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederVSE & theorem prover & (non-public) \\\hline
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederTwelf & & \url{http://twelf.plparty.org/} \\\hline
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\end{tabular}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von Schroeder\section{Analysis of Specifications}
18d5da8101a438aaf8c27d7e740f835e707fc0b8Jonathan von SchroederConsider the following \CASL
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroederspecification:
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\medskip
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\begin{BIGEXAMPLE}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\I\SPEC \NAME{Strict\_Partial\_Order} =
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder%%PDM\I{} \COMMENTENDLINE{Let's start with a simple example !}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\begin{ITEMS}[\PRED]
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\I\SORT \( Elem \)
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\I\PRED \( \_\_<\_\_ : Elem \* Elem \)
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder% \COMMENTENDLINE{\PRED abbreviates predicate}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\end{ITEMS}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\(\[ \FORALL x,y,z : Elem \\
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder \. \NOT(x < x) \RIGHT{\LABEL{strict}} \\
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder \. x < y \IMPLIES \NOT(y < x) \RIGHT{\LABEL{asymmetric}} \\
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder \. x < y \A y < z \IMPLIES x < z \RIGHT{\LABEL{transitive}} \\
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\]\)
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\begin{COMMENT}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von SchroederNote that there may exist \(x, y\) such that\\
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroederneither \(x < y\) nor \(y < x\).
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\end{COMMENT}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\I\END
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\end{BIGEXAMPLE}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\Hets can be used for parsing and
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroederchecking static well-formedness of specifications.
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder \index{parsing}%
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder \index{static!analysis}%
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder \index{analysis, static}%
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von SchroederLet us assume that the example is in a file named
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\texttt{Order.casl} (actually, this file is provided
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroederwith the \Hets distribution as \texttt{Hets-lib/UserManual/Chapter3.casl}).
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von SchroederThen you can check the well-formedness of the
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroederspecification by typing (into some shell):
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\begin{quote}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\texttt{hets Order.casl}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\end{quote}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\Hets checks both the correctness of this specification
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder with respect to the \CASL syntax, as
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroederwell as its correctness with respect to the static semantics (e.g.\
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroederwhether all identifiers have been declared before they are used,
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroederwhether operators are applied to arguments of the correct sorts,
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroederwhether the use of overloaded symbols is unambiguous, and so on).
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von SchroederThe following flags are available in this context:
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\begin{description}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\item[\texttt{-p}, \texttt{--just-parse}] Just do the parsing
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder -- the static analysis is skipped and no development is created.
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\item[\texttt{-s}, \texttt{--just-structured}] Do the parsing and the
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder static analysis of (heterogeneous) structured specifications, but
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder leave out the analysis of basic specifications. This can be used
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder for prototyping issues, namely to quickly produce a development graph
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder showing the dependencies among the specifications (cf.
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder Sect.~\ref{sec:DevGraph}) even if the individual specifications are
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder not correct yet.
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\item[\texttt{-L DIR}, \texttt{--hets-libdir=DIR}]
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von SchroederUse \texttt{DIR} as a colon separated list of directories for specification libraries (equivalently, you can set the variable \texttt{HETS\_LIB} before
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroedercalling \Hets).
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\item[\texttt{-a ANALYSIS}, \texttt{--casl-amalg=ANALYSIS}]
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder For the analysis of architectural specification (a quite advanced
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder feature of \CASL), the \texttt{ANALYSIS} argument specifies the options for
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder amalgamability checking
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder algorithm for \CASL logic; it is a comma-separated list of zero or
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder more of the following options:
3a321bd2e5b11ccb6fc6afe3baf71bc0d73f818aJonathan von Schroeder \begin{description}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder \item[\texttt{sharing}] perform sharing analysis for sorts,
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder operations and predicates.
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroeder \item[\texttt{cell}] perform cell condition check; implies
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroeder \texttt{sharing}. With this option on, the subsort embeddings are
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder analyzed.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder \item[\texttt{colimit-thinness}] perform colimit thinness check;
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder implies \texttt{sharing}. The colimit thinness check is less
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder complete and usually takes longer than the full cell condition
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder check (\texttt{cell} option), but may prove more efficient in case
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroeder of certain specifications.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder \end{description}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder If \texttt{ANALYSIS} is empty then amalgamability analysis for
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder \CASL is skipped.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder The default value for \texttt{--casl-amalg} is
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroeder \texttt{cell}.
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroeder\end{description}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\section{Heterogeneous Specification} \label{sec:HetSpec}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\Hets accepts plain text input files with the following endings:
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\\
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\begin{tabular}{|l|c|c|}\hline
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederEnding & default logic & structuring language\\\hline
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\texttt{.casl} & \CASL & \CASL \\\hline
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\texttt{.het} & \CASL & \CASL \\\hline
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\texttt{.hol} & HolLight & HolLight \\\hline
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\texttt{.hs} & Haskell & Haskell \\\hline
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\texttt{.owl} & OWL DL, OWL Lite & OWL \\\hline
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\texttt{.elf} & LF & Twelf \\\hline
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\texttt{.clf} or \texttt{.clif} & CommonLogic & \CASL \\\hline
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\texttt{.maude} & Maude & Maude \\\hline
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\end{tabular}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\medskip
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederFurthermore, \texttt{.xml} files are accepted as Catia output if the default
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederlogic is set to DMU before a library import or by the ``\texttt{-l DMU}''
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroedercommand line option of \Hets. In all other cases \texttt{.xml} files are
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederassumed to be development graph files as produced by ``\texttt{-o xml}''.
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederAlthough the endings \texttt{.casl} and \texttt{.het} are
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederinterchangeable, the former should be used for libraries of
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederhomogeneous \CASL specifications and the latter for \HetCASL libraries
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederof heterogeneous specifications (that use the \CASL structuring
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroederconstructs). Within a \HetCASL library, the current logic can be changed e.g.\
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederto \HasCASL in the following way:
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\begin{verbatim}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederlogic HasCASL
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\end{verbatim}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederThe subsequent specifications are then parsed and analysed as
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\HasCASL specifications. Within such specifications,
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederit is possible to use references to named \CASL specifications;
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederthese are then automatically translated along the default
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederembedding of \CASL into \HasCASL (cf.\ Fig.~\ref{fig:LogicGraph}).
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder(There are also heterogeneous constructs
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederfor explicit translations between logics, see \cite{Mossakowski04}.)
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\eat{
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederA \CspCASL specification consists of a \CASL specification
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederfor the data part and a \Csp process built over this data part.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederTherefore, \HetCASL provides a heterogeneous language construct
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\texttt{data} as follows:
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\begin{verbatim}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederlibrary Buffer
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederlogic CASL
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederspec List =
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder free type List[Elem] ::= nil | cons(Elem; List[Elem])
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder ops last: List -> ? Elem;
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder rest: List -> ? List
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederend
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederlogic CspCASL
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederspec Buffer =
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder data List
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder channel read, write : Elem
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder process Buf(List): read, write, List;
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder EmptyBuffer : read,write, List;
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroeder Buf(l)= read? x :: Elem -> Buf(cons(x,nil)) []
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder (if l=nil then STOP else
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder write!last(l) -> Buf(rest(l)))
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder EmptyBuffer = Buf(nil)
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederend
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\end{verbatim}
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroeder
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von SchroederHere, the construct \texttt{data List} refers to the \CASL specification
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroeder\texttt{List}, which is implicitly embedded into \CspCASL.
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroeder}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederThe ending \texttt{.hs} is available for directly reading in
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederHaskell programs % and HasSLe specifications,
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroederand hence supports the Haskell module system.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederBy contrast, in \HetCASL libraries (ending with \texttt{.het}),
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederthe logic Haskell has to be chosen explicitly, and the \CASL structuring
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroedersyntax needs to be used:
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroeder\begin{verbatim}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederlibrary Factorial
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederlogic Haskell
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederspec Factorial =
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder{
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederfac :: Int -> Int
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederfac n = foldl (*) 1 [1..n]
8c4e6fae99499cb457b3b38bf248c30ce2f95921Jonathan von Schroeder}
8c4e6fae99499cb457b3b38bf248c30ce2f95921Jonathan von Schroederend
8c4e6fae99499cb457b3b38bf248c30ce2f95921Jonathan von Schroeder\end{verbatim}
8c4e6fae99499cb457b3b38bf248c30ce2f95921Jonathan von Schroeder
8c4e6fae99499cb457b3b38bf248c30ce2f95921Jonathan von SchroederNote that according to the Haskell syntax, Haskell function
8c4e6fae99499cb457b3b38bf248c30ce2f95921Jonathan von Schroederdeclarations and definitions need to start with the first column of
8c4e6fae99499cb457b3b38bf248c30ce2f95921Jonathan von Schroederthe text.
8c4e6fae99499cb457b3b38bf248c30ce2f95921Jonathan von Schroeder
8c4e6fae99499cb457b3b38bf248c30ce2f95921Jonathan von Schroeder
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\section{Development Graphs}\label{sec:DevGraph}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederDevelopment graphs are a simple kernel formalism for (heterogeneous)
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederstructured theorem proving and proof management.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederA development graph consists of a set of nodes (corresponding to whole
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederstructured specifications or parts thereof), and a set of arrows
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroedercalled \emph{definition links}, indicating the dependency of each
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederinvolved structured specification on its subparts. Each node is
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederassociated with a signature and some set of local axioms. The axioms
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederof other nodes are inherited via definition links. Definition links
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroederare usually drawn as black solid arrows, denoting an import of another
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroederspecification.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederComplementary to definition links, which \emph{define} the theories of
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederrelated nodes, \emph{theorem links} serve for \emph{postulating}
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroederrelations between different theories. Theorem links are the central
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroederdata structure to represent proof obligations arising in formal
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederdevelopments.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederTheorem links can be \emph{global} (drawn as solid arrows) or
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\emph{local} (drawn as dashed arrows): a global theorem link
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederpostulates that all axioms of the source node (including the inherited
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederones) hold in the target node, while a local theorem link only postulates
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederthat the local axioms of the source node hold in the target node.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederBoth definition and theorem links can be \emph{homogeneous},
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederi.e. stay within the same logic, or \emph{heterogeneous}, i.e.\ %% such that
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederthe logic changes along the arrow. Technically, this is the case
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederfor Grothendieck signature morphisms $(\rho,\sigma)$ where
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder$\rho\not=id$. This case is indicated with double arrows.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederTheorem links are initially displayed in red.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederThe \emph{proof calculus} for development graphs
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\cite{MossakowskiEtAl05,Habil} is given by rules
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederthat allow for proving global theorem links by decomposing them
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederinto simpler (local and global) ones. Theorem links that have been
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroederproved with this calculus are drawn in green. Local theorem links can
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederbe proved by turning them into \emph{local proof goals}. The latter
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroedercan be discharged using a logic-specific calculus as given by an
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederentailment system for a specific institution. Open local
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederproof goals are indicated by marking the corresponding node in the
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederdevelopment graph as red; if all local implications are proved, the
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroedernode is turned into green. This implementation ultimately is based
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederon a theorem \cite{Habil} stating soundness and relative completeness
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederof the proof calculus for heterogeneous development graphs.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederDetails can be found in the \CASL Reference Manual \cite[IV:4]{CASL/RefManual}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederand in \cite{Habil,MossakowskiEtAl05,MossakowskiEtAl07b}.
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederThe following options let \Hets show the development graph of
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroedera specification library:
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\begin{description}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\item[\texttt{-g}, \texttt{--gui}] Shows the development graph in a GUI window
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\item[\texttt{-u}, \texttt{--uncolored}] no colors in shown graphs
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\end{description}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von SchroederThe following additional options also apply typical rules from the development
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroedergraph calculus to the final graph and save applying these rule via the GUI.
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\begin{description}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\item[\texttt{-A}, \texttt{--apply-automatic-rule}] apply the automatic
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder strategy to the development graph. This is what you usually want in order to
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder get goals within nodes for proving.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\item[\texttt{-N}, \texttt{--normal-form}] compute all normal forms for nodes
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder with incoming hiding links. (This may take long and may not be implemented
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder for all logics.)
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\end{description}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\eat{
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederLet us extend the above library \texttt{Order.casl}. One use of the
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederlibrary might be to express the fact that the natural numbers form a
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederstrict partial order as a view, as follows:
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
97759cc6eafaca8c6e62ae394aa28b9642a2a6d7Jonathan von Schroeder\medskip
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\begin{BIGEXAMPLE}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\I\SPEC \NAMEREF{Natural} = ~\FREE \TYPE \(Nat ::= 0 \| suc(Nat)\)~\END
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\end{BIGEXAMPLE}
61d26ef772466529400bc460e7c69f67c1173b56Jonathan von Schroeder
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\begin{EXAMPLE}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\I\SPEC \NAMEDEFN{Natural\_Order\_2} =
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\IEXT{\NAMEREF{Natural}} \THEN
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\begin{ITEMS}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\I\PRED \( \_\_<\_\_ : Nat \* Nat\)
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\end{ITEMS}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\(\[ \FORALL x,y:Nat \\
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder \. 0 < suc(x) \\
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder \. \neg x < 0 \\
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder \. suc(x) < suc(y) \IFF x < y
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\]\)
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\I\END
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\end{EXAMPLE}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\begin{EXAMPLE}%[\SLIDESMALL]
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\I\VIEW \NAMEDEFN{v1} ~:~ \NAMEREF{Strict\_Partial\_Order} \TO
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\NAMEREF{Natural\_Order\_2} =
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\I{} \( Elem \MAPSTO Nat\)
61d26ef772466529400bc460e7c69f67c1173b56Jonathan von Schroeder\I\END
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\end{EXAMPLE}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von SchroederAgain, these specifications can be checked with \Hets. However, this
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroederonly checks syntactic and static semantic well-formedness -- it is
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\emph{not} checked whether the predicate `$\_\_<\_\_$' introduced in
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\NAMEREF{Natural\_Order\_2} actually is constrained to be interpreted
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederby a strict partial ordering relation. Checking this requires theorem
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederproving, which will be discussed below.
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederHowever, before coming to theorem proving, let us first inspect the
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederproof obligations arising from a specification. This can be done with:
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\begin{quote}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\texttt{hets -g Order.casl}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\end{quote}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder(assuming that the above two specifications and the view
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederhave been added to the file
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\texttt{Order.casl}).
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\Hets now displays a so-called development graph
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder(which is just an overview graph showing the overall structure
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroederof the specifications in the library), see Fig.~\ref{fig:dg0}.
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\begin{figure}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\begin{center}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\includegraphics[scale=0.7]{dg-order-0}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\end{center}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\caption{Sample development graph.\label{fig:dg0}}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\end{figure}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederNodes in a development graph correspond to \CASL specifications.
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von SchroederArrows show how specifications are related by the structuring
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederconstructs.
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederThe black arrow denotes an ordinary import of
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroederspecifications (generated by the extension), while the red arrow
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroederdenotes a proof obligation (corresponding to the view).
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von SchroederThis proof obligation needs to be discharged in order to
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroedershow that the view is well-formed (then its color turns into green).
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von SchroederAs a more complex example, consider the following loose specification
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroederof a sorting function, taken from the \CASL User Manual
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\cite{CASL-UM}, Chap.~6:
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\begin{BIGEXAMPLE}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\I\SPEC \NAMEREF{List\_Order\_Sorted}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\\{} [\,\NAMEREF{Total\_Order} \WITH \SORT \(Elem\), \PRED \(\_\_<\_\_\)\,] =
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\IEXT{\NAMEREF{List\_Selectors} [\,\SORT \(Elem\)\,]} \THEN
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\begin{ITEMS}[\WITHIN]
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\I\LOCAL
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\begin{ITEMS}[\PRED]
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\I\PRED \( \_\_is\_sorted : List \)
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\end{ITEMS}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\(\[ \FORALL e,e': Elem; L : List \\
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder \. empty~is\_sorted \\
ca8f01a2b83fbb929aaf29629f71b10fd867956aJonathan von Schroeder \. cons(e,empty)~is\_sorted \\
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder \. cons(e,cons(e',L))~is\_sorted \IFF
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\\\M (cons(e',L)~is\_sorted \A \NOT(e'<e)) \]\)
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\I\WITHIN
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\begin{ITEMS}[\OP]
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\I\OP \( order : List \TOTAL List \)
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\end{ITEMS}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\( \FORALL L:List\. \[ order(L)~is\_sorted \]\)
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\end{ITEMS}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\I\END
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\end{BIGEXAMPLE}
383d883a81d3bc4ad7b14aa28e03f0f35baec458Jonathan von Schroeder
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von SchroederThe following specification of sorting by insertion also is taken from
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroederthe \CASL User Manual \cite{CASL-UM}, Chap.~6:
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\begin{BIGEXAMPLE}
ca8f01a2b83fbb929aaf29629f71b10fd867956aJonathan von Schroeder\I\SPEC \NAMEREF{List\_Order}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder [\,\NAMEREF{Total\_Order} \WITH \SORT \(Elem\), \PRED \(\_\_<\_\_\)\,] =
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\phantomsection
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\IEXT{\NAMEREF{List\_Selectors} [\,\SORT \(Elem\)\,]} \THEN
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\begin{ITEMS}[\WITHIN]
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\I\LOCAL
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\begin{ITEMS}[\OP]
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\I\OP \( insert : Elem \* List \TOTAL List \)
61d26ef772466529400bc460e7c69f67c1173b56Jonathan von Schroeder\end{ITEMS}
61d26ef772466529400bc460e7c69f67c1173b56Jonathan von Schroeder\(\[ \FORALL e,e':Elem; L:List \\
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder \. insert(e, empty) = cons(e, empty) \\
61d26ef772466529400bc460e7c69f67c1173b56Jonathan von Schroeder \. insert(e, cons(e',L)) = \[ cons(e', insert(e,L)) \WHEN e' < e\\
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder \ELSE cons(e, cons(e',L)) \] \\
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\]\)
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\I\WITHIN
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\begin{ITEMS}[\OP]
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\I\OP \( order : List \TOTAL List \)
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\end{ITEMS}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\(\[ \FORALL e:Elem; L:List \\
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder \. order(empty) = empty \\
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder \. order(cons(e,L)) = insert(e, order(L)) \]\)
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\end{ITEMS}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\I\END
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\end{BIGEXAMPLE}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederBoth specifications are related. To see this, we first inspect
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroedertheir signatures. This is possible with:
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\begin{quote}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\texttt{hets -g Sorting.casl}
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\end{quote}
ca8f01a2b83fbb929aaf29629f71b10fd867956aJonathan von Schroederassuming that \texttt{Sorting.casl} contains the above specifications.
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder\Hets now displays a more complex development graph, see Fig.~\ref{fig:dg1}.
93e4ae9221332f59e762fd04392096af1511f6b8Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\begin{figure}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\begin{center}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\includegraphics[scale=0.7]{dg-order-1}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\end{center}
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\caption{Development graph for the two sorting specifications.\label{fig:dg1}}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\end{figure}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederIn the above-mentioned development graph, we have two types of nodes.
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederThe named ones correspond to named specifications, but there
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederare also unnamed nodes corresponding to anonymous basic
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederspecifications like the declaration of the $insert$ operation in
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\NAMEREF{List\_Order} above. Basically, there is an
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederunnamed node for each structured specification that is not named.
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederAgain, the black arrows denote an ordinary import of specifications
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder(corresponding to the extensions and unions in the
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederspecifications), while the blue arrows denote hiding (corresponding to
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederthe local specification).
8c4e6fae99499cb457b3b38bf248c30ce2f95921Jonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederBy clicking on the nodes, one can inspect their signatures.
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederIn this way, we can see that both \NAMEREF{List\_Order\_Sorted} and
8c4e6fae99499cb457b3b38bf248c30ce2f95921Jonathan von Schroeder\NAMEREF{List\_Order} have the same signature. Hence, it
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroederis legal to add a view:
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\begin{EXAMPLE}%[\SLIDESMALL]
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\I\VIEW \NAMEDEFN{v2}[\NAMEREF{Total\_Order}] ~:~ \NAMEREF{List\_Order\_Sorted}[\NAMEREF{Total\_Order}] \TO
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\NAMEREF{List\_Order}[\NAMEREF{Total\_Order}]
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\I\END
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\end{EXAMPLE}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederWe have already added this view to \texttt{Sorting.casl}.
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederThe corresponding
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederproof obligation between \NAMEREF{List\_Order\_Sorted} and
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\NAMEREF{List\_Order} is displayed in Fig.~\ref{fig:dg1}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder as a red arrow.
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von SchroederHere is a summary of the types of nodes and links occurring in
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederdevelopment graphs:
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\begin{description}
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\item[Named nodes] correspond to a named specification.
8c4e6fae99499cb457b3b38bf248c30ce2f95921Jonathan von Schroeder\item[Unnamed nodes] correspond to an anonymous specification.
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\item[Elliptic nodes] correspond to a specification in the current library.
8c4e6fae99499cb457b3b38bf248c30ce2f95921Jonathan von Schroeder\item[Rectangular nodes] are external nodes corresponding to a specification
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder downloaded from another library.
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\item[Red nodes] have open proof obligations.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\item[Yellow nodes] have an open conservativity proof obligations.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\item[Green nodes] have all proof obligations resolved.
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\item[Black links] correspond to reference to other specifications (definition
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder links in the sense of \cite[IV:4]{CASL/RefManual}).
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\item[Red links] correspond to open proof obligations (theorem links).
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\item[Green links] correspond to proven theorem links.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\item[Yellow links] correspond to proven theorem links with open
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder conservativity or to open hiding theorem links.
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\item[Blue links] correspond to hiding, free, or cofree definition links.
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroeder\item[Violett links] correspond to a mixture of links becoming visible after
ca8f01a2b83fbb929aaf29629f71b10fd867956aJonathan von Schroeder ``expand'' or ``Show unnamed nodes with open proofs''.
9a527ab7e7c0247ab32162f00c9ec630eff38a88Jonathan von Schroeder\item[Solid links] correspond to global (definition or theorem)
6df4343f46cc159371dfa671c5943354480f4e1cJonathan von Schroederlinks in the sense of \cite[IV:4]{CASL/RefManual}.
\item[Dashed links] correspond to local (theorem) links in the sense of
\cite[IV:4]{CASL/RefManual}. These are usually created after
``Global-Decomposition'' or only be visible after ``Show newly added proven
edges''.
\item[Single line links] have homogeneous signature morphisms (staying within
one and the same logic).
\item[Double line links] have heterogeneous signature morphisms (moving
between logics).
\end{description}
We now explain the menus of the development graph window.
Most of the pull-down menus of the window are uDraw(Graph)-specific
layout menus;
their function can be looked up in the uDraw(Graph) documentation\footnote{see
\url{http://www.informatik.uni-bremen.de/uDrawGraph/en/service/uDG31\_doc/}.}.
The exception is the Edit menu. Moreover, the nodes and links
of the graph have attached pop-up menus, which appear when
clicking with the right mouse button.
\begin{description}
\item[Edit] This menu has the following submenus:
\begin{description}
\item[Undo] Undo the last development graph proof step (see under Proofs)
\item[Redo] Restore the last undone development graph proof step (see
under Proofs)
\item[Hide/show names/nodes/edges]
The ``Hide/show names/nodes/edges'' menu is a toggle:
you can switch on or off the display of node names, unnamed nodes or
proven theorem links.
With the ``Hide/show internal node names'' option, the nodes that
are initially unnamed get derived names.
With the ``Hide/show unnamed nodes without open proofs'' option, it is possible
to reveal the unnamed nodes which do not have open proof goals.
Initially, the complexity of the graph is reduced by hiding all these nodes;
only nodes corresponding to named specifications are displayed.
Paths between named nodes going through unnamed nodes
are displayed as edges; these paths are then expanded when showing the
unnamed nodes.
When applying the development graph calculus rules, theorem links that have
been proven are removed from the graph. With the ``Hide/Show newly added
proven edges'' option, it is possible to re-display these links; they are marked
as proven in the link info (see \emph{Pop-up menu for links}, below).
\item[Focus node]
This menu is particularly useful when navigating in a large development graph,
which does not fit on a single screen. The list of all nodes is displayed:
the nodes are identified by the internal node number and the internal node name.
Once a node is selected, the view centers on it.
\item[Select Linktypes]
This menu allows to select the type of links that are displayed in the
development graph. A selection window appears, where links are grouped into
three categories: definition links, proven theorem links and unproven
theorem links. It is possible to select/deselect all links or to invert the
current selection.
\item[Consistency checker]
Checks whether the theories of the nodes of the graph are consistent
i.e. have a model. The model finders currently interfaced are
Isabelle-refute, darwin and E-KRHyper, with best support for darwin.
\item[Proofs] This menu allows to apply some of the deduction rules
for development graphs, see Sect. IV:4.4 of the \CASL Reference
Manual \cite{CASL/RefManual} or one of
\cite{Habil,MossakowskiEtAl05,MossakowskiEtAl07b}. While support for
local and global (definition or theorem) links is stable, support
for hiding links and checking conservativity is still experimental.
In most cases, it is advisable to use ``Auto-DG-Prover'', which
automatically applies the rules in the correct order. As a result,
the open theorem links (marked in red) will be reduced to local
proof goals, that is, they become green, and instead, some target nodes
may get red, indicating open local proof goals.
Besides the deduction rules, the menu contains entries for computing
a colimit approximation for the development graph and for
computing normal forms of all nodes (needed when dealing with hiding).
Also, a \CASL-specific normalisation of free links has been
implemented.
\item[Dump Development Graph] This option is available only for
debugging purposes; it outputs a textual representation
of the development graph.
\item[Show Library Graph] This menu displays the library graph, in a separate
window, if the library graph window has been closed after \Hets has been
called.
\item[Save Graph for uDrawGraph] Saves the development graph in a .udg file
which can be later read by uDrawGraph.
\item[Save proof-script] This menu saves the proof rules that have been applied
to the current development graph in a .hpf file which can be later read by
\Hets and thus the action performed on the graph are saved.
\end{description}
\item[Pop-up menu for nodes]
Here, the number of submenus depends on the type of the node:
\begin{description}
\item[Show node info] Shows the local informations of the node: the internal
node name and node number, the xpath that denotes the location of the node
within an XML representation, information about consistency of the node,
origin of the node and the local theory i.e. axioms declared locally.
\item[Show theory] Shows the theory of the node (including axioms
imported from other nodes). Notice that axioms imported via hiding links
are not part of the theory; they can be made visible only by re-adding
the hidden symbols, using the normal form of the node, by calling
\emph{Proofs/Compute Normal Form}. For such nodes, a warning is displayed.
\item[Translate theory] Translates the theory of a node to another logic.
A menu with the possible translation paths will be displayed.
\item[Taxonomy graphs] (Only available for some logics) Shows the subsort graph
of the signature of the node.
\item[Show proof status] Show open and proven local proof goals.
\item[Prove] Try to prove the local proof goals. See Section~\ref{sec:Proofs}
for details.
\item[Prove VSE structured] Allows to send a development graph below the
current node to the interactive \texttt{hetsvse} prover if that binary is
available, see \ref{subsec:VSE}.
\item[Disprove] Negates selected goals and tries to disprove them using
consistency checkers. Other goals will be treated like axioms if ``Include
Theorems'' is selected. (If a theory is consistent with a negated goal, the
goal is disproven.)
\item[Add sentence] This menu allows to add a sentence on the fly. The
(possibly named) sentence will be parsed and analysed using the underlying logic.
\item[Check consistency] Simply calls the global ``Consistency checker'' menu
for the current node, see \ref{sec:CC}.
\item[Check conservativity] Checks conservativity of the inclusion
morphism from the empty theory to the theory of the node (see
{\bf Check conervativity} for edges).
\end{description}
For the nodes which are references to specifications from an external library,
the pop-up menu options are reduced to {\bf Show node info, Show theory,
Show proof status} and {\bf Prove} and moroever, the option {\bf Show
referenced library} is added: on selection, it displays in a new window
the development graph of the external library from which the specification has
been downloaded.
\item[Pop-up menu for links]
Again, the number of submenus depends on the type of the link:
\begin{description}
\item[Show info] Shows informations about the edge: internal number and
internal nodes it links, the link type and origin and the
signature morphism of the link. The latter consists
of two components: a logic translation and a signature morphism in the
target logic of the logic translation.
In the (most frequent) case
of an intra-logic signature morphism, the logic translation component is
just the identity.
\item[Check conservativity] (Experimental) Check whether the
theory of the target node of the link
is a conservative extension of the theory of the source node.
\item[Expand]This menu is available only for paths going through unnamed
nodes which are not displayed and it expands the path to the links forming it.
\end{description}
\end{description}
Besides development graphs there are library graph windows displaying the
library hierarchy. The Edit menu has the following submenus:
\begin{description}
\item[Edit] This menu for library graphs has the following submenus:
\begin{description}
\item[Reload Library] Reloads all \HetCASL sources in order to avoid closing
and restarting the application after sources have changed. However, all
previous proof steps will be lost, therefore you have to confirm this
action. (A change management tool to keep proofs is in preparation.)
\item[Experimental reload changed Library] This button is supposed to
interface our change management tool (in order to preserve proof
information) but does not work yet.
\item[Translate Library] Translates a library along a comorphism to be chosen.
This only works for a homogeneous library hierarchy. A finer grained
alternative is to use ``Translate theory'' for individual nodes. The
original state and proof steps will be lost, therefore you have to confirm
this action.
\item[Show Logic Graph] Shows the graph of logics and logic comorphisms
currently supported by \Hets. The Edit menu of a logic graph window has the
following submenu:
\begin{description}
\item[Show detailed logic graph] Shows the important sublogics and comorphims
between them, i.e. translation (blue links) and inclusion (black links).
\end{description}
\end{description}
\end{description}
\section{Reading, Writing and Formatting}
\Hets provides several options controlling the types of files
that are read and written.
\begin{description}
\item[\texttt{-i ITYPE}, \texttt{--input-type=ITYPE}] Specify \texttt{ITYPE}
as explicit type of the input file. By default \texttt{env}, \texttt{casl},
or \texttt{het} extensions are tried in this order. An \texttt{env} file
contains a shared ATerm of a development graph, whereas \texttt{casl} or
\texttt{het} files contain plain \HetCASL text. An \texttt{env} file will
always be read if it exists and is consistent (aka newer) than the
corresponding \HetCASL file.
\texttt{exp} files contain a development graph in a new experimental omdoc
format. \texttt{prf} files contain additional development steps (as shared
ATerms) to be applied on top of an underlying development graph created from
a corresponding \texttt{env}, \texttt{casl}, or \texttt{het}
file. \texttt{hpf} files are plain text files representing heterogeneous
proof scripts. The contents of a \texttt{hpf} file must be valid input for
\Hets in interactive mode. (\texttt{gen\_trm} formats are currently not
supported.)
The possible input types are:
\begin{verbatim}
casl
| het
| owl
| hs
| exp
| maude
| elf
| hol
| prf
| omdoc
| hpf
| clf
| clif
| xml
| [tree.]gen_trm[.baf]
\end{verbatim}
\item[\texttt{-O DIR}, \texttt{--output-dir=DIR}]
Specify \texttt{DIR} as destination directory for output files.
\item[\texttt{-o OTYPES}, \texttt{--output-types=OTYPES}]
\texttt{OTYPES} is a comma separated list of output types:
\begin{verbatim}
prf
| env
| omn
| omdoc
| xml
| exp
| hs
| thy
| comptable.xml
| (sig|th)[.delta]
| pp.(het|tex|xml|html)
| graph.(exp.dot|dot)
| dfg[.c]
| tptp[.c]
\end{verbatim}
The \texttt{env} and \texttt{prf} formats are for subsequent reading,
avoiding the need to re-analyse downloaded libraries. \texttt{prf} files
can also be stored or loaded via the GUI's File menu.
The \texttt{omn} option \cite{books/sp/Kohlhase06} will produce OWL files in
Manchester Syntax for each specification of a structured OWL library.
The \texttt{omdoc} format \cite{books/sp/Kohlhase06} is an XML-based
markup format and data model for Open Mathematical Documents. It
serves as semantics-oriented representation format and ontology
language for mathematical knowledge. Currently, \CASL specifications
can be output in this format; support for further logics is planned.
The \texttt{xml} option will produce an XML-version of the development graph
for our change management broker.
The \texttt{exp} format is the new experimental omdoc format.
The \texttt{hs} format is used for Haskell modules. Executable \CASL or
\HasCASL specifications can be translated to Haskell.
When the \texttt{thy} format is selected, \Hets will try to translate
each specification in the library to \Isabelle, and write one \Isabelle
\texttt{.thy} file per specification.
When the \texttt{comptable.xml} format is selected, \Hets will extract
the composition and inverse table of a Tarskian relation algebra from
specification(s) (selected with the \texttt{-n} or \texttt{--spec}
option). It is assumed that the relation algebra is
generated by basic relations, and that the specification is written
in the \CASL logic. A sample specification of a relation
algebra can be found in the \Hets library \texttt{Calculi/Space/RCC8.het},
available from \texttt{www.cofi.info/Libraries}.
The output format is XML, the URL of the DTD is included in the
XML file.
The \texttt{sig} or \texttt{th} option will create \HetCASL signature or
theory files for each development graph node. (The \texttt{.delta} extension
is not supported, yet.)
The \texttt{pp} format is for pretty printing, either as plain text
(\texttt{het}), \LaTeX input (\texttt{tex}), HTML (\texttt{html}) or XML
(\texttt{xml}). For example, it is possible to generate a pretty printed
\LaTeX\ version of \texttt{Order.casl} by typing:
\begin{quote}
\texttt{hets -v2 -o pp.tex Order.casl}
\end{quote}
This will generate a file \texttt{Order.pp.tex}. It can be included
into \LaTeX\ documents, provided that the style \texttt{hetcasl.sty}
coming with the \Hets distribution (\texttt{LaTeX/hetcasl.sty}) is used.
The format \texttt{pp.xml} represents just a parsed library in XML.
Formats with \texttt{graph} are for future usage.
The \texttt{dfg} format is used by the \SPASS theorem prover
\cite{WeidenbachEtAl02}.
The \texttt{tptp} format (\url{http://www.tptp.org}) is a standard
format for first-order theorem provers.
Appending \texttt{.c} to \texttt{dfg} or \texttt{tptp} will create files for
consistency checks by SPASS or Darwin respectively.
For all output formats it is recommended to increase the verbosity to at least
level 2 (by using the option \texttt{-v2}) to get feedback which files are
actually written. (\texttt{-v2} also shows which files are read.)
\item[\texttt{-t TRANS}, \texttt{--translation=TRANS}]
chooses a translation option. \texttt{TRANS} is a colon-separated list
without blanks of one or more comorphism names (see Sect.~\ref{comorphisms})
\item[\texttt{-n SPECS}, \texttt{--spec=SPECS}]
chooses a list of named specifications for processing
\item[\texttt{-w NVIEWS}, \texttt{--view=NVIEWS}]
chooses a list of named views for processing
\item[\texttt{-R}, \texttt{--recursive}] output also imported libraries
\item[\texttt{-I}, \texttt{--interactive}] run \Hets in interactive mode
\item[\texttt{-X}, \texttt{--server}] run \Hets as web server (see
\ref{sec:Server})
\item[\texttt{-x}, \texttt{--xml}] use xml-pgip packets to communicate with
\Hets in interactive mode
\item[\texttt{-S PORT}, \texttt{--listen=PORT}] communicate
with \Hets in interactive mode vy listining to the port \texttt{PORT}
\item[\texttt{-c HOSTNAME:PORT}, \texttt{--connect=HOSTNAME:PORT}] communicate
with \Hets in interactive mode via connecting to the port on host
\texttt{HOSTNAME}
\item[\texttt{-d STRING}, \texttt{--dump=STRING}] produces implementation
dependent output for debugging purposes only
(i.e.\ \texttt{-d LogicGraph} lists the logics and comorphisms)
\end{description}
\section{Hets as a web server}\label{sec:Server}
Large parts of \Hets are now also available via a web interface. A running
server should be accessible on
\url{http://pollux.informatik.uni-bremen.de:8000/}. It allows to browse the
\Hets library, upload a file or just a \HetCASL specification. Development
graphs for well-formed specifications can be displayed in various formats
where the \texttt{svg} format is supposed to look like the graphs displayed by
uDrawGraph. Besides browsing, the web server is supposed to be accessed by
other programs using queries. The possible queries are described on
\url{http://trac.informatik.uni-bremen.de:8080/hets/wiki/RESTfulInterface}.
A development graph is addressed by the \emph{path} following the port number
and the slash of the URL, i.e.\
\url{http://localhost:8000/Basic/Numbers.casl}. Once a development has been
created it can be accessed via a (fairly unique) session id (consisting of
nine digits) that can be used as \emph{path}.
A \emph{path} may be followed by a query string that begins with a question
mark and consists of \emph{entries} (usually field-value pairs) separated by
ampersands. The queries control the information to be extracted from the
development graph given by the \emph{path} or they allow to perform commands
on the graph.
Usually, query string are made up of \texttt{field=value} pairs, but in some
cases the field name or the value may be omitted and in that case the equal
sign must be omitted, too.
For instance strings denoting formats, like \texttt{xml}, \texttt{svg},
\texttt{pdf}, etc., do not need to be preceded by \texttt{format=}. Some
formats, like \texttt{pdf}, only pretty print specification and
basically ignore the underlying development graph.
A special \emph{entry} is just \texttt{session} which only returns a fresh
session id for a development graph that is given by a file name, i.e.\
\url{http://localhost:8000/Basic/Numbers.casl?session}. These session ids must
be used to perform commands (of the development graph calculus) that
\emph{change} the underlying graph.
Given a graph, nodes and edges can be addressed by numbers via entries like
\texttt{node=0} or \texttt{edge=0}. (Nodes can also be given by name.) For
nodes, prover actions are possible by further
entries. \url{http://localhost:8000/123456789?prove=Nat\_\_E1\&prover=SPASS\&timeout=5}
would try to prove the goals of the node \texttt{Nat\_\_E1} using the prover
\texttt{SPASS} with a timeout of 5 seconds for the development graph that
happened to have the (unlikely) session id \texttt{123456789}. Individual
goals can be given via a \texttt{theorems} field and special translations by a
\texttt{translation} field. The available provers and translations can be
queried by \texttt{?node=0\&translations} and \texttt{?node=0\&provers} or
shorter by \texttt{?translations=0} and \texttt{?provers=0}, where instead of
the node number (here \texttt{0}) also a node name can be used.
\section{Miscellaneous Options}
\begin{description}
\item[\texttt{-v[Int]}, \texttt{--verbose[=Int]}]
Set the verbosity level according to \texttt{Int}. Default is 1.
\item[\texttt{-q}, \texttt{--quiet}]
Be quiet -- no diagnostic output at all. Overrides -v.
\item[\texttt{-V}, \texttt{--version}] Print version number and exit.
\item[\texttt{-h}, \texttt{--help}, \texttt{--usage}]
Print usage information and exit.
\item[\texttt{+RTS -KIntM -RTS}] Increase the stack size to
\texttt{Int} megabytes (needed in case of a stack overflow).
This must be the first option.
\item[\texttt{-l LOGIC}, \texttt{--logic=LOGIC}] chooses the initial logic, which is used for processing the specifications before the first \textbf{logic L}
declaration. The default is \CASL.
\item[\texttt{-e ENCODING}, \texttt{--encoding=ENCODING}] Read input files using latin1 or utf8 encoding. The default is still latin1.
\item[\texttt{--unlit}] Read literate input files.
\item[\texttt{--relative-positions}] Just uses the relative library name in positions of warning or errors.
\item[\texttt{-U FILE}, \texttt{--xupdate=FILE}] update a development graph according to special xml update information (still experimental).
\item[\texttt{-m FILE}, \texttt{--modelSparQ=FILE}] model check a qualitative calculus given in SparQ lisp notation \cite{SparQ06} against a \CASL specification
\end{description}
\section{Proofs with \Hets}\label{sec:Proofs}
The proof calculus for development graphs (Sect.~\ref{sec:DevGraph}) reduces
global theorem links to local proof goals. Local proof goals (indicated by red
nodes in the development graph) can be eventually discharged using a theorem
prover, i.e. by using the ``Prove'' menu of a red node.
The graphical user interface (GUI) for calling a prover is shown in
Fig. \ref{fig:proof_window} --- we call it ``Proof Management GUI''.
The top list on the left shows all goal names prefixed with the proof
status in square brackets. A proved goal is indicated by a `+', a `-'
indicates a disproved goal, a space denotes an open goal, and a
`$\times$' denotes an inconsistent specification (aka a fallen `+';
see below for details).
\begin{figure}
\centering
\includegraphics[width=\textwidth]{proofmanagement1}
\caption{Hets Goal and Prover Interface\label{fig:proof_window}}
\end{figure}
If you open this GUI when processing the goals of one node for the
first time, it will show all goals as open. Within this list you can
select those goals that should be inspected or proved. The GUI elements are the following:
\begin{itemize}
\item The button `Display' shows the selected goals in the ASCII syntax of
this theory's logic in a separate window.
\item By pressing the `Proof details' button a window is opened where for each
proved goal the used axioms, its proof script, and its proof are shown ---
the level of detail depends on the used theorem prover.
\item With the `Prove' button the actual prover is launched. This is described
in more detail in the paragraphs below.
\item The list `Pick Theorem Prover:' lets you choose one of the connected
provers (among them \Isabelle, MathServe Broker, \SPASS, Vampire, and
zChaff, described below). By pressing `Prove' the selected prover is
launched and the theory along with the selected goals is translated via the
shortest possible path of comorphisms into the provers logic.
\item The pop-up choice box below `Selected comorphism path:' lets you pick a
(composed) comorphism to be used for the chosen prover.
\item Since the amount and kind of sentences sent to an ATP system is a major
factor for the performance of the ATP system, it is possible to select in
the bottom lists the axioms and proven theorems that will comprise the
theory of the next proof attempt. Based on this selection the sublogic may
vary and also the available provers and comorphisms to provers. Former
theorems that are imported from other specifications are marked with the
prefix `(Th)'. Since former theorems do not add additional logical content,
they may be safely removed from the theory.
\item If you press the bottom-right `Close' button the window is closed and
the status of the goals' list is integrated into the development graph. If
all goals have been proved, the selected node turns from red into green.
\item All other buttons control selecting list entries
\end{itemize}
\subsection{Consistency Checker}
\label{sec:CC}
Since proofs are void if specifications are inconsistent, the consistency
should be checked (if possible for the given logic) by the ``Consistency
checker'' shown in Fig. \ref{fig:cons_window}. This GUI is invoked from
the `Edit' menu as it operates on all nodes.
The list on the left shows all node names prefixed with a consistency status
in square brackets that is initially empty. A consistent node is indicated by
a `+', a `-' indicates an inconsistent node, a `t' denotes a timeout of the last
checking attempt.
\begin{figure}
\centering
\includegraphics[width=\textwidth]{ConsistencyChecker}
\caption{Hets Consistency Checker Interface\label{fig:cons_window}}
\end{figure}
For some selection of nodes (of a common logic) a model finder should be
selectable from the `Pick Model finder:' list. Currently only for ``darwin''
some \CASL models can be re-constructed. When pressing `Check', possibly after
`Select comorphism path:', all selected nodes will be checked, spending at
most the number of seconds given under `Timeout:' on each node. Pressing
`Stop' allows to terminate this process if too many nodes have been chosen.
Either by `View results' or automatically the `Results of consistency check'
(Fig. \ref{fig:cons_res}) will pop up and allow you to inspect the models for
nodes, if they could be constructed.
\begin{figure}
\centering
\includegraphics[width=\textwidth]{ConsCheckResults}
\caption{Consistency Checker Results\label{fig:cons_res}}
\end{figure}
\subsection[Automated Theorem Proving Systems]
{Automated Theorem Proving Systems\\(Logic SoftFOL)}
\label{sec:ATP}
\begin{figure}
\centering
\includegraphics[width=\textwidth]{spassGUI1}
\caption{Interface of the \SPASS prover\label{fig:SPASS_GUI}}
\end{figure}
All ATPs integrated into \Hets share the same GUI, with only a slight
modification for the MathServe Broker: the input field for extra options is
inactive. Figure~\ref{fig:SPASS_GUI} shows the instantiation for \SPASS, where
in the top right part of the window the batch mode can be controlled. The
left side shows the list of goals (with status indicators). If goals are
timed out (indicated by `t') it may help to activate the check box `Include
preceeding proven theorems in next proof attempt' and pressing `Prove all'
again.
On the bottom right the result of the last proof
attempt is displayed. The `Status:' indicates `Open', `Proved', `Disproved',
`Open (Time is up!)', or `Proved (Theory inconsistent!)'. The list of `Used
Axioms:' is filled by \SPASS. The button `Show Details' shows the whole output
of the ATP system. The `Save' buttons allow you to save the input and
configuration of each proof for documentation. By `Close' the results for all
goals are transferred back to the Proof Management GUI.
The MathServe system \cite{ZimmerAutexier06} developed by J\"{u}rgen
Zimmer provides a unified interface to a range of different ATP
systems; the most important systems are listed in
Table~\ref{tab:MathServe}, along with their capabilities. These
capabilities are derived from the \emph{Specialist Problem Classes}
(SPCs) defined upon the basis of logical, language and syntactical
properties by Sutcliffe and Suttner \cite{SutcliffeEA:2001:EvalATP}.
Only two of the Web services provided by the MathServe system are used
by \Hets currently: Vampire and the brokering system. The ATP systems
are offered as Web Services using standardized protocols and formats
such as SOAP, HTTP and XML. Currently, the ATP system Vampire may be
accessed from \Hets via MathServe; the other systems are only reached
after brokering.
\begin{table}[t]
\centering
\begin{threeparttable}
\begin{tabular}{|l|c|p{7cm}|}\firsthline
ATP System & Version & Suitable Problem Classes\tnote{a}\\
\hhline{|=|=|=|}
DCTP & 10.21p & effectively propositional \\\hline
EP & 0.91 & effectively propositional; real first-order, no
equality; real first-order, equality\\\hline
Otter & 3.3 & real first-order, no equality\\\hline
\SPASS & 2.2 & effectively propositional; real first-order, no
equality; real first-order, equality\\\hline
Vampire & 8.0 & effectively propositional; pure equality, equality
clauses contain non-unit equality clauses; real first-order, no
equality, non-Horn\\\hline
Waldmeister & 704 & pure equality, equality clauses are unit
equality clauses\\\lasthline
\end{tabular}
%\renewcommand{\thempfootnote}{\arabic{mpfootnote}}
%\footnotetext%[\value{footnote}\stepcounter{footnote}]
\begin{tablenotes}\footnotesize
\item[a]
{The list of problem classes for each ATP system is not
exhaustive, but only the most appropriate problem classes are
named according to benchmark tests made with MathServe by
J\"urgen Zimmer.}
\end{tablenotes}
\end{threeparttable}
\caption{ATP systems provided as Web services by MathServe}
\vspace*{-4mm}
\label{tab:MathServe}
\end{table}
\subsubsection*{\SPASS}
The ATP system \SPASS \cite{WeidenbachEtAl02} is a resolution-based
prover for first-order logic with equality. Furthermore, it provides a soft
typing mechanism with subsorting that treats sorts as unary
predicates. The ATP \SPASS should be installed locally and available
through your \verb,$PATH, environment variable.
\subsubsection*{Vampire}
% http://www.cs.miami.edu/~tptp/CASC/J3/SystemDescriptions.html#Vampire---8.0
The ATP system Vampire is the winner of the last 5 CADE ATP System
Competitions (CASC) (2002--2006) in the devisions \verb,FOF, and
\verb,CNF,. It is a resolution based ATP system supporting the calculi
of ordered binary resolution and superposition for handling equality.
See
\url{http://www.cs.miami.edu/~tptp/CASC/J3/SystemDescriptions.html#Vampire---8.0}
for detailed information. The connection to Vampire is achieved by
using an Web service of the MathServe system.
\subsubsection*{MathServe Broker}
% The classes ``effectively propositional'' and ``real first-order''
% apply to first-order problems that are distinguished by the finiteness
% of the Herbrand universe; an effectively propositional problem has
% only constants (generated by finitely many terms) whereas a real
% first-order problem contains true functions with an infinite Herbrand
% universe.
The brokering service chooses the most appropriate ATP system
upon a classification based on the SPCs, and on a training with the
library Thousands of Problems for Theorem Provers (TPTP)
\cite{ZimmerAutexier06}. The TPTP format
has been introduced by Sutcliffe and Suttner for the annual
competition CASC \cite{Sutcliffe:2006:CASC} and provides a unified
syntax for untyped FOL with equality, but without any symbol
declaration.
\subsection{Isabelle}
\Isabelle \cite{NipPauWen02} is an interactive theorem prover, which is
more powerful than ATP systems, but also requires more user interaction.
\Isabelle
has a very small core guaranteeing correctness, and its provers,
like the simplifier or the tableaux prover, are built on top of this
core. Furthermore, there is over fifteen years of experience with it,
and several mathematical textbooks have been partially
\index{formal!verification}%
verified with
\Isabelle.
\Isabelle is a tactic based theorem prover implemented in standard ML.
The main \Isabelle logic (called Pure) is some weak intuitionistic type
theory with polymorphism. The logic Pure is used to represent a
variety of logics within \Isabelle; one of them being \HOL (higher-order
logic). For example, logical implication in Pure (written
\texttt{==>}, also called meta-implication), is different from logical
implication in \HOL (written \texttt{-->}, also called object
implication).
It is essential to be aware of the fact that the \Isabelle/\HOL logic
is different from the logics that are encoded into it via comorphisms.
Therefore, the formulas appearing in subgoals of proofs with \Isabelle
will not conform to the syntax of the original input logic. They may
even use features of \Isabelle/\HOL such as higher-order functions
that are not present in an input logic like \CASL.
\Isabelle is started with ProofGeneral
\cite{DBLP:conf/tacas/Aspinall00,url:ProofGeneral} in a separate Emacs
\cite{url:Emacs,url:XEmacs}.
The \Isabelle theory file conforms to the Isabelle/Isar syntax
\cite{NipPauWen02}. It starts with the theory (encoded along the selected
comorphism), followed by a list of theorems. Initially, all the
theorems have trivial proofs, using the `oops` command. However, if
you have saved earlier proof attempts, \Hets will patch these into
the generated \Isabelle theory file, ensuring that your previous work
is not lost. (But note that this patching can only be successful
if you do not rename specifications, or change their structure.) You
now can replace the 'oops' commands with real \Isabelle proofs, and
use Proof General to step through the proofs. You finish your session
by saving your file (using the Emacs file menu, or the Ctrl-x Ctrl-s
key sequence), and by exiting Emacs (Ctrl-x Ctrl-c).
\subsection{VSE}
\label{subsec:VSE}
The specification environment Verification Support Environment
(VSE) \cite{VSE00}, developed at
DFKI Saarbr\"ucken, provides an industrial-strength methodology
for specification and verification of imperative programs.
VSE provides an interactive prover, which supports a Gentzen style
natural deduction calculus for dynamic logic.
This logic is an extension of first-order logic with two additional
kinds of formulas
that allow for reasoning about programs. One of them is the
box formula $[\alpha]\varphi$, where $\alpha$ is a program written in an imperative
language, and $\varphi$ is a dynamic logic formula.
The meaning of $[\alpha]\varphi$ can be roughly put as
``After every terminating execution of $\alpha$, $\varphi$ holds.''.
The other new kind
of formulas is the diamond formula $\langle\alpha\rangle\varphi$, which is the dual counter part
of a box formula. The meaning of $\langle\alpha\rangle\varphi$
can be described as ``After some terminating execution of $\alpha$,
$\varphi$ holds''.
A VSE specification or something that can be translated to VSE (currently only
\CASL) can be sent to the VSE prover via the node menu of development graph
nodes in two different ways. You can either select VSE from the theorem prover
choice box shown after ``Prove'' or you can select ``Prove VSE Structured''.
The first choice will call VSE with a single flattened theory whereas a
structured call will translate all nodes with ingoing links to the current one
individually.
VSE pops up with a ``project'' window. In this window you can choose ``Work
on'' and ``specification''. Besides the builtin specification ``boolean''
there is at least one specification from your development graph that you
can select for proving. For a structured choice you'll have specifications
for all underlying nodes that you should work on in a bottom up fashion.
The state created by VSE will be stored in a \texttt{.tar} file (within the
current directory) that preserves proofs for replay later on as long as you
don't change library or node names.
\subsection{zChaff}
zChaff is a solver for satisfiabily problems of boolean formulas
(\normalTEXTSC{S}{AT})
in CNF. It is connected as a prover for propositional logic to \Hets. The prover
\SPASS is used to transform arbitrary boolean formulas to CNF. zChaff
implements the \normalTEXTSC{C}{HAFF}\xspace algorithm. We are
using the property, that a conjecture under the assumption of a set of axioms is
true, if the variables of axioms together with the negation of the conjecture
have no satisfying assignment, to prove theorems with zChaff. That is why you see
the result \normalTEXTSC{U}{NSAT}\xspace in the proof details, if a theorem has been proved
to be true. zChaff uses the same ATP GUI as the provers for SoftFOL (ref. to section
\ref{sec:ATP}). zChaff does not accept any options apart from the time-limit. The
current integration of zChaff into \Hets has been tested with zChaff 2004.11.15.
\subsection{Reduce}
This is a connection to the computer algebra system from
\url{http://www.reduce-algebra.com/}. Installation is possible as follows:
\begin{verbatim}
svn co https://reduce-algebra.svn.sourceforge.net/svnroot/reduce-algebra
cd reduce-algebra/trunk
./configure --with-csl
make
\end{verbatim}
The binary \texttt{redcsl} will be searched in the \texttt{PATH} or is taken
from the \texttt{HETS\_REDUCE} environment variable.
\subsection{Pellet}
Pellet is a popular open-source \DL-reasoner for \SROIQ, which is the logic
underlying OWL 2.0, written in Java. A Java Runtime Environment (in version $> 1.5$)
is needed to run Pellet. For the integration into \Hets the environment variable
\verb+PELLET_PATH+ has to be set to the root-directory of the Pellet installation.
Pellet uses the same ATP GUI as the provers for SoftFOL (ref. to section
\ref{sec:ATP}).
\subsection{Fact++}
Fact++ is a \DL-reasoner for \SROIQ, which is the logic underlying OWL 2.0, written in
C++. Fact++ is integrated into \Hets via the OWL-API, which is written in Java.
A Java Runtime Environment (in version $>= 1.5$) has to be installed. To use Fact++,
the environment variable \verb+HETS_OWL_TOOLS+ has to be set to the directory
containing the files
\begin{verbatim}
OWLFact.jar
OWLFactProver.jar
lib/FaCTpp-OWLAPI-3.2-v1.5.2.jar
lib/owl2api-bin.jar
\end{verbatim}
as well as
\begin{verbatim}
lib/native/i686/libFaCTPlusPlusJNI.so
\end{verbatim}
on a 32bits-Linux-system or
\begin{verbatim}
lib/native/x86_64/libFaCTPlusPlusJNI.so
\end{verbatim}
in a 64bits-Linux-system. Fact++ does not support options.
Fact++ uses the same ATP GUI as the provers for SoftFOL (ref. to section
\ref{sec:ATP}).
\subsection{E-KRHyper}
E-KRHyper\footnote{\url{http://www.uni-koblenz.de/~bpelzer/ekrhyper/}}
is an extension of
KRHyper\footnote{\url{http://www.uni-koblenz.de/~wernhard/krhyper/}} by
handling of equality. E-KRHyper is an automatic first order theorem
prover and model finder based on the Hyper Tableaux Calculus\cite{Baumgartner:1996}.
E-KRHyper is optimized for being integrated into other systems. In the current
implementation we use a default tactics script, that can be influenced by the user.
The options of E-KRHyper are written in a Prolog-like syntax as in
\begin{verbatim}
#(set_parameter(timeout_termination_method,0)).
\end{verbatim}
the ``.'' at the end of each option is mandatory. To get an overview of
E-KRHyper's options, run the command
\begin{verbatim}
ekrh
\end{verbatim}
in a terminal. Then enter the command
\begin{verbatim}
#(help).
\end{verbatim}
at the prompt of E-KRHyper, to display its help information, which is basically
a long list of all available parameters. You can exit E-KRHyper by the command
\begin{verbatim}
#(exit).
\end{verbatim}
E-KRHyper uses the same ATP GUI as the other provers for SoftFOL (ref. to section
\ref{sec:ATP}).
\subsection{Darwin}
Darwin is an automatic first order prover and model finder implementing the Model
Evolution
Calculus\cite{Baumgartner:2003}. The integration of Darwin as a consistency checker
supports the display of models (if they can be constructed) in \CASL-syntax.
Eprover is needed to be in the system-path, if Darwin is used with \Hets, since
Darwin uses Eprover for clausification of first-order formulae.
Darwin supports a wide range of options, to get an overview of them run the command
\begin{verbatim}
darwin --help
\end{verbatim}
in a terminal.
Darwin uses the same ATP GUI as the other provers for SoftFOL (ref. to section
\ref{sec:ATP}).
\subsection{QuickCheck}
\subsection{minisat}
\subsection{Truth tables}
\subsection{CspCASLProver}
\section{Limits of Hets}
\Hets is still intensively under development. In particular, the
following points are still missing:
\begin{itemize}
\item There is no proof support for architectural specifications.
\item Distributed libraries are always downloaded from the local disk,
not from the Internet.
\item Version numbers of libraries are not considered properly.
\item The proof engine for development graphs provides only experimental
support for hiding links and for conservativity.
\end{itemize}
\section{Architecture of Hets}
The architecture of \Hets is shown in Fig.~\ref{fig:hets}.
How is a single logic implemented in the Heterogeneous Tool Set?
This is depicted in the left column of Fig.~\ref{fig:hets}.
\Hets provides an abstract interface for
\index{institution!independence}%
\index{independence, institution}%
institutions, so
that new logics can be integrated smoothly.
In order to do so, a parser,
a static checker and a prover for basic specifications in the logic have
to be provided.
\begin{figure}
%\figrule
\begin{center}
{\small
\begin{verbatim}
class Logic lid sign morphism sentence basic_spec symbol_map
| lid -> sign morphism sentence basic_spec symbol_map where
identity :: lid -> sign -> morphism
compose :: lid -> morphism -> morphism -> morphism
dom, codom :: lid -> morphism -> sign
parse_basic_spec :: lid -> String -> basic_spec
parse_symbol_map :: lid -> String -> symbol_map
parse_sentence :: lid -> String -> sentence
empty_signature :: lid -> sign
basic_analysis :: lid -> sign -> basic_spec -> (sign, [sentence])
stat_symbol_map :: lid -> sign -> symbol_map -> morphism
map_sentence :: lid -> morphism -> sentence -> sentence
provers ::
lid -> [(sign, [sentence]) -> [sentence] -> Proof_status]
cons_checkers :: lid -> [(sign, [sentence]) -> Proof_status]
class Comorphism cid
lid1 sign1 morphism1 sentence1 basic_spec1 symbol_map1
lid2 sign2 morphism2 sentence2 basic_spec2 symbol_map2
| cid -> lid1 lid2 where
sourceLogic :: cid -> lid1 targetLogic :: cid -> lid2
map_theory :: cid -> (sign1, [sentence1]) -> (sign2, [sentence2])
map_morphism :: cid -> morphism1 -> morphism2
\end{verbatim}
}
\end{center}
\caption{The basic ingredients of logics and logic comorphisms}
\label{fig:logic:all}
%\figrule
\end{figure}
Each logic is realized in the programming language Haskell
\cite{PeytonJones03} by a set of types and functions, see
Fig.~\ref{fig:logic:all}, where we present a simplified, stripped down
version, where e.g.\ error handling is ignored. For technical reasons
a logic is \emph{tagged} with a unique identifier type (\texttt{lid}),
which is a singleton type the only purpose of which is to determine
all other type components of the given logic. In Haskell jargon, the
interface is called a multiparameter type class with functional
dependencies \cite{TypeClasses}. The Haskell interface for logic
translations is realised similarly.
The logic-independent modules in \Hets can be found in the right half
of Fig.~\ref{fig:hets}. These modules comprise roughly one third of
\Hets' 100.000 lines of Haskell code.
The heterogeneous parser transforms a string
conforming to the syntax in Fig.~\ref{fig:lang}
to an abstract syntax tree, using the \texttt{Parsec} combinator parser
\cite{Parsec}. Logic and translation names are looked up in the logic
graph --- this is necessary to be able to choose the correct parser
for basic specifications. Indeed, the parser has a state that carries
the current logic, and which is updated if an explicit specification
of the logic is given, or if a logic translation is encountered (in
the latter case, the state is set to the target logic of the
translation). With this, it is possible to parse basic specifications
by just using the logic-specific parser of the current logic as
obtained from the state.
The static analysis is based on the static analysis of basic
specifications, and transforms an abstract syntax tree to a
development graph (cf.\ Sect.~\ref{sec:DevGraph} above). Starting with a
node corresponding to the empty theory, it successively extends (using
the static analysis of basic specifications) and/or translates (along
the intra- and inter-logic translations) the theory, while
simultaneously adding nodes and links to the development graph.
Heterogeneous proof management is done using heterogeneous
development graphs, as described in Sect.~\ref{sec:DevGraph}.
For local proof goals, logic-specific provers are invoked,
see Sect.~\ref{sec:Proofs}.
\Hets can store development graphs, including their proofs.
Therefore, \Hets uses the so-called
\index{ATerms}%
ATerm format \cite{BJKO00}, which is used as interchange format
for interfacing with other tools.
More details can be found in \cite{Habil,MossakowskiEtAl07b}
and in the overview of modules provided in the developers section
of the \Hets home page at \url{http://www.dfki.de/sks/hets}.
\begin{figure}
\begin{center}
\includegraphics[scale=0.4]{hets2007}
\end{center}
%\vspace{1em}
%\input{hets.tex}
\caption{Architecture of the heterogeneous tool set.
\label{fig:hets}}
\end{figure}
\bigskip
\Hets is mainly maintained by
Christian Maeder (Christian.Maeder@dfki.de) and Till Mossakowski
(Till.Mossakowski@dfki.de). The mailing list is
\begin{quote}
\url{hets-users@informatik.uni-bremen.de}
\end{quote}
the homepage is
\begin{quote}
\url{http://www.informatik.uni-bremen.de/mailman/listinfo/hets-users}.
\end{quote}
You need to subscribe to the list before you can send a mail.
But note that subscription is very easy!
If your favourite logic is missing in \Hets, please tell us
(hets-users@informatik.uni-bremen.de). We will take your feedback into account
when deciding which logics and proof tools to integrate next into \Hets. Help
with integration of more logics and proof tools into \Hets is also welcome.
\paragraph{Acknowledgement}
The heterogeneous tool set \Hets would not have possible
without cooperation with many people.
Besides the authors, the following people have been involved
in the implementation of \Hets:
Katja Abu-Dib,
Francisc Nicolae Bungiu,
Michael Chan,
Codru\c ta G\^ arlea,
Dominik Dietrich,
Elena Digor,
Carsten Fischer,
Jorina Freya Gerken,
Andy Gimblett,
Rainer Grabbe,
Sonja Gr\"{o}ning,
Markus Groß,
Klaus Hartke,
Daniel Hausmann,
Wiebke Herding,
Hendrik Iben,
Cui ``Ken'' Jian,
Heng Jiang,
Stef Joosten,
Anton Kirilov,
Tina Krausser,
Martin K\"{u}hl,
Eugen Kuksa,
Mingyi Liu,
Karl Luc,
Klaus L\"{u}ttich,
Maciek Makowski,
Felix Gabriel Mance,
Florian Mossakowski,
Immanuel Normann,
Sebastian Raible,
Liam O'Reilly,
Razvan Pascanu,
Daniel Pratsch,
Corneliu-Claudiu Prodescu,
Felix Reckers,
Adri\'{a}n Riesco,
Markus Roggenbach,
Pascal Schmidt,
Ewaryst Schulz,
Kristina Sojakova,
Igor Stassiy,
Tilman Thiry,
Paolo Torrini,
Jonathan von Schroeder,
Simon Ulbricht,
Ren\'{e} Wagner,
Jian Chun Wang,
Zicheng Wang, and
Thiemo Wiedemeyer.
\Hets has been built based on experiences with its
precursors,
\index{Cats@\Cats}%
\Cats and
\index{Maya@\MAYA}%
\MAYA.
The \CASL Tool Set (\Cats)
\cite{Mossakowski:2000:CST,Mossakowski:1998:SSA}
provides parsing and static analysis for \CASL.
It has been developed by the first author with help
of Mark van den Brand, Kolyang, Bartek Klin, Pascal Schmidt and
Frederic Voisin.
\MAYA \cite{Autexier:2002:IHD,AutexierEtal02} is a proof management
tool based on development graphs. \MAYA only supports development
graphs without hiding and without logic translations. \MAYA has been
developed by Serge Autexier and Dieter Hutter.
We also want to thank Agn\`es Arnould, Thibaud Brunet, Pascale LeGall,
Kathrin Hoffmann, Bruno Langenstein, Katiane Lopes,
%Klaus L\"uttich, Christian Maeder,
Stefan Merz, Maria Martins Moreira, Christophe
Ringeissen, Markus Roggenbach, Dmitri Schamschurko, Lutz Schr\"oder,
Konstantin Tchekine and Stefan W\"olfl
for giving feedback about \Cats, HOL-CASL and \Hets. Finally,
special thanks to Christoph L\"uth and George Russell
for help with connecting \Hets to their UniForM workbench.
\bibliographystyle{plain}
\bibliography{cofibib,cofi-ann,UM,hets,kl}
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "UserGuide"
%%% End: