src/HOL/Bali/document/root.tex
author wenzelm
Fri, 01 Mar 2002 11:55:45 +0100
changeset 12992 c2648d3e67a8
parent 12856 17ae8bbb46cb
child 13384 a34e38154413
permissions -rw-r--r--
enable_interrupt is back!
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
     1
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
     2
\documentclass[11pt,a4paper]{book}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
     3
\usepackage{isabelle,isabellesym}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
     4
\usepackage{latexsym}
12856
wenzelm
parents: 12854
diff changeset
     5
\usepackage{graphicx}
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
     6
\usepackage{pdfsetup}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
     7
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
     8
\urlstyle{rm}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
     9
\isabellestyle{it}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    10
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    11
\pagestyle{myheadings}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    12
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    13
\addtolength{\hoffset}{-1,5cm}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    14
\addtolength{\textwidth}{4cm}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    15
\addtolength{\voffset}{-2cm}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    16
\addtolength{\textheight}{4cm}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    17
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    18
%subsection instead of section to make the toc readable
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    19
\renewcommand{\thesubsection}{\arabic{subsection}}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    20
\renewcommand{\isamarkupheader}[1]{\newpage\markright{Theory~\isabellecontext}\subsection{#1}}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    21
\renewcommand{\isamarkupsection}[1]{\subsubsection{#1}}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    22
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    23
%remove spaces from the isabelle environment (trivlist makes them too large)
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    24
\renewenvironment{isabelle}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    25
{\begin{isabellebody}}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    26
{\end{isabellebody}}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    27
12856
wenzelm
parents: 12854
diff changeset
    28
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    29
\begin{document}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    30
12856
wenzelm
parents: 12854
diff changeset
    31
\title{Java Source and Bytecode Formalizations in Isabelle: Bali}
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    32
\author{Gerwin Klein \and Tobias Nipkow \and David von Oheimb \and
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    33
  Leonor Prensa Nieto \and Norbert Schirmer \and Martin Strecker}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    34
\maketitle
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    35
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    36
\tableofcontents
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    37
12856
wenzelm
parents: 12854
diff changeset
    38
\begin{center}
wenzelm
parents: 12854
diff changeset
    39
  \includegraphics[scale=0.7]{session_graph}
wenzelm
parents: 12854
diff changeset
    40
\end{center}
wenzelm
parents: 12854
diff changeset
    41
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    42
\parindent 0pt\parskip 0.5ex
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    43
\chapter{Overview}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    44
These theories, called Bali,  model and analyse different aspects of the 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    45
JavaCard \textbf{source language}. 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    46
The basis is an abstract model of the JavaCard source language. 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    47
On it, a type system, an operational semantics and an axiomatic semantics 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    48
(Hoare logic) are built. The execution of a wellformed program (with respect to
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    49
the type system) according to the operational semantics is proved to be 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    50
typesafe. The axiomatic semantics is proved to be sound and relative complete 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    51
with respect to the operational semantics.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    52
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    53
We have modelled large parts of the original JavaCard source language. It models
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    54
features such as:
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    55
\begin{itemize}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    56
\item The basic ``primitive types'' of Java 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    57
\item Classes and related concepts 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    58
\item Class fields and methods
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    59
\item Instance fields and methods
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    60
\item Interfaces and related concepts 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    61
\item Arrays
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    62
\item Static initialisation
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    63
\item Static overloading of fields and methods
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    64
\item Inheritance, overriding and hiding of methods, dynamic binding
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    65
\item All cases of abrupt termination
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    66
      \begin{itemize}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    67
        \item Exception throwing and handling
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    68
        \item \texttt{break}, \texttt{continue} and \texttt{return} 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    69
      \end{itemize}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    70
\item Packages
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    71
\item Access Modifiers (\texttt{private}, \texttt{protected}, \texttt{public})
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    72
\end{itemize}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    73
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    74
The following features are missing in Bali wrt.{} JavaCard:
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    75
\begin{itemize}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    76
\item Some primitive types (\texttt{byte, short})
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    77
\item Most numeric operations, syntactic variants of statements
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    78
  (\texttt{do}-loop, \texttt{for}-loop)
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    79
\item A ``definite assignment'' check
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    80
\end{itemize}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    81
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    82
In addition, features are missing that are not part of the JavaCard
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    83
language, such as multithreading and garbage collection. No attempt
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    84
has been made to model peculiarities of JavaCard such as the applet
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    85
firewall or the transaction mechanism.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    86
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    87
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    88
Overview of the theories:
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    89
\begin{description}
12856
wenzelm
parents: 12854
diff changeset
    90
\item[Basis] 
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    91
Some basic definitions and settings not specific to JavaCard but missing in HOL.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    92
12856
wenzelm
parents: 12854
diff changeset
    93
\item[Table]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    94
Definition and some properties of a lookup table to map various names 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    95
(like class names or method names) to some content (like classes or methods).
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    96
12856
wenzelm
parents: 12854
diff changeset
    97
\item[Name]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    98
Definition of various names (class names, variable names, package names,...)
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    99
12856
wenzelm
parents: 12854
diff changeset
   100
\item[Value]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   101
JavaCard expression values (Boolean, Integer, Addresses,...)
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   102
12856
wenzelm
parents: 12854
diff changeset
   103
\item[Type]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   104
JavaCard types. Primitive types (Boolean, Integer,...) and reference types 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   105
(Classes, Interfaces, Arrays,...)
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   106
12856
wenzelm
parents: 12854
diff changeset
   107
\item[Term]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   108
JavaCard terms. Variables, expressions and statements.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   109
12856
wenzelm
parents: 12854
diff changeset
   110
\item[Decl]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   111
Class, interface and program declarations. Recursion operators for the
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   112
class and the interface hierarchy. 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   113
12856
wenzelm
parents: 12854
diff changeset
   114
\item[TypeRel]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   115
Various relations on types like the subclass-, subinterface-, widening-, 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   116
narrowing- and casting-relation.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   117
12856
wenzelm
parents: 12854
diff changeset
   118
\item[DeclConcepts]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   119
Advanced concepts on the class and interface hierarchy like inheritance, 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   120
overriding, hiding, accessibility of types and members according to the access 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   121
modifiers, method lookup.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   122
12856
wenzelm
parents: 12854
diff changeset
   123
\item[WellType]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   124
Typesystem on the JavaCard term level.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   125
12856
wenzelm
parents: 12854
diff changeset
   126
\item[WellForm]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   127
Typesystem on the JavaCard class, interface and program level.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   128
12856
wenzelm
parents: 12854
diff changeset
   129
\item[State]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   130
The program state (like object store) for the execution of JavaCard.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   131
Abrupt completion (exceptions, break, continue, return) is modelled as flag
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   132
inside the state.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   133
12856
wenzelm
parents: 12854
diff changeset
   134
\item[Eval]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   135
Operational (big step) semantics for JavaCard.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   136
12856
wenzelm
parents: 12854
diff changeset
   137
\item[Example]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   138
An concrete example of a JavaCard program to validate the typesystem and the
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   139
operational semantics.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   140
12856
wenzelm
parents: 12854
diff changeset
   141
\item[Conform]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   142
Conformance predicate for states. When does an execution state conform to the
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   143
static types of the program given by the typesystem.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   144
12856
wenzelm
parents: 12854
diff changeset
   145
\item[TypeSafe]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   146
Typesafety proof of the execution of JavaCard. ''Welltyped programs don't go
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   147
wrong'' or more technical: The execution of a welltyped JavaCard program 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   148
preserves the conformance of execution states.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   149
12856
wenzelm
parents: 12854
diff changeset
   150
\item[Evaln]
wenzelm
parents: 12854
diff changeset
   151
Copy of the operational semantics given in theory Eval expanded with an annotation
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   152
for the maximal recursive depth. The semantics is not altered. The annotation
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   153
is needed for the soundness proof of the axiomatic semantics.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   154
12856
wenzelm
parents: 12854
diff changeset
   155
\item[AxSem]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   156
An axiomatic semantics (Hoare logic) for JavaCard.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   157
12856
wenzelm
parents: 12854
diff changeset
   158
\item[AxSound]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   159
The soundness proof of the axiomatic semantics with respect to the operational
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   160
semantics.
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   161
12856
wenzelm
parents: 12854
diff changeset
   162
\item[AxCompl]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   163
The proof of (relative) completeness of the axiomatic semantics with respect
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   164
to the operational semantics. 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   165
12856
wenzelm
parents: 12854
diff changeset
   166
\item[AxExample]
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   167
An concrete example of the axiomatic semantics at work, applied to prove 
12856
wenzelm
parents: 12854
diff changeset
   168
some properties of the JavaCard example given in theory Example.
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   169
\end{description}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   170
12856
wenzelm
parents: 12854
diff changeset
   171
wenzelm
parents: 12854
diff changeset
   172
\chapter{Basis}
wenzelm
parents: 12854
diff changeset
   173
\input{Basis}
wenzelm
parents: 12854
diff changeset
   174
\chapter{Table}
wenzelm
parents: 12854
diff changeset
   175
\input{Table}    
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   176
12856
wenzelm
parents: 12854
diff changeset
   177
\chapter{Name}
wenzelm
parents: 12854
diff changeset
   178
\input{Name}
wenzelm
parents: 12854
diff changeset
   179
\chapter{Value}     
wenzelm
parents: 12854
diff changeset
   180
\input{Value}
wenzelm
parents: 12854
diff changeset
   181
\chapter{Type}
wenzelm
parents: 12854
diff changeset
   182
\input{Type}      
wenzelm
parents: 12854
diff changeset
   183
\chapter{Term}
wenzelm
parents: 12854
diff changeset
   184
\input{Term}     
wenzelm
parents: 12854
diff changeset
   185
\chapter{Decl}
wenzelm
parents: 12854
diff changeset
   186
\input{Decl}          
wenzelm
parents: 12854
diff changeset
   187
\chapter{TypeRel}
wenzelm
parents: 12854
diff changeset
   188
\input{TypeRel}   
wenzelm
parents: 12854
diff changeset
   189
\chapter{DeclConcepts}
wenzelm
parents: 12854
diff changeset
   190
\input{DeclConcepts}  
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   191
12856
wenzelm
parents: 12854
diff changeset
   192
\chapter{WellType}
wenzelm
parents: 12854
diff changeset
   193
\input{WellType}
wenzelm
parents: 12854
diff changeset
   194
\chapter{WellForm}
wenzelm
parents: 12854
diff changeset
   195
\input{WellForm}
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   196
12856
wenzelm
parents: 12854
diff changeset
   197
\chapter{State}
wenzelm
parents: 12854
diff changeset
   198
\input{State}    
wenzelm
parents: 12854
diff changeset
   199
\chapter{Eval}
wenzelm
parents: 12854
diff changeset
   200
\input{Eval}          
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   201
12856
wenzelm
parents: 12854
diff changeset
   202
\chapter{Example}
wenzelm
parents: 12854
diff changeset
   203
\input{Example}  
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   204
12856
wenzelm
parents: 12854
diff changeset
   205
\chapter{Conform}
wenzelm
parents: 12854
diff changeset
   206
\input{Conform}       
wenzelm
parents: 12854
diff changeset
   207
\chapter{TypeSafe}
wenzelm
parents: 12854
diff changeset
   208
\input{TypeSafe}
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   209
12856
wenzelm
parents: 12854
diff changeset
   210
\chapter{Evaln}
wenzelm
parents: 12854
diff changeset
   211
\input{Evaln}         
wenzelm
parents: 12854
diff changeset
   212
\chapter{AxSem}
wenzelm
parents: 12854
diff changeset
   213
\input{AxSem}      
wenzelm
parents: 12854
diff changeset
   214
\chapter{AxSound}
wenzelm
parents: 12854
diff changeset
   215
\input{AxSound}    
wenzelm
parents: 12854
diff changeset
   216
\chapter{AxCompl}
wenzelm
parents: 12854
diff changeset
   217
\input{AxCompl}    
wenzelm
parents: 12854
diff changeset
   218
\chapter{AxExample}
wenzelm
parents: 12854
diff changeset
   219
\input{AxExample}  
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   220
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   221
%\bibliographystyle{abbrv}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   222
%\bibliography{root}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   223
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
   224
\end{document}