doc-src/AxClass/axclass.tex
author chaieb
Wed, 19 May 2004 11:23:59 +0200
changeset 14758 af3b71a46a1c
parent 12343 b05331869f79
child 17133 096792bdc58e
permissions -rw-r--r--
A new implementation for presburger arithmetic following the one suggested in technical report Chaieb Amine and Tobias Nipkow. It is generic an smaller. the tactic has also changed and allows the abstaction over fuction occurences whose type is nat or int.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
     1
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
     2
\documentclass[12pt,a4paper,fleqn]{report}
10140
ba9297b71897 major cleanup -- improved typesetting;
wenzelm
parents: 8907
diff changeset
     3
\usepackage{graphicx,../iman,../extra,../isar}
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
     4
\usepackage{generated/isabelle,generated/isabellesym}
10140
ba9297b71897 major cleanup -- improved typesetting;
wenzelm
parents: 8907
diff changeset
     5
\usepackage{../pdfsetup}  % last one!
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
     6
10140
ba9297b71897 major cleanup -- improved typesetting;
wenzelm
parents: 8907
diff changeset
     7
\isabellestyle{it}
10222
027a6f43e408 fixed \isasyminv;
wenzelm
parents: 10204
diff changeset
     8
\newcommand{\isasyminv}{\isamath{{}^{-1}}}
12343
b05331869f79 \renewcommand{\isasymzero}, \renewcommand{\isasymone};
wenzelm
parents: 10222
diff changeset
     9
\renewcommand{\isasymzero}{\isamath{0}}
b05331869f79 \renewcommand{\isasymzero}, \renewcommand{\isasymone};
wenzelm
parents: 10222
diff changeset
    10
\renewcommand{\isasymone}{\isamath{1}}
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    11
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    12
\newcommand{\secref}[1]{\S\ref{#1}}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    13
\newcommand{\figref}[1]{figure~\ref{#1}}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    14
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    15
\hyphenation{Isabelle}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    16
\hyphenation{Isar}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    17
\hyphenation{Haskell}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    18
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    19
\title{\includegraphics[scale=0.5]{isabelle_isar}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    20
  \\[4ex] Using Axiomatic Type Classes in Isabelle}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    21
\author{\emph{Markus Wenzel} \\ TU M\"unchen}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    22
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    23
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    24
\setcounter{secnumdepth}{2} \setcounter{tocdepth}{2}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    25
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    26
\pagestyle{headings}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    27
\sloppy
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    28
\binperiod     %%%treat . like a binary operator
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    29
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    30
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    31
\begin{document}
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    32
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    33
\underscoreoff
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    34
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    35
\maketitle 
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    36
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    37
\begin{abstract}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    38
  Isabelle offers order-sorted type classes on top of the simple types of
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    39
  plain Higher-Order Logic.  The resulting type system is similar to that of
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    40
  the programming language Haskell.  Its interpretation within the logic
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    41
  enables further application, though, apart from restricting polymorphism
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    42
  syntactically.  In particular, the concept of \emph{Axiomatic Type Classes}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    43
  provides a useful light-weight mechanism for hierarchically-structured
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    44
  abstract theories. Subsequently, we demonstrate typical uses of Isabelle's
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    45
  axiomatic type classes to model basic algebraic structures.
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    46
  
8907
wenzelm
parents: 8903
diff changeset
    47
  This document describes axiomatic type classes using Isabelle/Isar theories,
wenzelm
parents: 8903
diff changeset
    48
  with proofs expressed via Isar proof language elements.  The new theory
wenzelm
parents: 8903
diff changeset
    49
  format greatly simplifies the arrangement of the overall development, since
wenzelm
parents: 8903
diff changeset
    50
  definitions and proofs may be freely intermixed.  Users who prefer tactic
wenzelm
parents: 8903
diff changeset
    51
  scripts over structured proofs do not need to fall back on separate ML
wenzelm
parents: 8903
diff changeset
    52
  scripts, though, but may refer to Isar's tactic emulation commands.
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    53
\end{abstract}
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    54
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    55
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    56
\pagenumbering{roman} \tableofcontents \clearfirst
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    57
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    58
\include{body}
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    59
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    60
%FIXME
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    61
\nocite{nipkow-types93}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    62
\nocite{nipkow-sorts93}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    63
\nocite{Wenzel:1997:TPHOL}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    64
\nocite{paulson-isa-book}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    65
\nocite{isabelle-isar-ref}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    66
\nocite{Wenzel:1999:TPHOL}
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    67
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    68
\begingroup
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    69
  \bibliographystyle{plain} \small\raggedright\frenchspacing
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    70
  \bibliography{../manual}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    71
\endgroup
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    72
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    73
\end{document}
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    74
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    75
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    76
%%% Local Variables: 
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    77
%%% mode: latex
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    78
%%% TeX-master: t
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    79
%%% End: 
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    80
% LocalWords:  Isabelle FIXME