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