doc-src/AxClass/axclass.tex
author wenzelm
Thu, 28 Sep 2000 14:47:42 +0200
changeset 10107 6715b2ce44d4
parent 8907 813fabceec00
child 10140 ba9297b71897
permissions -rw-r--r--
www.proofgeneral.org;
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}
8903
78d6e47469e4 new Isar version;
wenzelm
parents: 8890
diff changeset
     3
\usepackage{graphicx,../iman,../extra,../isar,../pdfsetup}
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
     4
\usepackage{generated/isabelle,generated/isabellesym}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
     5
8907
wenzelm
parents: 8903
diff changeset
     6
\newcommand{\TIMES}{\cdot}
wenzelm
parents: 8903
diff changeset
     7
\newcommand{\PLUS}{\oplus}
wenzelm
parents: 8903
diff changeset
     8
\newcommand{\isasymOtimes}{\emph{$\cdot$}}
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
     9
\newcommand{\isasymOplus}{\emph{$\oplus$}}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    10
\newcommand{\isasyminv}{\emph{${}^{-1}$}}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    11
\newcommand{\isasymunit}{\emph{$1$}}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    12
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    13
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    14
\newcommand{\secref}[1]{\S\ref{#1}}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    15
\newcommand{\figref}[1]{figure~\ref{#1}}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    16
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    17
\hyphenation{Isabelle}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    18
\hyphenation{Isar}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    19
\hyphenation{Haskell}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    20
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    21
\title{\includegraphics[scale=0.5]{isabelle_isar}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    22
  \\[4ex] Using Axiomatic Type Classes in Isabelle}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    23
\author{\emph{Markus Wenzel} \\ TU M\"unchen}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    24
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
\setcounter{secnumdepth}{2} \setcounter{tocdepth}{2}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    27
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    28
\pagestyle{headings}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    29
\sloppy
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    30
\binperiod     %%%treat . like a binary operator
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    31
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    32
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    33
\begin{document}
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
\underscoreoff
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
\maketitle 
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    38
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    39
\begin{abstract}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    40
  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
    41
  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
    42
  the programming language Haskell.  Its interpretation within the logic
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    43
  enables further application, though, apart from restricting polymorphism
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    44
  syntactically.  In particular, the concept of \emph{Axiomatic Type Classes}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    45
  provides a useful light-weight mechanism for hierarchically-structured
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    46
  abstract theories. Subsequently, we demonstrate typical uses of Isabelle's
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    47
  axiomatic type classes to model basic algebraic structures.
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    48
  
8907
wenzelm
parents: 8903
diff changeset
    49
  This document describes axiomatic type classes using Isabelle/Isar theories,
wenzelm
parents: 8903
diff changeset
    50
  with proofs expressed via Isar proof language elements.  The new theory
wenzelm
parents: 8903
diff changeset
    51
  format greatly simplifies the arrangement of the overall development, since
wenzelm
parents: 8903
diff changeset
    52
  definitions and proofs may be freely intermixed.  Users who prefer tactic
wenzelm
parents: 8903
diff changeset
    53
  scripts over structured proofs do not need to fall back on separate ML
wenzelm
parents: 8903
diff changeset
    54
  scripts, though, but may refer to Isar's tactic emulation commands.
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    55
\end{abstract}
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    56
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
\pagenumbering{roman} \tableofcontents \clearfirst
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
\include{body}
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    61
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    62
%FIXME
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    63
\nocite{nipkow-types93}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    64
\nocite{nipkow-sorts93}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    65
\nocite{Wenzel:1997:TPHOL}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    66
\nocite{paulson-isa-book}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    67
\nocite{isabelle-isar-ref}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    68
\nocite{Wenzel:1999:TPHOL}
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    69
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    70
\begingroup
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    71
  \bibliographystyle{plain} \small\raggedright\frenchspacing
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    72
  \bibliography{../manual}
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    73
\endgroup
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    74
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    75
\end{document}
3167
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    76
4e1eae442821 Tutorial on Axiomatic Type Classes;
wenzelm
parents:
diff changeset
    77
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    78
%%% Local Variables: 
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    79
%%% mode: latex
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    80
%%% TeX-master: t
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    81
%%% End: 
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents: 6623
diff changeset
    82
% LocalWords:  Isabelle FIXME