Journal/Paper.thy
author urbanc
Tue, 26 Jul 2011 18:12:07 +0000
changeset 174 2b414a8a7132
parent 173 d371536861bc
child 175 edc642266a82
permissions -rw-r--r--
more on the section about derivatives
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
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
     3
imports "../Closures" 
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 
162
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
    16
  "Append_rexp2 r_itm r \<equiv> Append_rexp r r_itm"
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
    17
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
    18
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    19
abbreviation
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    20
  "pow" (infixl "\<up>" 100)
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    21
where
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    22
  "A \<up> n \<equiv> A ^^ n"
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    23
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    24
syntax (latex output)
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    25
  "_Collect" :: "pttrn => bool => 'a set"              ("(1{_ | _})")
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    26
  "_CollectIn" :: "pttrn => 'a set => bool => 'a set"   ("(1{_ \<in> _ | _})")
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    27
translations
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    28
  "_Collect p P"      <= "{p. P}"
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    29
  "_Collect p P"      <= "{p|xs. P}"
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    30
  "_CollectIn p A P"  <= "{p : A. P}"
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    31
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
    32
abbreviation "ZERO \<equiv> Zero"
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
    33
abbreviation "ONE \<equiv> One"
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
    34
abbreviation "ATOM \<equiv> Atom"
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
    35
abbreviation "PLUS \<equiv> Plus"
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
    36
abbreviation "TIMES \<equiv> Times"
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    37
abbreviation "STAR \<equiv> Star"
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    38
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    39
39
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
    40
notation (latex output)
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
    41
  str_eq_rel ("\<approx>\<^bsub>_\<^esub>") and
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
    42
  str_eq ("_ \<approx>\<^bsub>_\<^esub> _") and
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    43
  conc (infixr "\<cdot>" 100) and
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    44
  star ("_\<^bsup>\<star>\<^esup>") and
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
    45
  pow ("_\<^bsup>_\<^esup>" [100, 100] 100) and
58
0d4d5bb321dc a little bit in the introduction
urbanc
parents: 54
diff changeset
    46
  Suc ("_+1" [100] 100) and
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
    47
  quotient ("_ \<^raw:\ensuremath{\!\sslash\!}> _" [90, 90] 90) and
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
    48
  REL ("\<approx>") and
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
    49
  UPLUS ("_ \<^raw:\ensuremath{\uplus}> _" [90, 90] 90) and
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    50
  lang ("\<^raw:\ensuremath{\cal{L}}>'(_')" [0] 101) and
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
    51
  lang_trm ("\<^raw:\ensuremath{\cal{L}}>'(_')" [0] 101) and
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
    52
  Lam ("\<lambda>'(_')" [100] 100) and 
89
42af13d194c9 a bit more on the paper
urbanc
parents: 88
diff changeset
    53
  Trn ("'(_, _')" [100, 100] 100) and 
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
    54
  EClass ("\<lbrakk>_\<rbrakk>\<^bsub>_\<^esub>" [100, 100] 100) and
88
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
    55
  transition ("_ \<^raw:\ensuremath{\stackrel{\text{>_\<^raw:}}{\Longmapsto}}> _" [100, 100, 100] 100) and
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
    56
  Setalt ("\<^raw:\ensuremath{\bigplus}>_" [1000] 999) and
162
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
    57
  Append_rexp2 ("_ \<^raw:\ensuremath{\triangleleft}> _" [100, 100] 100) and
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
    58
  Append_rexp_rhs ("_ \<^raw:\ensuremath{\triangleleft}> _" [100, 100] 50) and
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    59
  
119
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
    60
  uminus ("\<^raw:\ensuremath{\overline{>_\<^raw:}}>" [100] 100) and
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
    61
  tag_str_Plus ("tag\<^bsub>PLUS\<^esub> _ _" [100, 100] 100) and
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
    62
  tag_str_Plus ("tag\<^bsub>PLUS\<^esub> _ _ _" [100, 100, 100] 100) and
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    63
  tag_str_Times ("tag\<^isub>S\<^isub>E\<^isub>Q _ _" [100, 100] 100) and
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    64
  tag_str_Times ("tag\<^isub>S\<^isub>E\<^isub>Q _ _ _" [100, 100, 100] 100) and
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    65
  tag_str_Star ("tag\<^isub>S\<^isub>T\<^isub>A\<^isub>R _" [100] 100) and
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
    66
  tag_str_Star ("tag\<^isub>S\<^isub>T\<^isub>A\<^isub>R _ _" [100, 100] 100) and
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
    67
  tag_eq_rel ("\<^raw:$\threesim$>\<^bsub>_\<^esub>") and
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
    68
  Delta ("\<Delta>'(_')") and
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
    69
  nullable ("\<delta>'(_')")
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
    70
119
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
    71
lemma meta_eq_app:
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
    72
  shows "f \<equiv> \<lambda>x. g x \<Longrightarrow> f x \<equiv> g x"
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
    73
  by auto
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
    74
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    75
lemma conc_def':
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    76
  "A \<cdot> B = {s\<^isub>1 @ s\<^isub>2 | s\<^isub>1 s\<^isub>2. s\<^isub>1 \<in> A \<and> s\<^isub>2 \<in> B}"
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    77
unfolding conc_def by simp
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    78
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    79
lemma conc_Union_left: 
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    80
  shows "B \<cdot> (\<Union>n. A \<up> n) = (\<Union>n. B \<cdot> (A \<up> n))"
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    81
unfolding conc_def by auto
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    82
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    83
lemma test:
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    84
  assumes X_in_eqs: "(X, rhs) \<in> Init (UNIV // \<approx>A)"
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    85
  shows "X = \<Union> (lang_trm `  rhs)"
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    86
using assms l_eq_r_in_eqs by (simp)
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    87
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
    88
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
    89
(* THEOREMS *)
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
    90
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
    91
notation (Rule output)
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
    92
  "==>"  ("\<^raw:\mbox{}\inferrule{\mbox{>_\<^raw:}}>\<^raw:{\mbox{>_\<^raw:}}>")
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
    93
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
    94
syntax (Rule output)
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
    95
  "_bigimpl" :: "asms \<Rightarrow> prop \<Rightarrow> prop"
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
    96
  ("\<^raw:\mbox{}\inferrule{>_\<^raw:}>\<^raw:{\mbox{>_\<^raw:}}>")
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
    97
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
    98
  "_asms" :: "prop \<Rightarrow> asms \<Rightarrow> asms" 
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
    99
  ("\<^raw:\mbox{>_\<^raw:}\\>/ _")
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   100
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   101
  "_asm" :: "prop \<Rightarrow> asms" ("\<^raw:\mbox{>_\<^raw:}>")
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   102
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   103
notation (Axiom output)
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   104
  "Trueprop"  ("\<^raw:\mbox{}\inferrule{\mbox{}}{\mbox{>_\<^raw:}}>")
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   105
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   106
notation (IfThen output)
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   107
  "==>"  ("\<^raw:{\normalsize{}>If\<^raw:\,}> _/ \<^raw:{\normalsize \,>then\<^raw:\,}>/ _.")
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   108
syntax (IfThen output)
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   109
  "_bigimpl" :: "asms \<Rightarrow> prop \<Rightarrow> prop"
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   110
  ("\<^raw:{\normalsize{}>If\<^raw:\,}> _ /\<^raw:{\normalsize \,>then\<^raw:\,}>/ _.")
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   111
  "_asms" :: "prop \<Rightarrow> asms \<Rightarrow> asms" ("\<^raw:\mbox{>_\<^raw:}> /\<^raw:{\normalsize \,>and\<^raw:\,}>/ _")
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   112
  "_asm" :: "prop \<Rightarrow> asms" ("\<^raw:\mbox{>_\<^raw:}>")
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   113
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   114
notation (IfThenNoBox output)
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   115
  "==>"  ("\<^raw:{\normalsize{}>If\<^raw:\,}> _/ \<^raw:{\normalsize \,>then\<^raw:\,}>/ _.")
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   116
syntax (IfThenNoBox output)
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   117
  "_bigimpl" :: "asms \<Rightarrow> prop \<Rightarrow> prop"
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   118
  ("\<^raw:{\normalsize{}>If\<^raw:\,}> _ /\<^raw:{\normalsize \,>then\<^raw:\,}>/ _.")
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   119
  "_asms" :: "prop \<Rightarrow> asms \<Rightarrow> asms" ("_ /\<^raw:{\normalsize \,>and\<^raw:\,}>/ _")
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   120
  "_asm" :: "prop \<Rightarrow> asms" ("_")
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   121
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   122
24
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
   123
(*>*)
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
   124
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   125
24
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
   126
section {* Introduction *}
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
   127
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
   128
