Paper/Paper.thy
author urbanc
Wed, 16 Feb 2011 12:25:53 +0000
changeset 109 79b37ef9505f
parent 108 212bfa431fa5
child 110 e500cab16be4
permissions -rw-r--r--
minor updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
24
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
     1
(*<*)
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
     2
theory Paper
94
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
     3
imports "../Myhill" "LaTeXsugar" 
24
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
     4
begin
39
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
     5
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
     6
declare [[show_question_marks = false]]
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
     7
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
     8
consts
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
     9
 REL :: "(string \<times> string) \<Rightarrow> bool"
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    10
 UPLUS :: "'a set \<Rightarrow> 'a set \<Rightarrow> (nat \<times> 'a) set"
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
    11
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
    12
abbreviation
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
    13
  "EClass x R \<equiv> R `` {x}"
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
    14
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
    15
abbreviation 
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
    16
  "append_rexp2 r_itm r \<equiv> append_rexp r r_itm"
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
    17
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
    18
39
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
    19
notation (latex output)
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
    20
  str_eq_rel ("\<approx>\<^bsub>_\<^esub>") and
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
    21
  str_eq ("_ \<approx>\<^bsub>_\<^esub> _") and
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
    22
  Seq (infixr "\<cdot>" 100) and
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
    23
  Star ("_\<^bsup>\<star>\<^esup>") and
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
    24
  pow ("_\<^bsup>_\<^esup>" [100, 100] 100) and
58
0d4d5bb321dc a little bit in the introduction
urbanc
parents: 54
diff changeset
    25
  Suc ("_+1" [100] 100) and
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
    26
  quotient ("_ \<^raw:\ensuremath{\!\sslash\!}> _" [90, 90] 90) and
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    27
  REL ("\<approx>") and
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
    28
  UPLUS ("_ \<^raw:\ensuremath{\uplus}> _" [90, 90] 90) and
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
    29
  L ("\<^raw:\ensuremath{\cal{L}}>'(_')" [0] 101) and
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
    30
  Lam ("\<lambda>'(_')" [100] 100) and 
89
42af13d194c9 a bit more on the paper
urbanc
parents: 88
diff changeset
    31
  Trn ("'(_, _')" [100, 100] 100) and 
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
    32
  EClass ("\<lbrakk>_\<rbrakk>\<^bsub>_\<^esub>" [100, 100] 100) and
88
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
    33
  transition ("_ \<^raw:\ensuremath{\stackrel{\text{>_\<^raw:}}{\Longmapsto}}> _" [100, 100, 100] 100) and
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
    34
  Setalt ("\<^raw:\ensuremath{\bigplus}>_" [1000] 999) and
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
    35
  append_rexp2 ("_ \<^raw:\ensuremath{\triangleleft}> _" [100, 100] 100) and
95
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
    36
  append_rhs_rexp ("_ \<^raw:\ensuremath{\triangleleft}> _" [100, 100] 50)
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
    37
24
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
    38
(*>*)
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
    39
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
    40
24
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
    41
section {* Introduction *}
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
    42
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
    43
