src/HOL/Data_Structures/document/root.tex
author wenzelm
Tue, 03 Dec 2019 16:40:04 +0100
changeset 71222 2bc39c80a95d
parent 67966 f13796496e82
child 71352 41f3ca717da5
permissions -rw-r--r--
clarified export of consts: recursion is accessible via spec_rules;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
61203
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
     1
\documentclass[11pt,a4paper]{article}
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
     2
\usepackage{isabelle,isabellesym}
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
     3
\usepackage{latexsym}
64318
1e92b5c35615 Repaired LaTeX in HOL-Data_Structures
eberlm <eberlm@in.tum.de>
parents: 62706
diff changeset
     4
\usepackage{amssymb}
1e92b5c35615 Repaired LaTeX in HOL-Data_Structures
eberlm <eberlm@in.tum.de>
parents: 62706
diff changeset
     5
\usepackage{amsmath}
61203
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
     6
% this should be the last package used
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
     7
\usepackage{pdfsetup}
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
     8
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
     9
% snip
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    10
\newcommand{\repeatisanl}[1]{\ifnum#1=0\else\isanewline\repeatisanl{\numexpr#1-1}\fi}
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    11
\newcommand{\snip}[4]{\repeatisanl#2#4\repeatisanl#3}
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    12
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    13
\urlstyle{rm}
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    14
\isabellestyle{it}
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    15
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    16
\renewcommand{\isacharunderscore}{\_}
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    17
\renewcommand{\isacharunderscorekeyword}{\_}
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    18
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    19
% for uniform font size
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    20
\renewcommand{\isastyle}{\isastyleminor}
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    21
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    22
\begin{document}
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    23
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    24
\title{Functional Data Structures}
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    25
\author{Tobias Nipkow}
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    26
\maketitle
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    27
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    28
\begin{abstract}
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    29
A collection of verified functional data structures. The emphasis is on
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    30
conciseness of algorithms and succinctness of proofs, more in the style
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    31
of a textbook than a library of efficient algorithms.
62496
f187aaf602c4 added invariant proofs to AA trees
nipkow
parents: 61791
diff changeset
    32
f187aaf602c4 added invariant proofs to AA trees
nipkow
parents: 61791
diff changeset
    33
For more details see \cite{Nipkow16}.
61203
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    34
\end{abstract}
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    35
61224
759b5299a9f2 added red black trees
nipkow
parents: 61203
diff changeset
    36
\setcounter{tocdepth}{1}
61203
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    37
\tableofcontents
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    38
\newpage
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    39
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    40
\input{session}
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    41
61224
759b5299a9f2 added red black trees
nipkow
parents: 61203
diff changeset
    42
\section{Bibliographic Notes}
759b5299a9f2 added red black trees
nipkow
parents: 61203
diff changeset
    43
61480
3885464e4874 tuned text
nipkow
parents: 61224
diff changeset
    44
\paragraph{Red-black trees}
61224
759b5299a9f2 added red black trees
nipkow
parents: 61203
diff changeset
    45
The insert function follows Okasaki \cite{Okasaki}, the delete function
759b5299a9f2 added red black trees
nipkow
parents: 61203
diff changeset
    46
Kahrs \cite{Kahrs-html,Kahrs-JFP01}.
759b5299a9f2 added red black trees
nipkow
parents: 61203
diff changeset
    47
61480
3885464e4874 tuned text
nipkow
parents: 61224
diff changeset
    48
\paragraph{2-3 trees}
61791
nipkow
parents: 61784
diff changeset
    49
Equational definitions were given by Hoffmann and
nipkow
parents: 61784
diff changeset
    50
O'Donnell~\cite{HoffmannOD-TOPLAS82} (only insertion)
nipkow
parents: 61784
diff changeset
    51
and Reade \cite{Reade-SCP92}.
nipkow
parents: 61784
diff changeset
    52
Our formalisation is based on the teaching material by
nipkow
parents: 61784
diff changeset
    53
Turbak~\cite{Turbak230} .
61480
3885464e4874 tuned text
nipkow
parents: 61224
diff changeset
    54
61784
21b34a2269e5 added 1-2 brother trees
nipkow
parents: 61697
diff changeset
    55
\paragraph{1-2 brother trees}
21b34a2269e5 added 1-2 brother trees
nipkow
parents: 61697
diff changeset
    56
They were invented by Ottmann and Six~\cite{OttmannS76,OttmannW-CJ80}.
21b34a2269e5 added 1-2 brother trees
nipkow
parents: 61697
diff changeset
    57
The functional version is due to Hinze~\cite{Hinze-bro12}.
21b34a2269e5 added 1-2 brother trees
nipkow
parents: 61697
diff changeset
    58
62496
f187aaf602c4 added invariant proofs to AA trees
nipkow
parents: 61791
diff changeset
    59
\paragraph{AA trees}
f187aaf602c4 added invariant proofs to AA trees
nipkow
parents: 61791
diff changeset
    60
They were invented by Arne Anderson \cite{Andersson-WADS93}.
f187aaf602c4 added invariant proofs to AA trees
nipkow
parents: 61791
diff changeset
    61
Our formalisation follows Ragde~\cite{Ragde14} but fixes a number
f187aaf602c4 added invariant proofs to AA trees
nipkow
parents: 61791
diff changeset
    62
of mistakes.
f187aaf602c4 added invariant proofs to AA trees
nipkow
parents: 61791
diff changeset
    63
61525
87244a9cfe40 added splay trees
nipkow
parents: 61480
diff changeset
    64
\paragraph{Splay trees}
87244a9cfe40 added splay trees
nipkow
parents: 61480
diff changeset
    65
They were invented by Sleator and Tarjan \cite{SleatorT-JACM85}.
87244a9cfe40 added splay trees
nipkow
parents: 61480
diff changeset
    66
Our formalisation follows Schoenmakers \cite{Schoenmakers-IPL93}.
87244a9cfe40 added splay trees
nipkow
parents: 61480
diff changeset
    67
67966
f13796496e82 Added binary set operations with join-based implementation
nipkow
parents: 64318
diff changeset
    68
\paragraph{Join-based BSTs}
f13796496e82 Added binary set operations with join-based implementation
nipkow
parents: 64318
diff changeset
    69
They were invented by Adams \cite{Adams-TR92,Adams-JFP93}
f13796496e82 Added binary set operations with join-based implementation
nipkow
parents: 64318
diff changeset
    70
and analyzed by Blelloch \emph{et al.} \cite{BlellochFS-SPAA16}.
f13796496e82 Added binary set operations with join-based implementation
nipkow
parents: 64318
diff changeset
    71
62706
49c6a54ceab6 added Leftist_Heap
nipkow
parents: 62496
diff changeset
    72
\paragraph{Leftist heaps}
49c6a54ceab6 added Leftist_Heap
nipkow
parents: 62496
diff changeset
    73
They were invented by Crane \cite{Crane72}. A first functional implementation
49c6a54ceab6 added Leftist_Heap
nipkow
parents: 62496
diff changeset
    74
is due to N\'u\~{n}ez \emph{et al.}~\cite{NunezPP95}.
49c6a54ceab6 added Leftist_Heap
nipkow
parents: 62496
diff changeset
    75
61224
759b5299a9f2 added red black trees
nipkow
parents: 61203
diff changeset
    76
\bibliographystyle{abbrv}
759b5299a9f2 added red black trees
nipkow
parents: 61203
diff changeset
    77
\bibliography{root}
61203
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    78
a8a8eca85801 New subdirectory for functional data structures
nipkow
parents:
diff changeset
    79
\end{document}