text {*
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   129
  \noindent
58
0d4d5bb321dc a little bit in the introduction
urbanc
parents: 54
diff changeset
   130
  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
   131
  Science, with many beautiful theorems and many useful algorithms. There is a
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   132
  wide range of textbooks on this subject, many of which are aimed at students
115
c5f138b5fc88 added comment from Larry
urbanc
parents: 114
diff changeset
   133
  and contain very detailed `pencil-and-paper' proofs
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   134
  (e.g.~\cite{Kozen97, HopcroftUllman69}). It seems natural to exercise theorem provers by
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   135
  formalising the theorems and by verifying formally the algorithms.  A
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   136
  popular choice for a theorem prover would be one based on Higher-Order Logic
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   137
  (HOL), for example HOL4, HOLlight and Isabelle/HOL. For our development 
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   138
  we will use the latter. One distinguishing feature of HOL is it's
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   139
  type system, which is based on Church's Simple Theory of Types \cite{Church40}.  The
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   140
  limitations of this type system are one of the underlying motivations for the 
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   141
  work presented in this paper.
59
fc35eb54fdc9 more on the intro
urbanc
parents: 58
diff changeset
   142
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   143
  The typical approach to regular languages is to
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   144
  introduce finite automata and then define everything in terms of them.  For
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   145
  example, a regular language is normally defined as one whose strings are
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   146
  recognised by a finite deterministic automaton. This approach has many
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   147
  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
   148
  regular languages are closed under complementation: one just has to exchange
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   149
  the accepting and non-accepting states in the corresponding automaton to
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   150
  obtain an automaton for the complement language.  The problem, however, lies
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   151
  with formalising such reasoning in a HOL-based theorem prover. Automata are
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   152
  built up from states and transitions that need to be represented as graphs,
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   153
  matrices or functions, none of which can be defined as an inductive
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   154
  datatype.
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   155
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   156
  In case of graphs and matrices, this means we have to build our own
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   157
  reasoning infrastructure for them, as neither Isabelle/HOL nor HOL4 nor
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   158
  HOLlight support them with libraries. Even worse, reasoning about graphs and
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   159
  matrices can be a real hassle in HOL-based theorem provers, because
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   160
  we have to be able to combine automata.  Consider for
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   161
  example the operation of sequencing two automata, say $A_1$ and $A_2$, by
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   162
  connecting the accepting states of $A_1$ to the initial state of $A_2$:
159
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
   163
  %  
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   164
60
fb08f41ca33d a bit more tuning on the introduction
urbanc
parents: 59
diff changeset
   165
  \begin{center}
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   166
  \begin{tabular}{ccc}
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   167
  \begin{tikzpicture}[scale=0.9]
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   168
  %\draw[step=2mm] (-1,-1) grid (1,1);
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   169
  
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   170
  \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
   171
  \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
   172
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   173
  \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
   174
  \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
   175
  
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   176
  \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
   177
  \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
   178
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   179
  \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
   180
  \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
   181
  \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
   182
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   183
  \draw (-0.6,0.0) node {\footnotesize$A_1$};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   184
  \draw ( 0.6,0.0) node {\footnotesize$A_2$};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   185
  \end{tikzpicture}
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   186
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   187
  & 
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   188
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   189
  \raisebox{1.1mm}{\bf\Large$\;\;\;\Rightarrow\,\;\;$}
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   190
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   191
  &
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   192
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   193
  \begin{tikzpicture}[scale=0.9]
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   194
  %\draw[step=2mm] (-1,-1) grid (1,1);
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   195
  
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   196
  \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
   197
  \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
   198
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   199
  \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
   200
  \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
   201
  
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   202
  \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
   203
  \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
   204
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   205
  \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
   206
  \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
   207
  \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
   208
  
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   209
  \draw (C) to [very thick, bend left=45] (B);
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   210
  \draw (D) to [very thick, bend right=45] (B);
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   211
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   212
  \draw (-0.6,0.0) node {\footnotesize$A_1$};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   213
  \draw ( 0.6,0.0) node {\footnotesize$A_2$};
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   214
  \end{tikzpicture}
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   215
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   216
  \end{tabular}
60
fb08f41ca33d a bit more tuning on the introduction
urbanc
parents: 59
diff changeset
   217
  \end{center}
fb08f41ca33d a bit more tuning on the introduction
urbanc
parents: 59
diff changeset
   218
fb08f41ca33d a bit more tuning on the introduction
urbanc
parents: 59
diff changeset
   219
  \noindent
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   220
  On `paper' or a theorem prover based on set-theory, we can define the corresponding 
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   221
  graph in terms of the disjoint 
88
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   222
  union of the state nodes. Unfortunately in HOL, the standard definition for disjoint 
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   223
  union, namely 
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   224
  %
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   225
  \begin{equation}\label{disjointunion}
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   226
  @{text "A\<^isub>1 \<uplus> A\<^isub>2 \<equiv> {(1, x) | x \<in> A\<^isub>1} \<union> {(2, y) | y \<in> A\<^isub>2}"}
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   227
  \end{equation}
60
fb08f41ca33d a bit more tuning on the introduction
urbanc
parents: 59
diff changeset
   228
61
070f543e2560 more to the intro
urbanc
parents: 60
diff changeset
   229
  \noindent
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   230
  changes the type---the disjoint union is not a set, but a set of
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   231
  pairs. Using this definition for disjoint union means we do not have a
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   232
  single type for automata. As a result we will not be able to define a regular
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   233
  language as one for which there exists an automaton that recognises all its
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   234
  strings, since there is no type quantification available in HOL (unlike in Coq, for
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   235
  example).
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   236
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   237
  An alternative, which provides us with a single type for automata, is to give every 
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   238
  state node an identity, for example a natural
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   239
  number, and then be careful to rename these identities apart whenever
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   240
  connecting two automata. This results in clunky proofs
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   241
  establishing that properties are invariant under renaming. Similarly,
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   242
  connecting two automata represented as matrices results in very adhoc
66
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   243
  constructions, which are not pleasant to reason about.
828ea293b61f more on the introduction
urbanc
parents: 61
diff changeset
   244
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   245
  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
   246
  problems as with graphs.  Composing, for example, two non-deterministic automata in parallel
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   247
  requires also the formalisation of disjoint unions. Nipkow \cite{Nipkow98} 
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   248
  dismisses for this the option of using identities, because it leads according to 
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   249
  him to ``messy proofs''. He
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   250
  opts for a variant of \eqref{disjointunion} using bit lists, but writes 
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   251
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   252
  \begin{quote}
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   253
  \it%
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   254
  \begin{tabular}{@ {}l@ {}p{0.88\textwidth}@ {}}
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   255
  `` & All lemmas appear obvious given a picture of the composition of automata\ldots
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   256
       Yet their proofs require a painful amount of detail.''
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   257
  \end{tabular}
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   258
  \end{quote}
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   259
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   260
  \noindent
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   261
  and
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   262
  
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   263
  \begin{quote}
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   264
  \it%
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   265
  \begin{tabular}{@ {}l@ {}p{0.88\textwidth}@ {}}
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   266
  `` & If the reader finds the above treatment in terms of bit lists revoltingly
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   267
       concrete, I cannot disagree. A more abstract approach is clearly desirable.''
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   268
  \end{tabular}
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   269
  \end{quote}
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   270
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   271
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   272
  \noindent
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   273
  Moreover, it is not so clear how to conveniently impose a finiteness
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   274
  condition upon functions in order to represent \emph{finite} automata. The
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   275
  best is probably to resort to more advanced reasoning frameworks, such as
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   276
  \emph{locales} or \emph{type classes}, which are \emph{not} available in all
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   277
  HOL-based theorem provers.
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   278
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   279
  Because of these problems to do with representing automata, there seems to
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   280
  be no substantial formalisation of automata theory and regular languages
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   281
  carried out in HOL-based theorem provers. Nipkow \cite{Nipkow98} establishes
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   282
  the link between regular expressions and automata in the context of
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   283
  lexing. Berghofer and Reiter \cite{BerghoferReiter09} formalise automata
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   284
  working over bit strings in the context of Presburger arithmetic.  The only
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   285
  larger formalisations of automata theory are carried out in Nuprl
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   286
  \cite{Constable00} and in Coq \cite{Filliatre97}.
162
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
   287
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   288
  One might also consider the Myhill-Nerode theorem as well-worn stock
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   289
  material where everything is clear. However, paper proofs of this theorem
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   290
  often involve subtle side-conditions which are easily overlooked, but which
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   291
  make formal reasoning rather painful. For example Kozen's proof requires
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   292
  that the automata do not have inaccessible states \cite{Kozen97}. Another
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   293
  subtle side-condition is completeness of automata: 
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   294
  automata need to have total transition functions and at most one `sink'
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   295
  state from which there is no connection to a final state (Brozowski mentions
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   296
  this side-condition in connection with state complexity
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   297
  \cite{Brozowski10}). Such side-conditions mean that if we define a regular
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   298
  language as one for which there exists \emph{any} finite automaton, then we
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   299
  need a lemma which ensures that another equivalent can be found satisfying the
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   300
  side-condition. Unfortunately, such `little' and `obvious' lemmas make 
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   301
  formalisations of results in automata theory hair-pulling experiences.
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   302
58
0d4d5bb321dc a little bit in the introduction
urbanc
parents: 54
diff changeset
   303
  
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   304
  In this paper, we will not attempt to formalise automata theory in
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   305
  Isabelle/HOL nor will we attempt to formalise automata proofs from the
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   306
  literature, but take a different approach to regular languages than is
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   307
  usually taken. Instead of defining a regular language as one where there
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   308
  exists an automaton that recognises all strings of the language, we define a
82
14b12b5de6d3 added coments about functions
urbanc
parents: 79
diff changeset
   309
  regular language as:
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   310
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   311
  \begin{dfntn}
77
63bc9f9d96ba small additions
urbanc
parents: 75
diff changeset
   312
  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
   313
  strings of @{text "A"}.
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   314
  \end{dfntn}
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   315
  
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   316
  \noindent
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   317
  The reason is that regular expressions, unlike graphs, matrices and
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   318
  functions, can be easily defined as an inductive datatype. No side-conditions
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   319
  will be needed for regular expressions. Moreover, a reasoning infrastructure 
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   320
  (like induction and recursion) comes for free in HOL-based theorem provers. 
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   321
  This has recently been exploited in HOL4 with a formalisation of
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   322
  regular expression matching based on derivatives \cite{OwensSlind08} and
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   323
  with an equivalence checker for regular expressions in Isabelle/HOL
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   324
  \cite{KraussNipkow11}.  The main purpose of this paper is to show that a central
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   325
  result about regular languages---the Myhill-Nerode theorem---can be
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   326
  recreated by only using regular expressions. This theorem gives necessary
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   327
  and sufficient conditions for when a language is regular. As a corollary of
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   328
  this theorem we can easily establish the usual closure properties, including
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   329
  complementation, for regular languages.\medskip
61
070f543e2560 more to the intro
urbanc
parents: 60
diff changeset
   330
  
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   331
  \noindent 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   332
  {\bf Contributions:} There is an extensive literature on regular
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   333
  languages.  To our best knowledge, our proof of the Myhill-Nerode theorem is
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   334
  the first that is based on regular expressions, only. The part of this
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   335
  theorem stating that finitely many partitions imply regularity of the
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   336
  language is proved by an argument about solving equational sytems.  This
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   337
  argument appears to be folklore. For the other part, we give two proofs: one
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   338
  direct proof using certain tagging-functions, and another indirect proof
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   339
  using Antimirov's partial derivatives \cite{Antimirov95}. Again to our best
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   340
  knowledge, the tagging-functions have not been used before to establish the
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   341
  Myhill-Nerode theorem. Derivatives of regular expressions have been used
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   342
  extensively in the literature, unlike partial derivatives. However, partial
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   343
  derivatives are more suitable in the context of the Myhill-Nerode theorem,
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   344
  since it is easier to establish formally their finiteness result.
24
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
   345
*}
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
   346
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   347
section {* Preliminaries *}
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   348
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   349
text {*
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   350
  \noindent
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   351
  Strings in Isabelle/HOL are lists of characters with the \emph{empty string}
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   352
  being represented by the empty list, written @{term "[]"}.  \emph{Languages}
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   353
  are sets of strings. The language containing all strings is written in
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   354
  Isabelle/HOL as @{term "UNIV::string set"}. The concatenation of two languages 
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   355
  is written @{term "A \<cdot> B"} and a language raised to the power @{text n} is written 
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   356
  @{term "A \<up> n"}. They are defined as usual
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   357
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   358
  \begin{center}
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   359
  @{thm conc_def'[THEN eq_reflection, where A1="A" and B1="B"]}
58
0d4d5bb321dc a little bit in the introduction
urbanc
parents: 54
diff changeset
   360
  \hspace{7mm}
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   361
  @{thm lang_pow.simps(1)[THEN eq_reflection, where A1="A"]}
58
0d4d5bb321dc a little bit in the introduction
urbanc
parents: 54
diff changeset
   362
  \hspace{7mm}
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   363
  @{thm lang_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
   364
  \end{center}
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   365
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   366
  \noindent
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   367
  where @{text "@"} is the list-append operation. The Kleene-star of a language @{text A}
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   368
  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
   369
  we will make use of the following properties of these constructions.
58
0d4d5bb321dc a little bit in the introduction
urbanc
parents: 54
diff changeset
   370
  
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   371
  \begin{prpstn}\label{langprops}\mbox{}\\
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   372
  \begin{tabular}{@ {}ll}
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   373
  (i)   & @{thm star_cases}     \\ 
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   374
  (ii)  & @{thm[mode=IfThen] pow_length}\\
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   375
  (iii) & @{thm conc_Union_left} \\ 
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   376
  \end{tabular}
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   377
  \end{prpstn}
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   378
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   379
  \noindent
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   380
  In @{text "(ii)"} we use the notation @{term "length s"} for the length of a
156
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   381
  string; this property states that if \mbox{@{term "[] \<notin> A"}} then the lengths of
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   382
  the strings in @{term "A \<up> (Suc n)"} must be longer than @{text n}.  We omit
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   383
  the proofs for these properties, but invite the reader to consult our
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
   384
  formalisation.\footnote{Available at \url{http://www4.in.tum.de/~urbanc/regexp.html}}
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   385
90
97b783438316 added an example
urbanc
parents: 89
diff changeset
   386
  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
   387
  equivalence relation @{term REL} is @{term "A // REL"}. We will write 
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   388
  @{text "\<lbrakk>x\<rbrakk>\<^isub>\<approx>"} for the equivalence class defined 
156
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   389
  as \mbox{@{text "{y | y \<approx> x}"}}.
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   390
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   391
51
6cfb92de4654 some tuning of the paper
urbanc
parents: 50
diff changeset
   392
  Central to our proof will be the solution of equational systems
156
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   393
  involving equivalence classes of languages. For this we will use Arden's Lemma \cite{Brzozowski64},
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   394
  which solves equations of the form @{term "X = A \<cdot> X \<union> B"} provided
115
c5f138b5fc88 added comment from Larry
urbanc
parents: 114
diff changeset
   395
  @{term "[] \<notin> A"}. However we will need the following `reverse' 
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   396
  version of Arden's Lemma (`reverse' in the sense of changing the order of @{term "A \<cdot> X"} to
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   397
  \mbox{@{term "X \<cdot> A"}}).
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   398
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   399
  \begin{lmm}[Reverse Arden's Lemma]\label{arden}\mbox{}\\
86
6457e668dee5 tuned comments and names in Myhill_1
urbanc
parents: 83
diff changeset
   400
  If @{thm (prem 1) arden} then
115
c5f138b5fc88 added comment from Larry
urbanc
parents: 114
diff changeset
   401
  @{thm (lhs) arden} if and only if
86
6457e668dee5 tuned comments and names in Myhill_1
urbanc
parents: 83
diff changeset
   402
  @{thm (rhs) arden}.
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   403
  \end{lmm}
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   404
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   405
  \begin{proof}
86
6457e668dee5 tuned comments and names in Myhill_1
urbanc
parents: 83
diff changeset
   406
  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
   407
  that @{thm (lhs) arden} holds. From Prop.~\ref{langprops}@{text "(i)"} 
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   408
  we have @{term "A\<star> = {[]} \<union> A \<cdot> A\<star>"},
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   409
  which is equal to @{term "A\<star> = {[]} \<union> A\<star> \<cdot> A"}. Adding @{text B} to both 
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   410
  sides gives @{term "B \<cdot> A\<star> = B \<cdot> ({[]} \<union> A\<star> \<cdot> A)"}, whose right-hand side
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   411
  is equal to @{term "(B \<cdot> A\<star>) \<cdot> A \<union> B"}. This completes this direction. 
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   412
86
6457e668dee5 tuned comments and names in Myhill_1
urbanc
parents: 83
diff changeset
   413
  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
   414
  on @{text n}, we can establish the property
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   415
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   416
  \begin{center}
86
6457e668dee5 tuned comments and names in Myhill_1
urbanc
parents: 83
diff changeset
   417
  @{text "(*)"}\hspace{5mm} @{thm (concl) arden_helper}
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   418
  \end{center}
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   419
  
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   420
  \noindent
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   421
  Using this property we can show that @{term "B \<cdot> (A \<up> n) \<subseteq> X"} holds for
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   422
  all @{text n}. From this we can infer @{term "B \<cdot> A\<star> \<subseteq> X"} using the definition
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   423
  of @{text "\<star>"}.
51
6cfb92de4654 some tuning of the paper
urbanc
parents: 50
diff changeset
   424
  For the inclusion in the other direction we assume a string @{text s}
134
08afbed1c8c7 chunhan's comments
urbanc
parents: 133
diff changeset
   425
  with length @{text k} is an element in @{text X}. Since @{thm (prem 1) arden}
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   426
  we know by Prop.~\ref{langprops}@{text "(ii)"} that 
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   427
  @{term "s \<notin> X \<cdot> (A \<up> Suc k)"} since its length is only @{text k}
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   428
  (the strings in @{term "X \<cdot> (A \<up> Suc k)"} are all longer). 
53
da85feadb8e3 small typo
urbanc
parents: 52
diff changeset
   429
  From @{text "(*)"} it follows then that
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   430
  @{term s} must be an element in @{term "(\<Union>m\<in>{0..k}. B \<cdot> (A \<up> m))"}. This in turn
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   431
  implies that @{term s} is in @{term "(\<Union>n. B \<cdot> (A \<up> n))"}. Using Prop.~\ref{langprops}@{text "(iii)"} 
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   432
  this is equal to @{term "B \<cdot> A\<star>"}, as we needed to show.
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   433
  \end{proof}
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   434
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   435
  \noindent
88
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   436
  Regular expressions are defined as the inductive datatype
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   437
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   438
  \begin{center}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   439
  @{text r} @{text "::="}
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   440
  @{term ZERO}\hspace{1.5mm}@{text"|"}\hspace{1.5mm} 
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   441
  @{term ONE}\hspace{1.5mm}@{text"|"}\hspace{1.5mm} 
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   442
  @{term "ATOM c"}\hspace{1.5mm}@{text"|"}\hspace{1.5mm} 
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   443
  @{term "TIMES r r"}\hspace{1.5mm}@{text"|"}\hspace{1.5mm} 
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   444
  @{term "PLUS r r"}\hspace{1.5mm}@{text"|"}\hspace{1.5mm} 
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   445
  @{term "STAR r"}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   446
  \end{center}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   447
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   448
  \noindent
88
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   449
  and the language matched by a regular expression is defined as
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   450
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   451
  \begin{center}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   452
  \begin{tabular}{c@ {\hspace{10mm}}c}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   453
  \begin{tabular}{rcl}
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   454
  @{thm (lhs) lang.simps(1)} & @{text "\<equiv>"} & @{thm (rhs) lang.simps(1)}\\
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   455
  @{thm (lhs) lang.simps(2)} & @{text "\<equiv>"} & @{thm (rhs) lang.simps(2)}\\
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   456
  @{thm (lhs) lang.simps(3)[where a="c"]} & @{text "\<equiv>"} & @{thm (rhs) lang.simps(3)[where a="c"]}\\
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   457
  \end{tabular}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   458
  &
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   459
  \begin{tabular}{rcl}
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   460
  @{thm (lhs) lang.simps(4)[where ?r="r\<^isub>1" and ?s="r\<^isub>2"]} & @{text "\<equiv>"} &
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   461
       @{thm (rhs) lang.simps(4)[where ?r="r\<^isub>1" and ?s="r\<^isub>2"]}\\
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   462
  @{thm (lhs) lang.simps(5)[where ?r="r\<^isub>1" and ?s="r\<^isub>2"]} & @{text "\<equiv>"} &
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   463
       @{thm (rhs) lang.simps(5)[where ?r="r\<^isub>1" and ?s="r\<^isub>2"]}\\
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   464
  @{thm (lhs) lang.simps(6)[where r="r"]} & @{text "\<equiv>"} &
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   465
      @{thm (rhs) lang.simps(6)[where r="r"]}\\
67
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   466
  \end{tabular}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   467
  \end{tabular}
7478be786f87 more intro
urbanc
parents: 66
diff changeset
   468
  \end{center}
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   469
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   470
  Given a finite set of regular expressions @{text rs}, we will make use of the operation of generating 
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
   471
  a regular expression that matches the union of all languages of @{text rs}. We only need to know the 
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
   472
  existence
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   473
  of such a regular expression and therefore we use Isabelle/HOL's @{const "fold_graph"} and Hilbert's
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   474
  @{text "\<epsilon>"} to define @{term "\<Uplus>rs"}. This operation, roughly speaking, folds @{const PLUS} over the 
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   475
  set @{text rs} with @{const ZERO} for the empty set. We can prove that for a finite set @{text rs}
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   476
  %
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   477
  \begin{equation}\label{uplus}
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   478
  \mbox{@{thm (lhs) folds_alt_simp} @{text "= \<Union> (\<calL> ` rs)"}}
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   479
  \end{equation}
88
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   480
1436fc451bb9 added something about Setalt and folds
urbanc
parents: 86
diff changeset
   481
  \noindent
90
97b783438316 added an example
urbanc
parents: 89
diff changeset
   482
  holds, whereby @{text "\<calL> ` rs"} stands for the 
97b783438316 added an example
urbanc
parents: 89
diff changeset
   483
  image of the set @{text rs} under function @{text "\<calL>"}.
50
32bff8310071 revised proof of Ardens lemma
urbanc
parents: 39
diff changeset
   484
*}
39
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   485
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
   486
133
3ab755a96cef minor change
urbanc
parents: 132
diff changeset
   487
section {* The Myhill-Nerode Theorem, First Part *}
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   488
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   489
text {*
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   490
  \footnote{Folklore: Henzinger (arden-DFA-regexp.pdf); Hofmann}
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   491
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   492
  \noindent
77
63bc9f9d96ba small additions
urbanc
parents: 75
diff changeset
   493
  The key definition in the Myhill-Nerode theorem is the
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   494
  \emph{Myhill-Nerode relation}, which states that w.r.t.~a language two 
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   495
  strings are related, provided there is no distinguishing extension in this
154
7c68b9ad4486 implemented most suggestions from the reviewers
urbanc
parents: 149
diff changeset
   496
  language. This can be defined as a tertiary relation.
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   497
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   498
  \begin{dfntn}[Myhill-Nerode Relation]\label{myhillneroderel} 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   499
  Given a language @{text A}, two strings @{text x} and
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
   500
  @{text y} are Myhill-Nerode related provided
117
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
   501
  \begin{center}
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   502
  @{thm str_eq_def[simplified str_eq_rel_def Pair_Collect]}
117
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
   503
  \end{center}
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   504
  \end{dfntn}
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   505
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   506
  \noindent
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   507
  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
   508
  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
   509
  equivalence classes. To illustrate this quotient construction, let us give a simple 
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   510
  example: consider the regular language containing just
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   511
  the string @{text "[c]"}. The relation @{term "\<approx>({[c]})"} partitions @{text UNIV}
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   512
  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
   513
  as follows
97b783438316 added an example
urbanc
parents: 89
diff changeset
   514
  
97b783438316 added an example
urbanc
parents: 89
diff changeset
   515
  \begin{center}
97b783438316 added an example
urbanc
parents: 89
diff changeset
   516
  @{text "X\<^isub>1 = {[]}"}\hspace{5mm}
97b783438316 added an example
urbanc
parents: 89
diff changeset
   517
  @{text "X\<^isub>2 = {[c]}"}\hspace{5mm}
97b783438316 added an example
urbanc
parents: 89
diff changeset
   518
  @{text "X\<^isub>3 = UNIV - {[], [c]}"}
97b783438316 added an example
urbanc
parents: 89
diff changeset
   519
  \end{center}
97b783438316 added an example
urbanc
parents: 89
diff changeset
   520
97b783438316 added an example
urbanc
parents: 89
diff changeset
   521
  One direction of the Myhill-Nerode theorem establishes 
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   522
  that if there are finitely many equivalence classes, like in the example above, then 
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   523
  the language is regular. In our setting we therefore have to show:
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   524
  
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   525
  \begin{thrm}\label{myhillnerodeone}
96
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   526
  @{thm[mode=IfThen] Myhill_Nerode1}
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   527
  \end{thrm}
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   528
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   529
  \noindent
90
97b783438316 added an example
urbanc
parents: 89
diff changeset
   530
  To prove this theorem, we first define the set @{term "finals A"} as those equivalence
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   531
  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
   532
  %
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   533
  \begin{equation} 
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   534
  @{thm finals_def}
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   535
  \end{equation}
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   536
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   537
  \noindent
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
   538
  In our running example, @{text "X\<^isub>2"} is the only 
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
   539
  equivalence class in @{term "finals {[c]}"}.
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   540
  It is straightforward to show that in general 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   541
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   542
  \begin{center}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   543
  @{thm lang_is_union_of_finals}\hspace{15mm} 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   544
  @{thm finals_in_partitions} 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   545
  \end{center}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   546
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   547
  \noindent
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   548
  hold. 
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   549
  Therefore if we know that there exists a regular expression for every
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   550
  equivalence class in \mbox{@{term "finals A"}} (which by assumption must be
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   551
  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
   552
  that matches every string in @{text A}.
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   553
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   554
90
97b783438316 added an example
urbanc
parents: 89
diff changeset
   555
  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
   556
  regular expression for \emph{every} equivalence class, not just the ones 
77
63bc9f9d96ba small additions
urbanc
parents: 75
diff changeset
   557
  in @{term "finals A"}. We
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   558
  first define the notion of \emph{one-character-transition} between 
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   559
  two equivalence classes
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   560
  %
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   561
  \begin{equation} 
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   562
  @{thm transition_def}
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   563
  \end{equation}
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   564
71
426070e68b21 more on the paper
urbanc
parents: 70
diff changeset
   565
  \noindent
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   566
  which means that if we concatenate the character @{text c} to the end of all 
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   567
  strings in the equivalence class @{text Y}, we obtain a subset of 
77
63bc9f9d96ba small additions
urbanc
parents: 75
diff changeset
   568
  @{text X}. Note that we do not define an automaton here, we merely relate two sets
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   569
  (with the help of a character). In our concrete example we have 
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   570
  @{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
   571
  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
   572
  
156
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   573
  Next we construct an \emph{initial equational system} that
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   574
  contains an equation for each equivalence class. We first give
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   575
  an informal description of this construction. Suppose we have 
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   576
  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
   577
  contains the empty string @{text "[]"} (since equivalence classes are disjoint).
77
63bc9f9d96ba small additions
urbanc
parents: 75
diff changeset
   578
  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
   579
  
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   580
  \begin{center}
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   581
  \begin{tabular}{rcl}
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   582
  @{text "X\<^isub>1"} & @{text "="} & @{text "(Y\<^isub>1\<^isub>1, ATOM c\<^isub>1\<^isub>1) + \<dots> + (Y\<^isub>1\<^isub>p, ATOM c\<^isub>1\<^isub>p) + \<lambda>(ONE)"} \\
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   583
  @{text "X\<^isub>2"} & @{text "="} & @{text "(Y\<^isub>2\<^isub>1, ATOM c\<^isub>2\<^isub>1) + \<dots> + (Y\<^isub>2\<^isub>o, ATOM c\<^isub>2\<^isub>o)"} \\
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   584
  & $\vdots$ \\
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   585
  @{text "X\<^isub>n"} & @{text "="} & @{text "(Y\<^isub>n\<^isub>1, ATOM c\<^isub>n\<^isub>1) + \<dots> + (Y\<^isub>n\<^isub>q, ATOM c\<^isub>n\<^isub>q)"}\\
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   586
  \end{tabular}
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   587
  \end{center}
70
8ab3a06577cf slightly more on the paper
urbanc
parents: 67
diff changeset
   588
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   589
  \noindent
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   590
  where the terms @{text "(Y\<^isub>i\<^isub>j, ATOM c\<^isub>i\<^isub>j)"}
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   591
  stand for all transitions @{term "Y\<^isub>i\<^isub>j \<Turnstile>c\<^isub>i\<^isub>j\<Rightarrow>
159
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
   592
  X\<^isub>i"}. 
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
   593
  %The intuition behind the equational system is that every 
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
   594
  %equation @{text "X\<^isub>i = rhs\<^isub>i"} in this system
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
   595
  %corresponds roughly to a state of an automaton whose name is @{text X\<^isub>i} and its predecessor states 
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
   596
  %are the @{text "Y\<^isub>i\<^isub>j"}; the @{text "c\<^isub>i\<^isub>j"} are the labels of the transitions from these 
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
   597
  %predecessor states to @{text X\<^isub>i}. 
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
   598
  There can only be
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   599
  finitely many terms of the form @{text "(Y\<^isub>i\<^isub>j, ATOM c\<^isub>i\<^isub>j)"} in a right-hand side 
156
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   600
  since by assumption there are only finitely many
159
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
   601
  equivalence classes and only finitely many characters.
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   602
  The term @{text "\<lambda>(ONE)"} in the first equation acts as a marker for the initial state, that
159
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
   603
  is the equivalence class
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   604
  containing @{text "[]"}.\footnote{Note that we mark, roughly speaking, the
115
c5f138b5fc88 added comment from Larry
urbanc
parents: 114
diff changeset
   605
  single `initial' state in the equational system, which is different from
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   606
  the method by Brzozowski \cite{Brzozowski64}, where he marks the
115
c5f138b5fc88 added comment from Larry
urbanc
parents: 114
diff changeset
   607
  `terminal' states. We are forced to set up the equational system in our
c5f138b5fc88 added comment from Larry
urbanc
parents: 114
diff changeset
   608
  way, because the Myhill-Nerode relation determines the `direction' of the
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
   609
  transitions---the successor `state' of an equivalence class @{text Y} can
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
   610
  be reached by adding a character to the end of @{text Y}. This is also the
156
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   611
  reason why we have to use our reverse version of Arden's Lemma.}
159
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
   612
  %In our initial equation system there can only be
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   613
  %finitely many terms of the form @{text "(Y\<^isub>i\<^isub>j, ATOM c\<^isub>i\<^isub>j)"} in a right-hand side 
159
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
   614
  %since by assumption there are only finitely many
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
   615
  %equivalence classes and only finitely many characters. 
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   616
  Overloading the function @{text \<calL>} for the two kinds of terms in the
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   617
  equational system, we have
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   618
  
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   619
  \begin{center}
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   620
  @{text "\<calL>(Y, r) \<equiv>"} %
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   621
  @{thm (rhs) lang_trm.simps(2)[where X="Y" and r="r", THEN eq_reflection]}\hspace{10mm}
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
   622
  @{thm lang_trm.simps(1)[where r="r", THEN eq_reflection]}
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   623
  \end{center}
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   624
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   625
  \noindent
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   626
  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
   627
  %
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   628
  \begin{equation}\label{inv1}
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   629
  @{text "X\<^isub>i = \<calL>(Y\<^isub>i\<^isub>1, ATOM c\<^isub>i\<^isub>1) \<union> \<dots> \<union> \<calL>(Y\<^isub>i\<^isub>q, ATOM c\<^isub>i\<^isub>q)"}.
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   630
  \end{equation}
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   631
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   632
  \noindent
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   633
  hold. Similarly for @{text "X\<^isub>1"} we can show the following equation
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   634
  %
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   635
  \begin{equation}\label{inv2}
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   636
  @{text "X\<^isub>1 = \<calL>(Y\<^isub>1\<^isub>1, ATOM c\<^isub>1\<^isub>1) \<union> \<dots> \<union> \<calL>(Y\<^isub>1\<^isub>p, ATOM c\<^isub>1\<^isub>p) \<union> \<calL>(\<lambda>(ONE))"}.
75
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   637
  \end{equation}
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   638
d63baacbdb16 parts of the 3 section
urbanc
parents: 71
diff changeset
   639
  \noindent
160
ea2e5acbfe4a added comments from Chunhan
urbanc
parents: 159
diff changeset
   640
  holds. The reason for adding the @{text \<lambda>}-marker to our initial equational system is 
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   641
  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
   642
  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
   643
  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
   644
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   645
  Our representation for the equations in Isabelle/HOL are pairs,
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   646
  where the first component is an equivalence class (a set of strings)
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   647
  and the second component
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   648
  is a set of terms. Given a set of equivalence
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   649
  classes @{text CS}, our initial equational system @{term "Init CS"} is thus 
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   650
  formally defined as
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   651
  %
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   652
  \begin{equation}\label{initcs}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   653
  \mbox{\begin{tabular}{rcl}     
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   654
  @{thm (lhs) Init_rhs_def} & @{text "\<equiv>"} & 
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   655
  @{text "if"}~@{term "[] \<in> X"}\\
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   656
  & & @{text "then"}~@{term "{Trn Y (ATOM c) | Y c. Y \<in> CS \<and> Y \<Turnstile>c\<Rightarrow> X} \<union> {Lam ONE}"}\\
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
   657
  & & @{text "else"}~@{term "{Trn Y (ATOM c)| Y c. Y \<in> CS \<and> Y \<Turnstile>c\<Rightarrow> X}"}\\
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   658
  @{thm (lhs) Init_def}     & @{text "\<equiv>"} & @{thm (rhs) Init_def}
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   659
  \end{tabular}}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   660
  \end{equation}
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   661
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   662
  
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   663
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   664
  \noindent
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   665
  Because we use sets of terms 
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   666
  for representing the right-hand sides of equations, we can 
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   667
  prove \eqref{inv1} and \eqref{inv2} more concisely as
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   668
  %
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   669
  \begin{lmm}\label{inv}
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   670
  If @{thm (prem 1) test} then @{text "X = \<Union> \<calL> ` rhs"}.
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   671
  \end{lmm}
77
63bc9f9d96ba small additions
urbanc
parents: 75
diff changeset
   672
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   673
  \noindent
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   674
  Our proof of Thm.~\ref{myhillnerodeone} will proceed by transforming the
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   675
  initial equational system into one in \emph{solved form} maintaining the invariant
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   676
  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
   677
  off the regular expressions. 
42af13d194c9 a bit more on the paper
urbanc
parents: 88
diff changeset
   678
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   679
  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
   680
  operations: one that takes an equation of the form @{text "X = rhs"} and removes
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   681
  any recursive occurrences of @{text X} in the @{text rhs} using our variant of Arden's 
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   682
  Lemma. The other operation takes an equation @{text "X = rhs"}
89
42af13d194c9 a bit more on the paper
urbanc
parents: 88
diff changeset
   683
  and substitutes @{text X} throughout the rest of the equational system
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   684
  adjusting the remaining regular expressions appropriately. To define this adjustment 
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   685
  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
   686
42af13d194c9 a bit more on the paper
urbanc
parents: 88
diff changeset
   687
  \begin{center}
162
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
   688
  @{thm Append_rexp.simps(2)[where X="Y" and r="r\<^isub>1" and rexp="r\<^isub>2", THEN eq_reflection]}\hspace{10mm}
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
   689
  @{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
   690
  \end{center}
42af13d194c9 a bit more on the paper
urbanc
parents: 88
diff changeset
   691
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
   692
  \noindent
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   693
  We lift this operation to entire right-hand sides of equations, written as
162
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
   694
  @{thm (lhs) Append_rexp_rhs_def[where rexp="r"]}. With this we can define
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   695
  the \emph{arden-operation} for an equation of the form @{text "X = rhs"} as:
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   696
  %
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   697
  \begin{equation}\label{arden_def}
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   698
  \mbox{\begin{tabular}{rc@ {\hspace{2mm}}r@ {\hspace{1mm}}l}
94
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   699
  @{thm (lhs) Arden_def} & @{text "\<equiv>"}~~\mbox{} & \multicolumn{2}{@ {\hspace{-2mm}}l}{@{text "let"}}\\ 
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   700
   & & @{text "rhs' ="} & @{term "rhs - {Trn X r | r. Trn X r \<in> rhs}"} \\
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   701
   & & @{text "r' ="}   & @{term "STAR (\<Uplus> {r. Trn X r \<in> rhs})"}\\
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   702
   & &  \multicolumn{2}{@ {\hspace{-2mm}}l}{@{text "in"}~~@{term "append_rhs_rexp rhs' r'"}}\\ 
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   703
  \end{tabular}}
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   704
  \end{equation}
93
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   705
2aa3756dcc9f more on the paper
urbanc
parents: 92
diff changeset
   706
  \noindent
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   707
  In this definition, we first delete all terms of the form @{text "(X, r)"} from @{text rhs};
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   708
  then we calculate the combined regular expressions for all @{text r} coming 
94
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   709
  from the deleted @{text "(X, r)"}, and take the @{const STAR} of it;
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   710
  finally we append this regular expression to @{text rhs'}. It can be easily seen 
156
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   711
  that this operation mimics Arden's Lemma on the level of equations. To ensure
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   712
  the non-emptiness condition of Arden's Lemma we say that a right-hand side is
154
7c68b9ad4486 implemented most suggestions from the reviewers
urbanc
parents: 149
diff changeset
   713
  @{text ardenable} provided
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   714
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   715
  \begin{center}
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   716
  @{thm ardenable_def}
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   717
  \end{center}
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   718
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   719
  \noindent
156
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   720
  This allows us to prove a version of Arden's Lemma on the level of equations.
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   721
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   722
  \begin{lmm}\label{ardenable}
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   723
  Given an equation @{text "X = rhs"}.
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   724
  If @{text "X = \<Union>\<calL> ` rhs"},
115
c5f138b5fc88 added comment from Larry
urbanc
parents: 114
diff changeset
   725
  @{thm (prem 2) Arden_keeps_eq}, and
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   726
  @{thm (prem 3) Arden_keeps_eq}, then
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
   727
  @{text "X = \<Union>\<calL> ` (Arden X rhs)"}.
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   728
  \end{lmm}
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   729
  
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   730
  \noindent
156
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   731
  Our @{text ardenable} condition is slightly stronger than needed for applying Arden's Lemma,
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   732
  but we can still ensure that it holds troughout our algorithm of transforming equations
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   733
  into solved form. The \emph{substitution-operation} takes an equation
95
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   734
  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
   735
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   736
  \begin{center}
95
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   737
  \begin{tabular}{rc@ {\hspace{2mm}}r@ {\hspace{1mm}}l}
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   738
  @{thm (lhs) Subst_def} & @{text "\<equiv>"}~~\mbox{} & \multicolumn{2}{@ {\hspace{-2mm}}l}{@{text "let"}}\\ 
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   739
   & & @{text "rhs' ="} & @{term "rhs - {Trn X r | r. Trn X r \<in> rhs}"} \\
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   740
   & & @{text "r' ="}   & @{term "\<Uplus> {r. Trn X r \<in> rhs}"}\\
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   741
   & &  \multicolumn{2}{@ {\hspace{-2mm}}l}{@{text "in"}~~@{term "rhs' \<union> append_rhs_rexp xrhs r'"}}\\ 
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   742
  \end{tabular}
94
5b12cd0a3b3c latest on the paper
urbanc
parents: 93
diff changeset
   743
  \end{center}
95
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   744
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   745
  \noindent
134
08afbed1c8c7 chunhan's comments
urbanc
parents: 133
diff changeset
   746
  We again delete first all occurrences of @{text "(X, r)"} in @{text rhs}; we then calculate
95
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   747
  the regular expression corresponding to the deleted terms; finally we append this
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   748
  regular expression to @{text "xrhs"} and union it up with @{text rhs'}. When we use
9540c2f2ea77 more things
urbanc
parents: 94
diff changeset
   749
  the substitution operation we will arrange it so that @{text "xrhs"} does not contain
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   750
  any occurrence of @{text X}.
96
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   751
134
08afbed1c8c7 chunhan's comments
urbanc
parents: 133
diff changeset
   752
  With these two operations in place, we can define the operation that removes one equation
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   753
  from an equational systems @{text ES}. The operation @{const Subst_all}
96
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   754
  substitutes an equation @{text "X = xrhs"} throughout an equational system @{text ES}; 
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   755
  @{const Remove} then completely removes such an equation from @{text ES} by substituting 
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   756
  it to the rest of the equational system, but first eliminating all recursive occurrences
96
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   757
  of @{text X} by applying @{const Arden} to @{text "xrhs"}.
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   758
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   759
  \begin{center}
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   760
  \begin{tabular}{rcl}
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   761
  @{thm (lhs) Subst_all_def} & @{text "\<equiv>"} & @{thm (rhs) Subst_all_def}\\
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   762
  @{thm (lhs) Remove_def}    & @{text "\<equiv>"} & @{thm (rhs) Remove_def}
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   763
  \end{tabular}
3b9deda4f459 simplified a bit the proof
urbanc
parents: 95
diff changeset
   764
  \end{center}
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   765
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   766
  \noindent
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   767
  Finally, we can define how an equational system should be solved. For this 
107
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   768
  we will need to iterate the process of eliminating equations until only one equation
154
7c68b9ad4486 implemented most suggestions from the reviewers
urbanc
parents: 149
diff changeset
   769
  will be left in the system. However, we do not just want to have any equation
107
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   770
  as being the last one, but the one involving the equivalence class for 
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   771
  which we want to calculate the regular 
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   772
  expression. Let us suppose this equivalence class is @{text X}. 
107
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   773
  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
   774
  equation to be eliminated that is different from @{text X}. In this way 
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   775
  @{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
   776
  operator, written @{text SOME} in the definition below.
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   777
  
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   778
  \begin{center}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   779
  \begin{tabular}{rc@ {\hspace{4mm}}r@ {\hspace{1mm}}l}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   780
  @{thm (lhs) Iter_def} & @{text "\<equiv>"}~~\mbox{} & \multicolumn{2}{@ {\hspace{-4mm}}l}{@{text "let"}}\\ 
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   781
   & & @{text "(Y, yrhs) ="} & @{term "SOME (Y, yrhs). (Y, yrhs) \<in> ES \<and> X \<noteq> Y"} \\
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   782
   & &  \multicolumn{2}{@ {\hspace{-4mm}}l}{@{text "in"}~~@{term "Remove ES Y yrhs"}}\\ 
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   783
  \end{tabular}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   784
  \end{center}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   785
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   786
  \noindent
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   787
  The last definition we need applies @{term Iter} over and over until a condition 
159
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
   788
  @{text Cond} is \emph{not} satisfied anymore. This condition states that there
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   789
  are more than one equation left in the equational system @{text ES}. To solve
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   790
  an equational system we use Isabelle/HOL's @{text while}-operator as follows:
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   791
  
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   792
  \begin{center}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   793
  @{thm Solve_def}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   794
  \end{center}
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   795
101
d3fe0597080a updated paper
urbanc
parents: 100
diff changeset
   796
  \noindent
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   797
  We are not concerned here with the definition of this operator
115
c5f138b5fc88 added comment from Larry
urbanc
parents: 114
diff changeset
   798
  (see Berghofer and Nipkow \cite{BerghoferNipkow00}), but note that we eliminate
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   799
  in each @{const Iter}-step a single equation, and therefore 
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   800
  have a well-founded termination order by taking the cardinality 
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   801
  of the equational system @{text ES}. This enables us to prove
115
c5f138b5fc88 added comment from Larry
urbanc
parents: 114
diff changeset
   802
  properties about our definition of @{const Solve} when we `call' it with
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   803
  the equivalence class @{text X} and the initial equational system 
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   804
  @{term "Init (UNIV // \<approx>A)"} from
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   805
  \eqref{initcs} using the principle:
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   806
  %
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   807
  \begin{equation}\label{whileprinciple}
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   808
  \mbox{\begin{tabular}{l}
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   809
  @{term "invariant (Init (UNIV // \<approx>A))"} \\
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   810
  @{term "\<forall>ES. invariant ES \<and> Cond ES \<longrightarrow> invariant (Iter X ES)"}\\
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   811
  @{term "\<forall>ES. invariant ES \<and> Cond ES \<longrightarrow> card (Iter X ES) < card ES"}\\
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   812
  @{term "\<forall>ES. invariant ES \<and> \<not> Cond ES \<longrightarrow> P ES"}\\
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   813
  \hline
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   814
  \multicolumn{1}{c}{@{term "P (Solve X (Init (UNIV // \<approx>A)))"}}
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   815
  \end{tabular}}
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   816
  \end{equation}
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   817
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   818
  \noindent
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   819
  This principle states that given an invariant (which we will specify below) 
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   820
  we can prove a property
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   821
  @{text "P"} involving @{const Solve}. For this we have to discharge the following
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   822
  proof obligations: first the
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   823
  initial equational system satisfies the invariant; second the iteration
154
7c68b9ad4486 implemented most suggestions from the reviewers
urbanc
parents: 149
diff changeset
   824
  step @{text "Iter"} preserves the invariant as long as the condition @{term Cond} holds;
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   825
  third @{text "Iter"} decreases the termination order, and fourth that
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   826
  once the condition does not hold anymore then the property @{text P} must hold.
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   827
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   828
  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
   829
  returns with a single equation @{text "X = xrhs"} for some @{text "xrhs"}, and
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   830
  that this equational system still satisfies the invariant. In order to get
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   831
  the proof through, the invariant is composed of the following six properties:
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   832
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   833
  \begin{center}
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   834
  \begin{tabular}{@ {}rcl@ {\hspace{-13mm}}l @ {}}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   835
  @{text "invariant ES"} & @{text "\<equiv>"} &
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   836
      @{term "finite ES"} & @{text "(finiteness)"}\\
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   837
  & @{text "\<and>"} & @{thm (rhs) finite_rhs_def} & @{text "(finiteness rhs)"}\\
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   838
  & @{text "\<and>"} & @{text "\<forall>(X, rhs)\<in>ES. X = \<Union>\<calL> ` rhs"} & @{text "(soundness)"}\\
162
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
   839
  & @{text "\<and>"} & @{thm (rhs) distinctness_def}\\
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   840
  &             &  & @{text "(distinctness)"}\\
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   841
  & @{text "\<and>"} & @{thm (rhs) ardenable_all_def} & @{text "(ardenable)"}\\   
162
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
   842
  & @{text "\<and>"} & @{thm (rhs) validity_def} & @{text "(validity)"}\\
103
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   843
  \end{tabular}
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   844
  \end{center}
f460d5f75cb5 updated
urbanc
parents: 101
diff changeset
   845
 
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   846
  \noindent
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   847
  The first two ensure that the equational system is always finite (number of equations
160
ea2e5acbfe4a added comments from Chunhan
urbanc
parents: 159
diff changeset
   848
  and number of terms in each equation); the third makes sure the `meaning' of the 
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   849
  equations is preserved under our transformations. The other properties are a bit more
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   850
  technical, but are needed to get our proof through. Distinctness states that every
154
7c68b9ad4486 implemented most suggestions from the reviewers
urbanc
parents: 149
diff changeset
   851
  equation in the system is distinct. @{text Ardenable} ensures that we can always
156
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   852
  apply the @{text Arden} operation. 
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   853
  The last property states that every @{text rhs} can only contain equivalence classes
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   854
  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
   855
  the first components of an equational system,
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   856
  while @{text "rhss"} collects all equivalence classes @{text X} in the terms of the 
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
   857
  form @{term "Trn X r"}. That means formally @{thm (lhs) lhss_def}~@{text "\<equiv> {X | (X, rhs) \<in> ES}"} 
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   858
  and @{thm (lhs) rhss_def}~@{text "\<equiv> {X | (X, r) \<in> rhs}"}.
108
212bfa431fa5 filled details in one place
urbanc
parents: 107
diff changeset
   859
  
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   860
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   861
  It is straightforward to prove that the initial equational system satisfies the
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   862
  invariant.
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   863
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   864
  \begin{lmm}\label{invzero}
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   865
  @{thm[mode=IfThen] Init_ES_satisfies_invariant}
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   866
  \end{lmm}
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   867
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   868
  \begin{proof}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   869
  Finiteness is given by the assumption and the way how we set up the 
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   870
  initial equational system. Soundness is proved in Lem.~\ref{inv}. Distinctness
154
7c68b9ad4486 implemented most suggestions from the reviewers
urbanc
parents: 149
diff changeset
   871
  follows from the fact that the equivalence classes are disjoint. The @{text ardenable}
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   872
  property also follows from the setup of the initial equational system, as does 
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   873
  validity.
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   874
  \end{proof}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   875
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   876
  \noindent
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   877
  Next we show that @{text Iter} preserves the invariant.
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   878
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   879
  \begin{lmm}\label{iterone}
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   880
  @{thm[mode=IfThen] iteration_step_invariant[where xrhs="rhs"]}
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   881
  \end{lmm}
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   882
107
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   883
  \begin{proof} 
156
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   884
  The argument boils down to choosing an equation @{text "Y = yrhs"} to be eliminated
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   885
  and to show that @{term "Subst_all (ES - {(Y, yrhs)}) Y (Arden Y yrhs)"} 
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   886
  preserves the invariant.
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   887
  We prove this as follows:
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   888
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   889
  \begin{center}
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   890
  @{text "\<forall> ES."} @{thm (prem 1) Subst_all_satisfies_invariant} implies
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   891
  @{thm (concl) Subst_all_satisfies_invariant}
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   892
  \end{center}
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   893
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   894
  \noindent
156
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   895
  Finiteness is straightforward, as the @{const Subst} and @{const Arden} operations 
116
342983676c8f included comments by Chunhan
urbanc
parents: 115
diff changeset
   896
  keep the equational system finite. These operations also preserve soundness 
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   897
  and distinctness (we proved soundness for @{const Arden} in Lem.~\ref{ardenable}).
154
7c68b9ad4486 implemented most suggestions from the reviewers
urbanc
parents: 149
diff changeset
   898
  The property @{text ardenable} is clearly preserved because the append-operation
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   899
  cannot make a regular expression to match the empty string. Validity is
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   900
  given because @{const Arden} removes an equivalence class from @{text yrhs}
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   901
  and then @{const Subst_all} removes @{text Y} from the equational system.
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
   902
  Having proved the implication above, we can instantiate @{text "ES"} with @{text "ES - {(Y, yrhs)}"}
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   903
  which matches with our proof-obligation of @{const "Subst_all"}. Since
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
   904
  \mbox{@{term "ES = ES - {(Y, yrhs)} \<union> {(Y, yrhs)}"}}, we can use the assumption 
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   905
  to complete the proof.
107
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   906
  \end{proof}
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   907
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   908
  \noindent
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   909
  We also need the fact that @{text Iter} decreases the termination measure.
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   910
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   911
  \begin{lmm}\label{itertwo}
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   912
  @{thm[mode=IfThen] iteration_step_measure[simplified (no_asm), where xrhs="rhs"]}
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   913
  \end{lmm}
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   914
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   915
  \begin{proof}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   916
  By assumption we know that @{text "ES"} is finite and has more than one element.
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   917
  Therefore there must be an element @{term "(Y, yrhs) \<in> ES"} with 
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   918
  @{term "(Y, yrhs) \<noteq> (X, rhs)"}. Using the distinctness property we can infer
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   919
  that @{term "Y \<noteq> X"}. We further know that @{text "Remove ES Y yrhs"}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   920
  removes the equation @{text "Y = yrhs"} from the system, and therefore 
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   921
  the cardinality of @{const Iter} strictly decreases.
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   922
  \end{proof}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   923
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   924
  \noindent
134
08afbed1c8c7 chunhan's comments
urbanc
parents: 133
diff changeset
   925
  This brings us to our property we want to establish for @{text Solve}.
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   926
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   927
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   928
  \begin{lmm}
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   929
  If @{thm (prem 1) Solve} and @{thm (prem 2) Solve} then there exists
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   930
  a @{text rhs} such that  @{term "Solve X (Init (UNIV // \<approx>A)) = {(X, rhs)}"}
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   931
  and @{term "invariant {(X, rhs)}"}.
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   932
  \end{lmm}
104
5bd73aa805a7 updated paper
urbanc
parents: 103
diff changeset
   933
107
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   934
  \begin{proof} 
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   935
  In order to prove this lemma using \eqref{whileprinciple}, we have to use a slightly
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   936
  stronger invariant since Lem.~\ref{iterone} and \ref{itertwo} have the precondition 
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   937
  that @{term "(X, rhs) \<in> ES"} for some @{text rhs}. This precondition is needed
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   938
  in order to choose in the @{const Iter}-step an equation that is not \mbox{@{term "X = rhs"}}.
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   939
  Therefore our invariant cannot be just @{term "invariant ES"}, but must be 
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   940
  @{term "invariant ES \<and> (\<exists>rhs. (X, rhs) \<in> ES)"}. By assumption 
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   941
  @{thm (prem 2) Solve} and Lem.~\ref{invzero}, the more general invariant holds for
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   942
  the initial equational system. This is premise 1 of~\eqref{whileprinciple}.
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   943
  Premise 2 is given by Lem.~\ref{iterone} and the fact that @{const Iter} might
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   944
  modify the @{text rhs} in the equation @{term "X = rhs"}, but does not remove it.
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   945
  Premise 3 of~\eqref{whileprinciple} is by Lem.~\ref{itertwo}. Now in premise 4
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   946
  we like to show that there exists a @{text rhs} such that @{term "ES = {(X, rhs)}"}
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   947
  and that @{text "invariant {(X, rhs)}"} holds, provided the condition @{text "Cond"}
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   948
  does not holds. By the stronger invariant we know there exists such a @{text "rhs"}
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   949
  with @{term "(X, rhs) \<in> ES"}. Because @{text Cond} is not true, we know the cardinality
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
   950
  of @{text ES} is @{text 1}. This means @{text "ES"} must actually be the set @{text "{(X, rhs)}"},
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   951
  for which the invariant holds. This allows us to conclude that 
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   952
  @{term "Solve X (Init (UNIV // \<approx>A)) = {(X, rhs)}"} and @{term "invariant {(X, rhs)}"} hold,
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   953
  as needed.
107
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   954
  \end{proof}
6f4f9b7b9891 updated paper
urbanc
parents: 106
diff changeset
   955
106
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   956
  \noindent
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   957
  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
   958
  there exists a regular expression.
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   959
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   960
  \begin{lmm}\label{every_eqcl_has_reg}
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   961
  @{thm[mode=IfThen] every_eqcl_has_reg}
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
   962
  \end{lmm}
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   963
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   964
  \begin{proof}
138
2dfe13bc1443 three typos
urbanc
parents: 137
diff changeset
   965
  By the preceding lemma, we know that there exists a @{text "rhs"} such
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   966
  that @{term "Solve X (Init (UNIV // \<approx>A))"} returns the equation @{text "X = rhs"},
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   967
  and that the invariant holds for this equation. That means we 
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   968
  know @{text "X = \<Union>\<calL> ` rhs"}. We further know that
109
79b37ef9505f minor updated
urbanc
parents: 108
diff changeset
   969
  this is equal to \mbox{@{text "\<Union>\<calL> ` (Arden X rhs)"}} using the properties of the 
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
   970
  invariant and Lem.~\ref{ardenable}. Using the validity property for the equation @{text "X = rhs"},
156
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
   971
  we can infer that @{term "rhss rhs \<subseteq> {X}"} and because the @{text Arden} operation
106
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   972
  removes that @{text X} from @{text rhs}, that @{term "rhss (Arden X rhs) = {}"}.
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
   973
  This means the right-hand side @{term "Arden X rhs"} can only consist of terms of the form @{term "Lam r"}.
154
7c68b9ad4486 implemented most suggestions from the reviewers
urbanc
parents: 149
diff changeset
   974
  So we can collect those (finitely many) regular expressions @{text rs} and have @{term "X = L (\<Uplus>rs)"}.
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   975
  With this we can conclude the proof.
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   976
  \end{proof}
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   977
106
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   978
  \noindent
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   979
  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
   980
  of the Myhill-Nerode theorem.
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   981
106
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   982
  \begin{proof}[of Thm.~\ref{myhillnerodeone}]
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
   983
  By Lem.~\ref{every_eqcl_has_reg} we know that there exists a regular expression for
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   984
  every equivalence class in @{term "UNIV // \<approx>A"}. Since @{text "finals A"} is
110
e500cab16be4 completed first direction
urbanc
parents: 109
diff changeset
   985
  a subset of  @{term "UNIV // \<approx>A"}, we also know that for every equivalence class
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
   986
  in @{term "finals A"} there exists a regular expression. Moreover by assumption 
106
91dc591de63f updated paper
urbanc
parents: 105
diff changeset
   987
  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
   988
  set of regular expressions @{text "rs"} such that
159
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
   989
  @{term "\<Union>(finals A) = L (\<Uplus>rs)"}.
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   990
  Since the left-hand side is equal to @{text A}, we can use @{term "\<Uplus>rs"} 
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
   991
  as the regular expression that is needed in the theorem.
105
ae6ad1363eb9 updated paper
urbanc
parents: 104
diff changeset
   992
  \end{proof}
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   993
*}
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
   994
100
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   995
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   996
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   997
2409827d8eb8 updated
urbanc
parents: 98
diff changeset
   998
section {* Myhill-Nerode, Second Part *}
39
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
   999
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
  1000
text {*
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1001
  \noindent
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1002
  In this section and the next we will give two proofs for establishing the second 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1003
  part of the Myhill-Nerode theorem. It can be formulated in our setting as follows:
39
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
  1004
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1005
  \begin{thrm}
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1006
  Given @{text "r"} is a regular expression, then @{thm Myhill_Nerode2}.
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1007
  \end{thrm}  
39
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
  1008
116
342983676c8f included comments by Chunhan
urbanc
parents: 115
diff changeset
  1009
  \noindent
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1010
  The first proof will be by induction on the structure of @{text r}. It turns out
116
342983676c8f included comments by Chunhan
urbanc
parents: 115
diff changeset
  1011
  the base cases are straightforward.
342983676c8f included comments by Chunhan
urbanc
parents: 115
diff changeset
  1012
342983676c8f included comments by Chunhan
urbanc
parents: 115
diff changeset
  1013
342983676c8f included comments by Chunhan
urbanc
parents: 115
diff changeset
  1014
  \begin{proof}[Base Cases]
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1015
  The cases for @{const ZERO}, @{const ONE} and @{const ATOM} are routine, because 
149
e122cb146ecc added the most current versions of the theories.
urbanc
parents: 145
diff changeset
  1016
  we can easily establish that
39
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
  1017
114
c5eb5f3065ae updated bib
urbanc
parents: 113
diff changeset
  1018
  \begin{center}
c5eb5f3065ae updated bib
urbanc
parents: 113
diff changeset
  1019
  \begin{tabular}{l}
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
  1020
  @{thm quot_zero_eq}\\
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
  1021
  @{thm quot_one_subset}\\
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
  1022
  @{thm quot_atom_subset}
114
c5eb5f3065ae updated bib
urbanc
parents: 113
diff changeset
  1023
  \end{tabular}
c5eb5f3065ae updated bib
urbanc
parents: 113
diff changeset
  1024
  \end{center}
c5eb5f3065ae updated bib
urbanc
parents: 113
diff changeset
  1025
116
342983676c8f included comments by Chunhan
urbanc
parents: 115
diff changeset
  1026
  \noindent
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1027
  hold, which shows that @{term "UNIV // \<approx>(lang r)"} must be finite.
114
c5eb5f3065ae updated bib
urbanc
parents: 113
diff changeset
  1028
  \end{proof}
109
79b37ef9505f minor updated
urbanc
parents: 108
diff changeset
  1029
116
342983676c8f included comments by Chunhan
urbanc
parents: 115
diff changeset
  1030
  \noindent
154
7c68b9ad4486 implemented most suggestions from the reviewers
urbanc
parents: 149
diff changeset
  1031
  Much more interesting, however, are the inductive cases. They seem hard to solve 
117
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1032
  directly. The reader is invited to try. 
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1033
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1034
  Our first proof will rely on some
138
2dfe13bc1443 three typos
urbanc
parents: 137
diff changeset
  1035
  \emph{tagging-functions} defined over strings. Given the inductive hypothesis, it will 
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1036
  be easy to prove that the \emph{range} of these tagging-functions is finite. 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1037
  The range of a function @{text f} is defined as 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1038
  
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1039
  \begin{center}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1040
  @{text "range f \<equiv> f ` UNIV"}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1041
  \end{center}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1042
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1043
  \noindent
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1044
  that means we take the image of @{text f} w.r.t.~all elements in the domain. 
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1045
  With this we will be able to infer that the tagging-functions, seen as relations,
117
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1046
  give rise to finitely many equivalence classes of @{const UNIV}. Finally we 
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1047
  will show that the tagging-relations are more refined than @{term "\<approx>(lang r)"}, which
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1048
  implies that @{term "UNIV // \<approx>(lang r)"} must also be finite---a relation @{text "R\<^isub>1"} 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1049
  is said to \emph{refine} @{text "R\<^isub>2"} provided @{text "R\<^isub>1 \<subseteq> R\<^isub>2"}.
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1050
  We formally define the notion of a \emph{tagging-relation} as follows.
117
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1051
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1052
  \begin{dfntn}[Tagging-Relation] Given a tagging-function @{text tag}, then two strings @{text x}
119
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
  1053
  and @{text y} are \emph{tag-related} provided
117
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1054
  \begin{center}
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1055
  @{text "x \<^raw:$\threesim$>\<^bsub>tag\<^esub> y \<equiv> tag x = tag y"}\;.
117
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1056
  \end{center}
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1057
  \end{dfntn}
117
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1058
145
099e20f25b25 corrected small typo
urbanc
parents: 143
diff changeset
  1059
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1060
  In order to establish finiteness of a set @{text A}, we shall use the following powerful
118
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1061
  principle from Isabelle/HOL's library.
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1062
  %
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1063
  \begin{equation}\label{finiteimageD}
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1064
  @{thm[mode=IfThen] finite_imageD}
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1065
  \end{equation}
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1066
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1067
  \noindent
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1068
  It states that if an image of a set under an injective function @{text f} (injective over this set) 
131
6b4c20714b4f chunhan's comments
urbanc
parents: 130
diff changeset
  1069
  is finite, then the set @{text A} itself must be finite. We can use it to establish the following 
118
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1070
  two lemmas.
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1071
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1072
  \begin{lmm}\label{finone}
117
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1073
  @{thm[mode=IfThen] finite_eq_tag_rel}
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1074
  \end{lmm}
117
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1075
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1076
  \begin{proof}
119
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
  1077
  We set in \eqref{finiteimageD}, @{text f} to be @{text "X \<mapsto> tag ` X"}. We have
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1078
  @{text "range f"} to be a subset of @{term "Pow (range tag)"}, which we know must be
119
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
  1079
  finite by assumption. Now @{term "f (UNIV // =tag=)"} is a subset of @{text "range f"},
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
  1080
  and so also finite. Injectivity amounts to showing that @{text "X = Y"} under the
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
  1081
  assumptions that @{text "X, Y \<in> "}~@{term "UNIV // =tag="} and @{text "f X = f Y"}.
149
e122cb146ecc added the most current versions of the theories.
urbanc
parents: 145
diff changeset
  1082
  From the assumptions we can obtain @{text "x \<in> X"} and @{text "y \<in> Y"} with 
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1083
  @{text "tag x = tag y"}. Since @{text x} and @{text y} are tag-related, this in 
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1084
  turn means that the equivalence classes @{text X}
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1085
  and @{text Y} must be equal.
117
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1086
  \end{proof}
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1087
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1088
  \begin{lmm}\label{fintwo} 
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1089
  Given two equivalence relations @{text "R\<^isub>1"} and @{text "R\<^isub>2"}, whereby
118
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1090
  @{text "R\<^isub>1"} refines @{text "R\<^isub>2"}.
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1091
  If @{thm (prem 1) refined_partition_finite[where ?R1.0="R\<^isub>1" and ?R2.0="R\<^isub>2"]}
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1092
  then @{thm (concl) refined_partition_finite[where ?R1.0="R\<^isub>1" and ?R2.0="R\<^isub>2"]}.
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1093
  \end{lmm}
117
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1094
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1095
  \begin{proof}
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1096
  We prove this lemma again using \eqref{finiteimageD}. This time we set @{text f} to
118
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1097
  be @{text "X \<mapsto>"}~@{term "{R\<^isub>1 `` {x} | x. x \<in> X}"}. It is easy to see that 
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1098
  @{term "finite (f ` (UNIV // R\<^isub>2))"} because it is a subset of @{term "Pow (UNIV // R\<^isub>1)"},
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1099
  which must be finite by assumption. What remains to be shown is that @{text f} is injective
118
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1100
  on @{term "UNIV // R\<^isub>2"}. This is equivalent to showing that two equivalence 
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1101
  classes, say @{text "X"} and @{text Y}, in @{term "UNIV // R\<^isub>2"} are equal, provided
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1102
  @{text "f X = f Y"}. For @{text "X = Y"} to be equal, we have to find two elements
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1103
  @{text "x \<in> X"} and @{text "y \<in> Y"} such that they are @{text R\<^isub>2} related.
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1104
  We know there exists a @{text "x \<in> X"} with \mbox{@{term "X = R\<^isub>2 `` {x}"}}. 
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1105
  From the latter fact we can infer that @{term "R\<^isub>1 ``{x} \<in> f X"}
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1106
  and further @{term "R\<^isub>1 ``{x} \<in> f Y"}. This means we can obtain a @{text y}
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1107
  such that @{term "R\<^isub>1 `` {x} = R\<^isub>1 `` {y}"} holds. Consequently @{text x} and @{text y}
118
c3fa11ee776e first proof
urbanc
parents: 117
diff changeset
  1108
  are @{text "R\<^isub>1"}-related. Since by assumption @{text "R\<^isub>1"} refines @{text "R\<^isub>2"},
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1109
  they must also be @{text "R\<^isub>2"}-related, as we need to show.
117
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1110
  \end{proof}
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1111
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1112
  \noindent
119
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
  1113
  Chaining Lem.~\ref{finone} and \ref{fintwo} together, means in order to show
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1114
  that @{term "UNIV // \<approx>(lang r)"} is finite, we have to find a tagging-function whose
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1115
  range can be shown to be finite and whose tagging-relation refines @{term "\<approx>(lang r)"}.
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1116
  Let us attempt the @{const PLUS}-case first.
119
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
  1117
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1118
  \begin{proof}[@{const "PLUS"}-Case] 
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1119
  We take as tagging-function 
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1120
  %
119
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
  1121
  \begin{center}
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
  1122
  @{thm tag_str_Plus_def[where A="A" and B="B", THEN meta_eq_app]}
119
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
  1123
  \end{center}
117
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1124
119
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
  1125
  \noindent
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
  1126
  where @{text "A"} and @{text "B"} are some arbitrary languages.
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
  1127
  We can show in general, if @{term "finite (UNIV // \<approx>A)"} and @{term "finite (UNIV // \<approx>B)"}
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
  1128
  then @{term "finite ((UNIV // \<approx>A) \<times> (UNIV // \<approx>B))"} holds. The range of
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1129
  @{term "tag_str_Plus A B"} is a subset of this product set---so finite. It remains to be shown
120
c1f596c7f59e ALT case done
urbanc
parents: 119
diff changeset
  1130
  that @{text "=tag\<^isub>A\<^isub>L\<^isub>T A B="} refines @{term "\<approx>(A \<union> B)"}. This amounts to 
c1f596c7f59e ALT case done
urbanc
parents: 119
diff changeset
  1131
  showing
c1f596c7f59e ALT case done
urbanc
parents: 119
diff changeset
  1132
  %
c1f596c7f59e ALT case done
urbanc
parents: 119
diff changeset
  1133
  \begin{center}
c1f596c7f59e ALT case done
urbanc
parents: 119
diff changeset
  1134
  @{term "tag\<^isub>A\<^isub>L\<^isub>T A B x = tag\<^isub>A\<^isub>L\<^isub>T A B y \<longrightarrow> x \<approx>(A \<union> B) y"}
c1f596c7f59e ALT case done
urbanc
parents: 119
diff changeset
  1135
  \end{center}
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1136
  %
120
c1f596c7f59e ALT case done
urbanc
parents: 119
diff changeset
  1137
  \noindent
c1f596c7f59e ALT case done
urbanc
parents: 119
diff changeset
  1138
  which by unfolding the Myhill-Nerode relation is identical to
c1f596c7f59e ALT case done
urbanc
parents: 119
diff changeset
  1139
  %
c1f596c7f59e ALT case done
urbanc
parents: 119
diff changeset
  1140
  \begin{equation}\label{pattern}
c1f596c7f59e ALT case done
urbanc
parents: 119
diff changeset
  1141
  @{text "\<forall>z. tag\<^isub>A\<^isub>L\<^isub>T A B x = tag\<^isub>A\<^isub>L\<^isub>T A B y \<and> x @ z \<in> A \<union> B \<longrightarrow> y @ z \<in> A \<union> B"}
c1f596c7f59e ALT case done
urbanc
parents: 119
diff changeset
  1142
  \end{equation}
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1143
  %
120
c1f596c7f59e ALT case done
urbanc
parents: 119
diff changeset
  1144
  \noindent
c1f596c7f59e ALT case done
urbanc
parents: 119
diff changeset
  1145
  since both @{text "=tag\<^isub>A\<^isub>L\<^isub>T A B="} and @{term "\<approx>(A \<union> B)"} are symmetric. To solve
142
f1fea2c2713f changed one occurence of tagging function into tagging relation
urbanc
parents: 138
diff changeset
  1146
  \eqref{pattern} we just have to unfold the definition of the tagging-function and analyse 
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1147
  in which set, @{text A} or @{text B}, the string @{term "x @ z"} is. 
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1148
  The definition of the tagging-function will give us in each case the
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1149
  information to infer that @{text "y @ z \<in> A \<union> B"}.
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1150
  Finally we
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1151
  can discharge this case by setting @{text A} to @{term "lang r\<^isub>1"} and @{text B} to @{term "lang r\<^isub>2"}.
119
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
  1152
  \end{proof}
ece3f197b92b first two proofs in 2 direction
urbanc
parents: 118
diff changeset
  1153
109
79b37ef9505f minor updated
urbanc
parents: 108
diff changeset
  1154
121
1cf12a107b03 added directory with the small files and numbers of lines
urbanc
parents: 120
diff changeset
  1155
  \noindent
1cf12a107b03 added directory with the small files and numbers of lines
urbanc
parents: 120
diff changeset
  1156
  The pattern in \eqref{pattern} is repeated for the other two cases. Unfortunately,
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1157
  they are slightly more complicated. In the @{const TIMES}-case we essentially have
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1158
  to be able to infer that 
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1159
  %
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1160
  \begin{center}
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1161
  @{text "\<dots>"}@{term "x @ z \<in> A \<cdot> B \<longrightarrow> y @ z \<in> A \<cdot> B"}
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1162
  \end{center}
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1163
  %
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1164
  \noindent
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1165
  using the information given by the appropriate tagging-function. The complication 
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1166
  is to find out what the possible splits of @{text "x @ z"} are to be in @{term "A \<cdot> B"}
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1167
  (this was easy in case of @{term "A \<union> B"}). To deal with this complication we define the
124
8233510cab6c added definition of string prefix and string subtraction
urbanc
parents: 123
diff changeset
  1168
  notions of \emph{string prefixes} 
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1169
  %
124
8233510cab6c added definition of string prefix and string subtraction
urbanc
parents: 123
diff changeset
  1170
  \begin{center}
8233510cab6c added definition of string prefix and string subtraction
urbanc
parents: 123
diff changeset
  1171
  @{text "x \<le> y \<equiv> \<exists>z. y = x @ z"}\hspace{10mm}
8233510cab6c added definition of string prefix and string subtraction
urbanc
parents: 123
diff changeset
  1172
  @{text "x < y \<equiv> x \<le> y \<and> x \<noteq> y"}
8233510cab6c added definition of string prefix and string subtraction
urbanc
parents: 123
diff changeset
  1173
  \end{center}
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1174
  %
124
8233510cab6c added definition of string prefix and string subtraction
urbanc
parents: 123
diff changeset
  1175
  \noindent
8233510cab6c added definition of string prefix and string subtraction
urbanc
parents: 123
diff changeset
  1176
  and \emph{string subtraction}:
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1177
  %
124
8233510cab6c added definition of string prefix and string subtraction
urbanc
parents: 123
diff changeset
  1178
  \begin{center}
159
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
  1179
  @{text "[] - y \<equiv> []"}\hspace{10mm}
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
  1180
  @{text "x - [] \<equiv> x"}\hspace{10mm}
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
  1181
  @{text "cx - dy \<equiv> if c = d then x - y else cx"}
124
8233510cab6c added definition of string prefix and string subtraction
urbanc
parents: 123
diff changeset
  1182
  \end{center}
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1183
  %
124
8233510cab6c added definition of string prefix and string subtraction
urbanc
parents: 123
diff changeset
  1184
  \noindent
142
f1fea2c2713f changed one occurence of tagging function into tagging relation
urbanc
parents: 138
diff changeset
  1185
  where @{text c} and @{text d} are characters, and @{text x} and @{text y} are strings. 
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1186
  
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1187
  Now assuming  @{term "x @ z \<in> A \<cdot> B"} there are only two possible ways of how to `split' 
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1188
  this string to be in @{term "A \<cdot> B"}:
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1189
  %
125
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1190
  \begin{center}
159
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
  1191
  \begin{tabular}{@ {}c@ {\hspace{10mm}}c@ {}}
125
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1192
  \scalebox{0.7}{
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1193
  \begin{tikzpicture}
159
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
  1194
    \node[draw,minimum height=3.8ex] (xa) { $\hspace{3em}@{text "x'"}\hspace{3em}$ };
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
  1195
    \node[draw,minimum height=3.8ex, right=-0.03em of xa] (xxa) { $\hspace{0.2em}@{text "x - x'"}\hspace{0.2em}$ };
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
  1196
    \node[draw,minimum height=3.8ex, right=-0.03em of xxa] (z) { $\hspace{5em}@{text z}\hspace{5em}$ };
125
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1197
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1198
    \draw[decoration={brace,transform={yscale=3}},decorate]
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1199
           (xa.north west) -- ($(xxa.north east)+(0em,0em)$)
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1200
               node[midway, above=0.5em]{@{text x}};
125
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1201
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1202
    \draw[decoration={brace,transform={yscale=3}},decorate]
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1203
           (z.north west) -- ($(z.north east)+(0em,0em)$)
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1204
               node[midway, above=0.5em]{@{text z}};
125
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1205
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1206
    \draw[decoration={brace,transform={yscale=3}},decorate]
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1207
           ($(xa.north west)+(0em,3ex)$) -- ($(z.north east)+(0em,3ex)$)
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1208
               node[midway, above=0.8em]{@{term "x @ z \<in> A \<cdot> B"}};
125
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1209
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1210
    \draw[decoration={brace,transform={yscale=3}},decorate]
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1211
           ($(z.south east)+(0em,0ex)$) -- ($(xxa.south west)+(0em,0ex)$)
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1212
               node[midway, below=0.5em]{@{term "(x - x') @ z \<in> B"}};
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1213
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1214
    \draw[decoration={brace,transform={yscale=3}},decorate]
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1215
           ($(xa.south east)+(0em,0ex)$) -- ($(xa.south west)+(0em,0ex)$)
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1216
               node[midway, below=0.5em]{@{term "x' \<in> A"}};
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1217
  \end{tikzpicture}}
159
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
  1218
  &
125
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1219
  \scalebox{0.7}{
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1220
  \begin{tikzpicture}
159
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
  1221
    \node[draw,minimum height=3.8ex] (x) { $\hspace{4.8em}@{text x}\hspace{4.8em}$ };
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
  1222
    \node[draw,minimum height=3.8ex, right=-0.03em of x] (za) { $\hspace{0.6em}@{text "z'"}\hspace{0.6em}$ };
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
  1223
    \node[draw,minimum height=3.8ex, right=-0.03em of za] (zza) { $\hspace{2.6em}@{text "z - z'"}\hspace{2.6em}$  };
125
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1224
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1225
    \draw[decoration={brace,transform={yscale=3}},decorate]
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1226
           (x.north west) -- ($(za.north west)+(0em,0em)$)
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1227
               node[midway, above=0.5em]{@{text x}};
125
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1228
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1229
    \draw[decoration={brace,transform={yscale=3}},decorate]
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1230
           ($(za.north west)+(0em,0ex)$) -- ($(zza.north east)+(0em,0ex)$)
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1231
               node[midway, above=0.5em]{@{text z}};
125
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1232
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1233
    \draw[decoration={brace,transform={yscale=3}},decorate]
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1234
           ($(x.north west)+(0em,3ex)$) -- ($(zza.north east)+(0em,3ex)$)
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1235
               node[midway, above=0.8em]{@{term "x @ z \<in> A \<cdot> B"}};
125
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1236
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1237
    \draw[decoration={brace,transform={yscale=3}},decorate]
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1238
           ($(za.south east)+(0em,0ex)$) -- ($(x.south west)+(0em,0ex)$)
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1239
               node[midway, below=0.5em]{@{text "x @ z' \<in> A"}};
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1240
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1241
    \draw[decoration={brace,transform={yscale=3}},decorate]
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1242
           ($(zza.south east)+(0em,0ex)$) -- ($(za.south east)+(0em,0ex)$)
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1243
               node[midway, below=0.5em]{@{text "(z - z') \<in> B"}};
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1244
  \end{tikzpicture}}
159
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
  1245
  \end{tabular}
125
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1246
  \end{center}
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1247
  %
125
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1248
  \noindent
156
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
  1249
  Either there is a prefix of @{text x} in @{text A} and the rest is in @{text B} (first picture),
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
  1250
  or @{text x} and a prefix of @{text "z"} is in @{text A} and the rest in @{text B} (second picture).
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1251
  In both cases we have to show that @{term "y @ z \<in> A \<cdot> B"}. For this we use the 
125
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1252
  following tagging-function
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1253
  %
121
1cf12a107b03 added directory with the small files and numbers of lines
urbanc
parents: 120
diff changeset
  1254
  \begin{center}
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
  1255
  @{thm tag_str_Times_def[where ?L1.0="A" and ?L2.0="B", THEN meta_eq_app]}
121
1cf12a107b03 added directory with the small files and numbers of lines
urbanc
parents: 120
diff changeset
  1256
  \end{center}
125
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1257
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1258
  \noindent
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1259
  with the idea that in the first split we have to make sure that @{text "(x - x') @ z"}
127
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1260
  is in the language @{text B}.
125
62925473bf6b added pictures for seq-case
urbanc
parents: 124
diff changeset
  1261
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1262
  \begin{proof}[@{const TIMES}-Case]
127
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1263
  If @{term "finite (UNIV // \<approx>A)"} and @{term "finite (UNIV // \<approx>B)"}
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1264
  then @{term "finite ((UNIV // \<approx>A) \<times> (Pow (UNIV // \<approx>B)))"} holds. The range of
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1265
  @{term "tag_str_TIMES A B"} is a subset of this product set, and therefore finite.
130
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1266
  We have to show injectivity of this tagging-function as
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1267
  %
127
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1268
  \begin{center}
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1269
  @{term "\<forall>z. tag_str_TIMES A B x = tag_str_TIMES A B y \<and> x @ z \<in> A \<cdot> B \<longrightarrow> y @ z \<in> A \<cdot> B"}
127
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1270
  \end{center}
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1271
  %
127
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1272
  \noindent
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1273
  There are two cases to be considered (see pictures above). First, there exists 
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1274
  a @{text "x'"} such that
127
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1275
  @{text "x' \<in> A"}, @{text "x' \<le> x"} and @{text "(x - x') @ z \<in> B"} hold. We therefore have
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1276
  %
127
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1277
  \begin{center}
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1278
  @{term "(\<approx>B `` {x - x'}) \<in> ({\<approx>B `` {x - x'} |x'. x' \<le> x \<and> x' \<in> A})"}
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1279
  \end{center}
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1280
  %
127
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1281
  \noindent
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1282
  and by the assumption about @{term "tag_str_TIMES A B"} also 
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1283
  %
127
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1284
  \begin{center}
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1285
  @{term "(\<approx>B `` {x - x'}) \<in> ({\<approx>B `` {y - y'} |y'. y' \<le> y \<and> y' \<in> A})"}
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1286
  \end{center}
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1287
  %
127
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1288
  \noindent
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1289
  That means there must be a @{text "y'"} such that @{text "y' \<in> A"} and 
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1290
  @{term "\<approx>B `` {x - x'} = \<approx>B `` {y - y'}"}. This equality means that
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1291
  @{term "(x - x') \<approx>B (y - y')"} holds. Unfolding the Myhill-Nerode
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1292
  relation and together with the fact that @{text "(x - x') @ z \<in> B"}, we
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1293
  have @{text "(y - y') @ z \<in> B"}. We already know @{text "y' \<in> A"}, therefore
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1294
  @{term "y @ z \<in> A \<cdot> B"}, as needed in this case.
127
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1295
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1296
  Second, there exists a @{text "z'"} such that @{term "x @ z' \<in> A"} and @{text "z - z' \<in> B"}.
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1297
  By the assumption about @{term "tag_str_TIMES A B"} we have
127
8440863a9900 seq case finished
urbanc
parents: 126
diff changeset
  1298
  @{term "\<approx>A `` {x} = \<approx>A `` {y}"} and thus @{term "x \<approx>A y"}. Which means by the Myhill-Nerode
134
08afbed1c8c7 chunhan's comments
urbanc
parents: 133
diff changeset
  1299
  relation that @{term "y @ z' \<in> A"} holds. Using @{text "z - z' \<in> B"}, we can conclude also in this case
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1300
  with @{term "y @ z \<in> A \<cdot> B"}. We again can complete the @{const TIMES}-case
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1301
  by setting @{text A} to @{term "lang r\<^isub>1"} and @{text B} to @{term "lang r\<^isub>2"}. 
121
1cf12a107b03 added directory with the small files and numbers of lines
urbanc
parents: 120
diff changeset
  1302
  \end{proof}
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1303
  
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1304
  \noindent
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1305
  The case for @{const STAR} is similar to @{const TIMES}, but poses a few extra challenges. When
137
06bafc710423 one further polishing
urbanc
parents: 136
diff changeset
  1306
  we analyse the case that @{text "x @ z"} is an element in @{term "A\<star>"} and @{text x} is not the 
130
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1307
  empty string, we 
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1308
  have the following picture:
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1309
  %
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1310
  \begin{center}
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1311
  \scalebox{0.7}{
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1312
  \begin{tikzpicture}
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1313
    \node[draw,minimum height=3.8ex] (xa) { $\hspace{4em}@{text "x'\<^isub>m\<^isub>a\<^isub>x"}\hspace{4em}$ };
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1314
    \node[draw,minimum height=3.8ex, right=-0.03em of xa] (xxa) { $\hspace{0.5em}@{text "x - x'\<^isub>m\<^isub>a\<^isub>x"}\hspace{0.5em}$ };
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1315
    \node[draw,minimum height=3.8ex, right=-0.03em of xxa] (za) { $\hspace{2em}@{text "z\<^isub>a"}\hspace{2em}$ };
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1316
    \node[draw,minimum height=3.8ex, right=-0.03em of za] (zb) { $\hspace{7em}@{text "z\<^isub>b"}\hspace{7em}$ };
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1317
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1318
    \draw[decoration={brace,transform={yscale=3}},decorate]
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1319
           (xa.north west) -- ($(xxa.north east)+(0em,0em)$)
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1320
               node[midway, above=0.5em]{@{text x}};
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1321
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1322
    \draw[decoration={brace,transform={yscale=3}},decorate]
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1323
           (za.north west) -- ($(zb.north east)+(0em,0em)$)
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1324
               node[midway, above=0.5em]{@{text z}};
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1325
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1326
    \draw[decoration={brace,transform={yscale=3}},decorate]
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1327
           ($(xa.north west)+(0em,3ex)$) -- ($(zb.north east)+(0em,3ex)$)
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1328
               node[midway, above=0.8em]{@{term "x @ z \<in> A\<star>"}};
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1329
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1330
    \draw[decoration={brace,transform={yscale=3}},decorate]
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1331
           ($(za.south east)+(0em,0ex)$) -- ($(xxa.south west)+(0em,0ex)$)
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1332
               node[midway, below=0.5em]{@{text "(x - x'\<^isub>m\<^isub>a\<^isub>x) @ z\<^isub>a \<in> A"}};
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1333
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1334
    \draw[decoration={brace,transform={yscale=3}},decorate]
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1335
           ($(xa.south east)+(0em,0ex)$) -- ($(xa.south west)+(0em,0ex)$)
136
13b0f3dac9a2 final final polishing
urbanc
parents: 135
diff changeset
  1336
               node[midway, below=0.5em]{@{term "x'\<^isub>m\<^isub>a\<^isub>x \<in> A\<star>"}};
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1337
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1338
    \draw[decoration={brace,transform={yscale=3}},decorate]
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1339
           ($(zb.south east)+(0em,0ex)$) -- ($(zb.south west)+(0em,0ex)$)
136
13b0f3dac9a2 final final polishing
urbanc
parents: 135
diff changeset
  1340
               node[midway, below=0.5em]{@{term "z\<^isub>b \<in> A\<star>"}};
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1341
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1342
    \draw[decoration={brace,transform={yscale=3}},decorate]
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1343
           ($(zb.south east)+(0em,-4ex)$) -- ($(xxa.south west)+(0em,-4ex)$)
136
13b0f3dac9a2 final final polishing
urbanc
parents: 135
diff changeset
  1344
               node[midway, below=0.5em]{@{term "(x - x'\<^isub>m\<^isub>a\<^isub>x) @ z \<in> A\<star>"}};
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1345
  \end{tikzpicture}}
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1346
  \end{center}
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1347
  %
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1348
  \noindent
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1349
  We can find a strict prefix @{text "x'"} of @{text x} such that @{term "x' \<in> A\<star>"},
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1350
  @{text "x' < x"} and the rest @{term "(x - x') @ z \<in> A\<star>"}. For example the empty string 
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1351
  @{text "[]"} would do.
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1352
  There are potentially many such prefixes, but there can only be finitely many of them (the 
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1353
  string @{text x} is finite). Let us therefore choose the longest one and call it 
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1354
  @{text "x'\<^isub>m\<^isub>a\<^isub>x"}. Now for the rest of the string @{text "(x - x'\<^isub>m\<^isub>a\<^isub>x) @ z"} we
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1355
  know it is in @{term "A\<star>"}. By definition of @{term "A\<star>"}, we can separate
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1356
  this string into two parts, say @{text "a"} and @{text "b"}, such that @{text "a \<in> A"}
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1357
  and @{term "b \<in> A\<star>"}. Now @{text a} must be strictly longer than @{text "x - x'\<^isub>m\<^isub>a\<^isub>x"},
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1358
  otherwise @{text "x'\<^isub>m\<^isub>a\<^isub>x"} is not the longest prefix. That means @{text a}
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1359
  `overlaps' with @{text z}, splitting it into two components @{text "z\<^isub>a"} and
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1360
   @{text "z\<^isub>b"}. For this we know that @{text "(x - x'\<^isub>m\<^isub>a\<^isub>x) @ z\<^isub>a \<in> A"} and
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1361
  @{term "z\<^isub>b \<in> A\<star>"}. To cut a story short, we have divided @{term "x @ z \<in> A\<star>"}
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1362
  such that we have a string @{text a} with @{text "a \<in> A"} that lies just on the
145
099e20f25b25 corrected small typo
urbanc
parents: 143
diff changeset
  1363
  `border' of @{text x} and @{text z}. This string is @{text "(x - x'\<^isub>m\<^isub>a\<^isub>x) @ z\<^isub>a"}.
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1364
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1365
  In order to show that @{term "x @ z \<in> A\<star>"} implies @{term "y @ z \<in> A\<star>"}, we use
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1366
  the following tagging-function:
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1367
  %
121
1cf12a107b03 added directory with the small files and numbers of lines
urbanc
parents: 120
diff changeset
  1368
  \begin{center}
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
  1369
  @{thm tag_str_Star_def[where ?L1.0="A", THEN meta_eq_app]}\smallskip
121
1cf12a107b03 added directory with the small files and numbers of lines
urbanc
parents: 120
diff changeset
  1370
  \end{center}
128
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1371
6d2693c78c37 finished picture
urbanc
parents: 127
diff changeset
  1372
  \begin{proof}[@{const STAR}-Case]
130
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1373
  If @{term "finite (UNIV // \<approx>A)"} 
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1374
  then @{term "finite (Pow (UNIV // \<approx>A))"} holds. The range of
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1375
  @{term "tag_str_STAR A"} is a subset of this set, and therefore finite.
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1376
  Again we have to show injectivity of this tagging-function as  
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1377
  %
130
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1378
  \begin{center}
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1379
  @{term "\<forall>z. tag_str_STAR A x = tag_str_STAR A y \<and> x @ z \<in> A\<star> \<longrightarrow> y @ z \<in> A\<star>"}
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1380
  \end{center}  
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1381
  %
130
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1382
  \noindent
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1383
  We first need to consider the case that @{text x} is the empty string.
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1384
  From the assumption we can infer @{text y} is the empty string and
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1385
  clearly have @{term "y @ z \<in> A\<star>"}. In case @{text x} is not the empty
134
08afbed1c8c7 chunhan's comments
urbanc
parents: 133
diff changeset
  1386
  string, we can divide the string @{text "x @ z"} as shown in the picture 
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1387
  above. By the tagging-function we have
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1388
  %
130
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1389
  \begin{center}
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1390
  @{term "\<approx>A `` {(x - x'\<^isub>m\<^isub>a\<^isub>x)} \<in> ({\<approx>A `` {x - x'} |x'. x' < x \<and> x' \<in> A\<star>})"}
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1391
  \end{center}
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1392
  %
130
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1393
  \noindent
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1394
  which by assumption is equal to
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1395
  %
130
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1396
  \begin{center}
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1397
  @{term "\<approx>A `` {(x - x'\<^isub>m\<^isub>a\<^isub>x)} \<in> ({\<approx>A `` {y - y'} |y'. y' < y \<and> y' \<in> A\<star>})"}
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1398
  \end{center}
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1399
  %
130
3e4ad22193e7 pre-final version
urbanc
parents: 129
diff changeset
  1400
  \noindent 
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1401
  and we know that we have a @{term "y' \<in> A\<star>"} and @{text "y' < y"}
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1402
  and also know @{term "(x - x'\<^isub>m\<^isub>a\<^isub>x) \<approx>A (y - y')"}. Unfolding the Myhill-Nerode
135
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1403
  relation we know @{term "(y - y') @ z\<^isub>a \<in> A"}. We also know that @{term "z\<^isub>b \<in> A\<star>"}.
604518f0127f final polished
urbanc
parents: 134
diff changeset
  1404
  Therefore @{term "y' @ ((y - y') @ z\<^isub>a) @ z\<^isub>b \<in> A\<star>"}, which means
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1405
  @{term "y @ z \<in> A\<star>"}. As the last step we have to set @{text "A"} to @{term "lang r"} and
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1406
  complete the proof.
121
1cf12a107b03 added directory with the small files and numbers of lines
urbanc
parents: 120
diff changeset
  1407
  \end{proof}
39
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
  1408
*}
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
  1409
162
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1410
section {* Second Part based on Partial Derivatives *}
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1411
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1412
text {*
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1413
  \noindent
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1414
  As we have seen in the previous section, in order to establish
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1415
  the second direction of the Myhill-Nerode theorem, we need to find 
174
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1416
  a more refined relation than @{term "\<approx>(lang r)"} for which we can
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1417
  show that there are only finitely many equivalence classes. So far we 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1418
  showed this by induction on @{text "r"}. However, there is also 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1419
  an indirect method to come up with such a refined relation. Assume
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1420
  the following two definitions for a left-quotient of a language, which 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1421
  we write as @{term "Der c A"} and @{term "Ders s A"} where 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1422
  @{text c} is a character and @{text s} a string:
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1423
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1424
  \begin{center}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1425
  \begin{tabular}{r@ {\hspace{1mm}}c@ {\hspace{2mm}}l}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1426
  @{thm (lhs) Der_def}  & @{text "\<equiv>"} & @{thm (rhs) Der_def}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1427
  @{thm (lhs) Ders_def} & @{text "\<equiv>"} & @{thm (rhs) Ders_def}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1428
  \end{tabular}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1429
  \end{center}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1430
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1431
  \noindent
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1432
  Now clearly we have the following relation between the Myhill-Nerode relation
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1433
  (Definition~\ref{myhillneroderel}) and left-quotients
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1434
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1435
  \begin{equation}\label{mhders}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1436
  @{term "x \<approx>A y"} \hspace{4mm}\text{if and only if}\hspace{4mm} @{term "Ders x A = Ders y A"}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1437
  \end{equation}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1438
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1439
  \noindent
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1440
  It is realtively easy to establish the following identidies for left-quotients:
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1441
  
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1442
  \begin{center}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1443
  \begin{tabular}{l@ {\hspace{1mm}}c@ {\hspace{2mm}}l}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1444
  @{thm (lhs) Der_zero}  & $=$ & @{thm (rhs) Der_zero}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1445
  @{thm (lhs) Der_one}   & $=$ & @{thm (rhs) Der_one}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1446
  @{thm (lhs) Der_atom}  & $=$ & @{thm (rhs) Der_atom}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1447
  @{thm (lhs) Der_union} & $=$ & @{thm (rhs) Der_union}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1448
  @{thm (lhs) Der_conc}  & $=$ & @{thm (rhs) Der_conc}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1449
  @{thm (lhs) Der_star}  & $=$ & @{thm (rhs) Der_star}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1450
  \end{tabular}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1451
  \end{center}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1452
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1453
  \noindent
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1454
  where @{text "\<Delta>"} is a function that tests whether the empty string
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1455
  is in the language and returns @{term "{[]}"} or @{term "{}"}, respectively.
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1456
  The only interesting case above is the last one where we use Prop.~\ref{langprops}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1457
  in order to infer that @{term "Der c (A\<star>) = Der c (A \<cdot> A\<star>)"}. We can 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1458
  then complete the proof by observing that @{term "Delta A \<cdot> Der c (A\<star>) \<subseteq> (Der c A) \<cdot> A\<star>"}.
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1459
  
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1460
  Brzozowski observed that the left-quotients for languages of regular
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1461
  expressions can be calculated directly via the notion of \emph{derivatives
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1462
  of a regular expressions} \cite{Brzozowski64} which we define in Isabelle/HOL as 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1463
  follows:
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1464
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1465
  \begin{center}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1466
  \begin{tabular}{@ {}l@ {\hspace{1mm}}c@ {\hspace{1.5mm}}l@ {}}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1467
  @{thm (lhs) der.simps(1)}  & @{text "\<equiv>"} & @{thm (rhs) der.simps(1)}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1468
  @{thm (lhs) der.simps(2)}  & @{text "\<equiv>"} & @{thm (rhs) der.simps(2)}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1469
  @{thm (lhs) der.simps(3)[where c'="d"]}  & @{text "\<equiv>"} & @{thm (rhs) der.simps(3)[where c'="d"]}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1470
  @{thm (lhs) der.simps(4)[where ?r1.0="r\<^isub>1" and ?r2.0="r\<^isub>2"]}  
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1471
     & @{text "\<equiv>"} & @{thm (rhs) der.simps(4)[where ?r1.0="r\<^isub>1" and ?r2.0="r\<^isub>2"]}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1472
  @{thm (lhs) der.simps(5)[where ?r1.0="r\<^isub>1" and ?r2.0="r\<^isub>2"]}  
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1473
     & @{text "\<equiv>"}\\ 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1474
  \multicolumn{3}{@ {\hspace{5mm}}l@ {}}{@{thm (rhs) der.simps(5)[where ?r1.0="r\<^isub>1" and ?r2.0="r\<^isub>2"]}}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1475
  @{thm (lhs) der.simps(6)}  & @{text "\<equiv>"} & @{thm (rhs) der.simps(6)}\smallskip\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1476
  @{thm (lhs) ders.simps(1)}  & @{text "\<equiv>"} & @{thm (rhs) ders.simps(1)}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1477
  @{thm (lhs) ders.simps(2)}  & @{text "\<equiv>"} & @{thm (rhs) ders.simps(2)}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1478
  \end{tabular}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1479
  \end{center}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1480
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1481
  \noindent
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1482
  The function @{term "nullable r"} tests whether the regular expression
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1483
  can recognise the empty string:
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1484
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1485
  \begin{center}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1486
  \begin{tabular}{cc}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1487
  \begin{tabular}{@ {}l@ {\hspace{1mm}}c@ {\hspace{1.5mm}}l@ {}}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1488
  @{thm (lhs) nullable.simps(1)}  & @{text "\<equiv>"} & @{thm (rhs) nullable.simps(1)}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1489
  @{thm (lhs) nullable.simps(2)}  & @{text "\<equiv>"} & @{thm (rhs) nullable.simps(2)}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1490
  @{thm (lhs) nullable.simps(3)}  & @{text "\<equiv>"} & @{thm (rhs) nullable.simps(3)}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1491
  \end{tabular} &
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1492
  \begin{tabular}{@ {}l@ {\hspace{1mm}}c@ {\hspace{1.5mm}}l@ {}}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1493
  @{thm (lhs) nullable.simps(4)[where ?r1.0="r\<^isub>1" and ?r2.0="r\<^isub>2"]}  
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1494
     & @{text "\<equiv>"} & @{thm (rhs) nullable.simps(4)[where ?r1.0="r\<^isub>1" and ?r2.0="r\<^isub>2"]}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1495
  @{thm (lhs) nullable.simps(5)[where ?r1.0="r\<^isub>1" and ?r2.0="r\<^isub>2"]}  
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1496
     & @{text "\<equiv>"} & @{thm (rhs) nullable.simps(5)[where ?r1.0="r\<^isub>1" and ?r2.0="r\<^isub>2"]}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1497
  @{thm (lhs) nullable.simps(6)}  & @{text "\<equiv>"} & @{thm (rhs) nullable.simps(6)}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1498
  \end{tabular}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1499
  \end{tabular}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1500
  \end{center}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1501
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1502
  \noindent
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1503
  Brzozowski proved 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1504
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1505
  \begin{equation}\label{Dersders}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1506
  \mbox{\begin{tabular}{l}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1507
  @{thm Der_der}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1508
  @{thm Ders_ders}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1509
  \end{tabular}}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1510
  \end{equation}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1511
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1512
  \noindent
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1513
  where the first is by induction on @{text r} and the second by a simple
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1514
  calculation.
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1515
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1516
  The importance in the context of the Myhill-Nerode theorem is that 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1517
  we can use \eqref{mhders} and \eqref{Dersders} in order to derive
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1518
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1519
  \begin{center}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1520
  @{term "x \<approx>(lang r) y"} \hspace{4mm}if and only if\hspace{4mm} 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1521
  @{term "lang (ders x r) = lang (ders y r)"}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1522
  \end{center}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1523
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1524
  \noindent
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1525
  which means @{term "x \<approx>(lang r) y"} provided @{term "ders x r = ders y r"}.
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1526
  Consequently, we can use as the tagging relation 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1527
  @{text "\<^raw:$\threesim$>\<^bsub>(\<lambda>x. ders x r)\<^esub>"}, which we know refines @{term "\<approx>(lang r)"}. 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1528
  This almost helps us because Brozowski also proved that there for every 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1529
  language there are only 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1530
  finitely `dissimilar' derivatives for a regular expression. Two regulare
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1531
  expressions are similar if they can be identified using the using the 
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1532
  ACI-identities
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1533
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1534
  \begin{center}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1535
  \begin{tabular}{cl}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1536
  (A) & @{term "Plus (Plus r\<^isub>1 r\<^isub>2) r\<^isub>3"} $\equiv$ @{term "Plus r\<^isub>1 (Plus r\<^isub>2 r\<^isub>3)"}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1537
  (C) & @{term "Plus r\<^isub>1 r\<^isub>2"} $\equiv$ @{term "Plus r\<^isub>2 r\<^isub>1"}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1538
  (I) & @{term "Plus r r"} $\equiv$ @{term "r"}\\
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1539
  \end{tabular}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1540
  \end{center}
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1541
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1542
  \noindent
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1543
  Without the indentification, we unfortunately obtain infinitely many
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1544
  derivations (an example is given in \cite[Page~141]{Sakarovitch09}).
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1545
  Reasoning modulo ACI can be done, but it is very painful in a theorem prover.
2b414a8a7132 more on the section about derivatives
urbanc
parents: 173
diff changeset
  1546
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1547
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1548
  in order to prove the second
162
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1549
  direction of the Myhill-Nerode theorem. There he calculates the
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1550
  derivatives for regular expressions and shows that for every
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1551
  language there can be only finitely many of them %derivations (if
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1552
  regarded equal modulo ACI). We could have used as tagging-function
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1553
  the set of derivatives of a regular expression with respect to a
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1554
  language.  Using the fact that two strings are Myhill-Nerode related
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1555
  whenever their derivative is the same, together with the fact that
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1556
  there are only finitely such derivatives would give us a similar
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1557
  argument as ours. However it seems not so easy to calculate the set
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1558
  of derivatives modulo ACI. Therefore we preferred our direct method
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1559
  of using tagging-functions. 
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1560
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1561
  The problem of finiteness modulo ACI can be avoided by using partial
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1562
  derivatives introduced by Antimirov \cite{Antimirov}.
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1563
162
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1564
*}
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1565
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1566
section {* Closure Properties *}
39
a59473f0229d tuned a little bit the section about finite partitions
urbanc
parents: 37
diff changeset
  1567
117
22ba25b808c8 updated second direction
urbanc
parents: 116
diff changeset
  1568
54
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
  1569
section {* Conclusion and Related Work *}
c19d2fc2cc69 a bit more on the paper
urbanc
parents: 53
diff changeset
  1570
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
  1571
text {*
112
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1572
  In this paper we took the view that a regular language is one where there
115
c5f138b5fc88 added comment from Larry
urbanc
parents: 114
diff changeset
  1573
  exists a regular expression that matches all of its strings. Regular
145
099e20f25b25 corrected small typo
urbanc
parents: 143
diff changeset
  1574
  expressions can conveniently be defined as a datatype in HOL-based theorem
099e20f25b25 corrected small typo
urbanc
parents: 143
diff changeset
  1575
  provers. For us it was therefore interesting to find out how far we can push
154
7c68b9ad4486 implemented most suggestions from the reviewers
urbanc
parents: 149
diff changeset
  1576
  this point of view. We have established in Isabelle/HOL both directions 
7c68b9ad4486 implemented most suggestions from the reviewers
urbanc
parents: 149
diff changeset
  1577
  of the Myhill-Nerode theorem.
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1578
  %
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1579
  \begin{thrm}[The Myhill-Nerode Theorem]\mbox{}\\
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1580
  A language @{text A} is regular if and only if @{thm (rhs) Myhill_Nerode}.
167
61d0a412a3ae added a journal version
urbanc
parents: 162
diff changeset
  1581
  \end{thrm}
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1582
  %
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1583
  \noindent
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1584
  Having formalised this theorem means we
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1585
  pushed our point of view quite far. Using this theorem we can obviously prove when a language
112
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1586
  is \emph{not} regular---by establishing that it has infinitely many
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1587
  equivalence classes generated by the Myhill-Nerode relation (this is usually
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1588
  the purpose of the pumping lemma \cite{Kozen97}).  We can also use it to
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1589
  establish the standard textbook results about closure properties of regular
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1590
  languages. Interesting is the case of closure under complement, because
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1591
  it seems difficult to construct a regular expression for the complement
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
  1592
  language by direct means. However the existence of such a regular expression
ec774952190c polished everything
urbanc
parents: 112
diff changeset
  1593
  can be easily proved using the Myhill-Nerode theorem since 
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1594
  %
112
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1595
  \begin{center}
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1596
  @{term "s\<^isub>1 \<approx>A s\<^isub>2"} if and only if @{term "s\<^isub>1 \<approx>(-A) s\<^isub>2"}
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1597
  \end{center}
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1598
  %
112
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1599
  \noindent
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1600
  holds for any strings @{text "s\<^isub>1"} and @{text
114
c5eb5f3065ae updated bib
urbanc
parents: 113
diff changeset
  1601
  "s\<^isub>2"}. Therefore @{text A} and the complement language @{term "-A"} give rise to the same
159
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
  1602
  partitions.  Proving the existence of such a regular expression via automata 
990c12ab1562 edits; sqeezed to 16 pages
urbanc
parents: 157
diff changeset
  1603
  using the standard method would 
114
c5eb5f3065ae updated bib
urbanc
parents: 113
diff changeset
  1604
  be quite involved. It includes the
112
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1605
  steps: regular expression @{text "\<Rightarrow>"} non-deterministic automaton @{text
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1606
  "\<Rightarrow>"} deterministic automaton @{text "\<Rightarrow>"} complement automaton @{text "\<Rightarrow>"}
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1607
  regular expression.
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1608
116
342983676c8f included comments by Chunhan
urbanc
parents: 115
diff changeset
  1609
  While regular expressions are convenient in formalisations, they have some
122
ab6637008963 my latest version (SEQ and STAR still missing)
urbanc
parents: 121
diff changeset
  1610
  limitations. One is that there seems to be no method of calculating a
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1611
  minimal regular expression (for example in terms of length) for a regular
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1612
  language, like there is
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1613
  for automata. On the other hand, efficient regular expression matching,
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1614
  without using automata, poses no problem \cite{OwensReppyTuron09}.
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1615
  For an implementation of a simple regular expression matcher,
122
ab6637008963 my latest version (SEQ and STAR still missing)
urbanc
parents: 121
diff changeset
  1616
  whose correctness has been formally established, we refer the reader to
ab6637008963 my latest version (SEQ and STAR still missing)
urbanc
parents: 121
diff changeset
  1617
  Owens and Slind \cite{OwensSlind08}.
116
342983676c8f included comments by Chunhan
urbanc
parents: 115
diff changeset
  1618
342983676c8f included comments by Chunhan
urbanc
parents: 115
diff changeset
  1619
143
1cc87efb3b53 formalisation of first direction is now only 780 loc
urbanc
parents: 142
diff changeset
  1620
  Our formalisation consists of 780 lines of Isabelle/Isar code for the first
149
e122cb146ecc added the most current versions of the theories.
urbanc
parents: 145
diff changeset
  1621
  direction and 460 for the second, plus around 300 lines of standard material about
122
ab6637008963 my latest version (SEQ and STAR still missing)
urbanc
parents: 121
diff changeset
  1622
  regular languages. While this might be seen as too large to count as a
ab6637008963 my latest version (SEQ and STAR still missing)
urbanc
parents: 121
diff changeset
  1623
  concise proof pearl, this should be seen in the context of the work done by
ab6637008963 my latest version (SEQ and STAR still missing)
urbanc
parents: 121
diff changeset
  1624
  Constable at al \cite{Constable00} who formalised the Myhill-Nerode theorem
ab6637008963 my latest version (SEQ and STAR still missing)
urbanc
parents: 121
diff changeset
  1625
  in Nuprl using automata. They write that their four-member team needed
134
08afbed1c8c7 chunhan's comments
urbanc
parents: 133
diff changeset
  1626
  something on the magnitude of 18 months for their formalisation. The
122
ab6637008963 my latest version (SEQ and STAR still missing)
urbanc
parents: 121
diff changeset
  1627
  estimate for our formalisation is that we needed approximately 3 months and
ab6637008963 my latest version (SEQ and STAR still missing)
urbanc
parents: 121
diff changeset
  1628
  this included the time to find our proof arguments. Unlike Constable et al,
ab6637008963 my latest version (SEQ and STAR still missing)
urbanc
parents: 121
diff changeset
  1629
  who were able to follow the proofs from \cite{HopcroftUllman69}, we had to
ab6637008963 my latest version (SEQ and STAR still missing)
urbanc
parents: 121
diff changeset
  1630
  find our own arguments.  So for us the formalisation was not the
ab6637008963 my latest version (SEQ and STAR still missing)
urbanc
parents: 121
diff changeset
  1631
  bottleneck. It is hard to gauge the size of a formalisation in Nurpl, but
ab6637008963 my latest version (SEQ and STAR still missing)
urbanc
parents: 121
diff changeset
  1632
  from what is shown in the Nuprl Math Library about their development it
ab6637008963 my latest version (SEQ and STAR still missing)
urbanc
parents: 121
diff changeset
  1633
  seems substantially larger than ours. The code of ours can be found in the
ab6637008963 my latest version (SEQ and STAR still missing)
urbanc
parents: 121
diff changeset
  1634
  Mercurial Repository at
132
f77a7138f791 comments by Xingyuan
urbanc
parents: 131
diff changeset
  1635
  \mbox{\url{http://www4.in.tum.de/~urbanc/regexp.html}}.
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
  1636
112
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1637
62fdb4bf7239 more on the conclusion
urbanc
parents: 111
diff changeset
  1638
  Our proof of the first direction is very much inspired by \emph{Brzozowski's
134
08afbed1c8c7 chunhan's comments
urbanc
parents: 133
diff changeset
  1639
  algebraic method} used to convert a finite automaton to a regular
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
  1640
  expression \cite{Brzozowski64}. The close connection can be seen by considering the equivalence
111
d65d071798ff first ideas about conclusion
urbanc
parents: 110
diff changeset
  1641
  classes as the states of the minimal automaton for the regular language.
114
c5eb5f3065ae updated bib
urbanc
parents: 113
diff changeset
  1642
  However there are some subtle differences. Since we identify equivalence
111
d65d071798ff first ideas about conclusion
urbanc
parents: 110
diff changeset
  1643
  classes with the states of the automaton, then the most natural choice is to
d65d071798ff first ideas about conclusion
urbanc
parents: 110
diff changeset
  1644
  characterise each state with the set of strings starting from the initial
113
ec774952190c polished everything
urbanc
parents: 112
diff changeset
  1645
  state leading up to that state. Usually, however, the states are characterised as the
123
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1646
  strings starting from that state leading to the terminal states.  The first
23c0e6f2929d polished everywhere...two cases still missing
urbanc
parents: 122
diff changeset
  1647
  choice has consequences about how the initial equational system is set up. We have
115
c5f138b5fc88 added comment from Larry
urbanc
parents: 114
diff changeset
  1648
  the $\lambda$-term on our `initial state', while Brzozowski has it on the
111
d65d071798ff first ideas about conclusion
urbanc
parents: 110
diff changeset
  1649
  terminal states. This means we also need to reverse the direction of Arden's
156
fd39492b187c a few more changes
urbanc
parents: 154
diff changeset
  1650
  Lemma.
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
  1651
162
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1652
  This is also where our method shines, because we can completely
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1653
  side-step the standard argument \cite{Kozen97} where automata need
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1654
  to be composed, which as stated in the Introduction is not so easy
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1655
  to formalise in a HOL-based theorem prover. However, it is also the
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1656
  direction where we had to spend most of the `conceptual' time, as
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1657
  our proof-argument based on tagging-functions is new for
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1658
  establishing the Myhill-Nerode theorem. All standard proofs of this
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1659
  direction proceed by arguments over automata.\medskip
172
21ee3a852a02 more on the journal paper
urbanc
parents: 170
diff changeset
  1660
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1661
  We expect that the development of Krauss \& Nipkow gets easier by
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1662
  using partial derivatives.\medskip
162
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1663
  
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1664
  \noindent
173
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1665
  {\bf Acknowledgements:}
d371536861bc more on the introduction of the journal paper
urbanc
parents: 172
diff changeset
  1666
  We are grateful for the comments we received from Larry
162
e93760534354 added directory for journal version; took uptodate version of the theory files
urbanc
parents: 160
diff changeset
  1667
  Paulson.
111
d65d071798ff first ideas about conclusion
urbanc
parents: 110
diff changeset
  1668
92
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
  1669
*}
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
  1670
a9ebc410a5c8 more on paper
urbanc
parents: 90
diff changeset
  1671
24
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
  1672
(*<*)
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
  1673
end
f72c82bf59e5 added paper
urbanc
parents:
diff changeset
  1674
(*>*)