text {*
58
0d4d5bb321dc a little bit in the introduction
urbanc
parents: 54
diff changeset
    44
  Regular languages are an important and well-understood subject in Computer
60
fb08f41ca33d a bit more tuning on the introduction
urbanc
parents: 59
diff changeset
    45
  Science, with many beautiful theorems and many useful algorithms. There is a
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    46
  wide range of textbooks on this subject, many of which are aimed at students
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    47
  and contain very detailed ``pencil-and-paper'' proofs
60
fb08f41ca33d a bit more tuning on the introduction
urbanc
parents: 59
diff changeset
    48
  (e.g.~\cite{Kozen97}). It seems natural to exercise theorem provers by
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
    49
  formalising the theorems and by verifying formally the algorithms.
59
fc35eb54fdc9 more on the intro
urbanc
parents: 58
diff changeset
    50
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    51
  There is however a problem: the typical approach to regular languages is to
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    52
  introduce finite automata and then define everything in terms of them.  For
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    53
  example, a regular language is normally defined as one whose strings are
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    54
  recognised by a finite deterministic automaton. This approach has many
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
    55
  benefits. Among them is the fact that it is easy to convince oneself that
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    56
  regular languages are closed under complementation: one just has to exchange
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    57
  the accepting and non-accepting states in the corresponding automaton to
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    58
  obtain an automaton for the complement language.  The problem, however, lies with
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
    59
  formalising such reasoning in a HOL-based theorem prover, in our case
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
    60
  Isabelle/HOL. Automata are build up from states and transitions that 
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
    61
  need to be represented as graphs, matrices or functions, none
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
    62
  of which can be defined as inductive datatype. 
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    63
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
    64
  In case of graphs and matrices, this means we have to build our own
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
    65
  reasoning infrastructure for them, as neither Isabelle/HOL nor HOL4 nor
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
    66
  HOLlight support them with libraries. Even worse, reasoning about graphs and
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
    67
  matrices can be a real hassle in HOL-based theorem provers.  Consider for
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
    68
  example the operation of sequencing two automata, say $A_1$ and $A_2$, by
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
    69
  connecting the accepting states of $A_1$ to the initial state of $A_2$:  
60
fb08f41ca33d a bit more tuning on the introduction
urbanc
parents: 59
diff changeset
    70
  
fb08f41ca33d a bit more tuning on the introduction
urbanc
parents: 59
diff changeset
    71
  \begin{center}
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    72
  \begin{tabular}{ccc}
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    73
  \begin{tikzpicture}[scale=0.8]
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    74
  %\draw[step=2mm] (-1,-1) grid (1,1);
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    75
  
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    76
  \draw[rounded corners=1mm, very thick] (-1.0,-0.3) rectangle (-0.2,0.3);
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    77
  \draw[rounded corners=1mm, very thick] ( 0.2,-0.3) rectangle ( 1.0,0.3);
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    78
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    79
  \node (A) at (-1.0,0.0) [circle, very thick, draw, fill=white, inner sep=0.4mm] {};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    80
  \node (B) at ( 0.2,0.0) [circle, very thick, draw, fill=white, inner sep=0.4mm] {};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    81
  
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    82
  \node (C) at (-0.2, 0.13) [circle, very thick, draw, fill=white, inner sep=0.4mm] {};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    83
  \node (D) at (-0.2,-0.13) [circle, very thick, draw, fill=white, inner sep=0.4mm] {};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    84
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    85
  \node (E) at (1.0, 0.2) [circle, very thick, draw, fill=white, inner sep=0.4mm] {};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    86
  \node (F) at (1.0,-0.0) [circle, very thick, draw, fill=white, inner sep=0.4mm] {};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    87
  \node (G) at (1.0,-0.2) [circle, very thick, draw, fill=white, inner sep=0.4mm] {};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    88
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    89
  \draw (-0.6,0.0) node {\footnotesize$A_1$};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    90
  \draw ( 0.6,0.0) node {\footnotesize$A_2$};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    91
  \end{tikzpicture}
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    92
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    93
  & 
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    94
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    95
  \raisebox{1.1mm}{\bf\Large$\;\;\;\Rightarrow\,\;\;$}
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    96
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    97
  &
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    98
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    99
  \begin{tikzpicture}[scale=0.8]
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   100
  %\draw[step=2mm] (-1,-1) grid (1,1);
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   101
  
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   102
  \draw[rounded corners=1mm, very thick] (-1.0,-0.3) rectangle (-0.2,0.3);
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   103
  \draw[rounded corners=1mm, very thick] ( 0.2,-0.3) rectangle ( 1.0,0.3);
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   104
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   105
  \node (A) at (-1.0,0.0) [circle, very thick, draw, fill=white, inner sep=0.4mm] {};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   106
  \node (B) at ( 0.2,0.0) [circle, very thick, draw, fill=white, inner sep=0.4mm] {};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   107
  
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   108
  \node (C) at (-0.2, 0.13) [circle, very thick, draw, fill=white, inner sep=0.4mm] {};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   109
  \node (D) at (-0.2,-0.13) [circle, very thick, draw, fill=white, inner sep=0.4mm] {};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   110
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   111
  \node (E) at (1.0, 0.2) [circle, very thick, draw, fill=white, inner sep=0.4mm] {};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   112
  \node (F) at (1.0,-0.0) [circle, very thick, draw, fill=white, inner sep=0.4mm] {};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   113
  \node (G) at (1.0,-0.2) [circle, very thick, draw, fill=white, inner sep=0.4mm] {};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   114
  
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   115
  \draw (C) to [very thick, bend left=45] (B);
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   116
  \draw (D) to [very thick, bend right=45] (B);
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   117
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   118
  \draw (-0.6,0.0) node {\footnotesize$A_1$};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   119
  \draw ( 0.6,0.0) node {\footnotesize$A_2$};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   120
  \end{tikzpicture}
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   121
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   122
  \end{tabular}
60
fb08f41ca33d a bit more tuning on the introduction
urbanc
parents: 59
diff changeset
   123
  \end{center}
fb08f41ca33d a bit more tuning on the introduction
urbanc
parents: 59
diff changeset
   124
fb08f41ca33d a bit more tuning on the introduction
urbanc
parents: 59
diff changeset
   125
  \noindent
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   126
  On ``paper'' we can define the corresponding graph in terms of the disjoint 
88
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   127
  union of the state nodes. Unfortunately in HOL, the standard definition for disjoint 
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   128
  union, namely 
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   129
  %
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   130
  \begin{equation}\label{disjointunion}
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   131
  @{term "UPLUS A\<^isub>1 A\<^isub>2 \<equiv> {(1, x) | x. x \<in> A\<^isub>1} \<union> {(2, y) | y. y \<in> A\<^isub>2}"}
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   132
  \end{equation}
60
fb08f41ca33d a bit more tuning on the introduction
urbanc
parents: 59
diff changeset
   133
61
070f543e2560 more to the intro
urbanc
parents: 60
diff changeset
   134
  \noindent
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   135
  changes the type---the disjoint union is not a set, but a set of pairs. 
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   136
  Using this definition for disjoint unions means we do not have a single type for automata
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   137
  and hence will not be able to state certain properties about \emph{all}
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   138
  automata, since there is no type quantification available in HOL. An
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   139
  alternative, which provides us with a single type for automata, is to give every 
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   140
  state node an identity, for example a natural
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   141
  number, and then be careful to rename these identities apart whenever
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   142
  connecting two automata. This results in clunky proofs
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   143
  establishing that properties are invariant under renaming. Similarly,
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   144
  connecting two automata represented as matrices results in very adhoc
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   145
  constructions, which are not pleasant to reason about.
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   146
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   147
  Functions are much better supported in Isabelle/HOL, but they still lead to similar
88
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   148
  problems as with graphs.  Composing, for example, two non-deterministic automata in parallel
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   149
  requires also the formalisation of disjoint unions. Nipkow \cite{Nipkow98} 
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   150
  dismisses for this the option of using identities, because it leads according to 
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   151
  him to ``messy proofs''. He
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   152
  opts for a variant of \eqref{disjointunion} using bit lists, but writes 
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   153
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   154
  \begin{quote}
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   155
  \it%
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   156
  \begin{tabular}{@ {}l@ {}p{0.88\textwidth}@ {}}
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   157
  `` & All lemmas appear obvious given a picture of the composition of automata\ldots
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   158
       Yet their proofs require a painful amount of detail.''
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   159
  \end{tabular}
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   160
  \end{quote}
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   161
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   162
  \noindent
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   163
  and
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   164
  
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   165
  \begin{quote}
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   166
  \it%
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   167
  \begin{tabular}{@ {}l@ {}p{0.88\textwidth}@ {}}
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   168
  `` & If the reader finds the above treatment in terms of bit lists revoltingly
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   169
       concrete, I cannot disagree. A more abstract approach is clearly desirable.''
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   170
  \end{tabular}
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   171
  \end{quote}
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   172
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   173
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   174
  \noindent
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   175
  Moreover, it is not so clear how to conveniently impose a finiteness condition 
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   176
  upon functions in order to represent \emph{finite} automata. The best is
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   177
  probably to resort to more advanced reasoning frameworks, such as \emph{locales}
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   178
  or \emph{type classes},
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   179
  which are not avaiable in \emph{all} HOL-based theorem provers.
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   180
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   181
  Because of these problems to do with representing automata, there seems
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   182
  to be no substantial formalisation of automata theory and regular languages 
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   183
  carried out in HOL-based theorem provers. Nipkow establishes in 
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   184
  \cite{Nipkow98} the link between regular expressions and automata in
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   185
  the context of lexing. The only larger formalisations of automata theory 
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   186
  are carried out in Nuprl \cite{Constable00} and in Coq (for example 
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   187
  \cite{Filliatre97}).
58
0d4d5bb321dc a little bit in the introduction
urbanc
parents: 54
diff changeset
   188
  
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   189
  In this paper, we will not attempt to formalise automata theory in
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   190
  Isabelle/HOL, but take a completely different approach to regular
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   191
  languages. Instead of defining a regular language as one where there exists
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   192
  an automaton that recognises all strings of the language, we define a
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   193
  regular language as:
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   194
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   195
  \begin{definition}
77
63bc9f9d96ba small additions
urbanc
parents: 75
diff changeset
   196
  A language @{text A} is \emph{regular}, provided there is a regular expression that matches all
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   197
  strings of @{text "A"}.
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   198
  \end{definition}
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   199
  
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   200
  \noindent
88
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   201
  The reason is that regular expressions, unlike graphs, matrices and functons, can
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   202
  be easily defined as inductive datatype. Consequently a corresponding reasoning 
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   203
  infrastructure comes for free. This has recently been exploited in HOL4 with a formalisation
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   204
  of regular expression matching based on derivatives \cite{OwensSlind08} and
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   205
  with an equivalence checker for regular expressions in Isabelle/HOL \cite{KraussNipkow11}.  
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   206
  The purpose of this paper is to
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   207
  show that a central result about regular languages---the Myhill-Nerode theorem---can 
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   208
  be recreated by only using regular expressions. This theorem gives necessary
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   209
  and sufficient conditions for when a language is regular. As a corollary of this
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   210
  theorem we can easily establish the usual closure properties, including 
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   211
  complementation, for regular languages.\smallskip
61
070f543e2560 more to the intro
urbanc
parents: 60
diff changeset
   212
  
070f543e2560 more to the intro
urbanc
parents: 60
diff changeset
   213
  \noindent
88
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   214
  {\bf Contributions:} 
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   215
  There is an extensive literature on regular languages.
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   216
  To our knowledge, our proof of the Myhill-Nerode theorem is the
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   217
  first that is based on regular expressions, only. We prove the part of this theorem 
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   218
  stating that a regular expression has only finitely many partitions using certain 
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   219
  tagging-functions. Again to our best knowledge, these tagging functions have
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   220
  not been used before to establish the Myhill-Nerode theorem.
24
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
   221
*}
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
   222
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   223
section {* Preliminaries *}
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   224
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   225
text {*
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   226
  Strings in Isabelle/HOL are lists of characters with the \emph{empty string}
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   227
  being represented by the empty list, written @{term "[]"}.  \emph{Languages}
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   228
  are sets of strings. The language containing all strings is written in
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   229
  Isabelle/HOL as @{term "UNIV::string set"}. The concatenation of two languages 
90
97b783438316 added an example
urbanc
parents: 89
diff changeset
   230
  is written @{term "A ;; B"} and a language raised to the power @{text n} is written 
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   231
  @{term "A \<up> n"}. They are defined as usual
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   232
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   233
  \begin{center}
58
0d4d5bb321dc a little bit in the introduction
urbanc
parents: 54
diff changeset
   234
  @{thm Seq_def[THEN eq_reflection, where A1="A" and B1="B"]}
0d4d5bb321dc a little bit in the introduction
urbanc
parents: 54
diff changeset
   235
  \hspace{7mm}
0d4d5bb321dc a little bit in the introduction
urbanc
parents: 54
diff changeset
   236
  @{thm pow.simps(1)[THEN eq_reflection, where A1="A"]}
0d4d5bb321dc a little bit in the introduction
urbanc
parents: 54
diff changeset
   237
  \hspace{7mm}
0d4d5bb321dc a little bit in the introduction
urbanc
parents: 54
diff changeset
   238
  @{thm pow.simps(2)[THEN eq_reflection, where A1="A" and n1="n"]}
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   239
  \end{center}
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   240
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   241
  \noindent
58
0d4d5bb321dc a little bit in the introduction
urbanc
parents: 54
diff changeset
   242
  where @{text "@"} is the usual list-append operation. The Kleene-star of a language @{text A}
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   243
  is defined as the union over all powers, namely @{thm Star_def}. In the paper
88
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   244
  we will make use of the following properties of these constructions.
58
0d4d5bb321dc a little bit in the introduction
urbanc
parents: 54
diff changeset
   245
  
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   246
  \begin{proposition}\label{langprops}\mbox{}\\
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   247
  \begin{tabular}{@ {}ll}
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   248
  (i)   & @{thm star_cases}     \\ 
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   249
  (ii)  & @{thm[mode=IfThen] pow_length}\\
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   250
  (iii) & @{thm seq_Union_left} \\ 
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   251
  \end{tabular}
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   252
  \end{proposition}
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   253
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   254
  \noindent
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   255
  In @{text "(ii)"} we use the notation @{term "length s"} for the length of a
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   256
  string.  This property states that if @{term "[] \<notin> A"} then the lengths of
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   257
  the strings in @{term "A \<up> (Suc n)"} must be longer than @{text n}.  We omit
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   258
  the proofs for these properties, but invite the reader to consult our
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   259
  formalisation.\footnote{Available at ???}
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   260
90
97b783438316 added an example
urbanc
parents: 89
diff changeset
   261
  The notation in Isabelle/HOL for the quotient of a language @{text A} according to an 
97b783438316 added an example
urbanc
parents: 89
diff changeset
   262
  equivalence relation @{term REL} is @{term "A // REL"}. We will write 
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   263
  @{text "\<lbrakk>x\<rbrakk>\<^isub>\<approx>"} for the equivalence class defined 
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   264
  as @{text "{y | y \<approx> x}"}.
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   265
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   266
51
6cfb92de4654 some tuning of the paper
urbanc
parents: 50
diff changeset
   267
  Central to our proof will be the solution of equational systems
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   268
  involving equivalence classes of languages. For this we will use Arden's lemma \cite{Brzozowski64}
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   269
  which solves equations of the form @{term "X = A ;; X \<union> B"} provided
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   270
  @{term "[] \<notin> A"}. However we will need the following ``reverse'' 
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   271
  version of Arden's lemma.
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   272
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   273
  \begin{lemma}[Reverse Arden's Lemma]\label{arden}\mbox{}\\
86
6457e668dee5 tuned comments and names in Myhill_1
urbanc
parents: 83
diff changeset
   274
  If @{thm (prem 1) arden} then
6457e668dee5 tuned comments and names in Myhill_1
urbanc
parents: 83
diff changeset
   275
  @{thm (lhs) arden} has the unique solution
6457e668dee5 tuned comments and names in Myhill_1
urbanc
parents: 83
diff changeset
   276
  @{thm (rhs) arden}.
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   277
  \end{lemma}
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   278
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   279
  \begin{proof}
86
6457e668dee5 tuned comments and names in Myhill_1
urbanc
parents: 83
diff changeset
   280
  For the right-to-left direction we assume @{thm (rhs) arden} and show
6457e668dee5 tuned comments and names in Myhill_1
urbanc
parents: 83
diff changeset
   281
  that @{thm (lhs) arden} holds. From Prop.~\ref{langprops}@{text "(i)"} 
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   282
  we have @{term "A\<star> = {[]} \<union> A ;; A\<star>"},
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   283
  which is equal to @{term "A\<star> = {[]} \<union> A\<star> ;; A"}. Adding @{text B} to both 
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   284
  sides gives @{term "B ;; A\<star> = B ;; ({[]} \<union> A\<star> ;; A)"}, whose right-hand side
51
6cfb92de4654 some tuning of the paper
urbanc
parents: 50
diff changeset
   285
  is equal to @{term "(B ;; A\<star>) ;; A \<union> B"}. This completes this direction. 
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   286
86
6457e668dee5 tuned comments and names in Myhill_1
urbanc
parents: 83
diff changeset
   287
  For the other direction we assume @{thm (lhs) arden}. By a simple induction
51
6cfb92de4654 some tuning of the paper
urbanc
parents: 50
diff changeset
   288
  on @{text n}, we can establish the property
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   289
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   290
  \begin{center}
86
6457e668dee5 tuned comments and names in Myhill_1
urbanc
parents: 83
diff changeset
   291
  @{text "(*)"}\hspace{5mm} @{thm (concl) arden_helper}
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   292
  \end{center}
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   293
  
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   294
  \noindent
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   295
  Using this property we can show that @{term "B ;; (A \<up> n) \<subseteq> X"} holds for
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   296
  all @{text n}. From this we can infer @{term "B ;; A\<star> \<subseteq> X"} using the definition
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   297
  of @{text "\<star>"}.
51
6cfb92de4654 some tuning of the paper
urbanc
parents: 50
diff changeset
   298
  For the inclusion in the other direction we assume a string @{text s}
86
6457e668dee5 tuned comments and names in Myhill_1
urbanc
parents: 83
diff changeset
   299
  with length @{text k} is element in @{text X}. Since @{thm (prem 1) arden}
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   300
  we know by Prop.~\ref{langprops}@{text "(ii)"} that 
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   301
  @{term "s \<notin> X ;; (A \<up> Suc k)"} since its length is only @{text k}
51
6cfb92de4654 some tuning of the paper
urbanc
parents: 50
diff changeset
   302
  (the strings in @{term "X ;; (A \<up> Suc k)"} are all longer). 
53
da85feadb8e3 small typo
urbanc
parents: 52
diff changeset
   303
  From @{text "(*)"} it follows then that
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   304
  @{term s} must be element in @{term "(\<Union>m\<in>{0..k}. B ;; (A \<up> m))"}. This in turn
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   305
  implies that @{term s} is in @{term "(\<Union>n. B ;; (A \<up> n))"}. Using Prop.~\ref{langprops}@{text "(iii)"} 
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   306
  this is equal to @{term "B ;; A\<star>"}, as we needed to show.\qed
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   307
  \end{proof}
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   308
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   309
  \noindent
88
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   310
  Regular expressions are defined as the inductive datatype
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   311
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   312
  \begin{center}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   313
  @{text r} @{text "::="}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   314
  @{term NULL}\hspace{1.5mm}@{text"|"}\hspace{1.5mm} 
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   315
  @{term EMPTY}\hspace{1.5mm}@{text"|"}\hspace{1.5mm} 
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   316
  @{term "CHAR c"}\hspace{1.5mm}@{text"|"}\hspace{1.5mm} 
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   317
  @{term "SEQ r r"}\hspace{1.5mm}@{text"|"}\hspace{1.5mm} 
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   318
  @{term "ALT r r"}\hspace{1.5mm}@{text"|"}\hspace{1.5mm} 
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   319
  @{term "STAR r"}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   320
  \end{center}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   321
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   322
  \noindent
88
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   323
  and the language matched by a regular expression is defined as
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   324
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   325
  \begin{center}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   326
  \begin{tabular}{c@ {\hspace{10mm}}c}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   327
  \begin{tabular}{rcl}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   328
  @{thm (lhs) L_rexp.simps(1)} & @{text "\<equiv>"} & @{thm (rhs) L_rexp.simps(1)}\\
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   329
  @{thm (lhs) L_rexp.simps(2)} & @{text "\<equiv>"} & @{thm (rhs) L_rexp.simps(2)}\\
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   330
  @{thm (lhs) L_rexp.simps(3)[where c="c"]} & @{text "\<equiv>"} & @{thm (rhs) L_rexp.simps(3)[where c="c"]}\\
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   331
  \end{tabular}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   332
  &
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   333
  \begin{tabular}{rcl}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   334
  @{thm (lhs) L_rexp.simps(4)[where ?r1.0="r\<^isub>1" and ?r2.0="r\<^isub>2"]} & @{text "\<equiv>"} &
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   335
       @{thm (rhs) L_rexp.simps(4)[where ?r1.0="r\<^isub>1" and ?r2.0="r\<^isub>2"]}\\
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   336
  @{thm (lhs) L_rexp.simps(5)[where ?r1.0="r\<^isub>1" and ?r2.0="r\<^isub>2"]} & @{text "\<equiv>"} &
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   337
       @{thm (rhs) L_rexp.simps(5)[where ?r1.0="r\<^isub>1" and ?r2.0="r\<^isub>2"]}\\
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   338
  @{thm (lhs) L_rexp.simps(6)[where r="r"]} & @{text "\<equiv>"} &
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   339
      @{thm (rhs) L_rexp.simps(6)[where r="r"]}\\
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   340
  \end{tabular}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   341
  \end{tabular}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   342
  \end{center}
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   343
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   344
  Given a finite set of regular expressions @{text rs}, we will make use of the operation of generating 
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   345
  a regular expression that matches all languages of @{text rs}. We only need to know the existence
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   346
  of such a regular expression and therefore we use Isabelle/HOL's @{const "fold_graph"} and Hilbert's
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   347
  @{text "\<epsilon>"} to define @{term "\<Uplus>rs"}. This operation, roughly speaking, folds @{const ALT} over the 
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   348
  set @{text rs} with @{const NULL} for the empty set. We can prove that for a finite set @{text rs}
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   349
88
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   350
  \begin{center}
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   351
  @{thm (lhs) folds_alt_simp} @{text "= \<Union> (\<calL> ` rs)"}
88
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   352
  \end{center}
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   353
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   354
  \noindent
90
97b783438316 added an example
urbanc
parents: 89
diff changeset
   355
  holds, whereby @{text "\<calL> ` rs"} stands for the 
97b783438316 added an example
urbanc
parents: 89
diff changeset
   356
  image of the set @{text rs} under function @{text "\<calL>"}.
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   357
*}
39
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   358
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   359
section {* The Myhill-Nerode Theorem, First Part *}
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   360
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   361
text {*
77
63bc9f9d96ba small additions
urbanc
parents: 75
diff changeset
   362
  The key definition in the Myhill-Nerode theorem is the
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   363
  \emph{Myhill-Nerode relation}, which states that w.r.t.~a language two 
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   364
  strings are related, provided there is no distinguishing extension in this
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   365
  language. This can be defined as:
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   366
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   367
  \begin{definition}[Myhill-Nerode Relation]\mbox{}\\
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   368
  @{thm str_eq_def[simplified str_eq_rel_def Pair_Collect]}
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   369
  \end{definition}
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   370
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   371
  \noindent
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   372
  It is easy to see that @{term "\<approx>A"} is an equivalence relation, which
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   373
  partitions the set of all strings, @{text "UNIV"}, into a set of disjoint
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   374
  equivalence classes. To illustrate this quotient construction, let us give a simple 
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   375
  example: consider the regular language containing just
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   376
  the string @{text "[c]"}. The relation @{term "\<approx>({[c]})"} partitions @{text UNIV}
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   377
  into three equivalence classes @{text "X\<^isub>1"}, @{text "X\<^isub>2"} and  @{text "X\<^isub>3"}
90
97b783438316 added an example
urbanc
parents: 89
diff changeset
   378
  as follows
97b783438316 added an example
urbanc
parents: 89
diff changeset
   379
  
97b783438316 added an example
urbanc
parents: 89
diff changeset
   380
  \begin{center}
97b783438316 added an example
urbanc
parents: 89
diff changeset
   381
  @{text "X\<^isub>1 = {[]}"}\hspace{5mm}
97b783438316 added an example
urbanc
parents: 89
diff changeset
   382
  @{text "X\<^isub>2 = {[c]}"}\hspace{5mm}
97b783438316 added an example
urbanc
parents: 89
diff changeset
   383
  @{text "X\<^isub>3 = UNIV - {[], [c]}"}
97b783438316 added an example
urbanc
parents: 89
diff changeset
   384
  \end{center}
97b783438316 added an example
urbanc
parents: 89
diff changeset
   385
97b783438316 added an example
urbanc
parents: 89
diff changeset
   386
  One direction of the Myhill-Nerode theorem establishes 
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   387
  that if there are finitely many equivalence classes, like in the example above, then 
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   388
  the language is regular. In our setting we therefore have to show:
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   389
  
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   390
  \begin{theorem}\label{myhillnerodeone}
96
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   391
  @{thm[mode=IfThen] Myhill_Nerode1}
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   392
  \end{theorem}
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   393
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   394
  \noindent
90
97b783438316 added an example
urbanc
parents: 89
diff changeset
   395
  To prove this theorem, we first define the set @{term "finals A"} as those equivalence
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   396
  classes from @{term "UNIV // \<approx>A"} that contain strings of @{text A}, namely
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   397
  %
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   398
  \begin{equation} 
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   399
  @{thm finals_def}
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   400
  \end{equation}
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   401
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   402
  \noindent
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   403
  In our running example, @{text "X\<^isub>2"} is the only equivalence class in @{term "finals {[c]}"}.
90
97b783438316 added an example
urbanc
parents: 89
diff changeset
   404
  It is straightforward to show that in general @{thm lang_is_union_of_finals} and 
79
bba9c80735f9 started to define things more directly
urbanc
parents: 77
diff changeset
   405
  @{thm finals_in_partitions} hold. 
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   406
  Therefore if we know that there exists a regular expression for every
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   407
  equivalence class in \mbox{@{term "finals A"}} (which by assumption must be
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   408
  a finite set), then we can use @{text "\<bigplus>"} to obtain a regular expression 
98
36f9d19be0e6 included comments by Xingyuan
urbanc
parents: 96
diff changeset
   409
  that matches every string in @{text A}.
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   410
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   411
90
97b783438316 added an example
urbanc
parents: 89
diff changeset
   412
  Our proof of Thm.~\ref{myhillnerodeone} relies on a method that can calculate a
79
bba9c80735f9 started to define things more directly
urbanc
parents: 77
diff changeset
   413
  regular expression for \emph{every} equivalence class, not just the ones 
77
63bc9f9d96ba small additions
urbanc
parents: 75
diff changeset
   414
  in @{term "finals A"}. We
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   415
  first define the notion of \emph{one-character-transition} between 
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   416
  two equivalence classes
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   417
  %
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   418
  \begin{equation} 
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   419
  @{thm transition_def}
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   420
  \end{equation}
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   421
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   422
  \noindent
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   423
  which means that if we concatenate the character @{text c} to the end of all 
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   424
  strings in the equivalence class @{text Y}, we obtain a subset of 
77
63bc9f9d96ba small additions
urbanc
parents: 75
diff changeset
   425
  @{text X}. Note that we do not define an automaton here, we merely relate two sets
98
36f9d19be0e6 included comments by Xingyuan
urbanc
parents: 96
diff changeset
   426
  (with respect to a character). In our concrete example we have 
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   427
  @{term "X\<^isub>1 \<Turnstile>c\<Rightarrow> X\<^isub>2"}, @{term "X\<^isub>1 \<Turnstile>d\<Rightarrow> X\<^isub>3"} with @{text d} being any 
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   428
  other character than @{text c}, and @{term "X\<^isub>3 \<Turnstile>d\<Rightarrow> X\<^isub>3"} for any @{text d}.
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   429
  
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   430
  Next we build an \emph{initial} equational system that
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   431
  contains an equation for each equivalence class. Suppose we have 
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   432
  the equivalence classes @{text "X\<^isub>1,\<dots>,X\<^isub>n"}, there must be one and only one that
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   433
  contains the empty string @{text "[]"} (since equivalence classes are disjoint).
77
63bc9f9d96ba small additions
urbanc
parents: 75
diff changeset
   434
  Let us assume @{text "[] \<in> X\<^isub>1"}. We build the following equational system
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   435
  
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   436
  \begin{center}
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   437
  \begin{tabular}{rcl}
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   438
  @{text "X\<^isub>1"} & @{text "="} & @{text "(Y\<^isub>1\<^isub>1, CHAR c\<^isub>1\<^isub>1) + \<dots> + (Y\<^isub>1\<^isub>p, CHAR c\<^isub>1\<^isub>p) + \<lambda>(EMPTY)"} \\
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   439
  @{text "X\<^isub>2"} & @{text "="} & @{text "(Y\<^isub>2\<^isub>1, CHAR c\<^isub>2\<^isub>1) + \<dots> + (Y\<^isub>2\<^isub>o, CHAR c\<^isub>2\<^isub>o)"} \\
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   440
  & $\vdots$ \\
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   441
  @{text "X\<^isub>n"} & @{text "="} & @{text "(Y\<^isub>n\<^isub>1, CHAR c\<^isub>n\<^isub>1) + \<dots> + (Y\<^isub>n\<^isub>q, CHAR c\<^isub>n\<^isub>q)"}\\
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   442
  \end{tabular}
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   443
  \end{center}
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   444
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   445
  \noindent
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   446
  where the terms @{text "(Y\<^isub>i\<^isub>j, CHAR c\<^isub>i\<^isub>j)"}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   447
  stand for all transitions @{term "Y\<^isub>i\<^isub>j \<Turnstile>c\<^isub>i\<^isub>j\<Rightarrow>
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   448
  X\<^isub>i"}.   There can only be
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   449
  finitely many such terms in a right-hand side since there are only finitely many
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   450
  equivalence classes and only finitely many characters.  The term @{text
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   451
  "\<lambda>(EMPTY)"} in the first equation acts as a marker for the equivalence class
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   452
  containing @{text "[]"}.\footnote{Note that we mark, roughly speaking, the
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   453
  single ``initial'' state in the equational system, which is different from
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   454
  the method by Brzozowski \cite{Brzozowski64}, where he marks the
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   455
  ``terminal'' states. We are forced to set up the equational system in our
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   456
  way, because the Myhill-Nerode relation determines the ``direction'' of the
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   457
  transitions. The successor ``state'' of an equivalence class @{text Y} can
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   458
  be reached by adding characters to the end of @{text Y}. This is also the
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   459
  reason why we have to use our reverse version of Arden's lemma.}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   460
  Overloading the function @{text \<calL>} for the two kinds of terms in the
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   461
  equational system, we have
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   462
  
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   463
  \begin{center}
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   464
  @{text "\<calL>(Y, r) \<equiv>"} %
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   465
  @{thm (rhs) L_rhs_item.simps(2)[where X="Y" and r="r", THEN eq_reflection]}\hspace{10mm}
86
6457e668dee5 tuned comments and names in Myhill_1
urbanc
parents: 83
diff changeset
   466
  @{thm L_rhs_item.simps(1)[where r="r", THEN eq_reflection]}
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   467
  \end{center}
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   468
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   469
  \noindent
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   470
  and we can prove for @{text "X\<^isub>2\<^isub>.\<^isub>.\<^isub>n"} that the following equations
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   471
  %
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   472
  \begin{equation}\label{inv1}
83
f438f4dbaada a bit more on the paper
urbanc
parents: 82
diff changeset
   473
  @{text "X\<^isub>i = \<calL>(Y\<^isub>i\<^isub>1, CHAR c\<^isub>i\<^isub>1) \<union> \<dots> \<union> \<calL>(Y\<^isub>i\<^isub>q, CHAR c\<^isub>i\<^isub>q)"}.
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   474
  \end{equation}
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   475
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   476
  \noindent
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   477
  hold. Similarly for @{text "X\<^isub>1"} we can show the following equation
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   478
  %
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   479
  \begin{equation}\label{inv2}
83
f438f4dbaada a bit more on the paper
urbanc
parents: 82
diff changeset
   480
  @{text "X\<^isub>1 = \<calL>(Y\<^isub>i\<^isub>1, CHAR c\<^isub>i\<^isub>1) \<union> \<dots> \<union> \<calL>(Y\<^isub>i\<^isub>p, CHAR c\<^isub>i\<^isub>p) \<union> \<calL>(\<lambda>(EMPTY))"}.
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   481
  \end{equation}
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   482
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   483
  \noindent
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   484
  The reason for adding the @{text \<lambda>}-marker to our initial equational system is 
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   485
  to obtain this equation: it only holds with the marker, since none of 
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   486
  the other terms contain the empty string. The point of the initial equational system is
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   487
  that solving it means we will be able to extract a regular expression for every equivalence class. 
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   488
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   489
  Our representation for the equations in Isabelle/HOL are pairs,
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   490
  where the first component is an equivalence class (a set of strings)
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   491
  and the second component
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   492
  is a set of terms. Given a set of equivalence
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   493
  classes @{text CS}, our initial equational system @{term "Init CS"} is thus 
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   494
  formally defined as
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   495
  %
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   496
  \begin{equation}\label{initcs}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   497
  \mbox{\begin{tabular}{rcl}     
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   498
  @{thm (lhs) Init_rhs_def} & @{text "\<equiv>"} & 
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   499
  @{text "if"}~@{term "[] \<in> X"}\\
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   500
  & & @{text "then"}~@{term "{Trn Y (CHAR c) | Y c. Y \<in> CS \<and> Y \<Turnstile>c\<Rightarrow> X} \<union> {Lam EMPTY}"}\\
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   501
  & & @{text "else"}~@{term "{Trn Y (CHAR c)| Y c. Y \<in> CS \<and> Y \<Turnstile>c\<Rightarrow> X}"}\\
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   502
  @{thm (lhs) Init_def}     & @{text "\<equiv>"} & @{thm (rhs) Init_def}
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   503
  \end{tabular}}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   504
  \end{equation}
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   505
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   506
  
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   507
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   508
  \noindent
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   509
  Because we use sets of terms 
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   510
  for representing the right-hand sides of equations, we can 
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   511
  prove \eqref{inv1} and \eqref{inv2} more concisely as
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   512
  %
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   513
  \begin{lemma}\label{inv}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   514
  If @{thm (prem 1) test} then @{text "X = \<Union> \<calL> ` rhs"}.
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   515
  \end{lemma}
77
63bc9f9d96ba small additions
urbanc
parents: 75
diff changeset
   516
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   517
  \noindent
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   518
  Our proof of Thm.~\ref{myhillnerodeone} will proceed by transforming the
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   519
  initial equational system into one in \emph{solved form} maintaining the invariant
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   520
  in Lem.~\ref{inv}. From the solved form we will be able to read
89
42af13d194c9 a bit more on the paper
urbanc
parents: 88
diff changeset
   521
  off the regular expressions. 
42af13d194c9 a bit more on the paper
urbanc
parents: 88
diff changeset
   522
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   523
  In order to transform an equational system into solved form, we have two 
89
42af13d194c9 a bit more on the paper
urbanc
parents: 88
diff changeset
   524
  operations: one that takes an equation of the form @{text "X = rhs"} and removes
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   525
  any recursive occurences of @{text X} in the @{text rhs} using our variant of Arden's 
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   526
  Lemma. The other operation takes an equation @{text "X = rhs"}
89
42af13d194c9 a bit more on the paper
urbanc
parents: 88
diff changeset
   527
  and substitutes @{text X} throughout the rest of the equational system
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   528
  adjusting the remaining regular expressions approriately. To define this adjustment 
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   529
  we define the \emph{append-operation} taking a term and a regular expression as argument
89
42af13d194c9 a bit more on the paper
urbanc
parents: 88
diff changeset
   530
42af13d194c9 a bit more on the paper
urbanc
parents: 88
diff changeset
   531
  \begin{center}
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   532
  @{thm append_rexp.simps(2)[where X="Y" and r="r\<^isub>1" and rexp="r\<^isub>2", THEN eq_reflection]}\hspace{10mm}
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   533
  @{thm append_rexp.simps(1)[where r="r\<^isub>1" and rexp="r\<^isub>2", THEN eq_reflection]}
89
42af13d194c9 a bit more on the paper
urbanc
parents: 88
diff changeset
   534
  \end{center}
42af13d194c9 a bit more on the paper
urbanc
parents: 88
diff changeset
   535
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   536
  \noindent
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   537
  We lift this operation to entire right-hand sides of equations, written as
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   538
  @{thm (lhs) append_rhs_rexp_def[where rexp="r"]}. With this we can define
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   539
  the \emph{arden-operation} for an equation of the form @{text "X = rhs"} as:
94
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   540
  
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   541
  \begin{center}
94
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   542
  \begin{tabular}{rc@ {\hspace{2mm}}r@ {\hspace{1mm}}l}
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   543
  @{thm (lhs) Arden_def} & @{text "\<equiv>"}~~\mbox{} & \multicolumn{2}{@ {\hspace{-2mm}}l}{@{text "let"}}\\ 
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   544
   & & @{text "rhs' ="} & @{term "rhs - {Trn X r | r. Trn X r \<in> rhs}"} \\
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   545
   & & @{text "r' ="}   & @{term "STAR (\<Uplus> {r. Trn X r \<in> rhs})"}\\
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   546
   & &  \multicolumn{2}{@ {\hspace{-2mm}}l}{@{text "in"}~~@{term "append_rhs_rexp rhs' r'"}}\\ 
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   547
  \end{tabular}
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   548
  \end{center}
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   549
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   550
  \noindent
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   551
  In this definition, we first delete all terms of the form @{text "(X, r)"} from @{text rhs};
94
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   552
  then we calculate the combinded regular expressions for all @{text r} coming 
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   553
  from the deleted @{text "(X, r)"}, and take the @{const STAR} of it;
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   554
  finally we append this regular expression to @{text rhs'}. It can be easily seen 
95
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   555
  that this operation mimics Arden's lemma on the level of equations.  
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   556
  The \emph{substituion-operation} takes an equation
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   557
  of the form @{text "X = xrhs"} and substitutes it into the right-hand side @{text rhs}.
94
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   558
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   559
  \begin{center}
95
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   560
  \begin{tabular}{rc@ {\hspace{2mm}}r@ {\hspace{1mm}}l}
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   561
  @{thm (lhs) Subst_def} & @{text "\<equiv>"}~~\mbox{} & \multicolumn{2}{@ {\hspace{-2mm}}l}{@{text "let"}}\\ 
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   562
   & & @{text "rhs' ="} & @{term "rhs - {Trn X r | r. Trn X r \<in> rhs}"} \\
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   563
   & & @{text "r' ="}   & @{term "\<Uplus> {r. Trn X r \<in> rhs}"}\\
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   564
   & &  \multicolumn{2}{@ {\hspace{-2mm}}l}{@{text "in"}~~@{term "rhs' \<union> append_rhs_rexp xrhs r'"}}\\ 
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   565
  \end{tabular}
94
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   566
  \end{center}
95
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   567
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   568
  \noindent
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   569
  We again delete first all occurence of @{text "(X, r)"} in @{text rhs}; we then calculate
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   570
  the regular expression corresponding to the deleted terms; finally we append this
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   571
  regular expression to @{text "xrhs"} and union it up with @{text rhs'}. When we use
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   572
  the substitution operation we will arrange it so that @{text "xrhs"} does not contain
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   573
  any occurence of @{text X}.
96
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   574
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   575
  With these two operation in place, we can define the operation that removes one equation
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   576
  from an equational systems @{text ES}. The operation @{const Subst_all}
96
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   577
  substitutes an equation @{text "X = xrhs"} throughout an equational system @{text ES}; 
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   578
  @{const Remove} then completely removes such an equation from @{text ES} by substituting 
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   579
  it to the rest of the equational system, but first eliminating all recursive occurences
96
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   580
  of @{text X} by applying @{const Arden} to @{text "xrhs"}.
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   581
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   582
  \begin{center}
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   583
  \begin{tabular}{rcl}
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   584
  @{thm (lhs) Subst_all_def} & @{text "\<equiv>"} & @{thm (rhs) Subst_all_def}\\
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   585
  @{thm (lhs) Remove_def}    & @{text "\<equiv>"} & @{thm (rhs) Remove_def}
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   586
  \end{tabular}
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   587
  \end{center}
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   588
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   589
  \noindent
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   590
  Finially, we can define how an equational system should be solved. For this 
107
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   591
  we will need to iterate the process of eliminating equations until only one equation
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   592
  will be left in the system. However, we not just want to have any equation
107
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   593
  as being the last one, but the one involving the equivalence class for 
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   594
  which we want to calculate the regular 
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   595
  expression. Let us suppose this equivalence class is @{text X}. 
107
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   596
  Since @{text X} is the one to be solved, in every iteration step we have to pick an
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   597
  equation to be eliminated that is different from @{text X}. In this way 
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   598
  @{text X} is kept to the final step. The choice is implemented using Hilbert's choice 
107
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   599
  operator, written @{text SOME} in the definition below.
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   600
  
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   601
  \begin{center}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   602
  \begin{tabular}{rc@ {\hspace{4mm}}r@ {\hspace{1mm}}l}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   603
  @{thm (lhs) Iter_def} & @{text "\<equiv>"}~~\mbox{} & \multicolumn{2}{@ {\hspace{-4mm}}l}{@{text "let"}}\\ 
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   604
   & & @{text "(Y, yrhs) ="} & @{term "SOME (Y, yrhs). (Y, yrhs) \<in> ES \<and> X \<noteq> Y"} \\
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   605
   & &  \multicolumn{2}{@ {\hspace{-4mm}}l}{@{text "in"}~~@{term "Remove ES Y yrhs"}}\\ 
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   606
  \end{tabular}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   607
  \end{center}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   608
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   609
  \noindent
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   610
  The last definition we need applies @{term Iter} over and over again until a condition 
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   611
  @{text COND} is \emph{not} satisfied anymore. The condition states that there
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   612
  are more than one equation left in the equational system @{text ES}. For this
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   613
  we use Isabelle/HOL's @{text while}-operator as follows:
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   614
  
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   615
  \begin{center}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   616
  @{thm Solve_def}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   617
  \end{center}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   618
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   619
  \noindent
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   620
  We are not concerned here with the definition of this operator
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   621
  (see \cite{BerghoferNipkow00}), but note that we eliminate
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   622
  in each @{const Iter}-step a single equation, and therefore 
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   623
  have a well-founded termination order by taking the cardinality 
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   624
  of the equational system @{text ES}. This enables us to prove
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   625
  properties about our definition of @{const Solve} when we ``call'' it with
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   626
  the equivalence class @{text X} and the initial equational system 
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   627
  @{term "Init (UNIV // \<approx>A)"} from
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   628
  \eqref{initcs} using the principle:
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   629
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   630
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   631
  \begin{center}
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   632
  \begin{tabular}{l}
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   633
  @{term "invariant (Init (UNIV // \<approx>A))"} \\
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   634
  @{term "\<forall>ES. invariant ES \<and> Cond ES \<longrightarrow> invariant (Iter X ES)"}\\
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   635
  @{term "\<forall>ES. invariant ES \<and> Cond ES \<longrightarrow> card (Iter X ES) < card ES"}\\
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   636
  @{term "\<forall>ES. invariant ES \<and> \<not> Cond ES \<longrightarrow> P ES"}\\
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   637
  \hline
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   638
  \multicolumn{1}{c}{@{term "P (Solve X (Init (UNIV // \<approx>A)))"}}
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   639
  \end{tabular}
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   640
  \end{center}
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   641
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   642
  \noindent
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   643
  This principle states that given an invariant (which we will specify below) 
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   644
  we can prove a property
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   645
  @{text "P"} involving @{const Solve}. For this we have to discharge the following
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   646
  proof obligations: first the
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   647
  initial equational system satisfies the invariant; second that the iteration
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   648
  step @{text "Iter"} preserves the the invariant as long as the condition @{term Cond} holds;
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   649
  third that @{text "Iter"} decreases the termination order, and fourth that
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   650
  once the condition does not hold anymore then the property @{text P} must hold.
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   651
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   652
  The property @{term P} in our proof will state that @{term "Solve X (Init (UNIV // \<approx>A))"}
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   653
  returns with a single equation @{text "X = xrhs"} for some @{text "xrhs"}, and
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   654
  that this equational system still satisfies the invariant. In order to get
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   655
  the proof through, the invariant is composed of the following six properties:
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   656
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   657
  \begin{center}
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   658
  \begin{tabular}{@ {}rcl@ {\hspace{-13mm}}l @ {}}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   659
  @{text "invariant ES"} & @{text "\<equiv>"} &
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   660
      @{term "finite ES"} & @{text "(finiteness)"}\\
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   661
  & @{text "\<and>"} & @{thm (rhs) finite_rhs_def} & @{text "(finiteness rhs)"}\\
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   662
  & @{text "\<and>"} & @{text "\<forall>(X, rhs)\<in>ES. X = \<Union>\<calL> ` rhs"} & @{text "(soundness)"}\\
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   663
  & @{text "\<and>"} & @{thm (rhs) distinct_equas_def}\\
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   664
  &             &  & @{text "(distinctness)"}\\
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   665
  & @{text "\<and>"} & @{thm (rhs) ardenable_def} & @{text "(ardenable)"}\\   
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   666
  & @{text "\<and>"} & @{thm (rhs) valid_eqs_def} & @{text "(validity)"}\\
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   667
  \end{tabular}
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   668
  \end{center}
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   669
 
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   670
  \noindent
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   671
  The first two ensure that the equational system is always finite (number of equations
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   672
  and number of terms in each equation); the second makes sure the ``meaning'' of the 
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   673
  equations is preserved under our transformations. The other properties are a bit more
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   674
  technical, but are needed to get our proof through. Distinctness states that every
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   675
  equation in the system is distinct; @{text "ardenable"} ensures that we can always
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   676
  apply the arden operation. For this we have to make sure that in every @{text rhs}, 
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   677
  terms of the form @{term "Trn Y r"} cannot have a regular expresion that matches the
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   678
  empty string. Therefore @{text "rhs_nonempty"} is defined as
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   679
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   680
  \begin{center}
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   681
  @{thm rhs_nonempty_def}
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   682
  \end{center}
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   683
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   684
  \noindent
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   685
  The last property states that every @{text rhs} can only contain equivalence classes
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   686
  for which there is an equation. Therefore @{text lhss} is just the set containing 
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   687
  the first components of an equational system,
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   688
  while @{text "rhss"} collects all equivalence classes @{text X} in the terms of the 
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   689
  form @{term "Trn X r"} (that means @{thm (lhs) lhss_def}~@{text "\<equiv> {X | (X, rhs) \<in> ES}"} 
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   690
  and @{thm (lhs) rhss_def}~@{text "\<equiv> {X | (X, r) \<in> rhs}"}).
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   691
  
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   692
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   693
  It is straightforward to prove that the inital equational system satisfies the
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   694
  invariant.
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   695
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   696
  \begin{lemma}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   697
  @{thm[mode=IfThen] Init_ES_satisfies_invariant}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   698
  \end{lemma}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   699
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   700
  \begin{proof}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   701
  Finiteness is given by the assumption and the way how we set up the 
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   702
  initial equational system. Soundness is proved in Lem.~\ref{inv}. Distinctness
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   703
  follows from the fact that the equivalence classes are disjoint. The ardenable
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   704
  property also follows from the setup of the equational system as does 
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   705
  validity.\qed
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   706
  \end{proof}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   707
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   708
  \begin{lemma}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   709
  @{thm[mode=IfThen] iteration_step_invariant[where xrhs="rhs"]}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   710
  \end{lemma}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   711
107
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   712
  \begin{proof} 
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   713
  ???
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   714
  \end{proof}
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   715
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   716
  \begin{lemma}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   717
  @{thm[mode=IfThen] iteration_step_measure[simplified (no_asm), where xrhs="rhs"]}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   718
  \end{lemma}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   719
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   720
  \begin{proof}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   721
  By assumption we know that @{text "ES"} is finite and has more than one element.
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   722
  Therefore there must be an element @{term "(Y, yrhs) \<in> ES"} with 
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   723
  @{term "(Y, yrhs) \<noteq> (X, rhs)"}. Using the distictness property we can infer
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   724
  that @{term "Y \<noteq> X"}. We further know that @{text "Remove ES Y yrhs"}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   725
  removes the equation @{text "Y = yrhs"} from the system, and therefore 
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   726
  the cardinality of @{const Iter} strictly decreases.\qed
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   727
  \end{proof}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   728
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   729
  \begin{lemma}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   730
  If @{thm (prem 1) Solve} and @{thm (prem 2) Solve} then there exists
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   731
  a @{text rhs} such that  @{term "Solve X (Init (UNIV // \<approx>A)) = {(X, rhs)}"}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   732
  and @{term "invariant {(X, rhs)}"}.
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   733
  \end{lemma}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   734
107
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   735
  \begin{proof} 
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   736
  ???
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   737
  \end{proof}
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   738
106
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   739
  \noindent
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   740
  With this lemma in place we can show that for every equivalence class in @{term "UNIV // \<approx>A"}
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   741
  there exists a regular expression.
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   742
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   743
  \begin{lemma}\label{every_eqcl_has_reg}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   744
  @{thm[mode=IfThen] every_eqcl_has_reg}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   745
  \end{lemma}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   746
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   747
  \begin{proof}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   748
  By the preceeding Lemma, we know that there exists a @{text "rhs"} such
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   749
  that @{term "Solve X (Init (UNIV // \<approx>A))"} returns the equation @{text "X = rhs"},
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   750
  and that the invariant holds for this equation. That means we 
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   751
  know @{text "X = \<Union>\<calL> ` rhs"}. We further know that
109
79b37ef9505f minor updated
urbanc
parents: 108
diff changeset
   752
  this is equal to \mbox{@{text "\<Union>\<calL> ` (Arden X rhs)"}} using the properties of the 
106
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   753
  invariant and Lem.~???. Using the validity property for the equation @{text "X = rhs"},
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   754
  we can infer that @{term "rhss rhs \<subseteq> {X}"} and because the arden operation
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   755
  removes that @{text X} from @{text rhs}, that @{term "rhss (Arden X rhs) = {}"}.
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   756
  That means @{term "Arden X rhs"} can only consist of terms of the form @{term "Lam r"}.
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   757
  So we can collect those (finitely many) regular expressions and have @{term "X = L (\<Uplus>rs)"}.
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   758
  With this we can conclude the proof.\qed
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   759
  \end{proof}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   760
106
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   761
  \noindent
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   762
  Lem.~\ref{every_eqcl_has_reg} allows us to finally give a proof for the first direction
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   763
  of the Myhill-Nerode theorem.
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   764
106
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   765
  \begin{proof}[of Thm.~\ref{myhillnerodeone}]
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   766
  By Lem.~\ref{every_eqcl_has_reg} we know that there exists a regular language for
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   767
  every equivalence class in @{term "UNIV // \<approx>A"}. Since @{text "finals A"} is
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   768
  a subset of  @{term "UNIV // \<approx>A"}, we also know that for every equvalence class
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   769
  in @{term "finals A"} there exists a regular language. Moreover by assumption 
106
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   770
  we know that @{term "finals A"} must be finite, and therefore there must be a finite
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   771
  set of regular expressions @{text "rs"} such that
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   772
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   773
  \begin{center}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   774
  @{term "\<Union>(finals A) = L (\<Uplus>rs)"}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   775
  \end{center}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   776
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   777
  \noindent
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   778
  Since the left-hand side is equal to @{text A}, we can use @{term "\<Uplus>rs"} 
107
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   779
  as the regular expression that is needed in the theorem.\qed
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   780
  \end{proof}
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   781
*}
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   782
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   783
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   784
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   785
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   786
section {* Myhill-Nerode, Second Part *}
39
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   787
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   788
text {*
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   789
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   790
  \begin{theorem}
39
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   791
  Given @{text "r"} is a regular expressions, then @{thm rexp_imp_finite}.
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   792
  \end{theorem}  
39
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   793
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   794
  \begin{proof}
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   795
  By induction on the structure of @{text r}. The cases for @{const NULL}, @{const EMPTY}
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   796
  and @{const CHAR} are straightforward, because we can easily establish
39
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   797
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   798
  \begin{center}
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   799
  \begin{tabular}{l}
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   800
  @{thm quot_null_eq}\\
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   801
  @{thm quot_empty_subset}\\
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   802
  @{thm quot_char_subset}
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   803
  \end{tabular}
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   804
  \end{center}
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   805
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   806
  \end{proof}
109
79b37ef9505f minor updated
urbanc
parents: 108
diff changeset
   807
79b37ef9505f minor updated
urbanc
parents: 108
diff changeset
   808
79b37ef9505f minor updated
urbanc
parents: 108
diff changeset
   809
  @{thm tag_str_ALT_def[where ?L1.0="A" and ?L2.0="B"]}
79b37ef9505f minor updated
urbanc
parents: 108
diff changeset
   810
79b37ef9505f minor updated
urbanc
parents: 108
diff changeset
   811
  @{thm tag_str_SEQ_def[where ?L1.0="A" and ?L2.0="B"]}
79b37ef9505f minor updated
urbanc
parents: 108
diff changeset
   812
 
79b37ef9505f minor updated
urbanc
parents: 108
diff changeset
   813
  @{thm tag_str_STAR_def[where ?L1.0="A"]}
39
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   814
*}
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   815
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   816
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   817
section {* Conclusion and Related Work *}
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   818
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   819
text {*
109
79b37ef9505f minor updated
urbanc
parents: 108
diff changeset
   820
  In this paper we took the view that a regular language is one where there exists 
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   821
  a regular expression that matches all its strings. For us it was important to find 
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   822
  out how far we can push this point of view. Having formalised the Myhill-Nerode
109
79b37ef9505f minor updated
urbanc
parents: 108
diff changeset
   823
  theorem means pushed quite far. Having the Myhill-Nerode theorem means we can 
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   824
  formalise much of the textbook results in this subject. 
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   825
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   826
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   827
*}
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   828
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   829
24
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
   830
(*<*)
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
   831
end
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
   832
(*>*)