doc-src/AxClass/axclass.tex
author wenzelm
Thu, 12 Oct 2000 17:39:47 +0200
changeset 10204 756394e405a0
parent 10140 ba9297b71897
child 10222 027a6f43e408
permissions -rw-r--r--
tuned syms;
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}
10204
756394e405a0 tuned syms;
wenzelm
parents: 10140
diff changeset
     8
\newcommand{\isasyminv}{\isamath{{}^{-1}}
756394e405a0 tuned syms;
wenzelm
parents: 10140
diff changeset
     9
\newcommand{\isasymunit}{\isamath{1}}
756394e405a0 tuned syms;
wenzelm
parents: 10140
diff changeset
    10
\newcommand{\isasymzero}{\isamath{0}}
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