Paper/Paper.thy
changeset 58 0d4d5bb321dc
parent 54 c19d2fc2cc69
child 59 fc35eb54fdc9
--- a/Paper/Paper.thy	Wed Feb 02 13:25:09 2011 +0000
+++ b/Paper/Paper.thy	Wed Feb 02 13:54:07 2011 +0000
@@ -14,16 +14,28 @@
   Seq (infixr "\<cdot>" 100) and
   Star ("_\<^bsup>\<star>\<^esup>") and
   pow ("_\<^bsup>_\<^esup>" [100, 100] 100) and
-  Suc ("_+1>" [100] 100) and
+  Suc ("_+1" [100] 100) and
   quotient ("_ \<^raw:\ensuremath{\!\sslash\!}> _" [90, 90] 90) and
   REL ("\<approx>")
 
-
 (*>*)
 
 section {* Introduction *}
 
 text {*
+  Regular languages are an important and well-understood subject in Computer
+  Science with many beautiful theorems and many useful algorithms. There is a
+  wide range of textbooks about this subject. Many of these textbooks, such as
+  \cite{Kozen97}, are aimed at students and contain very detailed
+  ``pencil-and-paper'' proofs. It seems natural to exercise theorem provers by
+  formalising these theorems and by verifying formally the algorithms. There
+  is however a problem: the typical approach to regular languages is to start
+  with finite automata.
+
+  
+  
+
+
 
   Therefore instead of defining a regular language as being one where there exists an
   automata that regognises all of its strings, we define 
@@ -43,22 +55,26 @@
 section {* Preliminaries *}
 
 text {*
-  Strings in Isabelle/HOL are lists of characters. Therefore the
-  \emph{empty string} is represented by the empty list, written @{term "[]"}. \emph{Languages} are sets of 
-  strings. The language containing all strings is abbreviated as @{term "UNIV::string set"}
-  and the notation for the quotient of a language @{text A} according to a relation @{term REL} is
-  @{term "A // REL"}.
-  
-  Set operations
+  Strings in Isabelle/HOL are lists of characters and the
+  \emph{empty string} is the empty list, written @{term "[]"}. \emph{Languages} are sets of 
+  strings. The language containing all strings is written in Isabelle/HOL as @{term "UNIV::string set"}.
+  The notation for the quotient of a language @{text A} according to a relation @{term REL} is
+  @{term "A // REL"}. The concatenation of two languages is written @{term "A ;; B"}; a language 
+  raised  tow the power $n$ is written @{term "A \<up> n"}. Both concepts are defined as
 
   \begin{center}
-  @{thm Seq_def}
+  @{thm Seq_def[THEN eq_reflection, where A1="A" and B1="B"]}
+  \hspace{7mm}
+  @{thm pow.simps(1)[THEN eq_reflection, where A1="A"]}
+  \hspace{7mm}
+  @{thm pow.simps(2)[THEN eq_reflection, where A1="A" and n1="n"]}
   \end{center}
 
   \noindent
-  where @{text "@"} is the usual list-append operation.
+  where @{text "@"} is the usual list-append operation. The Kleene-star of a language @{text A}
+  is defined as the union over all powers, namely @{thm Star_def}.
+  
 
-  \noindent
   Regular expressions are defined as the following datatype
 
   \begin{center}