|
1 % |
|
2 \begin{isabellebody}% |
|
3 \def\isabellecontext{Myhill}% |
|
4 % |
|
5 \isadelimtheory |
|
6 % |
|
7 \endisadelimtheory |
|
8 % |
|
9 \isatagtheory |
|
10 \isacommand{theory}\isamarkupfalse% |
|
11 \ Myhill\isanewline |
|
12 \ \ \isakeyword{imports}\ Main\ List{\isacharunderscore}Prefix\isanewline |
|
13 \isakeyword{begin}% |
|
14 \endisatagtheory |
|
15 {\isafoldtheory}% |
|
16 % |
|
17 \isadelimtheory |
|
18 % |
|
19 \endisadelimtheory |
|
20 % |
|
21 \isamarkupsection{Preliminary definitions% |
|
22 } |
|
23 \isamarkuptrue% |
|
24 % |
|
25 \begin{isamarkuptext}% |
|
26 Sequential composition of two languages \isa{L{\isadigit{1}}} and \isa{L{\isadigit{2}}}% |
|
27 \end{isamarkuptext}% |
|
28 \isamarkuptrue% |
|
29 \isacommand{definition}\isamarkupfalse% |
|
30 \ Seq\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}string\ set\ {\isasymRightarrow}\ string\ set\ {\isasymRightarrow}\ string\ set{\isachardoublequoteclose}\ {\isacharparenleft}{\isachardoublequoteopen}{\isacharunderscore}\ {\isacharsemicolon}{\isacharsemicolon}\ {\isacharunderscore}{\isachardoublequoteclose}\ {\isacharbrackleft}{\isadigit{1}}{\isadigit{0}}{\isadigit{0}}{\isacharcomma}{\isadigit{1}}{\isadigit{0}}{\isadigit{0}}{\isacharbrackright}\ {\isadigit{1}}{\isadigit{0}}{\isadigit{0}}{\isacharparenright}\isanewline |
|
31 \isakeyword{where}\ \isanewline |
|
32 \ \ {\isachardoublequoteopen}L{\isadigit{1}}\ {\isacharsemicolon}{\isacharsemicolon}\ L{\isadigit{2}}\ {\isacharequal}\ {\isacharbraceleft}s{\isadigit{1}}\ {\isacharat}\ s{\isadigit{2}}\ {\isacharbar}\ s{\isadigit{1}}\ s{\isadigit{2}}{\isachardot}\ s{\isadigit{1}}\ {\isasymin}\ L{\isadigit{1}}\ {\isasymand}\ s{\isadigit{2}}\ {\isasymin}\ L{\isadigit{2}}{\isacharbraceright}{\isachardoublequoteclose}% |
|
33 \begin{isamarkuptext}% |
|
34 Transitive closure of language \isa{L}.% |
|
35 \end{isamarkuptext}% |
|
36 \isamarkuptrue% |
|
37 \isacommand{inductive{\isacharunderscore}set}\isamarkupfalse% |
|
38 \isanewline |
|
39 \ \ Star\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}string\ set\ {\isasymRightarrow}\ string\ set{\isachardoublequoteclose}\ {\isacharparenleft}{\isachardoublequoteopen}{\isacharunderscore}{\isasymstar}{\isachardoublequoteclose}\ {\isacharbrackleft}{\isadigit{1}}{\isadigit{0}}{\isadigit{1}}{\isacharbrackright}\ {\isadigit{1}}{\isadigit{0}}{\isadigit{2}}{\isacharparenright}\isanewline |
|
40 \ \ \isakeyword{for}\ L\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}string\ set{\isachardoublequoteclose}\isanewline |
|
41 \isakeyword{where}\isanewline |
|
42 \ \ start{\isacharbrackleft}intro{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharbrackleft}{\isacharbrackright}\ {\isasymin}\ L{\isasymstar}{\isachardoublequoteclose}\isanewline |
|
43 {\isacharbar}\ step{\isacharbrackleft}intro{\isacharbrackright}{\isacharcolon}\ \ {\isachardoublequoteopen}{\isasymlbrakk}s{\isadigit{1}}\ {\isasymin}\ L{\isacharsemicolon}\ s{\isadigit{2}}\ {\isasymin}\ L{\isasymstar}{\isasymrbrakk}\ {\isasymLongrightarrow}\ s{\isadigit{1}}{\isacharat}s{\isadigit{2}}\ {\isasymin}\ L{\isasymstar}{\isachardoublequoteclose}% |
|
44 \begin{isamarkuptext}% |
|
45 Some properties of operator \isa{{\isacharsemicolon}{\isacharsemicolon}}.% |
|
46 \end{isamarkuptext}% |
|
47 \isamarkuptrue% |
|
48 \isacommand{lemma}\isamarkupfalse% |
|
49 \ seq{\isacharunderscore}union{\isacharunderscore}distrib{\isacharcolon}\isanewline |
|
50 \ \ {\isachardoublequoteopen}{\isacharparenleft}A\ {\isasymunion}\ B{\isacharparenright}\ {\isacharsemicolon}{\isacharsemicolon}\ C\ {\isacharequal}\ {\isacharparenleft}A\ {\isacharsemicolon}{\isacharsemicolon}\ C{\isacharparenright}\ {\isasymunion}\ {\isacharparenleft}B\ {\isacharsemicolon}{\isacharsemicolon}\ C{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
51 % |
|
52 \isadelimproof |
|
53 % |
|
54 \endisadelimproof |
|
55 % |
|
56 \isatagproof |
|
57 \isacommand{by}\isamarkupfalse% |
|
58 \ {\isacharparenleft}auto\ simp{\isacharcolon}Seq{\isacharunderscore}def{\isacharparenright}% |
|
59 \endisatagproof |
|
60 {\isafoldproof}% |
|
61 % |
|
62 \isadelimproof |
|
63 \isanewline |
|
64 % |
|
65 \endisadelimproof |
|
66 \isanewline |
|
67 \isacommand{lemma}\isamarkupfalse% |
|
68 \ seq{\isacharunderscore}intro{\isacharcolon}\isanewline |
|
69 \ \ {\isachardoublequoteopen}{\isasymlbrakk}x\ {\isasymin}\ A{\isacharsemicolon}\ y\ {\isasymin}\ B{\isasymrbrakk}\ {\isasymLongrightarrow}\ x\ {\isacharat}\ y\ {\isasymin}\ A\ {\isacharsemicolon}{\isacharsemicolon}\ B\ {\isachardoublequoteclose}\isanewline |
|
70 % |
|
71 \isadelimproof |
|
72 % |
|
73 \endisadelimproof |
|
74 % |
|
75 \isatagproof |
|
76 \isacommand{by}\isamarkupfalse% |
|
77 \ {\isacharparenleft}auto\ simp{\isacharcolon}Seq{\isacharunderscore}def{\isacharparenright}% |
|
78 \endisatagproof |
|
79 {\isafoldproof}% |
|
80 % |
|
81 \isadelimproof |
|
82 \isanewline |
|
83 % |
|
84 \endisadelimproof |
|
85 \isanewline |
|
86 \isacommand{lemma}\isamarkupfalse% |
|
87 \ seq{\isacharunderscore}assoc{\isacharcolon}\isanewline |
|
88 \ \ {\isachardoublequoteopen}{\isacharparenleft}A\ {\isacharsemicolon}{\isacharsemicolon}\ B{\isacharparenright}\ {\isacharsemicolon}{\isacharsemicolon}\ C\ {\isacharequal}\ A\ {\isacharsemicolon}{\isacharsemicolon}\ {\isacharparenleft}B\ {\isacharsemicolon}{\isacharsemicolon}\ C{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
89 % |
|
90 \isadelimproof |
|
91 % |
|
92 \endisadelimproof |
|
93 % |
|
94 \isatagproof |
|
95 \isacommand{apply}\isamarkupfalse% |
|
96 {\isacharparenleft}auto\ simp{\isacharcolon}Seq{\isacharunderscore}def{\isacharparenright}\isanewline |
|
97 \isacommand{apply}\isamarkupfalse% |
|
98 \ blast\isanewline |
|
99 \isacommand{by}\isamarkupfalse% |
|
100 \ {\isacharparenleft}metis\ append{\isacharunderscore}assoc{\isacharparenright}% |
|
101 \endisatagproof |
|
102 {\isafoldproof}% |
|
103 % |
|
104 \isadelimproof |
|
105 \isanewline |
|
106 % |
|
107 \endisadelimproof |
|
108 \isanewline |
|
109 \isacommand{lemma}\isamarkupfalse% |
|
110 \ star{\isacharunderscore}intro{\isadigit{1}}{\isacharbrackleft}rule{\isacharunderscore}format{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isasymin}\ lang{\isasymstar}\ {\isasymLongrightarrow}\ {\isasymforall}\ y{\isachardot}\ y\ {\isasymin}\ lang{\isasymstar}\ {\isasymlongrightarrow}\ x\ {\isacharat}\ y\ {\isasymin}\ lang{\isasymstar}{\isachardoublequoteclose}\isanewline |
|
111 % |
|
112 \isadelimproof |
|
113 % |
|
114 \endisadelimproof |
|
115 % |
|
116 \isatagproof |
|
117 \isacommand{by}\isamarkupfalse% |
|
118 \ {\isacharparenleft}erule\ Star{\isachardot}induct{\isacharcomma}\ auto{\isacharparenright}% |
|
119 \endisatagproof |
|
120 {\isafoldproof}% |
|
121 % |
|
122 \isadelimproof |
|
123 \isanewline |
|
124 % |
|
125 \endisadelimproof |
|
126 \isanewline |
|
127 \isacommand{lemma}\isamarkupfalse% |
|
128 \ star{\isacharunderscore}intro{\isadigit{2}}{\isacharcolon}\ {\isachardoublequoteopen}y\ {\isasymin}\ lang\ {\isasymLongrightarrow}\ y\ {\isasymin}\ lang{\isasymstar}{\isachardoublequoteclose}\isanewline |
|
129 % |
|
130 \isadelimproof |
|
131 % |
|
132 \endisadelimproof |
|
133 % |
|
134 \isatagproof |
|
135 \isacommand{by}\isamarkupfalse% |
|
136 \ {\isacharparenleft}drule\ step{\isacharbrackleft}of\ y\ lang\ {\isachardoublequoteopen}{\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}{\isacharbrackright}{\isacharcomma}\ auto\ simp{\isacharcolon}start{\isacharparenright}% |
|
137 \endisatagproof |
|
138 {\isafoldproof}% |
|
139 % |
|
140 \isadelimproof |
|
141 \isanewline |
|
142 % |
|
143 \endisadelimproof |
|
144 \isanewline |
|
145 \isacommand{lemma}\isamarkupfalse% |
|
146 \ star{\isacharunderscore}intro{\isadigit{3}}{\isacharbrackleft}rule{\isacharunderscore}format{\isacharbrackright}{\isacharcolon}\ \isanewline |
|
147 \ \ {\isachardoublequoteopen}x\ {\isasymin}\ lang{\isasymstar}\ {\isasymLongrightarrow}\ {\isasymforall}y\ {\isachardot}\ y\ {\isasymin}\ lang\ {\isasymlongrightarrow}\ x\ {\isacharat}\ y\ {\isasymin}\ lang{\isasymstar}{\isachardoublequoteclose}\isanewline |
|
148 % |
|
149 \isadelimproof |
|
150 % |
|
151 \endisadelimproof |
|
152 % |
|
153 \isatagproof |
|
154 \isacommand{by}\isamarkupfalse% |
|
155 \ {\isacharparenleft}erule\ Star{\isachardot}induct{\isacharcomma}\ auto\ intro{\isacharcolon}star{\isacharunderscore}intro{\isadigit{2}}{\isacharparenright}% |
|
156 \endisatagproof |
|
157 {\isafoldproof}% |
|
158 % |
|
159 \isadelimproof |
|
160 \isanewline |
|
161 % |
|
162 \endisadelimproof |
|
163 \isanewline |
|
164 \isacommand{lemma}\isamarkupfalse% |
|
165 \ star{\isacharunderscore}decom{\isacharcolon}\ \isanewline |
|
166 \ \ {\isachardoublequoteopen}{\isasymlbrakk}x\ {\isasymin}\ lang{\isasymstar}{\isacharsemicolon}\ x\ {\isasymnoteq}\ {\isacharbrackleft}{\isacharbrackright}{\isasymrbrakk}\ {\isasymLongrightarrow}{\isacharparenleft}{\isasymexists}\ a\ b{\isachardot}\ x\ {\isacharequal}\ a\ {\isacharat}\ b\ {\isasymand}\ a\ {\isasymnoteq}\ {\isacharbrackleft}{\isacharbrackright}\ {\isasymand}\ a\ {\isasymin}\ lang\ {\isasymand}\ b\ {\isasymin}\ lang{\isasymstar}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
167 % |
|
168 \isadelimproof |
|
169 % |
|
170 \endisadelimproof |
|
171 % |
|
172 \isatagproof |
|
173 \isacommand{by}\isamarkupfalse% |
|
174 \ {\isacharparenleft}induct\ x\ rule{\isacharcolon}\ Star{\isachardot}induct{\isacharcomma}\ simp{\isacharcomma}\ blast{\isacharparenright}% |
|
175 \endisatagproof |
|
176 {\isafoldproof}% |
|
177 % |
|
178 \isadelimproof |
|
179 \isanewline |
|
180 % |
|
181 \endisadelimproof |
|
182 \isanewline |
|
183 \isacommand{lemma}\isamarkupfalse% |
|
184 \ star{\isacharunderscore}decom{\isacharprime}{\isacharcolon}\ \isanewline |
|
185 \ \ {\isachardoublequoteopen}{\isasymlbrakk}x\ {\isasymin}\ lang{\isasymstar}{\isacharsemicolon}\ x\ {\isasymnoteq}\ {\isacharbrackleft}{\isacharbrackright}{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isasymexists}a\ b{\isachardot}\ x\ {\isacharequal}\ a\ {\isacharat}\ b\ {\isasymand}\ a\ {\isasymin}\ lang{\isasymstar}\ {\isasymand}\ b\ {\isasymin}\ lang{\isachardoublequoteclose}\isanewline |
|
186 % |
|
187 \isadelimproof |
|
188 % |
|
189 \endisadelimproof |
|
190 % |
|
191 \isatagproof |
|
192 \isacommand{apply}\isamarkupfalse% |
|
193 \ {\isacharparenleft}induct\ x\ rule{\isacharcolon}Star{\isachardot}induct{\isacharcomma}\ simp{\isacharparenright}\isanewline |
|
194 \isacommand{apply}\isamarkupfalse% |
|
195 \ {\isacharparenleft}case{\isacharunderscore}tac\ {\isachardoublequoteopen}s{\isadigit{2}}\ {\isacharequal}\ {\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
196 \isacommand{apply}\isamarkupfalse% |
|
197 \ {\isacharparenleft}rule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}{\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}\ \isakeyword{in}\ exI{\isacharcomma}\ rule{\isacharunderscore}tac\ x\ {\isacharequal}\ s{\isadigit{1}}\ \isakeyword{in}\ exI{\isacharcomma}\ simp\ add{\isacharcolon}start{\isacharparenright}\isanewline |
|
198 \isacommand{apply}\isamarkupfalse% |
|
199 \ {\isacharparenleft}simp{\isacharcomma}\ {\isacharparenleft}erule\ exE{\isacharbar}\ erule\ conjE{\isacharparenright}{\isacharplus}{\isacharparenright}\isanewline |
|
200 \isacommand{by}\isamarkupfalse% |
|
201 \ {\isacharparenleft}rule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}s{\isadigit{1}}\ {\isacharat}\ a{\isachardoublequoteclose}\ \isakeyword{in}\ exI{\isacharcomma}\ rule{\isacharunderscore}tac\ x\ {\isacharequal}\ b\ \isakeyword{in}\ exI{\isacharcomma}\ simp\ add{\isacharcolon}step{\isacharparenright}% |
|
202 \endisatagproof |
|
203 {\isafoldproof}% |
|
204 % |
|
205 \isadelimproof |
|
206 % |
|
207 \endisadelimproof |
|
208 % |
|
209 \begin{isamarkuptext}% |
|
210 Ardens lemma expressed at the level of language, rather than the level of regular expression.% |
|
211 \end{isamarkuptext}% |
|
212 \isamarkuptrue% |
|
213 \isacommand{theorem}\isamarkupfalse% |
|
214 \ ardens{\isacharunderscore}revised{\isacharcolon}\isanewline |
|
215 \ \ \isakeyword{assumes}\ nemp{\isacharcolon}\ {\isachardoublequoteopen}{\isacharbrackleft}{\isacharbrackright}\ {\isasymnotin}\ A{\isachardoublequoteclose}\isanewline |
|
216 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}{\isacharparenleft}X\ {\isacharequal}\ X\ {\isacharsemicolon}{\isacharsemicolon}\ A\ {\isasymunion}\ B{\isacharparenright}\ {\isasymlongleftrightarrow}\ {\isacharparenleft}X\ {\isacharequal}\ B\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isasymstar}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
217 % |
|
218 \isadelimproof |
|
219 % |
|
220 \endisadelimproof |
|
221 % |
|
222 \isatagproof |
|
223 \isacommand{proof}\isamarkupfalse% |
|
224 \isanewline |
|
225 \ \ \isacommand{assume}\isamarkupfalse% |
|
226 \ eq{\isacharcolon}\ {\isachardoublequoteopen}X\ {\isacharequal}\ B\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isasymstar}{\isachardoublequoteclose}\isanewline |
|
227 \ \ \isacommand{have}\isamarkupfalse% |
|
228 \ {\isachardoublequoteopen}A{\isasymstar}\ {\isacharequal}\ \ {\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}\ {\isasymunion}\ A{\isasymstar}\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isachardoublequoteclose}\ \isanewline |
|
229 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
230 \ {\isacharparenleft}auto\ simp{\isacharcolon}Seq{\isacharunderscore}def\ star{\isacharunderscore}intro{\isadigit{3}}\ star{\isacharunderscore}decom{\isacharprime}{\isacharparenright}\ \ \isanewline |
|
231 \ \ \isacommand{then}\isamarkupfalse% |
|
232 \ \isacommand{have}\isamarkupfalse% |
|
233 \ {\isachardoublequoteopen}B\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isasymstar}\ {\isacharequal}\ B\ {\isacharsemicolon}{\isacharsemicolon}\ {\isacharparenleft}{\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}\ {\isasymunion}\ A{\isasymstar}\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
234 \ \ \ \ \isacommand{unfolding}\isamarkupfalse% |
|
235 \ Seq{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse% |
|
236 \ simp\isanewline |
|
237 \ \ \isacommand{also}\isamarkupfalse% |
|
238 \ \isacommand{have}\isamarkupfalse% |
|
239 \ {\isachardoublequoteopen}{\isasymdots}\ {\isacharequal}\ B\ {\isasymunion}\ B\ {\isacharsemicolon}{\isacharsemicolon}\ {\isacharparenleft}A{\isasymstar}\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isacharparenright}{\isachardoublequoteclose}\ \ \isanewline |
|
240 \ \ \ \ \isacommand{unfolding}\isamarkupfalse% |
|
241 \ Seq{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse% |
|
242 \ auto\isanewline |
|
243 \ \ \isacommand{also}\isamarkupfalse% |
|
244 \ \isacommand{have}\isamarkupfalse% |
|
245 \ {\isachardoublequoteopen}{\isasymdots}\ {\isacharequal}\ B\ {\isasymunion}\ {\isacharparenleft}B\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isasymstar}{\isacharparenright}\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isachardoublequoteclose}\ \isanewline |
|
246 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
247 \ {\isacharparenleft}simp\ only{\isacharcolon}seq{\isacharunderscore}assoc{\isacharparenright}\isanewline |
|
248 \ \ \isacommand{finally}\isamarkupfalse% |
|
249 \ \isacommand{show}\isamarkupfalse% |
|
250 \ {\isachardoublequoteopen}X\ {\isacharequal}\ X\ {\isacharsemicolon}{\isacharsemicolon}\ A\ {\isasymunion}\ B{\isachardoublequoteclose}\ \isanewline |
|
251 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
252 \ eq\ \isacommand{by}\isamarkupfalse% |
|
253 \ blast\ \isanewline |
|
254 \isacommand{next}\isamarkupfalse% |
|
255 \isanewline |
|
256 \ \ \isacommand{assume}\isamarkupfalse% |
|
257 \ eq{\isacharprime}{\isacharcolon}\ {\isachardoublequoteopen}X\ {\isacharequal}\ X\ {\isacharsemicolon}{\isacharsemicolon}\ A\ {\isasymunion}\ B{\isachardoublequoteclose}\isanewline |
|
258 \ \ \isacommand{hence}\isamarkupfalse% |
|
259 \ c{\isadigit{1}}{\isacharprime}{\isacharcolon}\ {\isachardoublequoteopen}{\isasymAnd}\ x{\isachardot}\ x\ {\isasymin}\ B\ {\isasymLongrightarrow}\ x\ {\isasymin}\ X{\isachardoublequoteclose}\ \isanewline |
|
260 \ \ \ \ \isakeyword{and}\ c{\isadigit{2}}{\isacharprime}{\isacharcolon}\ {\isachardoublequoteopen}{\isasymAnd}\ x\ y{\isachardot}\ {\isasymlbrakk}x\ {\isasymin}\ X{\isacharsemicolon}\ y\ {\isasymin}\ A{\isasymrbrakk}\ {\isasymLongrightarrow}\ x\ {\isacharat}\ y\ {\isasymin}\ X{\isachardoublequoteclose}\ \isanewline |
|
261 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
262 \ Seq{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse% |
|
263 \ auto\isanewline |
|
264 \ \ \isacommand{show}\isamarkupfalse% |
|
265 \ {\isachardoublequoteopen}X\ {\isacharequal}\ B\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isasymstar}{\isachardoublequoteclose}\ \isanewline |
|
266 \ \ \isacommand{proof}\isamarkupfalse% |
|
267 \isanewline |
|
268 \ \ \ \ \isacommand{show}\isamarkupfalse% |
|
269 \ {\isachardoublequoteopen}B\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isasymstar}\ {\isasymsubseteq}\ X{\isachardoublequoteclose}\isanewline |
|
270 \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
271 {\isacharminus}\isanewline |
|
272 \ \ \ \ \ \ \isacommand{{\isacharbraceleft}}\isamarkupfalse% |
|
273 \ \isacommand{fix}\isamarkupfalse% |
|
274 \ x\ y\isanewline |
|
275 \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
276 \ {\isachardoublequoteopen}{\isasymlbrakk}y\ {\isasymin}\ A{\isasymstar}{\isacharsemicolon}\ x\ {\isasymin}\ X{\isasymrbrakk}\ {\isasymLongrightarrow}\ x\ {\isacharat}\ y\ {\isasymin}\ X\ {\isachardoublequoteclose}\isanewline |
|
277 \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% |
|
278 \ {\isacharparenleft}induct\ arbitrary{\isacharcolon}x\ rule{\isacharcolon}Star{\isachardot}induct{\isacharcomma}\ simp{\isacharparenright}\isanewline |
|
279 \ \ \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
280 \ {\isacharparenleft}auto\ simp\ only{\isacharcolon}append{\isacharunderscore}assoc{\isacharbrackleft}THEN\ sym{\isacharbrackright}\ dest{\isacharcolon}c{\isadigit{2}}{\isacharprime}{\isacharparenright}\isanewline |
|
281 \ \ \ \ \ \ \isacommand{{\isacharbraceright}}\isamarkupfalse% |
|
282 \ \isacommand{thus}\isamarkupfalse% |
|
283 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
284 \ c{\isadigit{1}}{\isacharprime}\ \isacommand{by}\isamarkupfalse% |
|
285 \ {\isacharparenleft}auto\ simp{\isacharcolon}Seq{\isacharunderscore}def{\isacharparenright}\ \isanewline |
|
286 \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
287 \isanewline |
|
288 \ \ \isacommand{next}\isamarkupfalse% |
|
289 \isanewline |
|
290 \ \ \ \ \isacommand{show}\isamarkupfalse% |
|
291 \ {\isachardoublequoteopen}X\ {\isasymsubseteq}\ B\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isasymstar}{\isachardoublequoteclose}\isanewline |
|
292 \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
293 {\isacharminus}\isanewline |
|
294 \ \ \ \ \ \ \isacommand{{\isacharbraceleft}}\isamarkupfalse% |
|
295 \ \isacommand{fix}\isamarkupfalse% |
|
296 \ x\ \isanewline |
|
297 \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
298 \ {\isachardoublequoteopen}x\ {\isasymin}\ X\ {\isasymLongrightarrow}\ x\ {\isasymin}\ B\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isasymstar}{\isachardoublequoteclose}\isanewline |
|
299 \ \ \ \ \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
300 \ {\isacharparenleft}induct\ x\ taking{\isacharcolon}length\ rule{\isacharcolon}measure{\isacharunderscore}induct{\isacharparenright}\isanewline |
|
301 \ \ \ \ \ \ \ \ \ \ \isacommand{fix}\isamarkupfalse% |
|
302 \ z\isanewline |
|
303 \ \ \ \ \ \ \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
304 \ hyps{\isacharcolon}\ \isanewline |
|
305 \ \ \ \ \ \ \ \ \ \ \ \ {\isachardoublequoteopen}{\isasymforall}y{\isachardot}\ length\ y\ {\isacharless}\ length\ z\ {\isasymlongrightarrow}\ y\ {\isasymin}\ X\ {\isasymlongrightarrow}\ y\ {\isasymin}\ B\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isasymstar}{\isachardoublequoteclose}\ \isanewline |
|
306 \ \ \ \ \ \ \ \ \ \ \ \ \isakeyword{and}\ z{\isacharunderscore}in{\isacharcolon}\ {\isachardoublequoteopen}z\ {\isasymin}\ X{\isachardoublequoteclose}\isanewline |
|
307 \ \ \ \ \ \ \ \ \ \ \isacommand{show}\isamarkupfalse% |
|
308 \ {\isachardoublequoteopen}z\ {\isasymin}\ B\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isasymstar}{\isachardoublequoteclose}\isanewline |
|
309 \ \ \ \ \ \ \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
310 \ {\isacharparenleft}cases\ {\isachardoublequoteopen}z\ {\isasymin}\ B{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
311 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{case}\isamarkupfalse% |
|
312 \ True\ \isacommand{thus}\isamarkupfalse% |
|
313 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
314 \ {\isacharparenleft}auto\ simp{\isacharcolon}Seq{\isacharunderscore}def\ start{\isacharparenright}\isanewline |
|
315 \ \ \ \ \ \ \ \ \ \ \isacommand{next}\isamarkupfalse% |
|
316 \isanewline |
|
317 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{case}\isamarkupfalse% |
|
318 \ False\ \isacommand{hence}\isamarkupfalse% |
|
319 \ {\isachardoublequoteopen}z\ {\isasymin}\ X\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
320 \ eq{\isacharprime}\ z{\isacharunderscore}in\ \isacommand{by}\isamarkupfalse% |
|
321 \ auto\isanewline |
|
322 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{then}\isamarkupfalse% |
|
323 \ \isacommand{obtain}\isamarkupfalse% |
|
324 \ za\ zb\ \isakeyword{where}\ za{\isacharunderscore}in{\isacharcolon}\ {\isachardoublequoteopen}za\ {\isasymin}\ X{\isachardoublequoteclose}\ \isanewline |
|
325 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \isakeyword{and}\ zab{\isacharcolon}\ {\isachardoublequoteopen}z\ {\isacharequal}\ za\ {\isacharat}\ zb\ {\isasymand}\ zb\ {\isasymin}\ A{\isachardoublequoteclose}\ \isakeyword{and}\ zbne{\isacharcolon}\ {\isachardoublequoteopen}zb\ {\isasymnoteq}\ {\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}\ \isanewline |
|
326 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
327 \ nemp\ \isacommand{unfolding}\isamarkupfalse% |
|
328 \ Seq{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse% |
|
329 \ blast\isanewline |
|
330 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{from}\isamarkupfalse% |
|
331 \ zbne\ zab\ \isacommand{have}\isamarkupfalse% |
|
332 \ {\isachardoublequoteopen}length\ za\ {\isacharless}\ length\ z{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
333 \ auto\isanewline |
|
334 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{with}\isamarkupfalse% |
|
335 \ za{\isacharunderscore}in\ hyps\ \isacommand{have}\isamarkupfalse% |
|
336 \ {\isachardoublequoteopen}za\ {\isasymin}\ B\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isasymstar}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
337 \ blast\isanewline |
|
338 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{hence}\isamarkupfalse% |
|
339 \ {\isachardoublequoteopen}za\ {\isacharat}\ zb\ {\isasymin}\ B\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isasymstar}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
340 \ zab\ \isanewline |
|
341 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
342 \ {\isacharparenleft}clarsimp\ simp{\isacharcolon}Seq{\isacharunderscore}def{\isacharcomma}\ blast\ dest{\isacharcolon}star{\isacharunderscore}intro{\isadigit{3}}{\isacharparenright}\isanewline |
|
343 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
344 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
345 \ zab\ \isacommand{by}\isamarkupfalse% |
|
346 \ simp\ \ \ \ \ \ \ \isanewline |
|
347 \ \ \ \ \ \ \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
348 \isanewline |
|
349 \ \ \ \ \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
350 \ \isanewline |
|
351 \ \ \ \ \ \ \isacommand{{\isacharbraceright}}\isamarkupfalse% |
|
352 \ \isacommand{thus}\isamarkupfalse% |
|
353 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
354 \ blast\isanewline |
|
355 \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
356 \isanewline |
|
357 \ \ \isacommand{qed}\isamarkupfalse% |
|
358 \isanewline |
|
359 \isacommand{qed}\isamarkupfalse% |
|
360 % |
|
361 \endisatagproof |
|
362 {\isafoldproof}% |
|
363 % |
|
364 \isadelimproof |
|
365 % |
|
366 \endisadelimproof |
|
367 % |
|
368 \begin{isamarkuptext}% |
|
369 The syntax of regular expressions is defined by the datatype \isa{rexp}.% |
|
370 \end{isamarkuptext}% |
|
371 \isamarkuptrue% |
|
372 \isacommand{datatype}\isamarkupfalse% |
|
373 \ rexp\ {\isacharequal}\isanewline |
|
374 \ \ NULL\isanewline |
|
375 {\isacharbar}\ EMPTY\isanewline |
|
376 {\isacharbar}\ CHAR\ char\isanewline |
|
377 {\isacharbar}\ SEQ\ rexp\ rexp\isanewline |
|
378 {\isacharbar}\ ALT\ rexp\ rexp\isanewline |
|
379 {\isacharbar}\ STAR\ rexp% |
|
380 \begin{isamarkuptext}% |
|
381 The following \isa{L} is an overloaded operator, where \isa{L{\isacharparenleft}x{\isacharparenright}} evaluates to |
|
382 the language represented by the syntactic object \isa{x}.% |
|
383 \end{isamarkuptext}% |
|
384 \isamarkuptrue% |
|
385 \isacommand{consts}\isamarkupfalse% |
|
386 \ L{\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharprime}a\ {\isasymRightarrow}\ string\ set{\isachardoublequoteclose}% |
|
387 \begin{isamarkuptext}% |
|
388 The \isa{L{\isacharparenleft}rexp{\isacharparenright}} for regular expression \isa{rexp} is defined by the |
|
389 following overloading function \isa{L{\isacharunderscore}rexp}.% |
|
390 \end{isamarkuptext}% |
|
391 \isamarkuptrue% |
|
392 \isacommand{overloading}\isamarkupfalse% |
|
393 \ L{\isacharunderscore}rexp\ {\isasymequiv}\ {\isachardoublequoteopen}L{\isacharcolon}{\isacharcolon}\ \ rexp\ {\isasymRightarrow}\ string\ set{\isachardoublequoteclose}\isanewline |
|
394 \isakeyword{begin}\isanewline |
|
395 \isacommand{fun}\isamarkupfalse% |
|
396 \isanewline |
|
397 \ \ L{\isacharunderscore}rexp\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}rexp\ {\isasymRightarrow}\ string\ set{\isachardoublequoteclose}\isanewline |
|
398 \isakeyword{where}\isanewline |
|
399 \ \ \ \ {\isachardoublequoteopen}L{\isacharunderscore}rexp\ {\isacharparenleft}NULL{\isacharparenright}\ {\isacharequal}\ {\isacharbraceleft}{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
400 \ \ {\isacharbar}\ {\isachardoublequoteopen}L{\isacharunderscore}rexp\ {\isacharparenleft}EMPTY{\isacharparenright}\ {\isacharequal}\ {\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
401 \ \ {\isacharbar}\ {\isachardoublequoteopen}L{\isacharunderscore}rexp\ {\isacharparenleft}CHAR\ c{\isacharparenright}\ {\isacharequal}\ {\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
402 \ \ {\isacharbar}\ {\isachardoublequoteopen}L{\isacharunderscore}rexp\ {\isacharparenleft}SEQ\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}\ {\isacharequal}\ {\isacharparenleft}L{\isacharunderscore}rexp\ r{\isadigit{1}}{\isacharparenright}\ {\isacharsemicolon}{\isacharsemicolon}\ {\isacharparenleft}L{\isacharunderscore}rexp\ r{\isadigit{2}}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
403 \ \ {\isacharbar}\ {\isachardoublequoteopen}L{\isacharunderscore}rexp\ {\isacharparenleft}ALT\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}\ {\isacharequal}\ {\isacharparenleft}L{\isacharunderscore}rexp\ r{\isadigit{1}}{\isacharparenright}\ {\isasymunion}\ {\isacharparenleft}L{\isacharunderscore}rexp\ r{\isadigit{2}}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
404 \ \ {\isacharbar}\ {\isachardoublequoteopen}L{\isacharunderscore}rexp\ {\isacharparenleft}STAR\ r{\isacharparenright}\ {\isacharequal}\ {\isacharparenleft}L{\isacharunderscore}rexp\ r{\isacharparenright}{\isasymstar}{\isachardoublequoteclose}\isanewline |
|
405 \isacommand{end}\isamarkupfalse% |
|
406 % |
|
407 \begin{isamarkuptext}% |
|
408 To obtain equational system out of finite set of equivalent classes, a fold operation |
|
409 on finite set \isa{folds} is defined. The use of \isa{SOME} makes \isa{fold} |
|
410 more robust than the \isa{fold} in Isabelle library. The expression \isa{folds\ f} |
|
411 makes sense when \isa{f} is not \isa{associative} and \isa{commutitive}, |
|
412 while \isa{fold\ f} does not.% |
|
413 \end{isamarkuptext}% |
|
414 \isamarkuptrue% |
|
415 \isacommand{definition}\isamarkupfalse% |
|
416 \ \isanewline |
|
417 \ \ folds\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}{\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b\ {\isasymRightarrow}\ {\isacharprime}b{\isacharparenright}\ {\isasymRightarrow}\ {\isacharprime}b\ {\isasymRightarrow}\ {\isacharprime}a\ set\ {\isasymRightarrow}\ {\isacharprime}b{\isachardoublequoteclose}\isanewline |
|
418 \isakeyword{where}\isanewline |
|
419 \ \ {\isachardoublequoteopen}folds\ f\ z\ S\ {\isasymequiv}\ SOME\ x{\isachardot}\ fold{\isacharunderscore}graph\ f\ z\ S\ x{\isachardoublequoteclose}% |
|
420 \begin{isamarkuptext}% |
|
421 The following lemma assures that the arbitrary choice made by the \isa{SOME} in \isa{folds} |
|
422 does not affect the \isa{L}-value of the resultant regular expression.% |
|
423 \end{isamarkuptext}% |
|
424 \isamarkuptrue% |
|
425 \isacommand{lemma}\isamarkupfalse% |
|
426 \ folds{\isacharunderscore}alt{\isacharunderscore}simp\ {\isacharbrackleft}simp{\isacharbrackright}{\isacharcolon}\isanewline |
|
427 \ \ {\isachardoublequoteopen}finite\ rs\ {\isasymLongrightarrow}\ L\ {\isacharparenleft}folds\ ALT\ NULL\ rs{\isacharparenright}\ {\isacharequal}\ {\isasymUnion}\ {\isacharparenleft}L\ {\isacharbackquote}\ rs{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
428 % |
|
429 \isadelimproof |
|
430 % |
|
431 \endisadelimproof |
|
432 % |
|
433 \isatagproof |
|
434 \isacommand{apply}\isamarkupfalse% |
|
435 \ {\isacharparenleft}rule\ set{\isacharunderscore}ext{\isacharcomma}\ simp\ add{\isacharcolon}folds{\isacharunderscore}def{\isacharparenright}\isanewline |
|
436 \isacommand{apply}\isamarkupfalse% |
|
437 \ {\isacharparenleft}rule\ someI{\isadigit{2}}{\isacharunderscore}ex{\isacharcomma}\ erule\ finite{\isacharunderscore}imp{\isacharunderscore}fold{\isacharunderscore}graph{\isacharparenright}\isanewline |
|
438 \isacommand{by}\isamarkupfalse% |
|
439 \ {\isacharparenleft}erule\ fold{\isacharunderscore}graph{\isachardot}induct{\isacharcomma}\ auto{\isacharparenright}% |
|
440 \endisatagproof |
|
441 {\isafoldproof}% |
|
442 % |
|
443 \isadelimproof |
|
444 \isanewline |
|
445 % |
|
446 \endisadelimproof |
|
447 \isanewline |
|
448 \isanewline |
|
449 \isacommand{lemma}\isamarkupfalse% |
|
450 \ {\isacharbrackleft}simp{\isacharbrackright}{\isacharcolon}\isanewline |
|
451 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}{\isacharparenleft}x{\isacharcomma}\ y{\isacharparenright}\ {\isasymin}\ {\isacharbraceleft}{\isacharparenleft}x{\isacharcomma}\ y{\isacharparenright}{\isachardot}\ P\ x\ y{\isacharbraceright}\ {\isasymlongleftrightarrow}\ P\ x\ y{\isachardoublequoteclose}\isanewline |
|
452 % |
|
453 \isadelimproof |
|
454 % |
|
455 \endisadelimproof |
|
456 % |
|
457 \isatagproof |
|
458 \isacommand{by}\isamarkupfalse% |
|
459 \ simp% |
|
460 \endisatagproof |
|
461 {\isafoldproof}% |
|
462 % |
|
463 \isadelimproof |
|
464 % |
|
465 \endisadelimproof |
|
466 % |
|
467 \begin{isamarkuptext}% |
|
468 \isa{{\isasymapprox}L} is an equivalent class defined by language \isa{Lang}.% |
|
469 \end{isamarkuptext}% |
|
470 \isamarkuptrue% |
|
471 \isacommand{definition}\isamarkupfalse% |
|
472 \isanewline |
|
473 \ \ str{\isacharunderscore}eq{\isacharunderscore}rel\ {\isacharparenleft}{\isachardoublequoteopen}{\isasymapprox}{\isacharunderscore}{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
474 \isakeyword{where}\isanewline |
|
475 \ \ {\isachardoublequoteopen}{\isasymapprox}Lang\ {\isasymequiv}\ {\isacharbraceleft}{\isacharparenleft}x{\isacharcomma}\ y{\isacharparenright}{\isachardot}\ \ {\isacharparenleft}{\isasymforall}z{\isachardot}\ x\ {\isacharat}\ z\ {\isasymin}\ Lang\ {\isasymlongleftrightarrow}\ y\ {\isacharat}\ z\ {\isasymin}\ Lang{\isacharparenright}{\isacharbraceright}{\isachardoublequoteclose}% |
|
476 \begin{isamarkuptext}% |
|
477 Among equivlant clases of \isa{{\isasymapprox}Lang}, the set \isa{finals{\isacharparenleft}Lang{\isacharparenright}} singles out |
|
478 those which contains strings from \isa{Lang}.% |
|
479 \end{isamarkuptext}% |
|
480 \isamarkuptrue% |
|
481 \isacommand{definition}\isamarkupfalse% |
|
482 \ \isanewline |
|
483 \ \ \ {\isachardoublequoteopen}finals\ Lang\ {\isasymequiv}\ {\isacharbraceleft}{\isasymapprox}Lang\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}x{\isacharbraceright}\ {\isacharbar}\ x\ {\isachardot}\ x\ {\isasymin}\ Lang{\isacharbraceright}{\isachardoublequoteclose}% |
|
484 \begin{isamarkuptext}% |
|
485 The following lemma show the relationshipt between \isa{finals{\isacharparenleft}Lang{\isacharparenright}} and \isa{Lang}.% |
|
486 \end{isamarkuptext}% |
|
487 \isamarkuptrue% |
|
488 \isacommand{lemma}\isamarkupfalse% |
|
489 \ lang{\isacharunderscore}is{\isacharunderscore}union{\isacharunderscore}of{\isacharunderscore}finals{\isacharcolon}\ \isanewline |
|
490 \ \ {\isachardoublequoteopen}Lang\ {\isacharequal}\ {\isasymUnion}\ finals{\isacharparenleft}Lang{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
491 % |
|
492 \isadelimproof |
|
493 % |
|
494 \endisadelimproof |
|
495 % |
|
496 \isatagproof |
|
497 \isacommand{proof}\isamarkupfalse% |
|
498 \ \isanewline |
|
499 \ \ \isacommand{show}\isamarkupfalse% |
|
500 \ {\isachardoublequoteopen}Lang\ {\isasymsubseteq}\ {\isasymUnion}\ {\isacharparenleft}finals\ Lang{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
501 \ \ \isacommand{proof}\isamarkupfalse% |
|
502 \isanewline |
|
503 \ \ \ \ \isacommand{fix}\isamarkupfalse% |
|
504 \ x\isanewline |
|
505 \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
506 \ {\isachardoublequoteopen}x\ {\isasymin}\ Lang{\isachardoublequoteclose}\ \ \ \isanewline |
|
507 \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
508 \ {\isachardoublequoteopen}x\ {\isasymin}\ {\isasymUnion}\ {\isacharparenleft}finals\ Lang{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
509 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% |
|
510 \ {\isacharparenleft}simp\ add{\isacharcolon}finals{\isacharunderscore}def{\isacharcomma}\ rule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}{\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}x{\isacharbraceright}{\isachardoublequoteclose}\ \isakeyword{in}\ exI{\isacharparenright}\isanewline |
|
511 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
512 \ {\isacharparenleft}auto\ simp{\isacharcolon}Image{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def{\isacharparenright}\ \ \ \ \isanewline |
|
513 \ \ \isacommand{qed}\isamarkupfalse% |
|
514 \isanewline |
|
515 \isacommand{next}\isamarkupfalse% |
|
516 \isanewline |
|
517 \ \ \isacommand{show}\isamarkupfalse% |
|
518 \ {\isachardoublequoteopen}{\isasymUnion}\ {\isacharparenleft}finals\ Lang{\isacharparenright}\ {\isasymsubseteq}\ Lang{\isachardoublequoteclose}\isanewline |
|
519 \ \ \ \ \isacommand{apply}\isamarkupfalse% |
|
520 \ {\isacharparenleft}clarsimp\ simp{\isacharcolon}finals{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def{\isacharparenright}\isanewline |
|
521 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
522 \ {\isacharparenleft}drule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}{\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}\ \isakeyword{in}\ spec{\isacharcomma}\ auto{\isacharparenright}\isanewline |
|
523 \isacommand{qed}\isamarkupfalse% |
|
524 % |
|
525 \endisatagproof |
|
526 {\isafoldproof}% |
|
527 % |
|
528 \isadelimproof |
|
529 % |
|
530 \endisadelimproof |
|
531 % |
|
532 \isamarkupsection{Direction \isa{finite\ partition\ {\isasymRightarrow}\ regular\ language}% |
|
533 } |
|
534 \isamarkuptrue% |
|
535 % |
|
536 \begin{isamarkuptext}% |
|
537 The relationship between equivalent classes can be described by an |
|
538 equational system. |
|
539 For example, in equational system \eqref{example_eqns}, $X_0, X_1$ are equivalent |
|
540 classes. The first equation says every string in $X_0$ is obtained either by |
|
541 appending one $b$ to a string in $X_0$ or by appending one $a$ to a string in |
|
542 $X_1$ or just be an empty string (represented by the regular expression $\lambda$). Similary, |
|
543 the second equation tells how the strings inside $X_1$ are composed. |
|
544 \begin{equation}\label{example_eqns} |
|
545 \begin{aligned} |
|
546 X_0 & = X_0 b + X_1 a + \lambda \\ |
|
547 X_1 & = X_0 a + X_1 b |
|
548 \end{aligned} |
|
549 \end{equation} |
|
550 The summands on the right hand side is represented by the following data type |
|
551 \isa{rhs{\isacharunderscore}item}, mnemonic for 'right hand side item'. |
|
552 Generally, there are two kinds of right hand side items, one kind corresponds to |
|
553 pure regular expressions, like the $\lambda$ in \eqref{example_eqns}, the other kind corresponds to |
|
554 transitions from one one equivalent class to another, like the $X_0 b, X_1 a$ etc.% |
|
555 \end{isamarkuptext}% |
|
556 \isamarkuptrue% |
|
557 \isacommand{datatype}\isamarkupfalse% |
|
558 \ rhs{\isacharunderscore}item\ {\isacharequal}\ \isanewline |
|
559 \ \ \ Lam\ {\isachardoublequoteopen}rexp{\isachardoublequoteclose}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \isanewline |
|
560 \ {\isacharbar}\ Trn\ {\isachardoublequoteopen}{\isacharparenleft}string\ set{\isacharparenright}{\isachardoublequoteclose}\ {\isachardoublequoteopen}rexp{\isachardoublequoteclose}% |
|
561 \begin{isamarkuptext}% |
|
562 In this formalization, pure regular expressions like $\lambda$ is |
|
563 repsented by \isa{Lam{\isacharparenleft}EMPTY{\isacharparenright}}, while transitions like $X_0 a$ is represented by $Trn~X_0~(CHAR~a)$.% |
|
564 \end{isamarkuptext}% |
|
565 \isamarkuptrue% |
|
566 % |
|
567 \begin{isamarkuptext}% |
|
568 The functions \isa{the{\isacharunderscore}r} and \isa{the{\isacharunderscore}Trn} are used to extract |
|
569 subcomponents from right hand side items.% |
|
570 \end{isamarkuptext}% |
|
571 \isamarkuptrue% |
|
572 \isacommand{fun}\isamarkupfalse% |
|
573 \ the{\isacharunderscore}r\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}rhs{\isacharunderscore}item\ {\isasymRightarrow}\ rexp{\isachardoublequoteclose}\isanewline |
|
574 \isakeyword{where}\ {\isachardoublequoteopen}the{\isacharunderscore}r\ {\isacharparenleft}Lam\ r{\isacharparenright}\ {\isacharequal}\ r{\isachardoublequoteclose}\isanewline |
|
575 \isanewline |
|
576 \isacommand{fun}\isamarkupfalse% |
|
577 \ the{\isacharunderscore}Trn{\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}rhs{\isacharunderscore}item\ {\isasymRightarrow}\ {\isacharparenleft}string\ set\ {\isasymtimes}\ rexp{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
578 \isakeyword{where}\ {\isachardoublequoteopen}the{\isacharunderscore}Trn\ {\isacharparenleft}Trn\ Y\ r{\isacharparenright}\ {\isacharequal}\ {\isacharparenleft}Y{\isacharcomma}\ r{\isacharparenright}{\isachardoublequoteclose}% |
|
579 \begin{isamarkuptext}% |
|
580 Every right hand side item \isa{itm} defines a string set given |
|
581 \isa{L{\isacharparenleft}itm{\isacharparenright}}, defined as:% |
|
582 \end{isamarkuptext}% |
|
583 \isamarkuptrue% |
|
584 \isacommand{overloading}\isamarkupfalse% |
|
585 \ L{\isacharunderscore}rhs{\isacharunderscore}e\ {\isasymequiv}\ {\isachardoublequoteopen}L{\isacharcolon}{\isacharcolon}\ rhs{\isacharunderscore}item\ {\isasymRightarrow}\ string\ set{\isachardoublequoteclose}\isanewline |
|
586 \isakeyword{begin}\isanewline |
|
587 \ \ \isacommand{fun}\isamarkupfalse% |
|
588 \ L{\isacharunderscore}rhs{\isacharunderscore}e{\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}rhs{\isacharunderscore}item\ {\isasymRightarrow}\ string\ set{\isachardoublequoteclose}\isanewline |
|
589 \ \ \isakeyword{where}\isanewline |
|
590 \ \ \ \ \ {\isachardoublequoteopen}L{\isacharunderscore}rhs{\isacharunderscore}e\ {\isacharparenleft}Lam\ r{\isacharparenright}\ {\isacharequal}\ L\ r{\isachardoublequoteclose}\ {\isacharbar}\isanewline |
|
591 \ \ \ \ \ {\isachardoublequoteopen}L{\isacharunderscore}rhs{\isacharunderscore}e\ {\isacharparenleft}Trn\ X\ r{\isacharparenright}\ {\isacharequal}\ X\ {\isacharsemicolon}{\isacharsemicolon}\ L\ r{\isachardoublequoteclose}\isanewline |
|
592 \isacommand{end}\isamarkupfalse% |
|
593 % |
|
594 \begin{isamarkuptext}% |
|
595 The right hand side of every equation is represented by a set of |
|
596 items. The string set defined by such a set \isa{itms} is given |
|
597 by \isa{L{\isacharparenleft}itms{\isacharparenright}}, defined as:% |
|
598 \end{isamarkuptext}% |
|
599 \isamarkuptrue% |
|
600 \isacommand{overloading}\isamarkupfalse% |
|
601 \ L{\isacharunderscore}rhs\ {\isasymequiv}\ {\isachardoublequoteopen}L{\isacharcolon}{\isacharcolon}\ rhs{\isacharunderscore}item\ set\ {\isasymRightarrow}\ string\ set{\isachardoublequoteclose}\isanewline |
|
602 \isakeyword{begin}\isanewline |
|
603 \ \ \ \isacommand{fun}\isamarkupfalse% |
|
604 \ L{\isacharunderscore}rhs{\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}rhs{\isacharunderscore}item\ set\ {\isasymRightarrow}\ string\ set{\isachardoublequoteclose}\isanewline |
|
605 \ \ \ \isakeyword{where}\ {\isachardoublequoteopen}L{\isacharunderscore}rhs\ rhs\ {\isacharequal}\ {\isasymUnion}\ {\isacharparenleft}L\ {\isacharbackquote}\ rhs{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
606 \isacommand{end}\isamarkupfalse% |
|
607 % |
|
608 \begin{isamarkuptext}% |
|
609 Given a set of equivalent classses \isa{CS} and one equivalent class \isa{X} among |
|
610 \isa{CS}, the term \isa{init{\isacharunderscore}rhs\ CS\ X} is used to extract the right hand side of |
|
611 the equation describing the formation of \isa{X}. The definition of \isa{init{\isacharunderscore}rhs} |
|
612 is:% |
|
613 \end{isamarkuptext}% |
|
614 \isamarkuptrue% |
|
615 \isacommand{definition}\isamarkupfalse% |
|
616 \isanewline |
|
617 \ \ {\isachardoublequoteopen}init{\isacharunderscore}rhs\ CS\ X\ {\isasymequiv}\ \ \isanewline |
|
618 \ \ \ \ \ \ if\ {\isacharparenleft}{\isacharbrackleft}{\isacharbrackright}\ {\isasymin}\ X{\isacharparenright}\ then\ \isanewline |
|
619 \ \ \ \ \ \ \ \ \ \ {\isacharbraceleft}Lam{\isacharparenleft}EMPTY{\isacharparenright}{\isacharbraceright}\ {\isasymunion}\ {\isacharbraceleft}Trn\ Y\ {\isacharparenleft}CHAR\ c{\isacharparenright}\ {\isacharbar}\ Y\ c{\isachardot}\ Y\ {\isasymin}\ CS\ {\isasymand}\ Y\ {\isacharsemicolon}{\isacharsemicolon}\ {\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}\ {\isasymsubseteq}\ X{\isacharbraceright}\isanewline |
|
620 \ \ \ \ \ \ else\ \isanewline |
|
621 \ \ \ \ \ \ \ \ \ \ {\isacharbraceleft}Trn\ Y\ {\isacharparenleft}CHAR\ c{\isacharparenright}{\isacharbar}\ Y\ c{\isachardot}\ Y\ {\isasymin}\ CS\ {\isasymand}\ Y\ {\isacharsemicolon}{\isacharsemicolon}\ {\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}\ {\isasymsubseteq}\ X{\isacharbraceright}{\isachardoublequoteclose}% |
|
622 \begin{isamarkuptext}% |
|
623 In the definition of \isa{init{\isacharunderscore}rhs}, the term |
|
624 \isa{{\isacharbraceleft}Trn\ Y\ {\isacharparenleft}CHAR\ c{\isacharparenright}{\isacharbar}\ Y\ c{\isachardot}\ Y\ {\isasymin}\ CS\ {\isasymand}\ Y\ {\isacharsemicolon}{\isacharsemicolon}\ {\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}\ {\isasymsubseteq}\ X{\isacharbraceright}} appearing on both branches |
|
625 describes the formation of strings in \isa{X} out of transitions, while |
|
626 the term \isa{{\isacharbraceleft}Lam{\isacharparenleft}EMPTY{\isacharparenright}{\isacharbraceright}} describes the empty string which is intrinsically contained in |
|
627 \isa{X} rather than by transition. This \isa{{\isacharbraceleft}Lam{\isacharparenleft}EMPTY{\isacharparenright}{\isacharbraceright}} corresponds to |
|
628 the $\lambda$ in \eqref{example_eqns}. |
|
629 |
|
630 With the help of \isa{init{\isacharunderscore}rhs}, the equitional system descrbing the formation of every |
|
631 equivalent class inside \isa{CS} is given by the following \isa{eqs{\isacharparenleft}CS{\isacharparenright}}.% |
|
632 \end{isamarkuptext}% |
|
633 \isamarkuptrue% |
|
634 \isacommand{definition}\isamarkupfalse% |
|
635 \ {\isachardoublequoteopen}eqs\ CS\ {\isasymequiv}\ {\isacharbraceleft}{\isacharparenleft}X{\isacharcomma}\ init{\isacharunderscore}rhs\ CS\ X{\isacharparenright}\ {\isacharbar}\ X{\isachardot}\ \ X\ {\isasymin}\ CS{\isacharbraceright}{\isachardoublequoteclose}% |
|
636 \begin{isamarkuptext}% |
|
637 The following \isa{items{\isacharunderscore}of\ rhs\ X} returns all \isa{X}-items in \isa{rhs}.% |
|
638 \end{isamarkuptext}% |
|
639 \isamarkuptrue% |
|
640 \isacommand{definition}\isamarkupfalse% |
|
641 \isanewline |
|
642 \ \ {\isachardoublequoteopen}items{\isacharunderscore}of\ rhs\ X\ {\isasymequiv}\ {\isacharbraceleft}Trn\ X\ r\ {\isacharbar}\ r{\isachardot}\ {\isacharparenleft}Trn\ X\ r{\isacharparenright}\ {\isasymin}\ rhs{\isacharbraceright}{\isachardoublequoteclose}% |
|
643 \begin{isamarkuptext}% |
|
644 The following \isa{rexp{\isacharunderscore}of\ rhs\ X} combines all regular expressions in \isa{X}-items |
|
645 using \isa{ALT} to form a single regular expression. |
|
646 It will be used later to implement \isa{arden{\isacharunderscore}variate} and \isa{rhs{\isacharunderscore}subst}.% |
|
647 \end{isamarkuptext}% |
|
648 \isamarkuptrue% |
|
649 \isacommand{definition}\isamarkupfalse% |
|
650 \ \isanewline |
|
651 \ \ {\isachardoublequoteopen}rexp{\isacharunderscore}of\ rhs\ X\ {\isasymequiv}\ folds\ ALT\ NULL\ {\isacharparenleft}{\isacharparenleft}snd\ o\ the{\isacharunderscore}Trn{\isacharparenright}\ {\isacharbackquote}\ items{\isacharunderscore}of\ rhs\ X{\isacharparenright}{\isachardoublequoteclose}% |
|
652 \begin{isamarkuptext}% |
|
653 The following \isa{lam{\isacharunderscore}of\ rhs} returns all pure regular expression items in \isa{rhs}.% |
|
654 \end{isamarkuptext}% |
|
655 \isamarkuptrue% |
|
656 \isacommand{definition}\isamarkupfalse% |
|
657 \isanewline |
|
658 \ \ {\isachardoublequoteopen}lam{\isacharunderscore}of\ rhs\ {\isasymequiv}\ {\isacharbraceleft}Lam\ r\ {\isacharbar}\ r{\isachardot}\ Lam\ r\ {\isasymin}\ rhs{\isacharbraceright}{\isachardoublequoteclose}% |
|
659 \begin{isamarkuptext}% |
|
660 The following \isa{rexp{\isacharunderscore}of{\isacharunderscore}lam\ rhs} combines pure regular expression items in \isa{rhs} |
|
661 using \isa{ALT} to form a single regular expression. |
|
662 When all variables inside \isa{rhs} are eliminated, \isa{rexp{\isacharunderscore}of{\isacharunderscore}lam\ rhs} |
|
663 is used to compute compute the regular expression corresponds to \isa{rhs}.% |
|
664 \end{isamarkuptext}% |
|
665 \isamarkuptrue% |
|
666 \isacommand{definition}\isamarkupfalse% |
|
667 \isanewline |
|
668 \ \ {\isachardoublequoteopen}rexp{\isacharunderscore}of{\isacharunderscore}lam\ rhs\ {\isasymequiv}\ folds\ ALT\ NULL\ {\isacharparenleft}the{\isacharunderscore}r\ {\isacharbackquote}\ lam{\isacharunderscore}of\ rhs{\isacharparenright}{\isachardoublequoteclose}% |
|
669 \begin{isamarkuptext}% |
|
670 The following \isa{attach{\isacharunderscore}rexp\ rexp{\isacharprime}\ itm} attach |
|
671 the regular expression \isa{rexp{\isacharprime}} to |
|
672 the right of right hand side item \isa{itm}.% |
|
673 \end{isamarkuptext}% |
|
674 \isamarkuptrue% |
|
675 \isacommand{fun}\isamarkupfalse% |
|
676 \ attach{\isacharunderscore}rexp\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}rexp\ {\isasymRightarrow}\ rhs{\isacharunderscore}item\ {\isasymRightarrow}\ rhs{\isacharunderscore}item{\isachardoublequoteclose}\isanewline |
|
677 \isakeyword{where}\isanewline |
|
678 \ \ {\isachardoublequoteopen}attach{\isacharunderscore}rexp\ rexp{\isacharprime}\ {\isacharparenleft}Lam\ rexp{\isacharparenright}\ \ \ {\isacharequal}\ Lam\ {\isacharparenleft}SEQ\ rexp\ rexp{\isacharprime}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
679 {\isacharbar}\ {\isachardoublequoteopen}attach{\isacharunderscore}rexp\ rexp{\isacharprime}\ {\isacharparenleft}Trn\ X\ rexp{\isacharparenright}\ {\isacharequal}\ Trn\ X\ {\isacharparenleft}SEQ\ rexp\ rexp{\isacharprime}{\isacharparenright}{\isachardoublequoteclose}% |
|
680 \begin{isamarkuptext}% |
|
681 The following \isa{append{\isacharunderscore}rhs{\isacharunderscore}rexp\ rhs\ rexp} attaches |
|
682 \isa{rexp} to every item in \isa{rhs}.% |
|
683 \end{isamarkuptext}% |
|
684 \isamarkuptrue% |
|
685 \isacommand{definition}\isamarkupfalse% |
|
686 \isanewline |
|
687 \ \ {\isachardoublequoteopen}append{\isacharunderscore}rhs{\isacharunderscore}rexp\ rhs\ rexp\ {\isasymequiv}\ {\isacharparenleft}attach{\isacharunderscore}rexp\ rexp{\isacharparenright}\ {\isacharbackquote}\ rhs{\isachardoublequoteclose}% |
|
688 \begin{isamarkuptext}% |
|
689 With the help of the two functions immediately above, Ardens' |
|
690 transformation on right hand side \isa{rhs} is implemented |
|
691 by the following function \isa{arden{\isacharunderscore}variate\ X\ rhs}. |
|
692 After this transformation, the recursive occurent of \isa{X} |
|
693 in \isa{rhs} will be eliminated, while the |
|
694 string set defined by \isa{rhs} is kept unchanged.% |
|
695 \end{isamarkuptext}% |
|
696 \isamarkuptrue% |
|
697 \isacommand{definition}\isamarkupfalse% |
|
698 \ \isanewline |
|
699 \ \ {\isachardoublequoteopen}arden{\isacharunderscore}variate\ X\ rhs\ {\isasymequiv}\ \isanewline |
|
700 \ \ \ \ \ \ \ \ append{\isacharunderscore}rhs{\isacharunderscore}rexp\ {\isacharparenleft}rhs\ {\isacharminus}\ items{\isacharunderscore}of\ rhs\ X{\isacharparenright}\ {\isacharparenleft}STAR\ {\isacharparenleft}rexp{\isacharunderscore}of\ rhs\ X{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}% |
|
701 \begin{isamarkuptext}% |
|
702 Suppose the equation defining \isa{X} is $X = xrhs$, |
|
703 the purpose of \isa{rhs{\isacharunderscore}subst} is to substitute all occurences of \isa{X} in |
|
704 \isa{rhs} by \isa{xrhs}. |
|
705 A litte thought may reveal that the final result |
|
706 should be: first append $(a_1 | a_2 | \ldots | a_n)$ to every item of \isa{xrhs} and then |
|
707 union the result with all non-\isa{X}-items of \isa{rhs}.% |
|
708 \end{isamarkuptext}% |
|
709 \isamarkuptrue% |
|
710 \isacommand{definition}\isamarkupfalse% |
|
711 \ \isanewline |
|
712 \ \ {\isachardoublequoteopen}rhs{\isacharunderscore}subst\ rhs\ X\ xrhs\ {\isasymequiv}\ \isanewline |
|
713 \ \ \ \ \ \ \ \ {\isacharparenleft}rhs\ {\isacharminus}\ {\isacharparenleft}items{\isacharunderscore}of\ rhs\ X{\isacharparenright}{\isacharparenright}\ {\isasymunion}\ {\isacharparenleft}append{\isacharunderscore}rhs{\isacharunderscore}rexp\ xrhs\ {\isacharparenleft}rexp{\isacharunderscore}of\ rhs\ X{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}% |
|
714 \begin{isamarkuptext}% |
|
715 Suppose the equation defining \isa{X} is $X = xrhs$, the follwing |
|
716 \isa{eqs{\isacharunderscore}subst\ ES\ X\ xrhs} substitute \isa{xrhs} into every equation |
|
717 of the equational system \isa{ES}.% |
|
718 \end{isamarkuptext}% |
|
719 \isamarkuptrue% |
|
720 \isacommand{definition}\isamarkupfalse% |
|
721 \isanewline |
|
722 \ \ {\isachardoublequoteopen}eqs{\isacharunderscore}subst\ ES\ X\ xrhs\ {\isasymequiv}\ {\isacharbraceleft}{\isacharparenleft}Y{\isacharcomma}\ rhs{\isacharunderscore}subst\ yrhs\ X\ xrhs{\isacharparenright}\ {\isacharbar}\ Y\ yrhs{\isachardot}\ {\isacharparenleft}Y{\isacharcomma}\ yrhs{\isacharparenright}\ {\isasymin}\ ES{\isacharbraceright}{\isachardoublequoteclose}% |
|
723 \begin{isamarkuptext}% |
|
724 The computation of regular expressions for equivalent classes is accomplished |
|
725 using a iteration principle given by the following lemma.% |
|
726 \end{isamarkuptext}% |
|
727 \isamarkuptrue% |
|
728 \isacommand{lemma}\isamarkupfalse% |
|
729 \ wf{\isacharunderscore}iter\ {\isacharbrackleft}rule{\isacharunderscore}format{\isacharbrackright}{\isacharcolon}\ \isanewline |
|
730 \ \ \isakeyword{fixes}\ f\isanewline |
|
731 \ \ \isakeyword{assumes}\ step{\isacharcolon}\ {\isachardoublequoteopen}{\isasymAnd}\ e{\isachardot}\ {\isasymlbrakk}P\ e{\isacharsemicolon}\ {\isasymnot}\ Q\ e{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isacharparenleft}{\isasymexists}\ e{\isacharprime}{\isachardot}\ P\ e{\isacharprime}\ {\isasymand}\ \ {\isacharparenleft}f{\isacharparenleft}e{\isacharprime}{\isacharparenright}{\isacharcomma}\ f{\isacharparenleft}e{\isacharparenright}{\isacharparenright}\ {\isasymin}\ less{\isacharunderscore}than{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
732 \ \ \isakeyword{shows}\ pe{\isacharcolon}\ \ \ \ \ {\isachardoublequoteopen}P\ e\ {\isasymlongrightarrow}\ {\isacharparenleft}{\isasymexists}\ e{\isacharprime}{\isachardot}\ P\ e{\isacharprime}\ {\isasymand}\ \ Q\ e{\isacharprime}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
733 % |
|
734 \isadelimproof |
|
735 % |
|
736 \endisadelimproof |
|
737 % |
|
738 \isatagproof |
|
739 \isacommand{proof}\isamarkupfalse% |
|
740 {\isacharparenleft}induct\ e\ rule{\isacharcolon}\ wf{\isacharunderscore}induct\ \isanewline |
|
741 \ \ \ \ \ \ \ \ \ \ \ {\isacharbrackleft}OF\ wf{\isacharunderscore}inv{\isacharunderscore}image{\isacharbrackleft}OF\ wf{\isacharunderscore}less{\isacharunderscore}than{\isacharcomma}\ \isakeyword{where}\ f\ {\isacharequal}\ {\isachardoublequoteopen}f{\isachardoublequoteclose}{\isacharbrackright}{\isacharbrackright}{\isacharcomma}\ clarify{\isacharparenright}\isanewline |
|
742 \ \ \isacommand{fix}\isamarkupfalse% |
|
743 \ x\ \isanewline |
|
744 \ \ \isacommand{assume}\isamarkupfalse% |
|
745 \ h\ {\isacharbrackleft}rule{\isacharunderscore}format{\isacharbrackright}{\isacharcolon}\ \isanewline |
|
746 \ \ \ \ {\isachardoublequoteopen}{\isasymforall}y{\isachardot}\ {\isacharparenleft}y{\isacharcomma}\ x{\isacharparenright}\ {\isasymin}\ inv{\isacharunderscore}image\ less{\isacharunderscore}than\ f\ {\isasymlongrightarrow}\ P\ y\ {\isasymlongrightarrow}\ {\isacharparenleft}{\isasymexists}e{\isacharprime}{\isachardot}\ P\ e{\isacharprime}\ {\isasymand}\ Q\ e{\isacharprime}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
747 \ \ \ \ \isakeyword{and}\ px{\isacharcolon}\ {\isachardoublequoteopen}P\ x{\isachardoublequoteclose}\isanewline |
|
748 \ \ \isacommand{show}\isamarkupfalse% |
|
749 \ {\isachardoublequoteopen}{\isasymexists}e{\isacharprime}{\isachardot}\ P\ e{\isacharprime}\ {\isasymand}\ Q\ e{\isacharprime}{\isachardoublequoteclose}\isanewline |
|
750 \ \ \isacommand{proof}\isamarkupfalse% |
|
751 {\isacharparenleft}cases\ {\isachardoublequoteopen}Q\ x{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
752 \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
753 \ {\isachardoublequoteopen}Q\ x{\isachardoublequoteclose}\ \isacommand{with}\isamarkupfalse% |
|
754 \ px\ \isacommand{show}\isamarkupfalse% |
|
755 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
756 \ blast\isanewline |
|
757 \ \ \isacommand{next}\isamarkupfalse% |
|
758 \isanewline |
|
759 \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
760 \ nq{\isacharcolon}\ {\isachardoublequoteopen}{\isasymnot}\ Q\ x{\isachardoublequoteclose}\isanewline |
|
761 \ \ \ \ \isacommand{from}\isamarkupfalse% |
|
762 \ step\ {\isacharbrackleft}OF\ px\ nq{\isacharbrackright}\isanewline |
|
763 \ \ \ \ \isacommand{obtain}\isamarkupfalse% |
|
764 \ e{\isacharprime}\ \isakeyword{where}\ pe{\isacharprime}{\isacharcolon}\ {\isachardoublequoteopen}P\ e{\isacharprime}{\isachardoublequoteclose}\ \isakeyword{and}\ ltf{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}f\ e{\isacharprime}{\isacharcomma}\ f\ x{\isacharparenright}\ {\isasymin}\ less{\isacharunderscore}than{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
765 \ auto\isanewline |
|
766 \ \ \ \ \isacommand{show}\isamarkupfalse% |
|
767 \ {\isacharquery}thesis\isanewline |
|
768 \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
769 {\isacharparenleft}rule\ h{\isacharparenright}\isanewline |
|
770 \ \ \ \ \ \ \isacommand{from}\isamarkupfalse% |
|
771 \ ltf\ \isacommand{show}\isamarkupfalse% |
|
772 \ {\isachardoublequoteopen}{\isacharparenleft}e{\isacharprime}{\isacharcomma}\ x{\isacharparenright}\ {\isasymin}\ inv{\isacharunderscore}image\ less{\isacharunderscore}than\ f{\isachardoublequoteclose}\ \isanewline |
|
773 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
774 \ {\isacharparenleft}simp\ add{\isacharcolon}inv{\isacharunderscore}image{\isacharunderscore}def{\isacharparenright}\isanewline |
|
775 \ \ \ \ \isacommand{next}\isamarkupfalse% |
|
776 \isanewline |
|
777 \ \ \ \ \ \ \isacommand{from}\isamarkupfalse% |
|
778 \ pe{\isacharprime}\ \isacommand{show}\isamarkupfalse% |
|
779 \ {\isachardoublequoteopen}P\ e{\isacharprime}{\isachardoublequoteclose}\ \isacommand{{\isachardot}}\isamarkupfalse% |
|
780 \isanewline |
|
781 \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
782 \isanewline |
|
783 \ \ \isacommand{qed}\isamarkupfalse% |
|
784 \isanewline |
|
785 \isacommand{qed}\isamarkupfalse% |
|
786 % |
|
787 \endisatagproof |
|
788 {\isafoldproof}% |
|
789 % |
|
790 \isadelimproof |
|
791 % |
|
792 \endisadelimproof |
|
793 % |
|
794 \begin{isamarkuptext}% |
|
795 The \isa{P} in lemma \isa{wf{\isacharunderscore}iter} is an invaiant kept throughout the iteration procedure. |
|
796 The particular invariant used to solve our problem is defined by function \isa{Inv{\isacharparenleft}ES{\isacharparenright}}, |
|
797 an invariant over equal system \isa{ES}. |
|
798 Every definition starting next till \isa{Inv} stipulates a property to be satisfied by \isa{ES}.% |
|
799 \end{isamarkuptext}% |
|
800 \isamarkuptrue% |
|
801 % |
|
802 \begin{isamarkuptext}% |
|
803 Every variable is defined at most onece in \isa{ES}.% |
|
804 \end{isamarkuptext}% |
|
805 \isamarkuptrue% |
|
806 \isacommand{definition}\isamarkupfalse% |
|
807 \ \isanewline |
|
808 \ \ {\isachardoublequoteopen}distinct{\isacharunderscore}equas\ ES\ {\isasymequiv}\ \isanewline |
|
809 \ \ \ \ \ \ \ \ \ \ \ \ {\isasymforall}\ X\ rhs\ rhs{\isacharprime}{\isachardot}\ {\isacharparenleft}X{\isacharcomma}\ rhs{\isacharparenright}\ {\isasymin}\ ES\ {\isasymand}\ {\isacharparenleft}X{\isacharcomma}\ rhs{\isacharprime}{\isacharparenright}\ {\isasymin}\ ES\ {\isasymlongrightarrow}\ rhs\ {\isacharequal}\ rhs{\isacharprime}{\isachardoublequoteclose}% |
|
810 \begin{isamarkuptext}% |
|
811 Every equation in \isa{ES} (represented by \isa{{\isacharparenleft}X{\isacharcomma}\ rhs{\isacharparenright}}) is valid, i.e. \isa{{\isacharparenleft}X\ {\isacharequal}\ L\ rhs{\isacharparenright}}.% |
|
812 \end{isamarkuptext}% |
|
813 \isamarkuptrue% |
|
814 \isacommand{definition}\isamarkupfalse% |
|
815 \ \isanewline |
|
816 \ \ {\isachardoublequoteopen}valid{\isacharunderscore}eqns\ ES\ {\isasymequiv}\ {\isasymforall}\ X\ rhs{\isachardot}\ {\isacharparenleft}X{\isacharcomma}\ rhs{\isacharparenright}\ {\isasymin}\ ES\ {\isasymlongrightarrow}\ {\isacharparenleft}X\ {\isacharequal}\ L\ rhs{\isacharparenright}{\isachardoublequoteclose}% |
|
817 \begin{isamarkuptext}% |
|
818 \isa{rhs{\isacharunderscore}nonempty\ rhs} requires regular expressions occuring in transitional |
|
819 items of \isa{rhs} does not contain empty string. This is necessary for |
|
820 the application of Arden's transformation to \isa{rhs}.% |
|
821 \end{isamarkuptext}% |
|
822 \isamarkuptrue% |
|
823 \isacommand{definition}\isamarkupfalse% |
|
824 \ \isanewline |
|
825 \ \ {\isachardoublequoteopen}rhs{\isacharunderscore}nonempty\ rhs\ {\isasymequiv}\ {\isacharparenleft}{\isasymforall}\ Y\ r{\isachardot}\ Trn\ Y\ r\ {\isasymin}\ rhs\ {\isasymlongrightarrow}\ {\isacharbrackleft}{\isacharbrackright}\ {\isasymnotin}\ L\ r{\isacharparenright}{\isachardoublequoteclose}% |
|
826 \begin{isamarkuptext}% |
|
827 \isa{ardenable\ ES} requires that Arden's transformation is applicable |
|
828 to every equation of equational system \isa{ES}.% |
|
829 \end{isamarkuptext}% |
|
830 \isamarkuptrue% |
|
831 \isacommand{definition}\isamarkupfalse% |
|
832 \ \isanewline |
|
833 \ \ {\isachardoublequoteopen}ardenable\ ES\ {\isasymequiv}\ {\isasymforall}\ X\ rhs{\isachardot}\ {\isacharparenleft}X{\isacharcomma}\ rhs{\isacharparenright}\ {\isasymin}\ ES\ {\isasymlongrightarrow}\ rhs{\isacharunderscore}nonempty\ rhs{\isachardoublequoteclose}\isanewline |
|
834 \isanewline |
|
835 \isanewline |
|
836 \isacommand{definition}\isamarkupfalse% |
|
837 \ \isanewline |
|
838 \ \ {\isachardoublequoteopen}non{\isacharunderscore}empty\ ES\ {\isasymequiv}\ {\isasymforall}\ X\ rhs{\isachardot}\ {\isacharparenleft}X{\isacharcomma}\ rhs{\isacharparenright}\ {\isasymin}\ ES\ {\isasymlongrightarrow}\ X\ {\isasymnoteq}\ {\isacharbraceleft}{\isacharbraceright}{\isachardoublequoteclose}% |
|
839 \begin{isamarkuptext}% |
|
840 The following \isa{finite{\isacharunderscore}rhs\ ES} requires every equation in \isa{rhs} be finite.% |
|
841 \end{isamarkuptext}% |
|
842 \isamarkuptrue% |
|
843 \isacommand{definition}\isamarkupfalse% |
|
844 \isanewline |
|
845 \ \ {\isachardoublequoteopen}finite{\isacharunderscore}rhs\ ES\ {\isasymequiv}\ {\isasymforall}\ X\ rhs{\isachardot}\ {\isacharparenleft}X{\isacharcomma}\ rhs{\isacharparenright}\ {\isasymin}\ ES\ {\isasymlongrightarrow}\ finite\ rhs{\isachardoublequoteclose}% |
|
846 \begin{isamarkuptext}% |
|
847 The following \isa{classes{\isacharunderscore}of\ rhs} returns all variables (or equivalent classes) |
|
848 occuring in \isa{rhs}.% |
|
849 \end{isamarkuptext}% |
|
850 \isamarkuptrue% |
|
851 \isacommand{definition}\isamarkupfalse% |
|
852 \ \isanewline |
|
853 \ \ {\isachardoublequoteopen}classes{\isacharunderscore}of\ rhs\ {\isasymequiv}\ {\isacharbraceleft}X{\isachardot}\ {\isasymexists}\ r{\isachardot}\ Trn\ X\ r\ {\isasymin}\ rhs{\isacharbraceright}{\isachardoublequoteclose}% |
|
854 \begin{isamarkuptext}% |
|
855 The following \isa{lefts{\isacharunderscore}of\ ES} returns all variables |
|
856 defined by equational system \isa{ES}.% |
|
857 \end{isamarkuptext}% |
|
858 \isamarkuptrue% |
|
859 \isacommand{definition}\isamarkupfalse% |
|
860 \isanewline |
|
861 \ \ {\isachardoublequoteopen}lefts{\isacharunderscore}of\ ES\ {\isasymequiv}\ {\isacharbraceleft}Y\ {\isacharbar}\ Y\ yrhs{\isachardot}\ {\isacharparenleft}Y{\isacharcomma}\ yrhs{\isacharparenright}\ {\isasymin}\ ES{\isacharbraceright}{\isachardoublequoteclose}% |
|
862 \begin{isamarkuptext}% |
|
863 The following \isa{self{\isacharunderscore}contained\ ES} requires that every |
|
864 variable occuring on the right hand side of equations is already defined by some |
|
865 equation in \isa{ES}.% |
|
866 \end{isamarkuptext}% |
|
867 \isamarkuptrue% |
|
868 \isacommand{definition}\isamarkupfalse% |
|
869 \ \isanewline |
|
870 \ \ {\isachardoublequoteopen}self{\isacharunderscore}contained\ ES\ {\isasymequiv}\ {\isasymforall}\ {\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharparenright}\ {\isasymin}\ ES{\isachardot}\ classes{\isacharunderscore}of\ xrhs\ {\isasymsubseteq}\ lefts{\isacharunderscore}of\ ES{\isachardoublequoteclose}% |
|
871 \begin{isamarkuptext}% |
|
872 The invariant \isa{Inv{\isacharparenleft}ES{\isacharparenright}} is obtained by conjunctioning all the previous |
|
873 defined constaints on \isa{ES}.% |
|
874 \end{isamarkuptext}% |
|
875 \isamarkuptrue% |
|
876 \isacommand{definition}\isamarkupfalse% |
|
877 \ \isanewline |
|
878 \ \ {\isachardoublequoteopen}Inv\ ES\ {\isasymequiv}\ valid{\isacharunderscore}eqns\ ES\ {\isasymand}\ finite\ ES\ {\isasymand}\ distinct{\isacharunderscore}equas\ ES\ {\isasymand}\ ardenable\ ES\ {\isasymand}\ \isanewline |
|
879 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ non{\isacharunderscore}empty\ ES\ {\isasymand}\ finite{\isacharunderscore}rhs\ ES\ {\isasymand}\ self{\isacharunderscore}contained\ ES{\isachardoublequoteclose}% |
|
880 \isamarkupsubsection{Proof for this direction% |
|
881 } |
|
882 \isamarkuptrue% |
|
883 % |
|
884 \begin{isamarkuptext}% |
|
885 The following are some basic properties of the above definitions.% |
|
886 \end{isamarkuptext}% |
|
887 \isamarkuptrue% |
|
888 \isacommand{lemma}\isamarkupfalse% |
|
889 \ L{\isacharunderscore}rhs{\isacharunderscore}union{\isacharunderscore}distrib{\isacharcolon}\isanewline |
|
890 \ \ {\isachardoublequoteopen}\ L\ {\isacharparenleft}A{\isacharcolon}{\isacharcolon}rhs{\isacharunderscore}item\ set{\isacharparenright}\ {\isasymunion}\ L\ B\ {\isacharequal}\ L\ {\isacharparenleft}A\ {\isasymunion}\ B{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
891 % |
|
892 \isadelimproof |
|
893 % |
|
894 \endisadelimproof |
|
895 % |
|
896 \isatagproof |
|
897 \isacommand{by}\isamarkupfalse% |
|
898 \ simp% |
|
899 \endisatagproof |
|
900 {\isafoldproof}% |
|
901 % |
|
902 \isadelimproof |
|
903 \isanewline |
|
904 % |
|
905 \endisadelimproof |
|
906 \isanewline |
|
907 \isacommand{lemma}\isamarkupfalse% |
|
908 \ finite{\isacharunderscore}snd{\isacharunderscore}Trn{\isacharcolon}\isanewline |
|
909 \ \ \isakeyword{assumes}\ finite{\isacharcolon}{\isachardoublequoteopen}finite\ rhs{\isachardoublequoteclose}\isanewline |
|
910 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}finite\ {\isacharbraceleft}r\isactrlisub {\isadigit{2}}{\isachardot}\ Trn\ Y\ r\isactrlisub {\isadigit{2}}\ {\isasymin}\ rhs{\isacharbraceright}{\isachardoublequoteclose}\ {\isacharparenleft}\isakeyword{is}\ {\isachardoublequoteopen}finite\ {\isacharquery}B{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
911 % |
|
912 \isadelimproof |
|
913 % |
|
914 \endisadelimproof |
|
915 % |
|
916 \isatagproof |
|
917 \isacommand{proof}\isamarkupfalse% |
|
918 {\isacharminus}\isanewline |
|
919 \ \ \isacommand{def}\isamarkupfalse% |
|
920 \ rhs{\isacharprime}\ {\isasymequiv}\ {\isachardoublequoteopen}{\isacharbraceleft}e\ {\isasymin}\ rhs{\isachardot}\ {\isasymexists}\ r{\isachardot}\ e\ {\isacharequal}\ Trn\ Y\ r{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
921 \ \ \isacommand{have}\isamarkupfalse% |
|
922 \ {\isachardoublequoteopen}{\isacharquery}B\ {\isacharequal}\ {\isacharparenleft}snd\ o\ the{\isacharunderscore}Trn{\isacharparenright}\ {\isacharbackquote}\ rhs{\isacharprime}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
923 \ rhs{\isacharprime}{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse% |
|
924 \ {\isacharparenleft}auto\ simp{\isacharcolon}image{\isacharunderscore}def{\isacharparenright}\isanewline |
|
925 \ \ \isacommand{moreover}\isamarkupfalse% |
|
926 \ \isacommand{have}\isamarkupfalse% |
|
927 \ {\isachardoublequoteopen}finite\ rhs{\isacharprime}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
928 \ finite\ rhs{\isacharprime}{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse% |
|
929 \ auto\isanewline |
|
930 \ \ \isacommand{ultimately}\isamarkupfalse% |
|
931 \ \isacommand{show}\isamarkupfalse% |
|
932 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
933 \ simp\isanewline |
|
934 \isacommand{qed}\isamarkupfalse% |
|
935 % |
|
936 \endisatagproof |
|
937 {\isafoldproof}% |
|
938 % |
|
939 \isadelimproof |
|
940 \isanewline |
|
941 % |
|
942 \endisadelimproof |
|
943 \isanewline |
|
944 \isacommand{lemma}\isamarkupfalse% |
|
945 \ rexp{\isacharunderscore}of{\isacharunderscore}empty{\isacharcolon}\isanewline |
|
946 \ \ \isakeyword{assumes}\ finite{\isacharcolon}{\isachardoublequoteopen}finite\ rhs{\isachardoublequoteclose}\isanewline |
|
947 \ \ \isakeyword{and}\ nonempty{\isacharcolon}{\isachardoublequoteopen}rhs{\isacharunderscore}nonempty\ rhs{\isachardoublequoteclose}\isanewline |
|
948 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}{\isacharbrackleft}{\isacharbrackright}\ {\isasymnotin}\ L\ {\isacharparenleft}rexp{\isacharunderscore}of\ rhs\ X{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
949 % |
|
950 \isadelimproof |
|
951 % |
|
952 \endisadelimproof |
|
953 % |
|
954 \isatagproof |
|
955 \isacommand{using}\isamarkupfalse% |
|
956 \ finite\ nonempty\ rhs{\isacharunderscore}nonempty{\isacharunderscore}def\isanewline |
|
957 \isacommand{by}\isamarkupfalse% |
|
958 \ {\isacharparenleft}drule{\isacharunderscore}tac\ finite{\isacharunderscore}snd{\isacharunderscore}Trn{\isacharbrackleft}\isakeyword{where}\ Y\ {\isacharequal}\ X{\isacharbrackright}{\isacharcomma}\ auto\ simp{\isacharcolon}rexp{\isacharunderscore}of{\isacharunderscore}def\ items{\isacharunderscore}of{\isacharunderscore}def{\isacharparenright}% |
|
959 \endisatagproof |
|
960 {\isafoldproof}% |
|
961 % |
|
962 \isadelimproof |
|
963 \isanewline |
|
964 % |
|
965 \endisadelimproof |
|
966 \isanewline |
|
967 \isacommand{lemma}\isamarkupfalse% |
|
968 \ {\isacharbrackleft}intro{\isacharbang}{\isacharbrackright}{\isacharcolon}\isanewline |
|
969 \ \ {\isachardoublequoteopen}P\ {\isacharparenleft}Trn\ X\ r{\isacharparenright}\ {\isasymLongrightarrow}\ {\isacharparenleft}{\isasymexists}a{\isachardot}\ {\isacharparenleft}{\isasymexists}r{\isachardot}\ a\ {\isacharequal}\ Trn\ X\ r\ {\isasymand}\ P\ a{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}% |
|
970 \isadelimproof |
|
971 \ % |
|
972 \endisadelimproof |
|
973 % |
|
974 \isatagproof |
|
975 \isacommand{by}\isamarkupfalse% |
|
976 \ auto% |
|
977 \endisatagproof |
|
978 {\isafoldproof}% |
|
979 % |
|
980 \isadelimproof |
|
981 % |
|
982 \endisadelimproof |
|
983 \isanewline |
|
984 \isanewline |
|
985 \isacommand{lemma}\isamarkupfalse% |
|
986 \ finite{\isacharunderscore}items{\isacharunderscore}of{\isacharcolon}\isanewline |
|
987 \ \ {\isachardoublequoteopen}finite\ rhs\ {\isasymLongrightarrow}\ finite\ {\isacharparenleft}items{\isacharunderscore}of\ rhs\ X{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
988 % |
|
989 \isadelimproof |
|
990 % |
|
991 \endisadelimproof |
|
992 % |
|
993 \isatagproof |
|
994 \isacommand{by}\isamarkupfalse% |
|
995 \ {\isacharparenleft}auto\ simp{\isacharcolon}items{\isacharunderscore}of{\isacharunderscore}def\ intro{\isacharcolon}finite{\isacharunderscore}subset{\isacharparenright}% |
|
996 \endisatagproof |
|
997 {\isafoldproof}% |
|
998 % |
|
999 \isadelimproof |
|
1000 \isanewline |
|
1001 % |
|
1002 \endisadelimproof |
|
1003 \isanewline |
|
1004 \isacommand{lemma}\isamarkupfalse% |
|
1005 \ lang{\isacharunderscore}of{\isacharunderscore}rexp{\isacharunderscore}of{\isacharcolon}\isanewline |
|
1006 \ \ \isakeyword{assumes}\ finite{\isacharcolon}{\isachardoublequoteopen}finite\ rhs{\isachardoublequoteclose}\isanewline |
|
1007 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}L\ {\isacharparenleft}items{\isacharunderscore}of\ rhs\ X{\isacharparenright}\ {\isacharequal}\ X\ {\isacharsemicolon}{\isacharsemicolon}\ {\isacharparenleft}L\ {\isacharparenleft}rexp{\isacharunderscore}of\ rhs\ X{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1008 % |
|
1009 \isadelimproof |
|
1010 % |
|
1011 \endisadelimproof |
|
1012 % |
|
1013 \isatagproof |
|
1014 \isacommand{proof}\isamarkupfalse% |
|
1015 \ {\isacharminus}\isanewline |
|
1016 \ \ \isacommand{have}\isamarkupfalse% |
|
1017 \ {\isachardoublequoteopen}finite\ {\isacharparenleft}{\isacharparenleft}snd\ {\isasymcirc}\ the{\isacharunderscore}Trn{\isacharparenright}\ {\isacharbackquote}\ items{\isacharunderscore}of\ rhs\ X{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
1018 \ finite{\isacharunderscore}items{\isacharunderscore}of{\isacharbrackleft}OF\ finite{\isacharbrackright}\ \isacommand{by}\isamarkupfalse% |
|
1019 \ auto\isanewline |
|
1020 \ \ \isacommand{thus}\isamarkupfalse% |
|
1021 \ {\isacharquery}thesis\isanewline |
|
1022 \ \ \ \ \isacommand{apply}\isamarkupfalse% |
|
1023 \ {\isacharparenleft}auto\ simp{\isacharcolon}rexp{\isacharunderscore}of{\isacharunderscore}def\ Seq{\isacharunderscore}def\ items{\isacharunderscore}of{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1024 \ \ \ \ \isacommand{apply}\isamarkupfalse% |
|
1025 \ {\isacharparenleft}rule{\isacharunderscore}tac\ x\ {\isacharequal}\ s{\isadigit{1}}\ \isakeyword{in}\ exI{\isacharcomma}\ rule{\isacharunderscore}tac\ x\ {\isacharequal}\ s{\isadigit{2}}\ \isakeyword{in}\ exI{\isacharcomma}\ auto{\isacharparenright}\isanewline |
|
1026 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1027 \ {\isacharparenleft}rule{\isacharunderscore}tac\ x{\isacharequal}\ {\isachardoublequoteopen}Trn\ X\ r{\isachardoublequoteclose}\ \isakeyword{in}\ exI{\isacharcomma}\ auto\ simp{\isacharcolon}Seq{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1028 \isacommand{qed}\isamarkupfalse% |
|
1029 % |
|
1030 \endisatagproof |
|
1031 {\isafoldproof}% |
|
1032 % |
|
1033 \isadelimproof |
|
1034 \isanewline |
|
1035 % |
|
1036 \endisadelimproof |
|
1037 \isanewline |
|
1038 \isacommand{lemma}\isamarkupfalse% |
|
1039 \ rexp{\isacharunderscore}of{\isacharunderscore}lam{\isacharunderscore}eq{\isacharunderscore}lam{\isacharunderscore}set{\isacharcolon}\isanewline |
|
1040 \ \ \isakeyword{assumes}\ finite{\isacharcolon}\ {\isachardoublequoteopen}finite\ rhs{\isachardoublequoteclose}\isanewline |
|
1041 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}L\ {\isacharparenleft}rexp{\isacharunderscore}of{\isacharunderscore}lam\ rhs{\isacharparenright}\ {\isacharequal}\ L\ {\isacharparenleft}lam{\isacharunderscore}of\ rhs{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1042 % |
|
1043 \isadelimproof |
|
1044 % |
|
1045 \endisadelimproof |
|
1046 % |
|
1047 \isatagproof |
|
1048 \isacommand{proof}\isamarkupfalse% |
|
1049 \ {\isacharminus}\isanewline |
|
1050 \ \ \isacommand{have}\isamarkupfalse% |
|
1051 \ {\isachardoublequoteopen}finite\ {\isacharparenleft}the{\isacharunderscore}r\ {\isacharbackquote}\ {\isacharbraceleft}Lam\ r\ {\isacharbar}r{\isachardot}\ Lam\ r\ {\isasymin}\ rhs{\isacharbraceright}{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
1052 \ finite\isanewline |
|
1053 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1054 \ {\isacharparenleft}rule{\isacharunderscore}tac\ finite{\isacharunderscore}imageI{\isacharcomma}\ auto\ intro{\isacharcolon}finite{\isacharunderscore}subset{\isacharparenright}\isanewline |
|
1055 \ \ \isacommand{thus}\isamarkupfalse% |
|
1056 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
1057 \ {\isacharparenleft}auto\ simp{\isacharcolon}rexp{\isacharunderscore}of{\isacharunderscore}lam{\isacharunderscore}def\ lam{\isacharunderscore}of{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1058 \isacommand{qed}\isamarkupfalse% |
|
1059 % |
|
1060 \endisatagproof |
|
1061 {\isafoldproof}% |
|
1062 % |
|
1063 \isadelimproof |
|
1064 \isanewline |
|
1065 % |
|
1066 \endisadelimproof |
|
1067 \isanewline |
|
1068 \isacommand{lemma}\isamarkupfalse% |
|
1069 \ {\isacharbrackleft}simp{\isacharbrackright}{\isacharcolon}\isanewline |
|
1070 \ \ {\isachardoublequoteopen}\ L\ {\isacharparenleft}attach{\isacharunderscore}rexp\ r\ xb{\isacharparenright}\ {\isacharequal}\ L\ xb\ {\isacharsemicolon}{\isacharsemicolon}\ L\ r{\isachardoublequoteclose}\isanewline |
|
1071 % |
|
1072 \isadelimproof |
|
1073 % |
|
1074 \endisadelimproof |
|
1075 % |
|
1076 \isatagproof |
|
1077 \isacommand{apply}\isamarkupfalse% |
|
1078 \ {\isacharparenleft}cases\ xb{\isacharcomma}\ auto\ simp{\isacharcolon}Seq{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1079 \isacommand{by}\isamarkupfalse% |
|
1080 \ {\isacharparenleft}rule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}s{\isadigit{1}}\ {\isacharat}\ s{\isadigit{1}}a{\isachardoublequoteclose}\ \isakeyword{in}\ exI{\isacharcomma}\ rule{\isacharunderscore}tac\ x\ {\isacharequal}\ s{\isadigit{2}}a\ \isakeyword{in}\ exI{\isacharcomma}auto\ simp{\isacharcolon}Seq{\isacharunderscore}def{\isacharparenright}% |
|
1081 \endisatagproof |
|
1082 {\isafoldproof}% |
|
1083 % |
|
1084 \isadelimproof |
|
1085 \isanewline |
|
1086 % |
|
1087 \endisadelimproof |
|
1088 \isanewline |
|
1089 \isacommand{lemma}\isamarkupfalse% |
|
1090 \ lang{\isacharunderscore}of{\isacharunderscore}append{\isacharunderscore}rhs{\isacharcolon}\isanewline |
|
1091 \ \ {\isachardoublequoteopen}L\ {\isacharparenleft}append{\isacharunderscore}rhs{\isacharunderscore}rexp\ rhs\ r{\isacharparenright}\ {\isacharequal}\ L\ rhs\ {\isacharsemicolon}{\isacharsemicolon}\ L\ r{\isachardoublequoteclose}\isanewline |
|
1092 % |
|
1093 \isadelimproof |
|
1094 % |
|
1095 \endisadelimproof |
|
1096 % |
|
1097 \isatagproof |
|
1098 \isacommand{apply}\isamarkupfalse% |
|
1099 \ {\isacharparenleft}auto\ simp{\isacharcolon}append{\isacharunderscore}rhs{\isacharunderscore}rexp{\isacharunderscore}def\ image{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1100 \isacommand{apply}\isamarkupfalse% |
|
1101 \ {\isacharparenleft}auto\ simp{\isacharcolon}Seq{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1102 \isacommand{apply}\isamarkupfalse% |
|
1103 \ {\isacharparenleft}rule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}L\ xb\ {\isacharsemicolon}{\isacharsemicolon}\ L\ r{\isachardoublequoteclose}\ \isakeyword{in}\ exI{\isacharcomma}\ auto\ simp\ add{\isacharcolon}Seq{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1104 \isacommand{by}\isamarkupfalse% |
|
1105 \ {\isacharparenleft}rule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}attach{\isacharunderscore}rexp\ r\ xb{\isachardoublequoteclose}\ \isakeyword{in}\ exI{\isacharcomma}\ auto\ simp{\isacharcolon}Seq{\isacharunderscore}def{\isacharparenright}% |
|
1106 \endisatagproof |
|
1107 {\isafoldproof}% |
|
1108 % |
|
1109 \isadelimproof |
|
1110 \isanewline |
|
1111 % |
|
1112 \endisadelimproof |
|
1113 \isanewline |
|
1114 \isacommand{lemma}\isamarkupfalse% |
|
1115 \ classes{\isacharunderscore}of{\isacharunderscore}union{\isacharunderscore}distrib{\isacharcolon}\isanewline |
|
1116 \ \ {\isachardoublequoteopen}classes{\isacharunderscore}of\ A\ {\isasymunion}\ classes{\isacharunderscore}of\ B\ {\isacharequal}\ classes{\isacharunderscore}of\ {\isacharparenleft}A\ {\isasymunion}\ B{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1117 % |
|
1118 \isadelimproof |
|
1119 % |
|
1120 \endisadelimproof |
|
1121 % |
|
1122 \isatagproof |
|
1123 \isacommand{by}\isamarkupfalse% |
|
1124 \ {\isacharparenleft}auto\ simp\ add{\isacharcolon}classes{\isacharunderscore}of{\isacharunderscore}def{\isacharparenright}% |
|
1125 \endisatagproof |
|
1126 {\isafoldproof}% |
|
1127 % |
|
1128 \isadelimproof |
|
1129 \isanewline |
|
1130 % |
|
1131 \endisadelimproof |
|
1132 \isanewline |
|
1133 \isacommand{lemma}\isamarkupfalse% |
|
1134 \ lefts{\isacharunderscore}of{\isacharunderscore}union{\isacharunderscore}distrib{\isacharcolon}\isanewline |
|
1135 \ \ {\isachardoublequoteopen}lefts{\isacharunderscore}of\ A\ {\isasymunion}\ lefts{\isacharunderscore}of\ B\ {\isacharequal}\ lefts{\isacharunderscore}of\ {\isacharparenleft}A\ {\isasymunion}\ B{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1136 % |
|
1137 \isadelimproof |
|
1138 % |
|
1139 \endisadelimproof |
|
1140 % |
|
1141 \isatagproof |
|
1142 \isacommand{by}\isamarkupfalse% |
|
1143 \ {\isacharparenleft}auto\ simp{\isacharcolon}lefts{\isacharunderscore}of{\isacharunderscore}def{\isacharparenright}% |
|
1144 \endisatagproof |
|
1145 {\isafoldproof}% |
|
1146 % |
|
1147 \isadelimproof |
|
1148 % |
|
1149 \endisadelimproof |
|
1150 % |
|
1151 \begin{isamarkuptext}% |
|
1152 The following several lemmas until \isa{init{\isacharunderscore}ES{\isacharunderscore}satisfy{\isacharunderscore}Inv} are |
|
1153 to prove that initial equational system satisfies invariant \isa{Inv}.% |
|
1154 \end{isamarkuptext}% |
|
1155 \isamarkuptrue% |
|
1156 \isacommand{lemma}\isamarkupfalse% |
|
1157 \ defined{\isacharunderscore}by{\isacharunderscore}str{\isacharcolon}\isanewline |
|
1158 \ \ {\isachardoublequoteopen}{\isasymlbrakk}s\ {\isasymin}\ X{\isacharsemicolon}\ X\ {\isasymin}\ UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isasymrbrakk}\ {\isasymLongrightarrow}\ X\ {\isacharequal}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}s{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
1159 % |
|
1160 \isadelimproof |
|
1161 % |
|
1162 \endisadelimproof |
|
1163 % |
|
1164 \isatagproof |
|
1165 \isacommand{by}\isamarkupfalse% |
|
1166 \ {\isacharparenleft}auto\ simp{\isacharcolon}quotient{\isacharunderscore}def\ Image{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def{\isacharparenright}% |
|
1167 \endisatagproof |
|
1168 {\isafoldproof}% |
|
1169 % |
|
1170 \isadelimproof |
|
1171 \isanewline |
|
1172 % |
|
1173 \endisadelimproof |
|
1174 \isanewline |
|
1175 \isacommand{lemma}\isamarkupfalse% |
|
1176 \ every{\isacharunderscore}eqclass{\isacharunderscore}has{\isacharunderscore}transition{\isacharcolon}\isanewline |
|
1177 \ \ \isakeyword{assumes}\ has{\isacharunderscore}str{\isacharcolon}\ {\isachardoublequoteopen}s\ {\isacharat}\ {\isacharbrackleft}c{\isacharbrackright}\ {\isasymin}\ X{\isachardoublequoteclose}\isanewline |
|
1178 \ \ \isakeyword{and}\ \ \ \ \ in{\isacharunderscore}CS{\isacharcolon}\ \ \ {\isachardoublequoteopen}X\ {\isasymin}\ UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1179 \ \ \isakeyword{obtains}\ Y\ \isakeyword{where}\ {\isachardoublequoteopen}Y\ {\isasymin}\ UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isachardoublequoteclose}\ \isakeyword{and}\ {\isachardoublequoteopen}Y\ {\isacharsemicolon}{\isacharsemicolon}\ {\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}\ {\isasymsubseteq}\ X{\isachardoublequoteclose}\ \isakeyword{and}\ {\isachardoublequoteopen}s\ {\isasymin}\ Y{\isachardoublequoteclose}\isanewline |
|
1180 % |
|
1181 \isadelimproof |
|
1182 % |
|
1183 \endisadelimproof |
|
1184 % |
|
1185 \isatagproof |
|
1186 \isacommand{proof}\isamarkupfalse% |
|
1187 \ {\isacharminus}\isanewline |
|
1188 \ \ \isacommand{def}\isamarkupfalse% |
|
1189 \ Y\ {\isasymequiv}\ {\isachardoublequoteopen}{\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}s{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
1190 \ \ \isacommand{have}\isamarkupfalse% |
|
1191 \ {\isachardoublequoteopen}Y\ {\isasymin}\ UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
1192 \ \ \ \ \isacommand{unfolding}\isamarkupfalse% |
|
1193 \ Y{\isacharunderscore}def\ quotient{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse% |
|
1194 \ auto\isanewline |
|
1195 \ \ \isacommand{moreover}\isamarkupfalse% |
|
1196 \isanewline |
|
1197 \ \ \isacommand{have}\isamarkupfalse% |
|
1198 \ {\isachardoublequoteopen}X\ {\isacharequal}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}s\ {\isacharat}\ {\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}{\isachardoublequoteclose}\ \isanewline |
|
1199 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
1200 \ has{\isacharunderscore}str\ in{\isacharunderscore}CS\ defined{\isacharunderscore}by{\isacharunderscore}str\ \isacommand{by}\isamarkupfalse% |
|
1201 \ blast\isanewline |
|
1202 \ \ \isacommand{then}\isamarkupfalse% |
|
1203 \ \isacommand{have}\isamarkupfalse% |
|
1204 \ {\isachardoublequoteopen}Y\ {\isacharsemicolon}{\isacharsemicolon}\ {\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}\ {\isasymsubseteq}\ X{\isachardoublequoteclose}\ \isanewline |
|
1205 \ \ \ \ \isacommand{unfolding}\isamarkupfalse% |
|
1206 \ Y{\isacharunderscore}def\ Image{\isacharunderscore}def\ Seq{\isacharunderscore}def\isanewline |
|
1207 \ \ \ \ \isacommand{unfolding}\isamarkupfalse% |
|
1208 \ str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def\isanewline |
|
1209 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1210 \ clarsimp\isanewline |
|
1211 \ \ \isacommand{moreover}\isamarkupfalse% |
|
1212 \isanewline |
|
1213 \ \ \isacommand{have}\isamarkupfalse% |
|
1214 \ {\isachardoublequoteopen}s\ {\isasymin}\ Y{\isachardoublequoteclose}\ \isacommand{unfolding}\isamarkupfalse% |
|
1215 \ Y{\isacharunderscore}def\ \isanewline |
|
1216 \ \ \ \ \isacommand{unfolding}\isamarkupfalse% |
|
1217 \ Image{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse% |
|
1218 \ simp\isanewline |
|
1219 \ \ \isacommand{ultimately}\isamarkupfalse% |
|
1220 \ \isacommand{show}\isamarkupfalse% |
|
1221 \ thesis\ \isacommand{by}\isamarkupfalse% |
|
1222 \ {\isacharparenleft}blast\ intro{\isacharcolon}\ that{\isacharparenright}\isanewline |
|
1223 \isacommand{qed}\isamarkupfalse% |
|
1224 % |
|
1225 \endisatagproof |
|
1226 {\isafoldproof}% |
|
1227 % |
|
1228 \isadelimproof |
|
1229 \isanewline |
|
1230 % |
|
1231 \endisadelimproof |
|
1232 \isanewline |
|
1233 \isacommand{lemma}\isamarkupfalse% |
|
1234 \ l{\isacharunderscore}eq{\isacharunderscore}r{\isacharunderscore}in{\isacharunderscore}eqs{\isacharcolon}\isanewline |
|
1235 \ \ \isakeyword{assumes}\ X{\isacharunderscore}in{\isacharunderscore}eqs{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharparenright}\ {\isasymin}\ {\isacharparenleft}eqs\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1236 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}X\ {\isacharequal}\ L\ xrhs{\isachardoublequoteclose}\isanewline |
|
1237 % |
|
1238 \isadelimproof |
|
1239 % |
|
1240 \endisadelimproof |
|
1241 % |
|
1242 \isatagproof |
|
1243 \isacommand{proof}\isamarkupfalse% |
|
1244 \ \isanewline |
|
1245 \ \ \isacommand{show}\isamarkupfalse% |
|
1246 \ {\isachardoublequoteopen}X\ {\isasymsubseteq}\ L\ xrhs{\isachardoublequoteclose}\isanewline |
|
1247 \ \ \isacommand{proof}\isamarkupfalse% |
|
1248 \isanewline |
|
1249 \ \ \ \ \isacommand{fix}\isamarkupfalse% |
|
1250 \ x\isanewline |
|
1251 \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
1252 \ {\isachardoublequoteopen}{\isacharparenleft}{\isadigit{1}}{\isacharparenright}{\isachardoublequoteclose}{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isasymin}\ X{\isachardoublequoteclose}\isanewline |
|
1253 \ \ \ \ \isacommand{show}\isamarkupfalse% |
|
1254 \ {\isachardoublequoteopen}x\ {\isasymin}\ L\ xrhs{\isachardoublequoteclose}\ \ \ \ \ \ \ \ \ \ \isanewline |
|
1255 \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
1256 \ {\isacharparenleft}cases\ {\isachardoublequoteopen}x\ {\isacharequal}\ {\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
1257 \ \ \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
1258 \ empty{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isacharequal}\ {\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}\isanewline |
|
1259 \ \ \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
1260 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
1261 \ X{\isacharunderscore}in{\isacharunderscore}eqs\ {\isachardoublequoteopen}{\isacharparenleft}{\isadigit{1}}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1262 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1263 \ {\isacharparenleft}auto\ simp{\isacharcolon}eqs{\isacharunderscore}def\ init{\isacharunderscore}rhs{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1264 \ \ \ \ \isacommand{next}\isamarkupfalse% |
|
1265 \isanewline |
|
1266 \ \ \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
1267 \ not{\isacharunderscore}empty{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isasymnoteq}\ {\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}\isanewline |
|
1268 \ \ \ \ \ \ \isacommand{then}\isamarkupfalse% |
|
1269 \ \isacommand{obtain}\isamarkupfalse% |
|
1270 \ clist\ c\ \isakeyword{where}\ decom{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isacharequal}\ clist\ {\isacharat}\ {\isacharbrackleft}c{\isacharbrackright}{\isachardoublequoteclose}\isanewline |
|
1271 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1272 \ {\isacharparenleft}case{\isacharunderscore}tac\ x\ rule{\isacharcolon}rev{\isacharunderscore}cases{\isacharcomma}\ auto{\isacharparenright}\isanewline |
|
1273 \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
1274 \ {\isachardoublequoteopen}X\ {\isasymin}\ UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
1275 \ X{\isacharunderscore}in{\isacharunderscore}eqs\ \isacommand{by}\isamarkupfalse% |
|
1276 \ {\isacharparenleft}auto\ simp{\isacharcolon}eqs{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1277 \ \ \ \ \ \ \isacommand{then}\isamarkupfalse% |
|
1278 \ \isacommand{obtain}\isamarkupfalse% |
|
1279 \ Y\ \isanewline |
|
1280 \ \ \ \ \ \ \ \ \isakeyword{where}\ {\isachardoublequoteopen}Y\ {\isasymin}\ UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
1281 \ \ \ \ \ \ \ \ \isakeyword{and}\ {\isachardoublequoteopen}Y\ {\isacharsemicolon}{\isacharsemicolon}\ {\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}\ {\isasymsubseteq}\ X{\isachardoublequoteclose}\isanewline |
|
1282 \ \ \ \ \ \ \ \ \isakeyword{and}\ {\isachardoublequoteopen}clist\ {\isasymin}\ Y{\isachardoublequoteclose}\isanewline |
|
1283 \ \ \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
1284 \ decom\ {\isachardoublequoteopen}{\isacharparenleft}{\isadigit{1}}{\isacharparenright}{\isachardoublequoteclose}\ every{\isacharunderscore}eqclass{\isacharunderscore}has{\isacharunderscore}transition\ \isacommand{by}\isamarkupfalse% |
|
1285 \ blast\isanewline |
|
1286 \ \ \ \ \ \ \isacommand{hence}\isamarkupfalse% |
|
1287 \ \isanewline |
|
1288 \ \ \ \ \ \ \ \ {\isachardoublequoteopen}x\ {\isasymin}\ L\ {\isacharbraceleft}Trn\ Y\ {\isacharparenleft}CHAR\ c{\isacharparenright}{\isacharbar}\ Y\ c{\isachardot}\ Y\ {\isasymin}\ UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}\ {\isasymand}\ Y\ {\isacharsemicolon}{\isacharsemicolon}\ {\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}\ {\isasymsubseteq}\ X{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
1289 \ \ \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
1290 \ {\isachardoublequoteopen}{\isacharparenleft}{\isadigit{1}}{\isacharparenright}{\isachardoublequoteclose}\ decom\isanewline |
|
1291 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1292 \ {\isacharparenleft}simp{\isacharcomma}\ rule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}Trn\ Y\ {\isacharparenleft}CHAR\ c{\isacharparenright}{\isachardoublequoteclose}\ \isakeyword{in}\ exI{\isacharcomma}\ simp\ add{\isacharcolon}Seq{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1293 \ \ \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
1294 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
1295 \ X{\isacharunderscore}in{\isacharunderscore}eqs\ {\isachardoublequoteopen}{\isacharparenleft}{\isadigit{1}}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1296 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1297 \ {\isacharparenleft}simp\ add{\isacharcolon}eqs{\isacharunderscore}def\ init{\isacharunderscore}rhs{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1298 \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
1299 \isanewline |
|
1300 \ \ \isacommand{qed}\isamarkupfalse% |
|
1301 \isanewline |
|
1302 \isacommand{next}\isamarkupfalse% |
|
1303 \isanewline |
|
1304 \ \ \isacommand{show}\isamarkupfalse% |
|
1305 \ {\isachardoublequoteopen}L\ xrhs\ {\isasymsubseteq}\ X{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
1306 \ X{\isacharunderscore}in{\isacharunderscore}eqs\isanewline |
|
1307 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1308 \ {\isacharparenleft}auto\ simp{\isacharcolon}eqs{\isacharunderscore}def\ init{\isacharunderscore}rhs{\isacharunderscore}def{\isacharparenright}\ \isanewline |
|
1309 \isacommand{qed}\isamarkupfalse% |
|
1310 % |
|
1311 \endisatagproof |
|
1312 {\isafoldproof}% |
|
1313 % |
|
1314 \isadelimproof |
|
1315 \isanewline |
|
1316 % |
|
1317 \endisadelimproof |
|
1318 \isanewline |
|
1319 \isacommand{lemma}\isamarkupfalse% |
|
1320 \ finite{\isacharunderscore}init{\isacharunderscore}rhs{\isacharcolon}\ \isanewline |
|
1321 \ \ \isakeyword{assumes}\ finite{\isacharcolon}\ {\isachardoublequoteopen}finite\ CS{\isachardoublequoteclose}\isanewline |
|
1322 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}finite\ {\isacharparenleft}init{\isacharunderscore}rhs\ CS\ X{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1323 % |
|
1324 \isadelimproof |
|
1325 % |
|
1326 \endisadelimproof |
|
1327 % |
|
1328 \isatagproof |
|
1329 \isacommand{proof}\isamarkupfalse% |
|
1330 {\isacharminus}\isanewline |
|
1331 \ \ \isacommand{have}\isamarkupfalse% |
|
1332 \ {\isachardoublequoteopen}finite\ {\isacharbraceleft}Trn\ Y\ {\isacharparenleft}CHAR\ c{\isacharparenright}\ {\isacharbar}Y\ c{\isachardot}\ Y\ {\isasymin}\ CS\ {\isasymand}\ Y\ {\isacharsemicolon}{\isacharsemicolon}\ {\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}\ {\isasymsubseteq}\ X{\isacharbraceright}{\isachardoublequoteclose}\ {\isacharparenleft}\isakeyword{is}\ {\isachardoublequoteopen}finite\ {\isacharquery}A{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
1333 \ \ \isacommand{proof}\isamarkupfalse% |
|
1334 \ {\isacharminus}\isanewline |
|
1335 \ \ \ \ \isacommand{def}\isamarkupfalse% |
|
1336 \ S\ {\isasymequiv}\ {\isachardoublequoteopen}{\isacharbraceleft}{\isacharparenleft}Y{\isacharcomma}\ c{\isacharparenright}{\isacharbar}\ Y\ c{\isachardot}\ Y\ {\isasymin}\ CS\ {\isasymand}\ Y\ {\isacharsemicolon}{\isacharsemicolon}\ {\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}\ {\isasymsubseteq}\ X{\isacharbraceright}{\isachardoublequoteclose}\ \isanewline |
|
1337 \ \ \ \ \isacommand{def}\isamarkupfalse% |
|
1338 \ h\ {\isasymequiv}\ {\isachardoublequoteopen}{\isasymlambda}\ {\isacharparenleft}Y{\isacharcomma}\ c{\isacharparenright}{\isachardot}\ Trn\ Y\ {\isacharparenleft}CHAR\ c{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1339 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
1340 \ {\isachardoublequoteopen}finite\ {\isacharparenleft}CS\ {\isasymtimes}\ {\isacharparenleft}UNIV{\isacharcolon}{\isacharcolon}char\ set{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
1341 \ finite\ \isacommand{by}\isamarkupfalse% |
|
1342 \ auto\isanewline |
|
1343 \ \ \ \ \isacommand{hence}\isamarkupfalse% |
|
1344 \ {\isachardoublequoteopen}finite\ S{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
1345 \ S{\isacharunderscore}def\ \isanewline |
|
1346 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1347 \ {\isacharparenleft}rule{\isacharunderscore}tac\ B\ {\isacharequal}\ {\isachardoublequoteopen}CS\ {\isasymtimes}\ UNIV{\isachardoublequoteclose}\ \isakeyword{in}\ finite{\isacharunderscore}subset{\isacharcomma}\ auto{\isacharparenright}\isanewline |
|
1348 \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
1349 \ \isacommand{have}\isamarkupfalse% |
|
1350 \ {\isachardoublequoteopen}{\isacharquery}A\ {\isacharequal}\ h\ {\isacharbackquote}\ S{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
1351 \ {\isacharparenleft}auto\ simp{\isacharcolon}\ S{\isacharunderscore}def\ h{\isacharunderscore}def\ image{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1352 \ \ \ \ \isacommand{ultimately}\isamarkupfalse% |
|
1353 \ \isacommand{show}\isamarkupfalse% |
|
1354 \ {\isacharquery}thesis\ \isanewline |
|
1355 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1356 \ auto\isanewline |
|
1357 \ \ \isacommand{qed}\isamarkupfalse% |
|
1358 \isanewline |
|
1359 \ \ \isacommand{thus}\isamarkupfalse% |
|
1360 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
1361 \ {\isacharparenleft}simp\ add{\isacharcolon}init{\isacharunderscore}rhs{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1362 \isacommand{qed}\isamarkupfalse% |
|
1363 % |
|
1364 \endisatagproof |
|
1365 {\isafoldproof}% |
|
1366 % |
|
1367 \isadelimproof |
|
1368 \isanewline |
|
1369 % |
|
1370 \endisadelimproof |
|
1371 \isanewline |
|
1372 \isacommand{lemma}\isamarkupfalse% |
|
1373 \ init{\isacharunderscore}ES{\isacharunderscore}satisfy{\isacharunderscore}Inv{\isacharcolon}\isanewline |
|
1374 \ \ \isakeyword{assumes}\ finite{\isacharunderscore}CS{\isacharcolon}\ {\isachardoublequoteopen}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1375 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}Inv\ {\isacharparenleft}eqs\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1376 % |
|
1377 \isadelimproof |
|
1378 % |
|
1379 \endisadelimproof |
|
1380 % |
|
1381 \isatagproof |
|
1382 \isacommand{proof}\isamarkupfalse% |
|
1383 \ {\isacharminus}\isanewline |
|
1384 \ \ \isacommand{have}\isamarkupfalse% |
|
1385 \ {\isachardoublequoteopen}finite\ {\isacharparenleft}eqs\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
1386 \ finite{\isacharunderscore}CS\isanewline |
|
1387 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1388 \ {\isacharparenleft}simp\ add{\isacharcolon}eqs{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1389 \ \ \isacommand{moreover}\isamarkupfalse% |
|
1390 \ \isacommand{have}\isamarkupfalse% |
|
1391 \ {\isachardoublequoteopen}distinct{\isacharunderscore}equas\ {\isacharparenleft}eqs\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\ \ \ \ \ \isanewline |
|
1392 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1393 \ {\isacharparenleft}simp\ add{\isacharcolon}distinct{\isacharunderscore}equas{\isacharunderscore}def\ eqs{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1394 \ \ \isacommand{moreover}\isamarkupfalse% |
|
1395 \ \isacommand{have}\isamarkupfalse% |
|
1396 \ {\isachardoublequoteopen}ardenable\ {\isacharparenleft}eqs\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1397 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1398 \ {\isacharparenleft}auto\ simp\ add{\isacharcolon}ardenable{\isacharunderscore}def\ eqs{\isacharunderscore}def\ init{\isacharunderscore}rhs{\isacharunderscore}def\ rhs{\isacharunderscore}nonempty{\isacharunderscore}def\ del{\isacharcolon}L{\isacharunderscore}rhs{\isachardot}simps{\isacharparenright}\isanewline |
|
1399 \ \ \isacommand{moreover}\isamarkupfalse% |
|
1400 \ \isacommand{have}\isamarkupfalse% |
|
1401 \ {\isachardoublequoteopen}valid{\isacharunderscore}eqns\ {\isacharparenleft}eqs\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1402 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
1403 \ l{\isacharunderscore}eq{\isacharunderscore}r{\isacharunderscore}in{\isacharunderscore}eqs\ \isacommand{by}\isamarkupfalse% |
|
1404 \ {\isacharparenleft}simp\ add{\isacharcolon}valid{\isacharunderscore}eqns{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1405 \ \ \isacommand{moreover}\isamarkupfalse% |
|
1406 \ \isacommand{have}\isamarkupfalse% |
|
1407 \ {\isachardoublequoteopen}non{\isacharunderscore}empty\ {\isacharparenleft}eqs\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1408 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1409 \ {\isacharparenleft}auto\ simp{\isacharcolon}non{\isacharunderscore}empty{\isacharunderscore}def\ eqs{\isacharunderscore}def\ quotient{\isacharunderscore}def\ Image{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1410 \ \ \isacommand{moreover}\isamarkupfalse% |
|
1411 \ \isacommand{have}\isamarkupfalse% |
|
1412 \ {\isachardoublequoteopen}finite{\isacharunderscore}rhs\ {\isacharparenleft}eqs\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1413 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
1414 \ finite{\isacharunderscore}init{\isacharunderscore}rhs{\isacharbrackleft}OF\ finite{\isacharunderscore}CS{\isacharbrackright}\ \isanewline |
|
1415 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1416 \ {\isacharparenleft}auto\ simp{\isacharcolon}finite{\isacharunderscore}rhs{\isacharunderscore}def\ eqs{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1417 \ \ \isacommand{moreover}\isamarkupfalse% |
|
1418 \ \isacommand{have}\isamarkupfalse% |
|
1419 \ {\isachardoublequoteopen}self{\isacharunderscore}contained\ {\isacharparenleft}eqs\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1420 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1421 \ {\isacharparenleft}auto\ simp{\isacharcolon}self{\isacharunderscore}contained{\isacharunderscore}def\ eqs{\isacharunderscore}def\ init{\isacharunderscore}rhs{\isacharunderscore}def\ classes{\isacharunderscore}of{\isacharunderscore}def\ lefts{\isacharunderscore}of{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1422 \ \ \isacommand{ultimately}\isamarkupfalse% |
|
1423 \ \isacommand{show}\isamarkupfalse% |
|
1424 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
1425 \ {\isacharparenleft}simp\ add{\isacharcolon}Inv{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1426 \isacommand{qed}\isamarkupfalse% |
|
1427 % |
|
1428 \endisatagproof |
|
1429 {\isafoldproof}% |
|
1430 % |
|
1431 \isadelimproof |
|
1432 % |
|
1433 \endisadelimproof |
|
1434 % |
|
1435 \begin{isamarkuptext}% |
|
1436 From this point until \isa{iteration{\isacharunderscore}step}, we are trying to prove |
|
1437 that there exists iteration steps which keep \isa{Inv{\isacharparenleft}ES{\isacharparenright}} while |
|
1438 decreasing the size of \isa{ES} with every iteration.% |
|
1439 \end{isamarkuptext}% |
|
1440 \isamarkuptrue% |
|
1441 \isacommand{lemma}\isamarkupfalse% |
|
1442 \ arden{\isacharunderscore}variate{\isacharunderscore}keeps{\isacharunderscore}eq{\isacharcolon}\isanewline |
|
1443 \ \ \isakeyword{assumes}\ l{\isacharunderscore}eq{\isacharunderscore}r{\isacharcolon}\ {\isachardoublequoteopen}X\ {\isacharequal}\ L\ rhs{\isachardoublequoteclose}\isanewline |
|
1444 \ \ \isakeyword{and}\ not{\isacharunderscore}empty{\isacharcolon}\ {\isachardoublequoteopen}{\isacharbrackleft}{\isacharbrackright}\ {\isasymnotin}\ L\ {\isacharparenleft}rexp{\isacharunderscore}of\ rhs\ X{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1445 \ \ \isakeyword{and}\ finite{\isacharcolon}\ {\isachardoublequoteopen}finite\ rhs{\isachardoublequoteclose}\isanewline |
|
1446 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}X\ {\isacharequal}\ L\ {\isacharparenleft}arden{\isacharunderscore}variate\ X\ rhs{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1447 % |
|
1448 \isadelimproof |
|
1449 % |
|
1450 \endisadelimproof |
|
1451 % |
|
1452 \isatagproof |
|
1453 \isacommand{proof}\isamarkupfalse% |
|
1454 \ {\isacharminus}\isanewline |
|
1455 \ \ \isacommand{def}\isamarkupfalse% |
|
1456 \ A\ {\isasymequiv}\ {\isachardoublequoteopen}L\ {\isacharparenleft}rexp{\isacharunderscore}of\ rhs\ X{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1457 \ \ \isacommand{def}\isamarkupfalse% |
|
1458 \ b\ {\isasymequiv}\ {\isachardoublequoteopen}rhs\ {\isacharminus}\ items{\isacharunderscore}of\ rhs\ X{\isachardoublequoteclose}\isanewline |
|
1459 \ \ \isacommand{def}\isamarkupfalse% |
|
1460 \ B\ {\isasymequiv}\ {\isachardoublequoteopen}L\ b{\isachardoublequoteclose}\ \isanewline |
|
1461 \ \ \isacommand{have}\isamarkupfalse% |
|
1462 \ {\isachardoublequoteopen}X\ {\isacharequal}\ B\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isasymstar}{\isachardoublequoteclose}\isanewline |
|
1463 \ \ \isacommand{proof}\isamarkupfalse% |
|
1464 {\isacharminus}\isanewline |
|
1465 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
1466 \ {\isachardoublequoteopen}rhs\ {\isacharequal}\ items{\isacharunderscore}of\ rhs\ X\ {\isasymunion}\ b{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
1467 \ {\isacharparenleft}auto\ simp{\isacharcolon}b{\isacharunderscore}def\ items{\isacharunderscore}of{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1468 \ \ \ \ \isacommand{hence}\isamarkupfalse% |
|
1469 \ {\isachardoublequoteopen}L\ rhs\ {\isacharequal}\ L{\isacharparenleft}items{\isacharunderscore}of\ rhs\ X\ {\isasymunion}\ b{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
1470 \ simp\isanewline |
|
1471 \ \ \ \ \isacommand{hence}\isamarkupfalse% |
|
1472 \ {\isachardoublequoteopen}L\ rhs\ {\isacharequal}\ L{\isacharparenleft}items{\isacharunderscore}of\ rhs\ X{\isacharparenright}\ {\isasymunion}\ B{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
1473 \ {\isacharparenleft}simp\ only{\isacharcolon}L{\isacharunderscore}rhs{\isacharunderscore}union{\isacharunderscore}distrib\ B{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1474 \ \ \ \ \isacommand{with}\isamarkupfalse% |
|
1475 \ lang{\isacharunderscore}of{\isacharunderscore}rexp{\isacharunderscore}of\isanewline |
|
1476 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
1477 \ {\isachardoublequoteopen}L\ rhs\ {\isacharequal}\ X\ {\isacharsemicolon}{\isacharsemicolon}\ A\ {\isasymunion}\ B\ {\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
1478 \ finite\ \isacommand{by}\isamarkupfalse% |
|
1479 \ {\isacharparenleft}simp\ only{\isacharcolon}B{\isacharunderscore}def\ b{\isacharunderscore}def\ A{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1480 \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
1481 \ {\isacharquery}thesis\isanewline |
|
1482 \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
1483 \ l{\isacharunderscore}eq{\isacharunderscore}r\ not{\isacharunderscore}empty\isanewline |
|
1484 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% |
|
1485 \ {\isacharparenleft}drule{\isacharunderscore}tac\ B\ {\isacharequal}\ B\ \isakeyword{and}\ X\ {\isacharequal}\ X\ \isakeyword{in}\ ardens{\isacharunderscore}revised{\isacharparenright}\isanewline |
|
1486 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1487 \ {\isacharparenleft}auto\ simp{\isacharcolon}A{\isacharunderscore}def\ simp\ del{\isacharcolon}L{\isacharunderscore}rhs{\isachardot}simps{\isacharparenright}\isanewline |
|
1488 \ \ \isacommand{qed}\isamarkupfalse% |
|
1489 \isanewline |
|
1490 \ \ \isacommand{moreover}\isamarkupfalse% |
|
1491 \ \isacommand{have}\isamarkupfalse% |
|
1492 \ {\isachardoublequoteopen}L\ {\isacharparenleft}arden{\isacharunderscore}variate\ X\ rhs{\isacharparenright}\ {\isacharequal}\ {\isacharparenleft}B\ {\isacharsemicolon}{\isacharsemicolon}\ A{\isasymstar}{\isacharparenright}{\isachardoublequoteclose}\ {\isacharparenleft}\isakeyword{is}\ {\isachardoublequoteopen}{\isacharquery}L\ {\isacharequal}\ {\isacharquery}R{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
1493 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1494 \ {\isacharparenleft}simp\ only{\isacharcolon}arden{\isacharunderscore}variate{\isacharunderscore}def\ L{\isacharunderscore}rhs{\isacharunderscore}union{\isacharunderscore}distrib\ lang{\isacharunderscore}of{\isacharunderscore}append{\isacharunderscore}rhs\ \isanewline |
|
1495 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ B{\isacharunderscore}def\ A{\isacharunderscore}def\ b{\isacharunderscore}def\ L{\isacharunderscore}rexp{\isachardot}simps\ seq{\isacharunderscore}union{\isacharunderscore}distrib{\isacharparenright}\isanewline |
|
1496 \ \ \ \isacommand{ultimately}\isamarkupfalse% |
|
1497 \ \isacommand{show}\isamarkupfalse% |
|
1498 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
1499 \ simp\isanewline |
|
1500 \isacommand{qed}\isamarkupfalse% |
|
1501 % |
|
1502 \endisatagproof |
|
1503 {\isafoldproof}% |
|
1504 % |
|
1505 \isadelimproof |
|
1506 \ \isanewline |
|
1507 % |
|
1508 \endisadelimproof |
|
1509 \isanewline |
|
1510 \isacommand{lemma}\isamarkupfalse% |
|
1511 \ append{\isacharunderscore}keeps{\isacharunderscore}finite{\isacharcolon}\isanewline |
|
1512 \ \ {\isachardoublequoteopen}finite\ rhs\ {\isasymLongrightarrow}\ finite\ {\isacharparenleft}append{\isacharunderscore}rhs{\isacharunderscore}rexp\ rhs\ r{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1513 % |
|
1514 \isadelimproof |
|
1515 % |
|
1516 \endisadelimproof |
|
1517 % |
|
1518 \isatagproof |
|
1519 \isacommand{by}\isamarkupfalse% |
|
1520 \ {\isacharparenleft}auto\ simp{\isacharcolon}append{\isacharunderscore}rhs{\isacharunderscore}rexp{\isacharunderscore}def{\isacharparenright}% |
|
1521 \endisatagproof |
|
1522 {\isafoldproof}% |
|
1523 % |
|
1524 \isadelimproof |
|
1525 \isanewline |
|
1526 % |
|
1527 \endisadelimproof |
|
1528 \isanewline |
|
1529 \isacommand{lemma}\isamarkupfalse% |
|
1530 \ arden{\isacharunderscore}variate{\isacharunderscore}keeps{\isacharunderscore}finite{\isacharcolon}\isanewline |
|
1531 \ \ {\isachardoublequoteopen}finite\ rhs\ {\isasymLongrightarrow}\ finite\ {\isacharparenleft}arden{\isacharunderscore}variate\ X\ rhs{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1532 % |
|
1533 \isadelimproof |
|
1534 % |
|
1535 \endisadelimproof |
|
1536 % |
|
1537 \isatagproof |
|
1538 \isacommand{by}\isamarkupfalse% |
|
1539 \ {\isacharparenleft}auto\ simp{\isacharcolon}arden{\isacharunderscore}variate{\isacharunderscore}def\ append{\isacharunderscore}keeps{\isacharunderscore}finite{\isacharparenright}% |
|
1540 \endisatagproof |
|
1541 {\isafoldproof}% |
|
1542 % |
|
1543 \isadelimproof |
|
1544 \isanewline |
|
1545 % |
|
1546 \endisadelimproof |
|
1547 \isanewline |
|
1548 \isacommand{lemma}\isamarkupfalse% |
|
1549 \ append{\isacharunderscore}keeps{\isacharunderscore}nonempty{\isacharcolon}\isanewline |
|
1550 \ \ {\isachardoublequoteopen}rhs{\isacharunderscore}nonempty\ rhs\ {\isasymLongrightarrow}\ rhs{\isacharunderscore}nonempty\ {\isacharparenleft}append{\isacharunderscore}rhs{\isacharunderscore}rexp\ rhs\ r{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1551 % |
|
1552 \isadelimproof |
|
1553 % |
|
1554 \endisadelimproof |
|
1555 % |
|
1556 \isatagproof |
|
1557 \isacommand{apply}\isamarkupfalse% |
|
1558 \ {\isacharparenleft}auto\ simp{\isacharcolon}rhs{\isacharunderscore}nonempty{\isacharunderscore}def\ append{\isacharunderscore}rhs{\isacharunderscore}rexp{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1559 \isacommand{by}\isamarkupfalse% |
|
1560 \ {\isacharparenleft}case{\isacharunderscore}tac\ x{\isacharcomma}\ auto\ simp{\isacharcolon}Seq{\isacharunderscore}def{\isacharparenright}% |
|
1561 \endisatagproof |
|
1562 {\isafoldproof}% |
|
1563 % |
|
1564 \isadelimproof |
|
1565 \isanewline |
|
1566 % |
|
1567 \endisadelimproof |
|
1568 \isanewline |
|
1569 \isacommand{lemma}\isamarkupfalse% |
|
1570 \ nonempty{\isacharunderscore}set{\isacharunderscore}sub{\isacharcolon}\isanewline |
|
1571 \ \ {\isachardoublequoteopen}rhs{\isacharunderscore}nonempty\ rhs\ {\isasymLongrightarrow}\ rhs{\isacharunderscore}nonempty\ {\isacharparenleft}rhs\ {\isacharminus}\ A{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1572 % |
|
1573 \isadelimproof |
|
1574 % |
|
1575 \endisadelimproof |
|
1576 % |
|
1577 \isatagproof |
|
1578 \isacommand{by}\isamarkupfalse% |
|
1579 \ {\isacharparenleft}auto\ simp{\isacharcolon}rhs{\isacharunderscore}nonempty{\isacharunderscore}def{\isacharparenright}% |
|
1580 \endisatagproof |
|
1581 {\isafoldproof}% |
|
1582 % |
|
1583 \isadelimproof |
|
1584 \isanewline |
|
1585 % |
|
1586 \endisadelimproof |
|
1587 \isanewline |
|
1588 \isacommand{lemma}\isamarkupfalse% |
|
1589 \ nonempty{\isacharunderscore}set{\isacharunderscore}union{\isacharcolon}\isanewline |
|
1590 \ \ {\isachardoublequoteopen}{\isasymlbrakk}rhs{\isacharunderscore}nonempty\ rhs{\isacharsemicolon}\ rhs{\isacharunderscore}nonempty\ rhs{\isacharprime}{\isasymrbrakk}\ {\isasymLongrightarrow}\ rhs{\isacharunderscore}nonempty\ {\isacharparenleft}rhs\ {\isasymunion}\ rhs{\isacharprime}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1591 % |
|
1592 \isadelimproof |
|
1593 % |
|
1594 \endisadelimproof |
|
1595 % |
|
1596 \isatagproof |
|
1597 \isacommand{by}\isamarkupfalse% |
|
1598 \ {\isacharparenleft}auto\ simp{\isacharcolon}rhs{\isacharunderscore}nonempty{\isacharunderscore}def{\isacharparenright}% |
|
1599 \endisatagproof |
|
1600 {\isafoldproof}% |
|
1601 % |
|
1602 \isadelimproof |
|
1603 \isanewline |
|
1604 % |
|
1605 \endisadelimproof |
|
1606 \isanewline |
|
1607 \isacommand{lemma}\isamarkupfalse% |
|
1608 \ arden{\isacharunderscore}variate{\isacharunderscore}keeps{\isacharunderscore}nonempty{\isacharcolon}\isanewline |
|
1609 \ \ {\isachardoublequoteopen}rhs{\isacharunderscore}nonempty\ rhs\ {\isasymLongrightarrow}\ rhs{\isacharunderscore}nonempty\ {\isacharparenleft}arden{\isacharunderscore}variate\ X\ rhs{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1610 % |
|
1611 \isadelimproof |
|
1612 % |
|
1613 \endisadelimproof |
|
1614 % |
|
1615 \isatagproof |
|
1616 \isacommand{by}\isamarkupfalse% |
|
1617 \ {\isacharparenleft}simp\ only{\isacharcolon}arden{\isacharunderscore}variate{\isacharunderscore}def\ append{\isacharunderscore}keeps{\isacharunderscore}nonempty\ nonempty{\isacharunderscore}set{\isacharunderscore}sub{\isacharparenright}% |
|
1618 \endisatagproof |
|
1619 {\isafoldproof}% |
|
1620 % |
|
1621 \isadelimproof |
|
1622 \isanewline |
|
1623 % |
|
1624 \endisadelimproof |
|
1625 \isanewline |
|
1626 \isanewline |
|
1627 \isacommand{lemma}\isamarkupfalse% |
|
1628 \ rhs{\isacharunderscore}subst{\isacharunderscore}keeps{\isacharunderscore}nonempty{\isacharcolon}\isanewline |
|
1629 \ \ {\isachardoublequoteopen}{\isasymlbrakk}rhs{\isacharunderscore}nonempty\ rhs{\isacharsemicolon}\ rhs{\isacharunderscore}nonempty\ xrhs{\isasymrbrakk}\ {\isasymLongrightarrow}\ rhs{\isacharunderscore}nonempty\ {\isacharparenleft}rhs{\isacharunderscore}subst\ rhs\ X\ xrhs{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1630 % |
|
1631 \isadelimproof |
|
1632 % |
|
1633 \endisadelimproof |
|
1634 % |
|
1635 \isatagproof |
|
1636 \isacommand{by}\isamarkupfalse% |
|
1637 \ {\isacharparenleft}simp\ only{\isacharcolon}rhs{\isacharunderscore}subst{\isacharunderscore}def\ append{\isacharunderscore}keeps{\isacharunderscore}nonempty\ \ nonempty{\isacharunderscore}set{\isacharunderscore}union\ nonempty{\isacharunderscore}set{\isacharunderscore}sub{\isacharparenright}% |
|
1638 \endisatagproof |
|
1639 {\isafoldproof}% |
|
1640 % |
|
1641 \isadelimproof |
|
1642 \isanewline |
|
1643 % |
|
1644 \endisadelimproof |
|
1645 \isanewline |
|
1646 \isacommand{lemma}\isamarkupfalse% |
|
1647 \ rhs{\isacharunderscore}subst{\isacharunderscore}keeps{\isacharunderscore}eq{\isacharcolon}\isanewline |
|
1648 \ \ \isakeyword{assumes}\ substor{\isacharcolon}\ {\isachardoublequoteopen}X\ {\isacharequal}\ L\ xrhs{\isachardoublequoteclose}\isanewline |
|
1649 \ \ \isakeyword{and}\ finite{\isacharcolon}\ {\isachardoublequoteopen}finite\ rhs{\isachardoublequoteclose}\isanewline |
|
1650 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}L\ {\isacharparenleft}rhs{\isacharunderscore}subst\ rhs\ X\ xrhs{\isacharparenright}\ {\isacharequal}\ L\ rhs{\isachardoublequoteclose}\ {\isacharparenleft}\isakeyword{is}\ {\isachardoublequoteopen}{\isacharquery}Left\ {\isacharequal}\ {\isacharquery}Right{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
1651 % |
|
1652 \isadelimproof |
|
1653 % |
|
1654 \endisadelimproof |
|
1655 % |
|
1656 \isatagproof |
|
1657 \isacommand{proof}\isamarkupfalse% |
|
1658 {\isacharminus}\isanewline |
|
1659 \ \ \isacommand{def}\isamarkupfalse% |
|
1660 \ A\ {\isasymequiv}\ {\isachardoublequoteopen}L\ {\isacharparenleft}rhs\ {\isacharminus}\ items{\isacharunderscore}of\ rhs\ X{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1661 \ \ \isacommand{have}\isamarkupfalse% |
|
1662 \ {\isachardoublequoteopen}{\isacharquery}Left\ {\isacharequal}\ A\ {\isasymunion}\ L\ {\isacharparenleft}append{\isacharunderscore}rhs{\isacharunderscore}rexp\ xrhs\ {\isacharparenleft}rexp{\isacharunderscore}of\ rhs\ X{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1663 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1664 \ {\isacharparenleft}simp\ only{\isacharcolon}rhs{\isacharunderscore}subst{\isacharunderscore}def\ L{\isacharunderscore}rhs{\isacharunderscore}union{\isacharunderscore}distrib\ A{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1665 \ \ \isacommand{moreover}\isamarkupfalse% |
|
1666 \ \isacommand{have}\isamarkupfalse% |
|
1667 \ {\isachardoublequoteopen}{\isacharquery}Right\ {\isacharequal}\ A\ {\isasymunion}\ L\ {\isacharparenleft}items{\isacharunderscore}of\ rhs\ X{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1668 \ \ \isacommand{proof}\isamarkupfalse% |
|
1669 {\isacharminus}\isanewline |
|
1670 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
1671 \ {\isachardoublequoteopen}rhs\ {\isacharequal}\ {\isacharparenleft}rhs\ {\isacharminus}\ items{\isacharunderscore}of\ rhs\ X{\isacharparenright}\ {\isasymunion}\ {\isacharparenleft}items{\isacharunderscore}of\ rhs\ X{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
1672 \ {\isacharparenleft}auto\ simp{\isacharcolon}items{\isacharunderscore}of{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1673 \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
1674 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
1675 \ {\isacharparenleft}simp\ only{\isacharcolon}L{\isacharunderscore}rhs{\isacharunderscore}union{\isacharunderscore}distrib\ A{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1676 \ \ \isacommand{qed}\isamarkupfalse% |
|
1677 \isanewline |
|
1678 \ \ \isacommand{moreover}\isamarkupfalse% |
|
1679 \ \isacommand{have}\isamarkupfalse% |
|
1680 \ {\isachardoublequoteopen}L\ {\isacharparenleft}append{\isacharunderscore}rhs{\isacharunderscore}rexp\ xrhs\ {\isacharparenleft}rexp{\isacharunderscore}of\ rhs\ X{\isacharparenright}{\isacharparenright}\ {\isacharequal}\ L\ {\isacharparenleft}items{\isacharunderscore}of\ rhs\ X{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
1681 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
1682 \ finite\ substor\ \ \isacommand{by}\isamarkupfalse% |
|
1683 \ {\isacharparenleft}simp\ only{\isacharcolon}lang{\isacharunderscore}of{\isacharunderscore}append{\isacharunderscore}rhs\ lang{\isacharunderscore}of{\isacharunderscore}rexp{\isacharunderscore}of{\isacharparenright}\isanewline |
|
1684 \ \ \isacommand{ultimately}\isamarkupfalse% |
|
1685 \ \isacommand{show}\isamarkupfalse% |
|
1686 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
1687 \ simp\isanewline |
|
1688 \isacommand{qed}\isamarkupfalse% |
|
1689 % |
|
1690 \endisatagproof |
|
1691 {\isafoldproof}% |
|
1692 % |
|
1693 \isadelimproof |
|
1694 \isanewline |
|
1695 % |
|
1696 \endisadelimproof |
|
1697 \isanewline |
|
1698 \isacommand{lemma}\isamarkupfalse% |
|
1699 \ rhs{\isacharunderscore}subst{\isacharunderscore}keeps{\isacharunderscore}finite{\isacharunderscore}rhs{\isacharcolon}\isanewline |
|
1700 \ \ {\isachardoublequoteopen}{\isasymlbrakk}finite\ rhs{\isacharsemicolon}\ finite\ yrhs{\isasymrbrakk}\ {\isasymLongrightarrow}\ finite\ {\isacharparenleft}rhs{\isacharunderscore}subst\ rhs\ Y\ yrhs{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1701 % |
|
1702 \isadelimproof |
|
1703 % |
|
1704 \endisadelimproof |
|
1705 % |
|
1706 \isatagproof |
|
1707 \isacommand{by}\isamarkupfalse% |
|
1708 \ {\isacharparenleft}auto\ simp{\isacharcolon}rhs{\isacharunderscore}subst{\isacharunderscore}def\ append{\isacharunderscore}keeps{\isacharunderscore}finite{\isacharparenright}% |
|
1709 \endisatagproof |
|
1710 {\isafoldproof}% |
|
1711 % |
|
1712 \isadelimproof |
|
1713 \isanewline |
|
1714 % |
|
1715 \endisadelimproof |
|
1716 \isanewline |
|
1717 \isacommand{lemma}\isamarkupfalse% |
|
1718 \ eqs{\isacharunderscore}subst{\isacharunderscore}keeps{\isacharunderscore}finite{\isacharcolon}\isanewline |
|
1719 \ \ \isakeyword{assumes}\ finite{\isacharcolon}{\isachardoublequoteopen}finite\ {\isacharparenleft}ES{\isacharcolon}{\isacharcolon}\ {\isacharparenleft}string\ set\ {\isasymtimes}\ rhs{\isacharunderscore}item\ set{\isacharparenright}\ set{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1720 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}finite\ {\isacharparenleft}eqs{\isacharunderscore}subst\ ES\ Y\ yrhs{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1721 % |
|
1722 \isadelimproof |
|
1723 % |
|
1724 \endisadelimproof |
|
1725 % |
|
1726 \isatagproof |
|
1727 \isacommand{proof}\isamarkupfalse% |
|
1728 \ {\isacharminus}\isanewline |
|
1729 \ \ \isacommand{have}\isamarkupfalse% |
|
1730 \ {\isachardoublequoteopen}finite\ {\isacharbraceleft}{\isacharparenleft}Ya{\isacharcomma}\ rhs{\isacharunderscore}subst\ yrhsa\ Y\ yrhs{\isacharparenright}\ {\isacharbar}Ya\ yrhsa{\isachardot}\ {\isacharparenleft}Ya{\isacharcomma}\ yrhsa{\isacharparenright}\ {\isasymin}\ ES{\isacharbraceright}{\isachardoublequoteclose}\ \isanewline |
|
1731 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}\isakeyword{is}\ {\isachardoublequoteopen}finite\ {\isacharquery}A{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
1732 \ \ \isacommand{proof}\isamarkupfalse% |
|
1733 {\isacharminus}\isanewline |
|
1734 \ \ \ \ \isacommand{def}\isamarkupfalse% |
|
1735 \ eqns{\isacharprime}\ {\isasymequiv}\ {\isachardoublequoteopen}{\isacharbraceleft}{\isacharparenleft}{\isacharparenleft}Ya{\isacharcolon}{\isacharcolon}string\ set{\isacharparenright}{\isacharcomma}\ yrhsa{\isacharparenright}{\isacharbar}\ Ya\ yrhsa{\isachardot}\ {\isacharparenleft}Ya{\isacharcomma}\ yrhsa{\isacharparenright}\ {\isasymin}\ ES{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
1736 \ \ \ \ \isacommand{def}\isamarkupfalse% |
|
1737 \ h\ {\isasymequiv}\ {\isachardoublequoteopen}{\isasymlambda}\ {\isacharparenleft}{\isacharparenleft}Ya{\isacharcolon}{\isacharcolon}string\ set{\isacharparenright}{\isacharcomma}\ yrhsa{\isacharparenright}{\isachardot}\ {\isacharparenleft}Ya{\isacharcomma}\ rhs{\isacharunderscore}subst\ yrhsa\ Y\ yrhs{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1738 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
1739 \ {\isachardoublequoteopen}finite\ {\isacharparenleft}h\ {\isacharbackquote}\ eqns{\isacharprime}{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
1740 \ finite\ h{\isacharunderscore}def\ eqns{\isacharprime}{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse% |
|
1741 \ auto\isanewline |
|
1742 \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
1743 \ \isacommand{have}\isamarkupfalse% |
|
1744 \ {\isachardoublequoteopen}{\isacharquery}A\ {\isacharequal}\ h\ {\isacharbackquote}\ eqns{\isacharprime}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
1745 \ {\isacharparenleft}auto\ simp{\isacharcolon}h{\isacharunderscore}def\ eqns{\isacharprime}{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1746 \ \ \ \ \isacommand{ultimately}\isamarkupfalse% |
|
1747 \ \isacommand{show}\isamarkupfalse% |
|
1748 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
1749 \ auto\ \ \ \ \ \ \isanewline |
|
1750 \ \ \isacommand{qed}\isamarkupfalse% |
|
1751 \isanewline |
|
1752 \ \ \isacommand{thus}\isamarkupfalse% |
|
1753 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
1754 \ {\isacharparenleft}simp\ add{\isacharcolon}eqs{\isacharunderscore}subst{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1755 \isacommand{qed}\isamarkupfalse% |
|
1756 % |
|
1757 \endisatagproof |
|
1758 {\isafoldproof}% |
|
1759 % |
|
1760 \isadelimproof |
|
1761 \isanewline |
|
1762 % |
|
1763 \endisadelimproof |
|
1764 \isanewline |
|
1765 \isacommand{lemma}\isamarkupfalse% |
|
1766 \ eqs{\isacharunderscore}subst{\isacharunderscore}keeps{\isacharunderscore}finite{\isacharunderscore}rhs{\isacharcolon}\isanewline |
|
1767 \ \ {\isachardoublequoteopen}{\isasymlbrakk}finite{\isacharunderscore}rhs\ ES{\isacharsemicolon}\ finite\ yrhs{\isasymrbrakk}\ {\isasymLongrightarrow}\ finite{\isacharunderscore}rhs\ {\isacharparenleft}eqs{\isacharunderscore}subst\ ES\ Y\ yrhs{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1768 % |
|
1769 \isadelimproof |
|
1770 % |
|
1771 \endisadelimproof |
|
1772 % |
|
1773 \isatagproof |
|
1774 \isacommand{by}\isamarkupfalse% |
|
1775 \ {\isacharparenleft}auto\ intro{\isacharcolon}rhs{\isacharunderscore}subst{\isacharunderscore}keeps{\isacharunderscore}finite{\isacharunderscore}rhs\ simp\ add{\isacharcolon}eqs{\isacharunderscore}subst{\isacharunderscore}def\ finite{\isacharunderscore}rhs{\isacharunderscore}def{\isacharparenright}% |
|
1776 \endisatagproof |
|
1777 {\isafoldproof}% |
|
1778 % |
|
1779 \isadelimproof |
|
1780 \isanewline |
|
1781 % |
|
1782 \endisadelimproof |
|
1783 \isanewline |
|
1784 \isacommand{lemma}\isamarkupfalse% |
|
1785 \ append{\isacharunderscore}rhs{\isacharunderscore}keeps{\isacharunderscore}cls{\isacharcolon}\isanewline |
|
1786 \ \ {\isachardoublequoteopen}classes{\isacharunderscore}of\ {\isacharparenleft}append{\isacharunderscore}rhs{\isacharunderscore}rexp\ rhs\ r{\isacharparenright}\ {\isacharequal}\ classes{\isacharunderscore}of\ rhs{\isachardoublequoteclose}\isanewline |
|
1787 % |
|
1788 \isadelimproof |
|
1789 % |
|
1790 \endisadelimproof |
|
1791 % |
|
1792 \isatagproof |
|
1793 \isacommand{apply}\isamarkupfalse% |
|
1794 \ {\isacharparenleft}auto\ simp{\isacharcolon}classes{\isacharunderscore}of{\isacharunderscore}def\ append{\isacharunderscore}rhs{\isacharunderscore}rexp{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1795 \isacommand{apply}\isamarkupfalse% |
|
1796 \ {\isacharparenleft}case{\isacharunderscore}tac\ xa{\isacharcomma}\ auto\ simp{\isacharcolon}image{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1797 \isacommand{by}\isamarkupfalse% |
|
1798 \ {\isacharparenleft}rule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}SEQ\ ra\ r{\isachardoublequoteclose}\ \isakeyword{in}\ exI{\isacharcomma}\ rule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}Trn\ x\ ra{\isachardoublequoteclose}\ \isakeyword{in}\ bexI{\isacharcomma}\ simp{\isacharplus}{\isacharparenright}% |
|
1799 \endisatagproof |
|
1800 {\isafoldproof}% |
|
1801 % |
|
1802 \isadelimproof |
|
1803 \isanewline |
|
1804 % |
|
1805 \endisadelimproof |
|
1806 \isanewline |
|
1807 \isacommand{lemma}\isamarkupfalse% |
|
1808 \ arden{\isacharunderscore}variate{\isacharunderscore}removes{\isacharunderscore}cl{\isacharcolon}\isanewline |
|
1809 \ \ {\isachardoublequoteopen}classes{\isacharunderscore}of\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}\ {\isacharequal}\ classes{\isacharunderscore}of\ yrhs\ {\isacharminus}\ {\isacharbraceleft}Y{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
1810 % |
|
1811 \isadelimproof |
|
1812 % |
|
1813 \endisadelimproof |
|
1814 % |
|
1815 \isatagproof |
|
1816 \isacommand{apply}\isamarkupfalse% |
|
1817 \ {\isacharparenleft}simp\ add{\isacharcolon}arden{\isacharunderscore}variate{\isacharunderscore}def\ append{\isacharunderscore}rhs{\isacharunderscore}keeps{\isacharunderscore}cls\ items{\isacharunderscore}of{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1818 \isacommand{by}\isamarkupfalse% |
|
1819 \ {\isacharparenleft}auto\ simp{\isacharcolon}classes{\isacharunderscore}of{\isacharunderscore}def{\isacharparenright}% |
|
1820 \endisatagproof |
|
1821 {\isafoldproof}% |
|
1822 % |
|
1823 \isadelimproof |
|
1824 \isanewline |
|
1825 % |
|
1826 \endisadelimproof |
|
1827 \isanewline |
|
1828 \isacommand{lemma}\isamarkupfalse% |
|
1829 \ lefts{\isacharunderscore}of{\isacharunderscore}keeps{\isacharunderscore}cls{\isacharcolon}\isanewline |
|
1830 \ \ {\isachardoublequoteopen}lefts{\isacharunderscore}of\ {\isacharparenleft}eqs{\isacharunderscore}subst\ ES\ Y\ yrhs{\isacharparenright}\ {\isacharequal}\ lefts{\isacharunderscore}of\ ES{\isachardoublequoteclose}\isanewline |
|
1831 % |
|
1832 \isadelimproof |
|
1833 % |
|
1834 \endisadelimproof |
|
1835 % |
|
1836 \isatagproof |
|
1837 \isacommand{by}\isamarkupfalse% |
|
1838 \ {\isacharparenleft}auto\ simp{\isacharcolon}lefts{\isacharunderscore}of{\isacharunderscore}def\ eqs{\isacharunderscore}subst{\isacharunderscore}def{\isacharparenright}% |
|
1839 \endisatagproof |
|
1840 {\isafoldproof}% |
|
1841 % |
|
1842 \isadelimproof |
|
1843 \isanewline |
|
1844 % |
|
1845 \endisadelimproof |
|
1846 \isanewline |
|
1847 \isacommand{lemma}\isamarkupfalse% |
|
1848 \ rhs{\isacharunderscore}subst{\isacharunderscore}updates{\isacharunderscore}cls{\isacharcolon}\isanewline |
|
1849 \ \ {\isachardoublequoteopen}X\ {\isasymnotin}\ classes{\isacharunderscore}of\ xrhs\ {\isasymLongrightarrow}\ \isanewline |
|
1850 \ \ \ \ \ \ classes{\isacharunderscore}of\ {\isacharparenleft}rhs{\isacharunderscore}subst\ rhs\ X\ xrhs{\isacharparenright}\ {\isacharequal}\ classes{\isacharunderscore}of\ rhs\ {\isasymunion}\ classes{\isacharunderscore}of\ xrhs\ {\isacharminus}\ {\isacharbraceleft}X{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
1851 % |
|
1852 \isadelimproof |
|
1853 % |
|
1854 \endisadelimproof |
|
1855 % |
|
1856 \isatagproof |
|
1857 \isacommand{apply}\isamarkupfalse% |
|
1858 \ {\isacharparenleft}simp\ only{\isacharcolon}rhs{\isacharunderscore}subst{\isacharunderscore}def\ append{\isacharunderscore}rhs{\isacharunderscore}keeps{\isacharunderscore}cls\ \isanewline |
|
1859 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ classes{\isacharunderscore}of{\isacharunderscore}union{\isacharunderscore}distrib{\isacharbrackleft}THEN\ sym{\isacharbrackright}{\isacharparenright}\isanewline |
|
1860 \isacommand{by}\isamarkupfalse% |
|
1861 \ {\isacharparenleft}auto\ simp{\isacharcolon}classes{\isacharunderscore}of{\isacharunderscore}def\ items{\isacharunderscore}of{\isacharunderscore}def{\isacharparenright}% |
|
1862 \endisatagproof |
|
1863 {\isafoldproof}% |
|
1864 % |
|
1865 \isadelimproof |
|
1866 \isanewline |
|
1867 % |
|
1868 \endisadelimproof |
|
1869 \isanewline |
|
1870 \isacommand{lemma}\isamarkupfalse% |
|
1871 \ eqs{\isacharunderscore}subst{\isacharunderscore}keeps{\isacharunderscore}self{\isacharunderscore}contained{\isacharcolon}\isanewline |
|
1872 \ \ \isakeyword{fixes}\ Y\isanewline |
|
1873 \ \ \isakeyword{assumes}\ sc{\isacharcolon}\ {\isachardoublequoteopen}self{\isacharunderscore}contained\ {\isacharparenleft}ES\ {\isasymunion}\ {\isacharbraceleft}{\isacharparenleft}Y{\isacharcomma}\ yrhs{\isacharparenright}{\isacharbraceright}{\isacharparenright}{\isachardoublequoteclose}\ {\isacharparenleft}\isakeyword{is}\ {\isachardoublequoteopen}self{\isacharunderscore}contained\ {\isacharquery}A{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
1874 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}self{\isacharunderscore}contained\ {\isacharparenleft}eqs{\isacharunderscore}subst\ ES\ Y\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
1875 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}\isakeyword{is}\ {\isachardoublequoteopen}self{\isacharunderscore}contained\ {\isacharquery}B{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
1876 % |
|
1877 \isadelimproof |
|
1878 % |
|
1879 \endisadelimproof |
|
1880 % |
|
1881 \isatagproof |
|
1882 \isacommand{proof}\isamarkupfalse% |
|
1883 {\isacharminus}\isanewline |
|
1884 \ \ \isacommand{{\isacharbraceleft}}\isamarkupfalse% |
|
1885 \ \isacommand{fix}\isamarkupfalse% |
|
1886 \ X\ xrhs{\isacharprime}\isanewline |
|
1887 \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
1888 \ {\isachardoublequoteopen}{\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharprime}{\isacharparenright}\ {\isasymin}\ {\isacharquery}B{\isachardoublequoteclose}\isanewline |
|
1889 \ \ \ \ \isacommand{then}\isamarkupfalse% |
|
1890 \ \isacommand{obtain}\isamarkupfalse% |
|
1891 \ xrhs\ \isanewline |
|
1892 \ \ \ \ \ \ \isakeyword{where}\ xrhs{\isacharunderscore}xrhs{\isacharprime}{\isacharcolon}\ {\isachardoublequoteopen}xrhs{\isacharprime}\ {\isacharequal}\ rhs{\isacharunderscore}subst\ xrhs\ Y\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1893 \ \ \ \ \ \ \isakeyword{and}\ X{\isacharunderscore}in{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharparenright}\ {\isasymin}\ ES{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
1894 \ {\isacharparenleft}simp\ add{\isacharcolon}eqs{\isacharunderscore}subst{\isacharunderscore}def{\isacharcomma}\ blast{\isacharparenright}\ \ \ \ \isanewline |
|
1895 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
1896 \ {\isachardoublequoteopen}classes{\isacharunderscore}of\ xrhs{\isacharprime}\ {\isasymsubseteq}\ lefts{\isacharunderscore}of\ {\isacharquery}B{\isachardoublequoteclose}\isanewline |
|
1897 \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
1898 {\isacharminus}\isanewline |
|
1899 \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
1900 \ {\isachardoublequoteopen}lefts{\isacharunderscore}of\ {\isacharquery}B\ {\isacharequal}\ lefts{\isacharunderscore}of\ ES{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
1901 \ {\isacharparenleft}auto\ simp\ add{\isacharcolon}lefts{\isacharunderscore}of{\isacharunderscore}def\ eqs{\isacharunderscore}subst{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1902 \ \ \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
1903 \ \isacommand{have}\isamarkupfalse% |
|
1904 \ {\isachardoublequoteopen}classes{\isacharunderscore}of\ xrhs{\isacharprime}\ {\isasymsubseteq}\ lefts{\isacharunderscore}of\ ES{\isachardoublequoteclose}\isanewline |
|
1905 \ \ \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
1906 {\isacharminus}\isanewline |
|
1907 \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
1908 \ {\isachardoublequoteopen}classes{\isacharunderscore}of\ xrhs{\isacharprime}\ {\isasymsubseteq}\ \isanewline |
|
1909 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ classes{\isacharunderscore}of\ xrhs\ {\isasymunion}\ classes{\isacharunderscore}of\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}\ {\isacharminus}\ {\isacharbraceleft}Y{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
1910 \ \ \ \ \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
1911 {\isacharminus}\isanewline |
|
1912 \ \ \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
1913 \ {\isachardoublequoteopen}Y\ {\isasymnotin}\ classes{\isacharunderscore}of\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
1914 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
1915 \ arden{\isacharunderscore}variate{\isacharunderscore}removes{\isacharunderscore}cl\ \isacommand{by}\isamarkupfalse% |
|
1916 \ simp\isanewline |
|
1917 \ \ \ \ \ \ \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
1918 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
1919 \ xrhs{\isacharunderscore}xrhs{\isacharprime}\ \isacommand{by}\isamarkupfalse% |
|
1920 \ {\isacharparenleft}auto\ simp{\isacharcolon}rhs{\isacharunderscore}subst{\isacharunderscore}updates{\isacharunderscore}cls{\isacharparenright}\isanewline |
|
1921 \ \ \ \ \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
1922 \isanewline |
|
1923 \ \ \ \ \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
1924 \ \isacommand{have}\isamarkupfalse% |
|
1925 \ {\isachardoublequoteopen}classes{\isacharunderscore}of\ xrhs\ {\isasymsubseteq}\ lefts{\isacharunderscore}of\ ES\ {\isasymunion}\ {\isacharbraceleft}Y{\isacharbraceright}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
1926 \ X{\isacharunderscore}in\ sc\isanewline |
|
1927 \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% |
|
1928 \ {\isacharparenleft}simp\ only{\isacharcolon}self{\isacharunderscore}contained{\isacharunderscore}def\ lefts{\isacharunderscore}of{\isacharunderscore}union{\isacharunderscore}distrib{\isacharbrackleft}THEN\ sym{\isacharbrackright}{\isacharparenright}\isanewline |
|
1929 \ \ \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1930 \ {\isacharparenleft}drule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}{\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharparenright}{\isachardoublequoteclose}\ \isakeyword{in}\ bspec{\isacharcomma}\ auto\ simp{\isacharcolon}lefts{\isacharunderscore}of{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1931 \ \ \ \ \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
1932 \ \isacommand{have}\isamarkupfalse% |
|
1933 \ {\isachardoublequoteopen}classes{\isacharunderscore}of\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}\ {\isasymsubseteq}\ lefts{\isacharunderscore}of\ ES\ {\isasymunion}\ {\isacharbraceleft}Y{\isacharbraceright}{\isachardoublequoteclose}\ \isanewline |
|
1934 \ \ \ \ \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
1935 \ sc\ \isanewline |
|
1936 \ \ \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1937 \ {\isacharparenleft}auto\ simp\ add{\isacharcolon}arden{\isacharunderscore}variate{\isacharunderscore}removes{\isacharunderscore}cl\ self{\isacharunderscore}contained{\isacharunderscore}def\ lefts{\isacharunderscore}of{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1938 \ \ \ \ \ \ \ \ \isacommand{ultimately}\isamarkupfalse% |
|
1939 \ \isacommand{show}\isamarkupfalse% |
|
1940 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
1941 \ auto\isanewline |
|
1942 \ \ \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
1943 \isanewline |
|
1944 \ \ \ \ \ \ \isacommand{ultimately}\isamarkupfalse% |
|
1945 \ \isacommand{show}\isamarkupfalse% |
|
1946 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
1947 \ simp\isanewline |
|
1948 \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
1949 \isanewline |
|
1950 \ \ \isacommand{{\isacharbraceright}}\isamarkupfalse% |
|
1951 \ \isacommand{thus}\isamarkupfalse% |
|
1952 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
1953 \ {\isacharparenleft}auto\ simp\ only{\isacharcolon}eqs{\isacharunderscore}subst{\isacharunderscore}def\ self{\isacharunderscore}contained{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1954 \isacommand{qed}\isamarkupfalse% |
|
1955 % |
|
1956 \endisatagproof |
|
1957 {\isafoldproof}% |
|
1958 % |
|
1959 \isadelimproof |
|
1960 \isanewline |
|
1961 % |
|
1962 \endisadelimproof |
|
1963 \isanewline |
|
1964 \isacommand{lemma}\isamarkupfalse% |
|
1965 \ eqs{\isacharunderscore}subst{\isacharunderscore}satisfy{\isacharunderscore}Inv{\isacharcolon}\isanewline |
|
1966 \ \ \isakeyword{assumes}\ Inv{\isacharunderscore}ES{\isacharcolon}\ {\isachardoublequoteopen}Inv\ {\isacharparenleft}ES\ {\isasymunion}\ {\isacharbraceleft}{\isacharparenleft}Y{\isacharcomma}\ yrhs{\isacharparenright}{\isacharbraceright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1967 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}Inv\ {\isacharparenleft}eqs{\isacharunderscore}subst\ ES\ Y\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
1968 % |
|
1969 \isadelimproof |
|
1970 % |
|
1971 \endisadelimproof |
|
1972 % |
|
1973 \isatagproof |
|
1974 \isacommand{proof}\isamarkupfalse% |
|
1975 \ {\isacharminus}\ \ \isanewline |
|
1976 \ \ \isacommand{have}\isamarkupfalse% |
|
1977 \ finite{\isacharunderscore}yrhs{\isacharcolon}\ {\isachardoublequoteopen}finite\ yrhs{\isachardoublequoteclose}\ \isanewline |
|
1978 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
1979 \ Inv{\isacharunderscore}ES\ \isacommand{by}\isamarkupfalse% |
|
1980 \ {\isacharparenleft}auto\ simp{\isacharcolon}Inv{\isacharunderscore}def\ finite{\isacharunderscore}rhs{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1981 \ \ \isacommand{have}\isamarkupfalse% |
|
1982 \ nonempty{\isacharunderscore}yrhs{\isacharcolon}\ {\isachardoublequoteopen}rhs{\isacharunderscore}nonempty\ yrhs{\isachardoublequoteclose}\ \isanewline |
|
1983 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
1984 \ Inv{\isacharunderscore}ES\ \isacommand{by}\isamarkupfalse% |
|
1985 \ {\isacharparenleft}auto\ simp{\isacharcolon}Inv{\isacharunderscore}def\ ardenable{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1986 \ \ \isacommand{have}\isamarkupfalse% |
|
1987 \ Y{\isacharunderscore}eq{\isacharunderscore}yrhs{\isacharcolon}\ {\isachardoublequoteopen}Y\ {\isacharequal}\ L\ yrhs{\isachardoublequoteclose}\ \isanewline |
|
1988 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
1989 \ Inv{\isacharunderscore}ES\ \isacommand{by}\isamarkupfalse% |
|
1990 \ {\isacharparenleft}simp\ only{\isacharcolon}Inv{\isacharunderscore}def\ valid{\isacharunderscore}eqns{\isacharunderscore}def{\isacharcomma}\ blast{\isacharparenright}\isanewline |
|
1991 \ \ \isacommand{have}\isamarkupfalse% |
|
1992 \ {\isachardoublequoteopen}distinct{\isacharunderscore}equas\ {\isacharparenleft}eqs{\isacharunderscore}subst\ ES\ Y\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
1993 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
1994 \ Inv{\isacharunderscore}ES\isanewline |
|
1995 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
1996 \ {\isacharparenleft}auto\ simp{\isacharcolon}distinct{\isacharunderscore}equas{\isacharunderscore}def\ eqs{\isacharunderscore}subst{\isacharunderscore}def\ Inv{\isacharunderscore}def{\isacharparenright}\isanewline |
|
1997 \ \ \isacommand{moreover}\isamarkupfalse% |
|
1998 \ \isacommand{have}\isamarkupfalse% |
|
1999 \ {\isachardoublequoteopen}finite\ {\isacharparenleft}eqs{\isacharunderscore}subst\ ES\ Y\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
2000 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
2001 \ Inv{\isacharunderscore}ES\ \isacommand{by}\isamarkupfalse% |
|
2002 \ {\isacharparenleft}simp\ add{\isacharcolon}Inv{\isacharunderscore}def\ eqs{\isacharunderscore}subst{\isacharunderscore}keeps{\isacharunderscore}finite{\isacharparenright}\isanewline |
|
2003 \ \ \isacommand{moreover}\isamarkupfalse% |
|
2004 \ \isacommand{have}\isamarkupfalse% |
|
2005 \ {\isachardoublequoteopen}finite{\isacharunderscore}rhs\ {\isacharparenleft}eqs{\isacharunderscore}subst\ ES\ Y\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2006 \ \ \isacommand{proof}\isamarkupfalse% |
|
2007 {\isacharminus}\isanewline |
|
2008 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
2009 \ {\isachardoublequoteopen}finite{\isacharunderscore}rhs\ ES{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
2010 \ Inv{\isacharunderscore}ES\ \isanewline |
|
2011 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2012 \ {\isacharparenleft}simp\ add{\isacharcolon}Inv{\isacharunderscore}def\ finite{\isacharunderscore}rhs{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2013 \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
2014 \ \isacommand{have}\isamarkupfalse% |
|
2015 \ {\isachardoublequoteopen}finite\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2016 \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
2017 \ {\isacharminus}\isanewline |
|
2018 \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
2019 \ {\isachardoublequoteopen}finite\ yrhs{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
2020 \ Inv{\isacharunderscore}ES\ \isanewline |
|
2021 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2022 \ {\isacharparenleft}auto\ simp{\isacharcolon}Inv{\isacharunderscore}def\ finite{\isacharunderscore}rhs{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2023 \ \ \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
2024 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
2025 \ arden{\isacharunderscore}variate{\isacharunderscore}keeps{\isacharunderscore}finite\ \isacommand{by}\isamarkupfalse% |
|
2026 \ simp\isanewline |
|
2027 \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
2028 \isanewline |
|
2029 \ \ \ \ \isacommand{ultimately}\isamarkupfalse% |
|
2030 \ \isacommand{show}\isamarkupfalse% |
|
2031 \ {\isacharquery}thesis\ \isanewline |
|
2032 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2033 \ {\isacharparenleft}simp\ add{\isacharcolon}eqs{\isacharunderscore}subst{\isacharunderscore}keeps{\isacharunderscore}finite{\isacharunderscore}rhs{\isacharparenright}\isanewline |
|
2034 \ \ \isacommand{qed}\isamarkupfalse% |
|
2035 \isanewline |
|
2036 \ \ \isacommand{moreover}\isamarkupfalse% |
|
2037 \ \isacommand{have}\isamarkupfalse% |
|
2038 \ {\isachardoublequoteopen}ardenable\ {\isacharparenleft}eqs{\isacharunderscore}subst\ ES\ Y\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2039 \ \ \isacommand{proof}\isamarkupfalse% |
|
2040 \ {\isacharminus}\ \isanewline |
|
2041 \ \ \ \ \isacommand{{\isacharbraceleft}}\isamarkupfalse% |
|
2042 \ \isacommand{fix}\isamarkupfalse% |
|
2043 \ X\ rhs\isanewline |
|
2044 \ \ \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
2045 \ {\isachardoublequoteopen}{\isacharparenleft}X{\isacharcomma}\ rhs{\isacharparenright}\ {\isasymin}\ ES{\isachardoublequoteclose}\isanewline |
|
2046 \ \ \ \ \ \ \isacommand{hence}\isamarkupfalse% |
|
2047 \ {\isachardoublequoteopen}rhs{\isacharunderscore}nonempty\ rhs{\isachardoublequoteclose}\ \ \isacommand{using}\isamarkupfalse% |
|
2048 \ prems\ Inv{\isacharunderscore}ES\ \ \isanewline |
|
2049 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2050 \ {\isacharparenleft}simp\ add{\isacharcolon}Inv{\isacharunderscore}def\ ardenable{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2051 \ \ \ \ \ \ \isacommand{with}\isamarkupfalse% |
|
2052 \ nonempty{\isacharunderscore}yrhs\ \isanewline |
|
2053 \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
2054 \ {\isachardoublequoteopen}rhs{\isacharunderscore}nonempty\ {\isacharparenleft}rhs{\isacharunderscore}subst\ rhs\ Y\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2055 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2056 \ {\isacharparenleft}simp\ add{\isacharcolon}nonempty{\isacharunderscore}yrhs\ \isanewline |
|
2057 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ rhs{\isacharunderscore}subst{\isacharunderscore}keeps{\isacharunderscore}nonempty\ arden{\isacharunderscore}variate{\isacharunderscore}keeps{\isacharunderscore}nonempty{\isacharparenright}\isanewline |
|
2058 \ \ \ \ \isacommand{{\isacharbraceright}}\isamarkupfalse% |
|
2059 \ \isacommand{thus}\isamarkupfalse% |
|
2060 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
2061 \ {\isacharparenleft}auto\ simp\ add{\isacharcolon}ardenable{\isacharunderscore}def\ eqs{\isacharunderscore}subst{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2062 \ \ \isacommand{qed}\isamarkupfalse% |
|
2063 \isanewline |
|
2064 \ \ \isacommand{moreover}\isamarkupfalse% |
|
2065 \ \isacommand{have}\isamarkupfalse% |
|
2066 \ {\isachardoublequoteopen}valid{\isacharunderscore}eqns\ {\isacharparenleft}eqs{\isacharunderscore}subst\ ES\ Y\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2067 \ \ \isacommand{proof}\isamarkupfalse% |
|
2068 {\isacharminus}\isanewline |
|
2069 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
2070 \ {\isachardoublequoteopen}Y\ {\isacharequal}\ L\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
2071 \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
2072 \ Y{\isacharunderscore}eq{\isacharunderscore}yrhs\ Inv{\isacharunderscore}ES\ finite{\isacharunderscore}yrhs\ nonempty{\isacharunderscore}yrhs\ \ \ \ \ \ \isanewline |
|
2073 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2074 \ {\isacharparenleft}rule{\isacharunderscore}tac\ arden{\isacharunderscore}variate{\isacharunderscore}keeps{\isacharunderscore}eq{\isacharcomma}\ {\isacharparenleft}simp\ add{\isacharcolon}rexp{\isacharunderscore}of{\isacharunderscore}empty{\isacharparenright}{\isacharplus}{\isacharparenright}\isanewline |
|
2075 \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
2076 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
2077 \ Inv{\isacharunderscore}ES\ \isanewline |
|
2078 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2079 \ {\isacharparenleft}clarsimp\ simp\ add{\isacharcolon}valid{\isacharunderscore}eqns{\isacharunderscore}def\ \isanewline |
|
2080 \ \ \ \ \ \ \ \ \ \ \ \ \ \ eqs{\isacharunderscore}subst{\isacharunderscore}def\ rhs{\isacharunderscore}subst{\isacharunderscore}keeps{\isacharunderscore}eq\ Inv{\isacharunderscore}def\ finite{\isacharunderscore}rhs{\isacharunderscore}def\isanewline |
|
2081 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ simp\ del{\isacharcolon}L{\isacharunderscore}rhs{\isachardot}simps{\isacharparenright}\isanewline |
|
2082 \ \ \isacommand{qed}\isamarkupfalse% |
|
2083 \isanewline |
|
2084 \ \ \isacommand{moreover}\isamarkupfalse% |
|
2085 \ \isacommand{have}\isamarkupfalse% |
|
2086 \ \isanewline |
|
2087 \ \ \ \ non{\isacharunderscore}empty{\isacharunderscore}subst{\isacharcolon}\ {\isachardoublequoteopen}non{\isacharunderscore}empty\ {\isacharparenleft}eqs{\isacharunderscore}subst\ ES\ Y\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2088 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
2089 \ Inv{\isacharunderscore}ES\ \isacommand{by}\isamarkupfalse% |
|
2090 \ {\isacharparenleft}auto\ simp{\isacharcolon}Inv{\isacharunderscore}def\ non{\isacharunderscore}empty{\isacharunderscore}def\ eqs{\isacharunderscore}subst{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2091 \ \ \isacommand{moreover}\isamarkupfalse% |
|
2092 \ \isanewline |
|
2093 \ \ \isacommand{have}\isamarkupfalse% |
|
2094 \ self{\isacharunderscore}subst{\isacharcolon}\ {\isachardoublequoteopen}self{\isacharunderscore}contained\ {\isacharparenleft}eqs{\isacharunderscore}subst\ ES\ Y\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2095 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
2096 \ Inv{\isacharunderscore}ES\ eqs{\isacharunderscore}subst{\isacharunderscore}keeps{\isacharunderscore}self{\isacharunderscore}contained\ \isacommand{by}\isamarkupfalse% |
|
2097 \ {\isacharparenleft}simp\ add{\isacharcolon}Inv{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2098 \ \ \isacommand{ultimately}\isamarkupfalse% |
|
2099 \ \isacommand{show}\isamarkupfalse% |
|
2100 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
2101 \ Inv{\isacharunderscore}ES\ \isacommand{by}\isamarkupfalse% |
|
2102 \ {\isacharparenleft}simp\ add{\isacharcolon}Inv{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2103 \isacommand{qed}\isamarkupfalse% |
|
2104 % |
|
2105 \endisatagproof |
|
2106 {\isafoldproof}% |
|
2107 % |
|
2108 \isadelimproof |
|
2109 \isanewline |
|
2110 % |
|
2111 \endisadelimproof |
|
2112 \isanewline |
|
2113 \isacommand{lemma}\isamarkupfalse% |
|
2114 \ eqs{\isacharunderscore}subst{\isacharunderscore}card{\isacharunderscore}le{\isacharcolon}\ \isanewline |
|
2115 \ \ \isakeyword{assumes}\ finite{\isacharcolon}\ {\isachardoublequoteopen}finite\ {\isacharparenleft}ES{\isacharcolon}{\isacharcolon}{\isacharparenleft}string\ set\ {\isasymtimes}\ rhs{\isacharunderscore}item\ set{\isacharparenright}\ set{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2116 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}card\ {\isacharparenleft}eqs{\isacharunderscore}subst\ ES\ Y\ yrhs{\isacharparenright}\ {\isacharless}{\isacharequal}\ card\ ES{\isachardoublequoteclose}\isanewline |
|
2117 % |
|
2118 \isadelimproof |
|
2119 % |
|
2120 \endisadelimproof |
|
2121 % |
|
2122 \isatagproof |
|
2123 \isacommand{proof}\isamarkupfalse% |
|
2124 {\isacharminus}\isanewline |
|
2125 \ \ \isacommand{def}\isamarkupfalse% |
|
2126 \ f\ {\isasymequiv}\ {\isachardoublequoteopen}{\isasymlambda}\ x{\isachardot}\ {\isacharparenleft}{\isacharparenleft}fst\ x{\isacharparenright}{\isacharcolon}{\isacharcolon}string\ set{\isacharcomma}\ rhs{\isacharunderscore}subst\ {\isacharparenleft}snd\ x{\isacharparenright}\ Y\ yrhs{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2127 \ \ \isacommand{have}\isamarkupfalse% |
|
2128 \ {\isachardoublequoteopen}eqs{\isacharunderscore}subst\ ES\ Y\ yrhs\ {\isacharequal}\ f\ {\isacharbackquote}\ ES{\isachardoublequoteclose}\ \isanewline |
|
2129 \ \ \ \ \isacommand{apply}\isamarkupfalse% |
|
2130 \ {\isacharparenleft}auto\ simp{\isacharcolon}eqs{\isacharunderscore}subst{\isacharunderscore}def\ f{\isacharunderscore}def\ image{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2131 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2132 \ {\isacharparenleft}rule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}{\isacharparenleft}Ya{\isacharcomma}\ yrhsa{\isacharparenright}{\isachardoublequoteclose}\ \isakeyword{in}\ bexI{\isacharcomma}\ simp{\isacharplus}{\isacharparenright}\isanewline |
|
2133 \ \ \isacommand{thus}\isamarkupfalse% |
|
2134 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
2135 \ finite\ \isacommand{by}\isamarkupfalse% |
|
2136 \ {\isacharparenleft}auto\ intro{\isacharcolon}card{\isacharunderscore}image{\isacharunderscore}le{\isacharparenright}\isanewline |
|
2137 \isacommand{qed}\isamarkupfalse% |
|
2138 % |
|
2139 \endisatagproof |
|
2140 {\isafoldproof}% |
|
2141 % |
|
2142 \isadelimproof |
|
2143 \isanewline |
|
2144 % |
|
2145 \endisadelimproof |
|
2146 \isanewline |
|
2147 \isacommand{lemma}\isamarkupfalse% |
|
2148 \ eqs{\isacharunderscore}subst{\isacharunderscore}cls{\isacharunderscore}remains{\isacharcolon}\ \isanewline |
|
2149 \ \ {\isachardoublequoteopen}{\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharparenright}\ {\isasymin}\ ES\ {\isasymLongrightarrow}\ {\isasymexists}\ xrhs{\isacharprime}{\isachardot}\ {\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharprime}{\isacharparenright}\ {\isasymin}\ {\isacharparenleft}eqs{\isacharunderscore}subst\ ES\ Y\ yrhs{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2150 % |
|
2151 \isadelimproof |
|
2152 % |
|
2153 \endisadelimproof |
|
2154 % |
|
2155 \isatagproof |
|
2156 \isacommand{by}\isamarkupfalse% |
|
2157 \ {\isacharparenleft}auto\ simp{\isacharcolon}eqs{\isacharunderscore}subst{\isacharunderscore}def{\isacharparenright}% |
|
2158 \endisatagproof |
|
2159 {\isafoldproof}% |
|
2160 % |
|
2161 \isadelimproof |
|
2162 \isanewline |
|
2163 % |
|
2164 \endisadelimproof |
|
2165 \isanewline |
|
2166 \isacommand{lemma}\isamarkupfalse% |
|
2167 \ card{\isacharunderscore}noteq{\isacharunderscore}{\isadigit{1}}{\isacharunderscore}has{\isacharunderscore}more{\isacharcolon}\isanewline |
|
2168 \ \ \isakeyword{assumes}\ card{\isacharcolon}{\isachardoublequoteopen}card\ S\ {\isasymnoteq}\ {\isadigit{1}}{\isachardoublequoteclose}\isanewline |
|
2169 \ \ \isakeyword{and}\ e{\isacharunderscore}in{\isacharcolon}\ {\isachardoublequoteopen}e\ {\isasymin}\ S{\isachardoublequoteclose}\isanewline |
|
2170 \ \ \isakeyword{and}\ finite{\isacharcolon}\ {\isachardoublequoteopen}finite\ S{\isachardoublequoteclose}\isanewline |
|
2171 \ \ \isakeyword{obtains}\ e{\isacharprime}\ \isakeyword{where}\ {\isachardoublequoteopen}e{\isacharprime}\ {\isasymin}\ S\ {\isasymand}\ e\ {\isasymnoteq}\ e{\isacharprime}{\isachardoublequoteclose}\ \isanewline |
|
2172 % |
|
2173 \isadelimproof |
|
2174 % |
|
2175 \endisadelimproof |
|
2176 % |
|
2177 \isatagproof |
|
2178 \isacommand{proof}\isamarkupfalse% |
|
2179 {\isacharminus}\isanewline |
|
2180 \ \ \isacommand{have}\isamarkupfalse% |
|
2181 \ {\isachardoublequoteopen}card\ {\isacharparenleft}S\ {\isacharminus}\ {\isacharbraceleft}e{\isacharbraceright}{\isacharparenright}\ {\isachargreater}\ {\isadigit{0}}{\isachardoublequoteclose}\isanewline |
|
2182 \ \ \isacommand{proof}\isamarkupfalse% |
|
2183 \ {\isacharminus}\isanewline |
|
2184 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
2185 \ {\isachardoublequoteopen}card\ S\ {\isachargreater}\ {\isadigit{1}}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
2186 \ card\ e{\isacharunderscore}in\ finite\ \ \isanewline |
|
2187 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2188 \ {\isacharparenleft}case{\isacharunderscore}tac\ {\isachardoublequoteopen}card\ S{\isachardoublequoteclose}{\isacharcomma}\ auto{\isacharparenright}\ \isanewline |
|
2189 \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
2190 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
2191 \ finite\ e{\isacharunderscore}in\ \isacommand{by}\isamarkupfalse% |
|
2192 \ auto\isanewline |
|
2193 \ \ \isacommand{qed}\isamarkupfalse% |
|
2194 \isanewline |
|
2195 \ \ \isacommand{hence}\isamarkupfalse% |
|
2196 \ {\isachardoublequoteopen}S\ {\isacharminus}\ {\isacharbraceleft}e{\isacharbraceright}\ {\isasymnoteq}\ {\isacharbraceleft}{\isacharbraceright}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
2197 \ finite\ \isacommand{by}\isamarkupfalse% |
|
2198 \ {\isacharparenleft}rule{\isacharunderscore}tac\ notI{\isacharcomma}\ simp{\isacharparenright}\isanewline |
|
2199 \ \ \isacommand{thus}\isamarkupfalse% |
|
2200 \ {\isachardoublequoteopen}{\isacharparenleft}{\isasymAnd}e{\isacharprime}{\isachardot}\ e{\isacharprime}\ {\isasymin}\ S\ {\isasymand}\ e\ {\isasymnoteq}\ e{\isacharprime}\ {\isasymLongrightarrow}\ thesis{\isacharparenright}\ {\isasymLongrightarrow}\ thesis{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
2201 \ auto\isanewline |
|
2202 \isacommand{qed}\isamarkupfalse% |
|
2203 % |
|
2204 \endisatagproof |
|
2205 {\isafoldproof}% |
|
2206 % |
|
2207 \isadelimproof |
|
2208 \isanewline |
|
2209 % |
|
2210 \endisadelimproof |
|
2211 \isanewline |
|
2212 \isacommand{lemma}\isamarkupfalse% |
|
2213 \ iteration{\isacharunderscore}step{\isacharcolon}\ \isanewline |
|
2214 \ \ \isakeyword{assumes}\ Inv{\isacharunderscore}ES{\isacharcolon}\ {\isachardoublequoteopen}Inv\ ES{\isachardoublequoteclose}\isanewline |
|
2215 \ \ \isakeyword{and}\ \ \ \ X{\isacharunderscore}in{\isacharunderscore}ES{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharparenright}\ {\isasymin}\ ES{\isachardoublequoteclose}\isanewline |
|
2216 \ \ \isakeyword{and}\ \ \ \ not{\isacharunderscore}T{\isacharcolon}\ {\isachardoublequoteopen}card\ ES\ {\isasymnoteq}\ {\isadigit{1}}{\isachardoublequoteclose}\isanewline |
|
2217 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}{\isasymexists}\ ES{\isacharprime}{\isachardot}\ {\isacharparenleft}Inv\ ES{\isacharprime}\ {\isasymand}\ {\isacharparenleft}{\isasymexists}\ xrhs{\isacharprime}{\isachardot}{\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharprime}{\isacharparenright}\ {\isasymin}\ ES{\isacharprime}{\isacharparenright}{\isacharparenright}\ {\isasymand}\ \isanewline |
|
2218 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}card\ ES{\isacharprime}{\isacharcomma}\ card\ ES{\isacharparenright}\ {\isasymin}\ less{\isacharunderscore}than{\isachardoublequoteclose}\ {\isacharparenleft}\isakeyword{is}\ {\isachardoublequoteopen}{\isasymexists}\ ES{\isacharprime}{\isachardot}\ {\isacharquery}P\ ES{\isacharprime}{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
2219 % |
|
2220 \isadelimproof |
|
2221 % |
|
2222 \endisadelimproof |
|
2223 % |
|
2224 \isatagproof |
|
2225 \isacommand{proof}\isamarkupfalse% |
|
2226 \ {\isacharminus}\isanewline |
|
2227 \ \ \isacommand{have}\isamarkupfalse% |
|
2228 \ finite{\isacharunderscore}ES{\isacharcolon}\ {\isachardoublequoteopen}finite\ ES{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
2229 \ Inv{\isacharunderscore}ES\ \isacommand{by}\isamarkupfalse% |
|
2230 \ {\isacharparenleft}simp\ add{\isacharcolon}Inv{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2231 \ \ \isacommand{then}\isamarkupfalse% |
|
2232 \ \isacommand{obtain}\isamarkupfalse% |
|
2233 \ Y\ yrhs\ \isanewline |
|
2234 \ \ \ \ \isakeyword{where}\ Y{\isacharunderscore}in{\isacharunderscore}ES{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}Y{\isacharcomma}\ yrhs{\isacharparenright}\ {\isasymin}\ ES{\isachardoublequoteclose}\ \isakeyword{and}\ not{\isacharunderscore}eq{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharparenright}\ {\isasymnoteq}\ {\isacharparenleft}Y{\isacharcomma}\ yrhs{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
2235 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
2236 \ not{\isacharunderscore}T\ X{\isacharunderscore}in{\isacharunderscore}ES\ \isacommand{by}\isamarkupfalse% |
|
2237 \ {\isacharparenleft}drule{\isacharunderscore}tac\ card{\isacharunderscore}noteq{\isacharunderscore}{\isadigit{1}}{\isacharunderscore}has{\isacharunderscore}more{\isacharcomma}\ auto{\isacharparenright}\isanewline |
|
2238 \ \ \isacommand{def}\isamarkupfalse% |
|
2239 \ ES{\isacharprime}\ {\isacharequal}{\isacharequal}\ {\isachardoublequoteopen}ES\ {\isacharminus}\ {\isacharbraceleft}{\isacharparenleft}Y{\isacharcomma}\ yrhs{\isacharparenright}{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
2240 \ \ \isacommand{let}\isamarkupfalse% |
|
2241 \ {\isacharquery}ES{\isacharprime}{\isacharprime}\ {\isacharequal}\ {\isachardoublequoteopen}eqs{\isacharunderscore}subst\ ES{\isacharprime}\ Y\ {\isacharparenleft}arden{\isacharunderscore}variate\ Y\ yrhs{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2242 \ \ \isacommand{have}\isamarkupfalse% |
|
2243 \ {\isachardoublequoteopen}{\isacharquery}P\ {\isacharquery}ES{\isacharprime}{\isacharprime}{\isachardoublequoteclose}\isanewline |
|
2244 \ \ \isacommand{proof}\isamarkupfalse% |
|
2245 \ {\isacharminus}\isanewline |
|
2246 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
2247 \ {\isachardoublequoteopen}Inv\ {\isacharquery}ES{\isacharprime}{\isacharprime}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
2248 \ Y{\isacharunderscore}in{\isacharunderscore}ES\ Inv{\isacharunderscore}ES\isanewline |
|
2249 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2250 \ {\isacharparenleft}rule{\isacharunderscore}tac\ eqs{\isacharunderscore}subst{\isacharunderscore}satisfy{\isacharunderscore}Inv{\isacharcomma}\ simp\ add{\isacharcolon}ES{\isacharprime}{\isacharunderscore}def\ insert{\isacharunderscore}absorb{\isacharparenright}\isanewline |
|
2251 \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
2252 \ \isacommand{have}\isamarkupfalse% |
|
2253 \ {\isachardoublequoteopen}{\isasymexists}xrhs{\isacharprime}{\isachardot}\ {\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharprime}{\isacharparenright}\ {\isasymin}\ {\isacharquery}ES{\isacharprime}{\isacharprime}{\isachardoublequoteclose}\ \ \isacommand{using}\isamarkupfalse% |
|
2254 \ not{\isacharunderscore}eq\ X{\isacharunderscore}in{\isacharunderscore}ES\isanewline |
|
2255 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2256 \ {\isacharparenleft}rule{\isacharunderscore}tac\ ES\ {\isacharequal}\ ES{\isacharprime}\ \isakeyword{in}\ eqs{\isacharunderscore}subst{\isacharunderscore}cls{\isacharunderscore}remains{\isacharcomma}\ auto\ simp\ add{\isacharcolon}ES{\isacharprime}{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2257 \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
2258 \ \isacommand{have}\isamarkupfalse% |
|
2259 \ {\isachardoublequoteopen}{\isacharparenleft}card\ {\isacharquery}ES{\isacharprime}{\isacharprime}{\isacharcomma}\ card\ ES{\isacharparenright}\ {\isasymin}\ less{\isacharunderscore}than{\isachardoublequoteclose}\ \isanewline |
|
2260 \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
2261 \ {\isacharminus}\isanewline |
|
2262 \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
2263 \ {\isachardoublequoteopen}finite\ ES{\isacharprime}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
2264 \ finite{\isacharunderscore}ES\ ES{\isacharprime}{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse% |
|
2265 \ auto\isanewline |
|
2266 \ \ \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
2267 \ \isacommand{have}\isamarkupfalse% |
|
2268 \ {\isachardoublequoteopen}card\ ES{\isacharprime}\ {\isacharless}\ card\ ES{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
2269 \ finite{\isacharunderscore}ES\ Y{\isacharunderscore}in{\isacharunderscore}ES\isanewline |
|
2270 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2271 \ {\isacharparenleft}auto\ simp{\isacharcolon}ES{\isacharprime}{\isacharunderscore}def\ card{\isacharunderscore}gt{\isacharunderscore}{\isadigit{0}}{\isacharunderscore}iff\ intro{\isacharcolon}diff{\isacharunderscore}Suc{\isacharunderscore}less{\isacharparenright}\isanewline |
|
2272 \ \ \ \ \ \ \isacommand{ultimately}\isamarkupfalse% |
|
2273 \ \isacommand{show}\isamarkupfalse% |
|
2274 \ {\isacharquery}thesis\ \isanewline |
|
2275 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2276 \ {\isacharparenleft}auto\ dest{\isacharcolon}eqs{\isacharunderscore}subst{\isacharunderscore}card{\isacharunderscore}le\ elim{\isacharcolon}le{\isacharunderscore}less{\isacharunderscore}trans{\isacharparenright}\isanewline |
|
2277 \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
2278 \isanewline |
|
2279 \ \ \ \ \isacommand{ultimately}\isamarkupfalse% |
|
2280 \ \isacommand{show}\isamarkupfalse% |
|
2281 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
2282 \ simp\isanewline |
|
2283 \ \ \isacommand{qed}\isamarkupfalse% |
|
2284 \isanewline |
|
2285 \ \ \isacommand{thus}\isamarkupfalse% |
|
2286 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
2287 \ blast\isanewline |
|
2288 \isacommand{qed}\isamarkupfalse% |
|
2289 % |
|
2290 \endisatagproof |
|
2291 {\isafoldproof}% |
|
2292 % |
|
2293 \isadelimproof |
|
2294 % |
|
2295 \endisadelimproof |
|
2296 % |
|
2297 \begin{isamarkuptext}% |
|
2298 From this point until \isa{hard{\isacharunderscore}direction}, the hard direction is proved |
|
2299 through a simple application of the iteration principle.% |
|
2300 \end{isamarkuptext}% |
|
2301 \isamarkuptrue% |
|
2302 \isacommand{lemma}\isamarkupfalse% |
|
2303 \ iteration{\isacharunderscore}conc{\isacharcolon}\ \isanewline |
|
2304 \ \ \isakeyword{assumes}\ history{\isacharcolon}\ {\isachardoublequoteopen}Inv\ ES{\isachardoublequoteclose}\isanewline |
|
2305 \ \ \isakeyword{and}\ \ \ \ X{\isacharunderscore}in{\isacharunderscore}ES{\isacharcolon}\ {\isachardoublequoteopen}{\isasymexists}\ xrhs{\isachardot}\ {\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharparenright}\ {\isasymin}\ ES{\isachardoublequoteclose}\isanewline |
|
2306 \ \ \isakeyword{shows}\ \isanewline |
|
2307 \ \ {\isachardoublequoteopen}{\isasymexists}\ ES{\isacharprime}{\isachardot}\ {\isacharparenleft}Inv\ ES{\isacharprime}\ {\isasymand}\ {\isacharparenleft}{\isasymexists}\ xrhs{\isacharprime}{\isachardot}\ {\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharprime}{\isacharparenright}\ {\isasymin}\ ES{\isacharprime}{\isacharparenright}{\isacharparenright}\ {\isasymand}\ card\ ES{\isacharprime}\ {\isacharequal}\ {\isadigit{1}}{\isachardoublequoteclose}\ \isanewline |
|
2308 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}\isakeyword{is}\ {\isachardoublequoteopen}{\isasymexists}\ ES{\isacharprime}{\isachardot}\ {\isacharquery}P\ ES{\isacharprime}{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
2309 % |
|
2310 \isadelimproof |
|
2311 % |
|
2312 \endisadelimproof |
|
2313 % |
|
2314 \isatagproof |
|
2315 \isacommand{proof}\isamarkupfalse% |
|
2316 \ {\isacharparenleft}cases\ {\isachardoublequoteopen}card\ ES\ {\isacharequal}\ {\isadigit{1}}{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
2317 \ \ \isacommand{case}\isamarkupfalse% |
|
2318 \ True\isanewline |
|
2319 \ \ \isacommand{thus}\isamarkupfalse% |
|
2320 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
2321 \ history\ X{\isacharunderscore}in{\isacharunderscore}ES\isanewline |
|
2322 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2323 \ blast\isanewline |
|
2324 \isacommand{next}\isamarkupfalse% |
|
2325 \isanewline |
|
2326 \ \ \isacommand{case}\isamarkupfalse% |
|
2327 \ False\ \ \isanewline |
|
2328 \ \ \isacommand{thus}\isamarkupfalse% |
|
2329 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
2330 \ history\ iteration{\isacharunderscore}step\ X{\isacharunderscore}in{\isacharunderscore}ES\isanewline |
|
2331 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2332 \ {\isacharparenleft}rule{\isacharunderscore}tac\ f\ {\isacharequal}\ card\ \isakeyword{in}\ wf{\isacharunderscore}iter{\isacharcomma}\ auto{\isacharparenright}\isanewline |
|
2333 \isacommand{qed}\isamarkupfalse% |
|
2334 % |
|
2335 \endisatagproof |
|
2336 {\isafoldproof}% |
|
2337 % |
|
2338 \isadelimproof |
|
2339 \isanewline |
|
2340 % |
|
2341 \endisadelimproof |
|
2342 \ \ \isanewline |
|
2343 \isacommand{lemma}\isamarkupfalse% |
|
2344 \ last{\isacharunderscore}cl{\isacharunderscore}exists{\isacharunderscore}rexp{\isacharcolon}\isanewline |
|
2345 \ \ \isakeyword{assumes}\ ES{\isacharunderscore}single{\isacharcolon}\ {\isachardoublequoteopen}ES\ {\isacharequal}\ {\isacharbraceleft}{\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharparenright}{\isacharbraceright}{\isachardoublequoteclose}\ \isanewline |
|
2346 \ \ \isakeyword{and}\ Inv{\isacharunderscore}ES{\isacharcolon}\ {\isachardoublequoteopen}Inv\ ES{\isachardoublequoteclose}\isanewline |
|
2347 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}{\isasymexists}\ {\isacharparenleft}r{\isacharcolon}{\isacharcolon}rexp{\isacharparenright}{\isachardot}\ L\ r\ {\isacharequal}\ X{\isachardoublequoteclose}\ {\isacharparenleft}\isakeyword{is}\ {\isachardoublequoteopen}{\isasymexists}\ r{\isachardot}\ {\isacharquery}P\ r{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
2348 % |
|
2349 \isadelimproof |
|
2350 % |
|
2351 \endisadelimproof |
|
2352 % |
|
2353 \isatagproof |
|
2354 \isacommand{proof}\isamarkupfalse% |
|
2355 {\isacharminus}\isanewline |
|
2356 \ \ \isacommand{let}\isamarkupfalse% |
|
2357 \ {\isacharquery}A\ {\isacharequal}\ {\isachardoublequoteopen}arden{\isacharunderscore}variate\ X\ xrhs{\isachardoublequoteclose}\isanewline |
|
2358 \ \ \isacommand{have}\isamarkupfalse% |
|
2359 \ {\isachardoublequoteopen}{\isacharquery}P\ {\isacharparenleft}rexp{\isacharunderscore}of{\isacharunderscore}lam\ {\isacharquery}A{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2360 \ \ \isacommand{proof}\isamarkupfalse% |
|
2361 \ {\isacharminus}\isanewline |
|
2362 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
2363 \ {\isachardoublequoteopen}L\ {\isacharparenleft}rexp{\isacharunderscore}of{\isacharunderscore}lam\ {\isacharquery}A{\isacharparenright}\ {\isacharequal}\ L\ {\isacharparenleft}lam{\isacharunderscore}of\ {\isacharquery}A{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2364 \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
2365 {\isacharparenleft}rule\ rexp{\isacharunderscore}of{\isacharunderscore}lam{\isacharunderscore}eq{\isacharunderscore}lam{\isacharunderscore}set{\isacharparenright}\isanewline |
|
2366 \ \ \ \ \ \ \isacommand{show}\isamarkupfalse% |
|
2367 \ {\isachardoublequoteopen}finite\ {\isacharparenleft}arden{\isacharunderscore}variate\ X\ xrhs{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
2368 \ Inv{\isacharunderscore}ES\ ES{\isacharunderscore}single\ \isanewline |
|
2369 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2370 \ {\isacharparenleft}rule{\isacharunderscore}tac\ arden{\isacharunderscore}variate{\isacharunderscore}keeps{\isacharunderscore}finite{\isacharcomma}\ \isanewline |
|
2371 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ auto\ simp\ add{\isacharcolon}Inv{\isacharunderscore}def\ finite{\isacharunderscore}rhs{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2372 \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
2373 \isanewline |
|
2374 \ \ \ \ \isacommand{also}\isamarkupfalse% |
|
2375 \ \isacommand{have}\isamarkupfalse% |
|
2376 \ {\isachardoublequoteopen}{\isasymdots}\ {\isacharequal}\ L\ {\isacharquery}A{\isachardoublequoteclose}\isanewline |
|
2377 \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
2378 {\isacharminus}\isanewline |
|
2379 \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
2380 \ {\isachardoublequoteopen}lam{\isacharunderscore}of\ {\isacharquery}A\ {\isacharequal}\ {\isacharquery}A{\isachardoublequoteclose}\isanewline |
|
2381 \ \ \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
2382 {\isacharminus}\isanewline |
|
2383 \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
2384 \ {\isachardoublequoteopen}classes{\isacharunderscore}of\ {\isacharquery}A\ {\isacharequal}\ {\isacharbraceleft}{\isacharbraceright}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
2385 \ Inv{\isacharunderscore}ES\ ES{\isacharunderscore}single\isanewline |
|
2386 \ \ \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2387 \ {\isacharparenleft}simp\ add{\isacharcolon}arden{\isacharunderscore}variate{\isacharunderscore}removes{\isacharunderscore}cl\ \isanewline |
|
2388 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ self{\isacharunderscore}contained{\isacharunderscore}def\ Inv{\isacharunderscore}def\ lefts{\isacharunderscore}of{\isacharunderscore}def{\isacharparenright}\ \isanewline |
|
2389 \ \ \ \ \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
2390 \ {\isacharquery}thesis\ \isanewline |
|
2391 \ \ \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2392 \ {\isacharparenleft}auto\ simp\ only{\isacharcolon}lam{\isacharunderscore}of{\isacharunderscore}def\ classes{\isacharunderscore}of{\isacharunderscore}def{\isacharcomma}\ case{\isacharunderscore}tac\ x{\isacharcomma}\ auto{\isacharparenright}\isanewline |
|
2393 \ \ \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
2394 \isanewline |
|
2395 \ \ \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
2396 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
2397 \ simp\isanewline |
|
2398 \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
2399 \isanewline |
|
2400 \ \ \ \ \isacommand{also}\isamarkupfalse% |
|
2401 \ \isacommand{have}\isamarkupfalse% |
|
2402 \ {\isachardoublequoteopen}{\isasymdots}\ {\isacharequal}\ X{\isachardoublequoteclose}\isanewline |
|
2403 \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
2404 {\isacharparenleft}rule\ arden{\isacharunderscore}variate{\isacharunderscore}keeps{\isacharunderscore}eq\ {\isacharbrackleft}THEN\ sym{\isacharbrackright}{\isacharparenright}\isanewline |
|
2405 \ \ \ \ \ \ \isacommand{show}\isamarkupfalse% |
|
2406 \ {\isachardoublequoteopen}X\ {\isacharequal}\ L\ xrhs{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
2407 \ Inv{\isacharunderscore}ES\ ES{\isacharunderscore}single\ \isanewline |
|
2408 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2409 \ {\isacharparenleft}auto\ simp\ only{\isacharcolon}Inv{\isacharunderscore}def\ valid{\isacharunderscore}eqns{\isacharunderscore}def{\isacharparenright}\ \ \isanewline |
|
2410 \ \ \ \ \isacommand{next}\isamarkupfalse% |
|
2411 \isanewline |
|
2412 \ \ \ \ \ \ \isacommand{from}\isamarkupfalse% |
|
2413 \ Inv{\isacharunderscore}ES\ ES{\isacharunderscore}single\ \isacommand{show}\isamarkupfalse% |
|
2414 \ {\isachardoublequoteopen}{\isacharbrackleft}{\isacharbrackright}\ {\isasymnotin}\ L\ {\isacharparenleft}rexp{\isacharunderscore}of\ xrhs\ X{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2415 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2416 {\isacharparenleft}simp\ add{\isacharcolon}Inv{\isacharunderscore}def\ ardenable{\isacharunderscore}def\ rexp{\isacharunderscore}of{\isacharunderscore}empty\ finite{\isacharunderscore}rhs{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2417 \ \ \ \ \isacommand{next}\isamarkupfalse% |
|
2418 \isanewline |
|
2419 \ \ \ \ \ \ \isacommand{from}\isamarkupfalse% |
|
2420 \ Inv{\isacharunderscore}ES\ ES{\isacharunderscore}single\ \isacommand{show}\isamarkupfalse% |
|
2421 \ {\isachardoublequoteopen}finite\ xrhs{\isachardoublequoteclose}\ \isanewline |
|
2422 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2423 \ {\isacharparenleft}simp\ add{\isacharcolon}Inv{\isacharunderscore}def\ finite{\isacharunderscore}rhs{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2424 \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
2425 \isanewline |
|
2426 \ \ \ \ \isacommand{finally}\isamarkupfalse% |
|
2427 \ \isacommand{show}\isamarkupfalse% |
|
2428 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
2429 \ simp\isanewline |
|
2430 \ \ \isacommand{qed}\isamarkupfalse% |
|
2431 \isanewline |
|
2432 \ \ \isacommand{thus}\isamarkupfalse% |
|
2433 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
2434 \ auto\isanewline |
|
2435 \isacommand{qed}\isamarkupfalse% |
|
2436 % |
|
2437 \endisatagproof |
|
2438 {\isafoldproof}% |
|
2439 % |
|
2440 \isadelimproof |
|
2441 \isanewline |
|
2442 % |
|
2443 \endisadelimproof |
|
2444 \ \ \ \isanewline |
|
2445 \isacommand{lemma}\isamarkupfalse% |
|
2446 \ every{\isacharunderscore}eqcl{\isacharunderscore}has{\isacharunderscore}reg{\isacharcolon}\ \isanewline |
|
2447 \ \ \isakeyword{assumes}\ finite{\isacharunderscore}CS{\isacharcolon}\ {\isachardoublequoteopen}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2448 \ \ \isakeyword{and}\ X{\isacharunderscore}in{\isacharunderscore}CS{\isacharcolon}\ {\isachardoublequoteopen}X\ {\isasymin}\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2449 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}{\isasymexists}\ {\isacharparenleft}reg{\isacharcolon}{\isacharcolon}rexp{\isacharparenright}{\isachardot}\ L\ reg\ {\isacharequal}\ X{\isachardoublequoteclose}\ {\isacharparenleft}\isakeyword{is}\ {\isachardoublequoteopen}{\isasymexists}\ r{\isachardot}\ {\isacharquery}E\ r{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
2450 % |
|
2451 \isadelimproof |
|
2452 % |
|
2453 \endisadelimproof |
|
2454 % |
|
2455 \isatagproof |
|
2456 \isacommand{proof}\isamarkupfalse% |
|
2457 \ {\isacharminus}\isanewline |
|
2458 \ \ \isacommand{from}\isamarkupfalse% |
|
2459 \ X{\isacharunderscore}in{\isacharunderscore}CS\ \isacommand{have}\isamarkupfalse% |
|
2460 \ {\isachardoublequoteopen}{\isasymexists}\ xrhs{\isachardot}\ {\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharparenright}\ {\isasymin}\ {\isacharparenleft}eqs\ {\isacharparenleft}UNIV\ \ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2461 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2462 \ {\isacharparenleft}auto\ simp{\isacharcolon}eqs{\isacharunderscore}def\ init{\isacharunderscore}rhs{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2463 \ \ \isacommand{then}\isamarkupfalse% |
|
2464 \ \isacommand{obtain}\isamarkupfalse% |
|
2465 \ ES\ xrhs\ \isakeyword{where}\ Inv{\isacharunderscore}ES{\isacharcolon}\ {\isachardoublequoteopen}Inv\ ES{\isachardoublequoteclose}\ \isanewline |
|
2466 \ \ \ \ \isakeyword{and}\ X{\isacharunderscore}in{\isacharunderscore}ES{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharparenright}\ {\isasymin}\ ES{\isachardoublequoteclose}\isanewline |
|
2467 \ \ \ \ \isakeyword{and}\ card{\isacharunderscore}ES{\isacharcolon}\ {\isachardoublequoteopen}card\ ES\ {\isacharequal}\ {\isadigit{1}}{\isachardoublequoteclose}\isanewline |
|
2468 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
2469 \ finite{\isacharunderscore}CS\ X{\isacharunderscore}in{\isacharunderscore}CS\ init{\isacharunderscore}ES{\isacharunderscore}satisfy{\isacharunderscore}Inv\ iteration{\isacharunderscore}conc\isanewline |
|
2470 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2471 \ blast\isanewline |
|
2472 \ \ \isacommand{hence}\isamarkupfalse% |
|
2473 \ ES{\isacharunderscore}single{\isacharunderscore}equa{\isacharcolon}\ {\isachardoublequoteopen}ES\ {\isacharequal}\ {\isacharbraceleft}{\isacharparenleft}X{\isacharcomma}\ xrhs{\isacharparenright}{\isacharbraceright}{\isachardoublequoteclose}\ \isanewline |
|
2474 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2475 \ {\isacharparenleft}auto\ simp{\isacharcolon}Inv{\isacharunderscore}def\ dest{\isacharbang}{\isacharcolon}card{\isacharunderscore}Suc{\isacharunderscore}Diff{\isadigit{1}}\ simp{\isacharcolon}card{\isacharunderscore}eq{\isacharunderscore}{\isadigit{0}}{\isacharunderscore}iff{\isacharparenright}\ \isanewline |
|
2476 \ \ \isacommand{thus}\isamarkupfalse% |
|
2477 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
2478 \ Inv{\isacharunderscore}ES\isanewline |
|
2479 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2480 \ {\isacharparenleft}rule\ last{\isacharunderscore}cl{\isacharunderscore}exists{\isacharunderscore}rexp{\isacharparenright}\isanewline |
|
2481 \isacommand{qed}\isamarkupfalse% |
|
2482 % |
|
2483 \endisatagproof |
|
2484 {\isafoldproof}% |
|
2485 % |
|
2486 \isadelimproof |
|
2487 \isanewline |
|
2488 % |
|
2489 \endisadelimproof |
|
2490 \isanewline |
|
2491 \isacommand{lemma}\isamarkupfalse% |
|
2492 \ finals{\isacharunderscore}in{\isacharunderscore}partitions{\isacharcolon}\isanewline |
|
2493 \ \ {\isachardoublequoteopen}finals\ Lang\ {\isasymsubseteq}\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2494 % |
|
2495 \isadelimproof |
|
2496 \ \ % |
|
2497 \endisadelimproof |
|
2498 % |
|
2499 \isatagproof |
|
2500 \isacommand{by}\isamarkupfalse% |
|
2501 \ {\isacharparenleft}auto\ simp{\isacharcolon}finals{\isacharunderscore}def\ quotient{\isacharunderscore}def{\isacharparenright}% |
|
2502 \endisatagproof |
|
2503 {\isafoldproof}% |
|
2504 % |
|
2505 \isadelimproof |
|
2506 \ \ \ \isanewline |
|
2507 % |
|
2508 \endisadelimproof |
|
2509 \isanewline |
|
2510 \isacommand{theorem}\isamarkupfalse% |
|
2511 \ hard{\isacharunderscore}direction{\isacharcolon}\ \isanewline |
|
2512 \ \ \isakeyword{assumes}\ finite{\isacharunderscore}CS{\isacharcolon}\ {\isachardoublequoteopen}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2513 \ \ \isakeyword{shows}\ \ \ {\isachardoublequoteopen}{\isasymexists}\ {\isacharparenleft}reg{\isacharcolon}{\isacharcolon}rexp{\isacharparenright}{\isachardot}\ Lang\ {\isacharequal}\ L\ reg{\isachardoublequoteclose}\isanewline |
|
2514 % |
|
2515 \isadelimproof |
|
2516 % |
|
2517 \endisadelimproof |
|
2518 % |
|
2519 \isatagproof |
|
2520 \isacommand{proof}\isamarkupfalse% |
|
2521 \ {\isacharminus}\isanewline |
|
2522 \ \ \isacommand{have}\isamarkupfalse% |
|
2523 \ {\isachardoublequoteopen}{\isasymforall}\ X\ {\isasymin}\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isachardot}\ {\isasymexists}\ {\isacharparenleft}reg{\isacharcolon}{\isacharcolon}rexp{\isacharparenright}{\isachardot}\ X\ {\isacharequal}\ L\ reg{\isachardoublequoteclose}\ \isanewline |
|
2524 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
2525 \ finite{\isacharunderscore}CS\ every{\isacharunderscore}eqcl{\isacharunderscore}has{\isacharunderscore}reg\ \isacommand{by}\isamarkupfalse% |
|
2526 \ blast\isanewline |
|
2527 \ \ \isacommand{then}\isamarkupfalse% |
|
2528 \ \isacommand{obtain}\isamarkupfalse% |
|
2529 \ f\ \isanewline |
|
2530 \ \ \ \ \isakeyword{where}\ f{\isacharunderscore}prop{\isacharcolon}\ {\isachardoublequoteopen}{\isasymforall}\ X\ {\isasymin}\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isachardot}\ X\ {\isacharequal}\ L\ {\isacharparenleft}{\isacharparenleft}f\ X{\isacharparenright}{\isacharcolon}{\isacharcolon}rexp{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
2531 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2532 \ {\isacharparenleft}auto\ dest{\isacharcolon}bchoice{\isacharparenright}\isanewline |
|
2533 \ \ \isacommand{def}\isamarkupfalse% |
|
2534 \ rs\ {\isasymequiv}\ {\isachardoublequoteopen}f\ {\isacharbackquote}\ {\isacharparenleft}finals\ Lang{\isacharparenright}{\isachardoublequoteclose}\ \ \isanewline |
|
2535 \ \ \isacommand{have}\isamarkupfalse% |
|
2536 \ {\isachardoublequoteopen}Lang\ {\isacharequal}\ {\isasymUnion}\ {\isacharparenleft}finals\ Lang{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
2537 \ lang{\isacharunderscore}is{\isacharunderscore}union{\isacharunderscore}of{\isacharunderscore}finals\ \isacommand{by}\isamarkupfalse% |
|
2538 \ auto\isanewline |
|
2539 \ \ \isacommand{also}\isamarkupfalse% |
|
2540 \ \isacommand{have}\isamarkupfalse% |
|
2541 \ {\isachardoublequoteopen}{\isasymdots}\ {\isacharequal}\ L\ {\isacharparenleft}folds\ ALT\ NULL\ rs{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
2542 \ \ \isacommand{proof}\isamarkupfalse% |
|
2543 \ {\isacharminus}\isanewline |
|
2544 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
2545 \ {\isachardoublequoteopen}finite\ rs{\isachardoublequoteclose}\isanewline |
|
2546 \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
2547 \ {\isacharminus}\isanewline |
|
2548 \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
2549 \ {\isachardoublequoteopen}finite\ {\isacharparenleft}finals\ Lang{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
2550 \ \ \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
2551 \ finite{\isacharunderscore}CS\ finals{\isacharunderscore}in{\isacharunderscore}partitions{\isacharbrackleft}of\ {\isachardoublequoteopen}Lang{\isachardoublequoteclose}{\isacharbrackright}\ \ \ \isanewline |
|
2552 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2553 \ {\isacharparenleft}erule{\isacharunderscore}tac\ finite{\isacharunderscore}subset{\isacharcomma}\ simp{\isacharparenright}\isanewline |
|
2554 \ \ \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
2555 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
2556 \ rs{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse% |
|
2557 \ auto\isanewline |
|
2558 \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
2559 \isanewline |
|
2560 \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
2561 \ {\isacharquery}thesis\ \isanewline |
|
2562 \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
2563 \ f{\isacharunderscore}prop\ rs{\isacharunderscore}def\ finals{\isacharunderscore}in{\isacharunderscore}partitions{\isacharbrackleft}of\ {\isachardoublequoteopen}Lang{\isachardoublequoteclose}{\isacharbrackright}\ \isacommand{by}\isamarkupfalse% |
|
2564 \ auto\isanewline |
|
2565 \ \ \isacommand{qed}\isamarkupfalse% |
|
2566 \isanewline |
|
2567 \ \ \isacommand{finally}\isamarkupfalse% |
|
2568 \ \isacommand{show}\isamarkupfalse% |
|
2569 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
2570 \ blast\isanewline |
|
2571 \isacommand{qed}\isamarkupfalse% |
|
2572 % |
|
2573 \endisatagproof |
|
2574 {\isafoldproof}% |
|
2575 % |
|
2576 \isadelimproof |
|
2577 % |
|
2578 \endisadelimproof |
|
2579 % |
|
2580 \isamarkupsection{Direction: \isa{regular\ language\ {\isasymRightarrow}finite\ partition}% |
|
2581 } |
|
2582 \isamarkuptrue% |
|
2583 % |
|
2584 \isamarkupsubsection{The scheme for this direction% |
|
2585 } |
|
2586 \isamarkuptrue% |
|
2587 % |
|
2588 \begin{isamarkuptext}% |
|
2589 The following convenient notation \isa{x\ {\isasymapprox}Lang\ y} means: |
|
2590 string \isa{x} and \isa{y} are equivalent with respect to |
|
2591 language \isa{Lang}.% |
|
2592 \end{isamarkuptext}% |
|
2593 \isamarkuptrue% |
|
2594 \isacommand{definition}\isamarkupfalse% |
|
2595 \isanewline |
|
2596 \ \ str{\isacharunderscore}eq\ {\isacharparenleft}{\isachardoublequoteopen}{\isacharunderscore}\ {\isasymapprox}{\isacharunderscore}\ {\isacharunderscore}{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
2597 \isakeyword{where}\isanewline |
|
2598 \ \ {\isachardoublequoteopen}x\ {\isasymapprox}Lang\ y\ {\isasymequiv}\ {\isacharparenleft}x{\isacharcomma}\ y{\isacharparenright}\ {\isasymin}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isachardoublequoteclose}% |
|
2599 \begin{isamarkuptext}% |
|
2600 The very basic scheme to show the finiteness of the partion generated by a language \isa{Lang} |
|
2601 is by attaching tags to every string. The set of tags are carfully choosen to make it finite. |
|
2602 If it can be proved that strings with the same tag are equivlent with respect \isa{Lang}, |
|
2603 then the partition given rise by \isa{Lang} must be finite. The reason for this is a lemma |
|
2604 in standard library (\isa{finite{\isacharunderscore}imageD}), which says: if the image of an injective |
|
2605 function on a set \isa{A} is finite, then \isa{A} is finite. It can be shown that |
|
2606 the function obtained by llifting \isa{tag} |
|
2607 to the level of equalent classes (i.e. \isa{{\isacharparenleft}{\isacharparenleft}op\ {\isacharbackquote}{\isacharparenright}\ tag{\isacharparenright}}) is injective |
|
2608 (by lemma \isa{tag{\isacharunderscore}image{\isacharunderscore}injI}) and the image of this function is finite |
|
2609 (with the help of lemma \isa{finite{\isacharunderscore}tag{\isacharunderscore}imageI}). |
|
2610 |
|
2611 BUT, I think this argument can be encapsulated by one lemma instead of the current presentation.% |
|
2612 \end{isamarkuptext}% |
|
2613 \isamarkuptrue% |
|
2614 \isacommand{lemma}\isamarkupfalse% |
|
2615 \ eq{\isacharunderscore}class{\isacharunderscore}equalI{\isacharcolon}\isanewline |
|
2616 \ \ {\isachardoublequoteopen}{\isasymlbrakk}X\ {\isasymin}\ UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}lang{\isacharsemicolon}\ Y\ {\isasymin}\ UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}lang{\isacharsemicolon}\ x\ {\isasymin}\ X{\isacharsemicolon}\ y\ {\isasymin}\ Y{\isacharsemicolon}\ x\ {\isasymapprox}lang\ y{\isasymrbrakk}\ \isanewline |
|
2617 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isasymLongrightarrow}\ X\ {\isacharequal}\ Y{\isachardoublequoteclose}\isanewline |
|
2618 % |
|
2619 \isadelimproof |
|
2620 % |
|
2621 \endisadelimproof |
|
2622 % |
|
2623 \isatagproof |
|
2624 \isacommand{by}\isamarkupfalse% |
|
2625 \ {\isacharparenleft}auto\ simp{\isacharcolon}quotient{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}def{\isacharparenright}% |
|
2626 \endisatagproof |
|
2627 {\isafoldproof}% |
|
2628 % |
|
2629 \isadelimproof |
|
2630 \isanewline |
|
2631 % |
|
2632 \endisadelimproof |
|
2633 \isanewline |
|
2634 \isacommand{lemma}\isamarkupfalse% |
|
2635 \ tag{\isacharunderscore}image{\isacharunderscore}injI{\isacharcolon}\isanewline |
|
2636 \ \ \isakeyword{assumes}\ str{\isacharunderscore}inj{\isacharcolon}\ {\isachardoublequoteopen}{\isasymAnd}\ x\ y{\isachardot}\ tag\ x\ {\isacharequal}\ tag\ {\isacharparenleft}y{\isacharcolon}{\isacharcolon}string{\isacharparenright}\ {\isasymLongrightarrow}\ x\ {\isasymapprox}lang\ y{\isachardoublequoteclose}\isanewline |
|
2637 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}inj{\isacharunderscore}on\ {\isacharparenleft}{\isacharparenleft}op\ {\isacharbackquote}{\isacharparenright}\ tag{\isacharparenright}\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}lang{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2638 % |
|
2639 \isadelimproof |
|
2640 % |
|
2641 \endisadelimproof |
|
2642 % |
|
2643 \isatagproof |
|
2644 \isacommand{proof}\isamarkupfalse% |
|
2645 {\isacharminus}\isanewline |
|
2646 \ \ \isacommand{{\isacharbraceleft}}\isamarkupfalse% |
|
2647 \ \isacommand{fix}\isamarkupfalse% |
|
2648 \ X\ Y\isanewline |
|
2649 \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
2650 \ X{\isacharunderscore}in{\isacharcolon}\ {\isachardoublequoteopen}X\ {\isasymin}\ UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}lang{\isachardoublequoteclose}\isanewline |
|
2651 \ \ \ \ \ \ \isakeyword{and}\ \ Y{\isacharunderscore}in{\isacharcolon}\ {\isachardoublequoteopen}Y\ {\isasymin}\ UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}lang{\isachardoublequoteclose}\isanewline |
|
2652 \ \ \ \ \ \ \isakeyword{and}\ \ tag{\isacharunderscore}eq{\isacharcolon}\ {\isachardoublequoteopen}tag\ {\isacharbackquote}\ X\ {\isacharequal}\ tag\ {\isacharbackquote}\ Y{\isachardoublequoteclose}\isanewline |
|
2653 \ \ \ \ \isacommand{then}\isamarkupfalse% |
|
2654 \ \isacommand{obtain}\isamarkupfalse% |
|
2655 \ x\ y\ \isakeyword{where}\ {\isachardoublequoteopen}x\ {\isasymin}\ X{\isachardoublequoteclose}\ \isakeyword{and}\ {\isachardoublequoteopen}y\ {\isasymin}\ Y{\isachardoublequoteclose}\ \isakeyword{and}\ {\isachardoublequoteopen}tag\ x\ {\isacharequal}\ tag\ y{\isachardoublequoteclose}\isanewline |
|
2656 \ \ \ \ \ \ \isacommand{unfolding}\isamarkupfalse% |
|
2657 \ quotient{\isacharunderscore}def\ Image{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}def\ image{\isacharunderscore}def\isanewline |
|
2658 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% |
|
2659 \ simp\ \isacommand{by}\isamarkupfalse% |
|
2660 \ blast\isanewline |
|
2661 \ \ \ \ \isacommand{with}\isamarkupfalse% |
|
2662 \ X{\isacharunderscore}in\ Y{\isacharunderscore}in\ str{\isacharunderscore}inj\isanewline |
|
2663 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
2664 \ {\isachardoublequoteopen}X\ {\isacharequal}\ Y{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
2665 \ {\isacharparenleft}rule{\isacharunderscore}tac\ eq{\isacharunderscore}class{\isacharunderscore}equalI{\isacharcomma}\ simp{\isacharplus}{\isacharparenright}\isanewline |
|
2666 \ \ \isacommand{{\isacharbraceright}}\isamarkupfalse% |
|
2667 \isanewline |
|
2668 \ \ \isacommand{thus}\isamarkupfalse% |
|
2669 \ {\isacharquery}thesis\ \isacommand{unfolding}\isamarkupfalse% |
|
2670 \ inj{\isacharunderscore}on{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse% |
|
2671 \ auto\isanewline |
|
2672 \isacommand{qed}\isamarkupfalse% |
|
2673 % |
|
2674 \endisatagproof |
|
2675 {\isafoldproof}% |
|
2676 % |
|
2677 \isadelimproof |
|
2678 \isanewline |
|
2679 % |
|
2680 \endisadelimproof |
|
2681 \isanewline |
|
2682 \isacommand{lemma}\isamarkupfalse% |
|
2683 \ finite{\isacharunderscore}tag{\isacharunderscore}imageI{\isacharcolon}\ \isanewline |
|
2684 \ \ {\isachardoublequoteopen}finite\ {\isacharparenleft}range\ tag{\isacharparenright}\ {\isasymLongrightarrow}\ finite\ {\isacharparenleft}{\isacharparenleft}{\isacharparenleft}op\ {\isacharbackquote}{\isacharparenright}\ tag{\isacharparenright}\ {\isacharbackquote}\ S{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2685 % |
|
2686 \isadelimproof |
|
2687 % |
|
2688 \endisadelimproof |
|
2689 % |
|
2690 \isatagproof |
|
2691 \isacommand{apply}\isamarkupfalse% |
|
2692 \ {\isacharparenleft}rule{\isacharunderscore}tac\ B\ {\isacharequal}\ {\isachardoublequoteopen}Pow\ {\isacharparenleft}tag\ {\isacharbackquote}\ UNIV{\isacharparenright}{\isachardoublequoteclose}\ \isakeyword{in}\ finite{\isacharunderscore}subset{\isacharparenright}\isanewline |
|
2693 \isacommand{by}\isamarkupfalse% |
|
2694 \ {\isacharparenleft}auto\ simp\ add{\isacharcolon}image{\isacharunderscore}def\ Pow{\isacharunderscore}def{\isacharparenright}% |
|
2695 \endisatagproof |
|
2696 {\isafoldproof}% |
|
2697 % |
|
2698 \isadelimproof |
|
2699 % |
|
2700 \endisadelimproof |
|
2701 % |
|
2702 \isamarkupsubsection{A small theory for list difference% |
|
2703 } |
|
2704 \isamarkuptrue% |
|
2705 % |
|
2706 \begin{isamarkuptext}% |
|
2707 The notion of list diffrence is need to make proofs more readable.% |
|
2708 \end{isamarkuptext}% |
|
2709 \isamarkuptrue% |
|
2710 \isacommand{fun}\isamarkupfalse% |
|
2711 \ list{\isacharunderscore}diff\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharprime}a\ list\ {\isasymRightarrow}\ {\isacharprime}a\ list\ {\isasymRightarrow}\ {\isacharprime}a\ list{\isachardoublequoteclose}\ {\isacharparenleft}\isakeyword{infix}\ {\isachardoublequoteopen}{\isacharminus}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{1}}{\isacharparenright}\isanewline |
|
2712 \isakeyword{where}\isanewline |
|
2713 \ \ {\isachardoublequoteopen}list{\isacharunderscore}diff\ {\isacharbrackleft}{\isacharbrackright}\ \ xs\ {\isacharequal}\ {\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}\ {\isacharbar}\isanewline |
|
2714 \ \ {\isachardoublequoteopen}list{\isacharunderscore}diff\ {\isacharparenleft}x{\isacharhash}xs{\isacharparenright}\ {\isacharbrackleft}{\isacharbrackright}\ {\isacharequal}\ x{\isacharhash}xs{\isachardoublequoteclose}\ {\isacharbar}\isanewline |
|
2715 \ \ {\isachardoublequoteopen}list{\isacharunderscore}diff\ {\isacharparenleft}x{\isacharhash}xs{\isacharparenright}\ {\isacharparenleft}y{\isacharhash}ys{\isacharparenright}\ {\isacharequal}\ {\isacharparenleft}if\ x\ {\isacharequal}\ y\ then\ list{\isacharunderscore}diff\ xs\ ys\ else\ {\isacharparenleft}x{\isacharhash}xs{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2716 \isanewline |
|
2717 \isacommand{lemma}\isamarkupfalse% |
|
2718 \ {\isacharbrackleft}simp{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}x\ {\isacharat}\ y{\isacharparenright}\ {\isacharminus}\ x\ {\isacharequal}\ y{\isachardoublequoteclose}\isanewline |
|
2719 % |
|
2720 \isadelimproof |
|
2721 % |
|
2722 \endisadelimproof |
|
2723 % |
|
2724 \isatagproof |
|
2725 \isacommand{apply}\isamarkupfalse% |
|
2726 \ {\isacharparenleft}induct\ x{\isacharparenright}\isanewline |
|
2727 \isacommand{by}\isamarkupfalse% |
|
2728 \ {\isacharparenleft}case{\isacharunderscore}tac\ y{\isacharcomma}\ simp{\isacharplus}{\isacharparenright}% |
|
2729 \endisatagproof |
|
2730 {\isafoldproof}% |
|
2731 % |
|
2732 \isadelimproof |
|
2733 \isanewline |
|
2734 % |
|
2735 \endisadelimproof |
|
2736 \isanewline |
|
2737 \isacommand{lemma}\isamarkupfalse% |
|
2738 \ {\isacharbrackleft}simp{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isacharminus}\ x\ {\isacharequal}\ {\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}\isanewline |
|
2739 % |
|
2740 \isadelimproof |
|
2741 % |
|
2742 \endisadelimproof |
|
2743 % |
|
2744 \isatagproof |
|
2745 \isacommand{by}\isamarkupfalse% |
|
2746 \ {\isacharparenleft}induct\ x{\isacharcomma}\ auto{\isacharparenright}% |
|
2747 \endisatagproof |
|
2748 {\isafoldproof}% |
|
2749 % |
|
2750 \isadelimproof |
|
2751 \isanewline |
|
2752 % |
|
2753 \endisadelimproof |
|
2754 \isanewline |
|
2755 \isacommand{lemma}\isamarkupfalse% |
|
2756 \ {\isacharbrackleft}simp{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isacharequal}\ xa\ {\isacharat}\ y\ {\isasymLongrightarrow}\ x\ {\isacharminus}\ xa\ {\isacharequal}\ y\ {\isachardoublequoteclose}\isanewline |
|
2757 % |
|
2758 \isadelimproof |
|
2759 % |
|
2760 \endisadelimproof |
|
2761 % |
|
2762 \isatagproof |
|
2763 \isacommand{by}\isamarkupfalse% |
|
2764 \ {\isacharparenleft}induct\ x{\isacharcomma}\ auto{\isacharparenright}% |
|
2765 \endisatagproof |
|
2766 {\isafoldproof}% |
|
2767 % |
|
2768 \isadelimproof |
|
2769 \isanewline |
|
2770 % |
|
2771 \endisadelimproof |
|
2772 \isanewline |
|
2773 \isacommand{lemma}\isamarkupfalse% |
|
2774 \ {\isacharbrackleft}simp{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isacharminus}\ {\isacharbrackleft}{\isacharbrackright}\ {\isacharequal}\ x{\isachardoublequoteclose}\isanewline |
|
2775 % |
|
2776 \isadelimproof |
|
2777 % |
|
2778 \endisadelimproof |
|
2779 % |
|
2780 \isatagproof |
|
2781 \isacommand{by}\isamarkupfalse% |
|
2782 \ {\isacharparenleft}induct\ x{\isacharcomma}\ auto{\isacharparenright}% |
|
2783 \endisatagproof |
|
2784 {\isafoldproof}% |
|
2785 % |
|
2786 \isadelimproof |
|
2787 \isanewline |
|
2788 % |
|
2789 \endisadelimproof |
|
2790 \isanewline |
|
2791 \isacommand{lemma}\isamarkupfalse% |
|
2792 \ {\isacharbrackleft}simp{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}x\ {\isacharminus}\ y\ {\isacharequal}\ {\isacharbrackleft}{\isacharbrackright}{\isacharparenright}\ {\isasymLongrightarrow}\ {\isacharparenleft}x\ {\isasymle}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2793 % |
|
2794 \isadelimproof |
|
2795 % |
|
2796 \endisadelimproof |
|
2797 % |
|
2798 \isatagproof |
|
2799 \isacommand{proof}\isamarkupfalse% |
|
2800 {\isacharminus}\ \ \ \isanewline |
|
2801 \ \ \isacommand{have}\isamarkupfalse% |
|
2802 \ {\isachardoublequoteopen}{\isasymexists}xa{\isachardot}\ x\ {\isacharequal}\ xa\ {\isacharat}\ {\isacharparenleft}x\ {\isacharminus}\ y{\isacharparenright}\ {\isasymand}\ xa\ {\isasymle}\ y{\isachardoublequoteclose}\isanewline |
|
2803 \ \ \ \ \isacommand{apply}\isamarkupfalse% |
|
2804 \ {\isacharparenleft}rule\ list{\isacharunderscore}diff{\isachardot}induct{\isacharbrackleft}of\ {\isacharunderscore}\ x\ y{\isacharbrackright}{\isacharcomma}\ simp{\isacharplus}{\isacharparenright}\isanewline |
|
2805 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
2806 \ {\isacharparenleft}clarsimp{\isacharcomma}\ rule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}y\ {\isacharhash}\ xa{\isachardoublequoteclose}\ \isakeyword{in}\ exI{\isacharcomma}\ simp{\isacharplus}{\isacharparenright}\isanewline |
|
2807 \ \ \isacommand{thus}\isamarkupfalse% |
|
2808 \ {\isachardoublequoteopen}{\isacharparenleft}x\ {\isacharminus}\ y\ {\isacharequal}\ {\isacharbrackleft}{\isacharbrackright}{\isacharparenright}\ {\isasymLongrightarrow}\ {\isacharparenleft}x\ {\isasymle}\ y{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
2809 \ simp\isanewline |
|
2810 \isacommand{qed}\isamarkupfalse% |
|
2811 % |
|
2812 \endisatagproof |
|
2813 {\isafoldproof}% |
|
2814 % |
|
2815 \isadelimproof |
|
2816 \isanewline |
|
2817 % |
|
2818 \endisadelimproof |
|
2819 \isanewline |
|
2820 \isacommand{lemma}\isamarkupfalse% |
|
2821 \ diff{\isacharunderscore}prefix{\isacharcolon}\isanewline |
|
2822 \ \ {\isachardoublequoteopen}{\isasymlbrakk}c\ {\isasymle}\ a\ {\isacharminus}\ b{\isacharsemicolon}\ b\ {\isasymle}\ a{\isasymrbrakk}\ {\isasymLongrightarrow}\ b\ {\isacharat}\ c\ {\isasymle}\ a{\isachardoublequoteclose}\isanewline |
|
2823 % |
|
2824 \isadelimproof |
|
2825 % |
|
2826 \endisadelimproof |
|
2827 % |
|
2828 \isatagproof |
|
2829 \isacommand{by}\isamarkupfalse% |
|
2830 \ {\isacharparenleft}auto\ elim{\isacharcolon}prefixE{\isacharparenright}% |
|
2831 \endisatagproof |
|
2832 {\isafoldproof}% |
|
2833 % |
|
2834 \isadelimproof |
|
2835 \isanewline |
|
2836 % |
|
2837 \endisadelimproof |
|
2838 \isanewline |
|
2839 \isacommand{lemma}\isamarkupfalse% |
|
2840 \ diff{\isacharunderscore}diff{\isacharunderscore}appd{\isacharcolon}\ \isanewline |
|
2841 \ \ {\isachardoublequoteopen}{\isasymlbrakk}c\ {\isacharless}\ a\ {\isacharminus}\ b{\isacharsemicolon}\ b\ {\isacharless}\ a{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isacharparenleft}a\ {\isacharminus}\ b{\isacharparenright}\ {\isacharminus}\ c\ {\isacharequal}\ a\ {\isacharminus}\ {\isacharparenleft}b\ {\isacharat}\ c{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2842 % |
|
2843 \isadelimproof |
|
2844 % |
|
2845 \endisadelimproof |
|
2846 % |
|
2847 \isatagproof |
|
2848 \isacommand{apply}\isamarkupfalse% |
|
2849 \ {\isacharparenleft}clarsimp\ simp{\isacharcolon}strict{\isacharunderscore}prefix{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2850 \isacommand{by}\isamarkupfalse% |
|
2851 \ {\isacharparenleft}drule\ diff{\isacharunderscore}prefix{\isacharcomma}\ auto\ elim{\isacharcolon}prefixE{\isacharparenright}% |
|
2852 \endisatagproof |
|
2853 {\isafoldproof}% |
|
2854 % |
|
2855 \isadelimproof |
|
2856 \isanewline |
|
2857 % |
|
2858 \endisadelimproof |
|
2859 \isanewline |
|
2860 \isacommand{lemma}\isamarkupfalse% |
|
2861 \ app{\isacharunderscore}eq{\isacharunderscore}cases{\isacharbrackleft}rule{\isacharunderscore}format{\isacharbrackright}{\isacharcolon}\isanewline |
|
2862 \ \ {\isachardoublequoteopen}{\isasymforall}\ x\ {\isachardot}\ x\ {\isacharat}\ y\ {\isacharequal}\ m\ {\isacharat}\ n\ {\isasymlongrightarrow}\ {\isacharparenleft}x\ {\isasymle}\ m\ {\isasymor}\ m\ {\isasymle}\ x{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2863 % |
|
2864 \isadelimproof |
|
2865 % |
|
2866 \endisadelimproof |
|
2867 % |
|
2868 \isatagproof |
|
2869 \isacommand{apply}\isamarkupfalse% |
|
2870 \ {\isacharparenleft}induct\ y{\isacharcomma}\ simp{\isacharparenright}\isanewline |
|
2871 \isacommand{apply}\isamarkupfalse% |
|
2872 \ {\isacharparenleft}clarify{\isacharcomma}\ drule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}x\ {\isacharat}\ {\isacharbrackleft}a{\isacharbrackright}{\isachardoublequoteclose}\ \isakeyword{in}\ spec{\isacharparenright}\isanewline |
|
2873 \isacommand{by}\isamarkupfalse% |
|
2874 \ {\isacharparenleft}clarsimp{\isacharcomma}\ auto\ simp{\isacharcolon}prefix{\isacharunderscore}def{\isacharparenright}% |
|
2875 \endisatagproof |
|
2876 {\isafoldproof}% |
|
2877 % |
|
2878 \isadelimproof |
|
2879 \isanewline |
|
2880 % |
|
2881 \endisadelimproof |
|
2882 \isanewline |
|
2883 \isacommand{lemma}\isamarkupfalse% |
|
2884 \ app{\isacharunderscore}eq{\isacharunderscore}dest{\isacharcolon}\isanewline |
|
2885 \ \ {\isachardoublequoteopen}x\ {\isacharat}\ y\ {\isacharequal}\ m\ {\isacharat}\ n\ {\isasymLongrightarrow}\ \isanewline |
|
2886 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}x\ {\isasymle}\ m\ {\isasymand}\ {\isacharparenleft}m\ {\isacharminus}\ x{\isacharparenright}\ {\isacharat}\ n\ {\isacharequal}\ y{\isacharparenright}\ {\isasymor}\ {\isacharparenleft}m\ {\isasymle}\ x\ {\isasymand}\ {\isacharparenleft}x\ {\isacharminus}\ m{\isacharparenright}\ {\isacharat}\ y\ {\isacharequal}\ n{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
2887 % |
|
2888 \isadelimproof |
|
2889 % |
|
2890 \endisadelimproof |
|
2891 % |
|
2892 \isatagproof |
|
2893 \isacommand{by}\isamarkupfalse% |
|
2894 \ {\isacharparenleft}frule{\isacharunderscore}tac\ app{\isacharunderscore}eq{\isacharunderscore}cases{\isacharcomma}\ auto\ elim{\isacharcolon}prefixE{\isacharparenright}% |
|
2895 \endisatagproof |
|
2896 {\isafoldproof}% |
|
2897 % |
|
2898 \isadelimproof |
|
2899 % |
|
2900 \endisadelimproof |
|
2901 % |
|
2902 \isamarkupsubsection{Lemmas for basic cases% |
|
2903 } |
|
2904 \isamarkuptrue% |
|
2905 % |
|
2906 \begin{isamarkuptext}% |
|
2907 The the final result of this direction is in \isa{easier{\isacharunderscore}direction}, which |
|
2908 is an induction on the structure of regular expressions. There is one case |
|
2909 for each regular expression operator. For basic operators such as \isa{NULL{\isacharcomma}\ EMPTY{\isacharcomma}\ CHAR\ c}, |
|
2910 the finiteness of their language partition can be established directly with no need |
|
2911 of taggiing. This section contains several technical lemma for these base cases. |
|
2912 |
|
2913 The inductive cases involve operators \isa{ALT{\isacharcomma}\ SEQ} and \isa{STAR}. |
|
2914 Tagging functions need to be defined individually for each of them. There will be one |
|
2915 dedicated section for each of these cases, and each section goes virtually the same way: |
|
2916 gives definition of the tagging function and prove that strings |
|
2917 with the same tag are equivalent.% |
|
2918 \end{isamarkuptext}% |
|
2919 \isamarkuptrue% |
|
2920 \isacommand{lemma}\isamarkupfalse% |
|
2921 \ quot{\isacharunderscore}empty{\isacharunderscore}subset{\isacharcolon}\isanewline |
|
2922 \ \ {\isachardoublequoteopen}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}{\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isacharparenright}\ {\isasymsubseteq}\ {\isacharbraceleft}{\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isacharcomma}\ UNIV\ {\isacharminus}\ {\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
2923 % |
|
2924 \isadelimproof |
|
2925 % |
|
2926 \endisadelimproof |
|
2927 % |
|
2928 \isatagproof |
|
2929 \isacommand{proof}\isamarkupfalse% |
|
2930 \isanewline |
|
2931 \ \ \isacommand{fix}\isamarkupfalse% |
|
2932 \ x\isanewline |
|
2933 \ \ \isacommand{assume}\isamarkupfalse% |
|
2934 \ {\isachardoublequoteopen}x\ {\isasymin}\ UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}{\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
2935 \ \ \isacommand{then}\isamarkupfalse% |
|
2936 \ \isacommand{obtain}\isamarkupfalse% |
|
2937 \ y\ \isakeyword{where}\ h{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isacharequal}\ {\isacharbraceleft}z{\isachardot}\ {\isacharparenleft}y{\isacharcomma}\ z{\isacharparenright}\ {\isasymin}\ {\isasymapprox}{\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isacharbraceright}{\isachardoublequoteclose}\ \isanewline |
|
2938 \ \ \ \ \isacommand{unfolding}\isamarkupfalse% |
|
2939 \ quotient{\isacharunderscore}def\ Image{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse% |
|
2940 \ blast\isanewline |
|
2941 \ \ \isacommand{show}\isamarkupfalse% |
|
2942 \ {\isachardoublequoteopen}x\ {\isasymin}\ {\isacharbraceleft}{\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isacharcomma}\ UNIV\ {\isacharminus}\ {\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isacharbraceright}{\isachardoublequoteclose}\ \isanewline |
|
2943 \ \ \isacommand{proof}\isamarkupfalse% |
|
2944 \ {\isacharparenleft}cases\ {\isachardoublequoteopen}y\ {\isacharequal}\ {\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
2945 \ \ \ \ \isacommand{case}\isamarkupfalse% |
|
2946 \ True\ \isacommand{with}\isamarkupfalse% |
|
2947 \ h\isanewline |
|
2948 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
2949 \ {\isachardoublequoteopen}x\ {\isacharequal}\ {\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
2950 \ {\isacharparenleft}auto\ simp{\isacharcolon}str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2951 \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
2952 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
2953 \ simp\isanewline |
|
2954 \ \ \isacommand{next}\isamarkupfalse% |
|
2955 \isanewline |
|
2956 \ \ \ \ \isacommand{case}\isamarkupfalse% |
|
2957 \ False\ \isacommand{with}\isamarkupfalse% |
|
2958 \ h\isanewline |
|
2959 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
2960 \ {\isachardoublequoteopen}x\ {\isacharequal}\ UNIV\ {\isacharminus}\ {\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
2961 \ {\isacharparenleft}auto\ simp{\isacharcolon}str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def{\isacharparenright}\isanewline |
|
2962 \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
2963 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
2964 \ simp\isanewline |
|
2965 \ \ \isacommand{qed}\isamarkupfalse% |
|
2966 \isanewline |
|
2967 \isacommand{qed}\isamarkupfalse% |
|
2968 % |
|
2969 \endisatagproof |
|
2970 {\isafoldproof}% |
|
2971 % |
|
2972 \isadelimproof |
|
2973 \isanewline |
|
2974 % |
|
2975 \endisadelimproof |
|
2976 \isanewline |
|
2977 \isacommand{lemma}\isamarkupfalse% |
|
2978 \ quot{\isacharunderscore}char{\isacharunderscore}subset{\isacharcolon}\isanewline |
|
2979 \ \ {\isachardoublequoteopen}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}{\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}{\isacharparenright}\ {\isasymsubseteq}\ {\isacharbraceleft}{\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isacharcomma}{\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}{\isacharcomma}\ UNIV\ {\isacharminus}\ {\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharcomma}\ {\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
2980 % |
|
2981 \isadelimproof |
|
2982 % |
|
2983 \endisadelimproof |
|
2984 % |
|
2985 \isatagproof |
|
2986 \isacommand{proof}\isamarkupfalse% |
|
2987 \ \isanewline |
|
2988 \ \ \isacommand{fix}\isamarkupfalse% |
|
2989 \ x\ \isanewline |
|
2990 \ \ \isacommand{assume}\isamarkupfalse% |
|
2991 \ {\isachardoublequoteopen}x\ {\isasymin}\ UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}{\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
2992 \ \ \isacommand{then}\isamarkupfalse% |
|
2993 \ \isacommand{obtain}\isamarkupfalse% |
|
2994 \ y\ \isakeyword{where}\ h{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isacharequal}\ {\isacharbraceleft}z{\isachardot}\ {\isacharparenleft}y{\isacharcomma}\ z{\isacharparenright}\ {\isasymin}\ {\isasymapprox}{\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}{\isacharbraceright}{\isachardoublequoteclose}\ \isanewline |
|
2995 \ \ \ \ \isacommand{unfolding}\isamarkupfalse% |
|
2996 \ quotient{\isacharunderscore}def\ Image{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse% |
|
2997 \ blast\isanewline |
|
2998 \ \ \isacommand{show}\isamarkupfalse% |
|
2999 \ {\isachardoublequoteopen}x\ {\isasymin}\ {\isacharbraceleft}{\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isacharcomma}{\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}{\isacharcomma}\ UNIV\ {\isacharminus}\ {\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharcomma}\ {\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
3000 \ \ \isacommand{proof}\isamarkupfalse% |
|
3001 \ {\isacharminus}\isanewline |
|
3002 \ \ \ \ \isacommand{{\isacharbraceleft}}\isamarkupfalse% |
|
3003 \ \isacommand{assume}\isamarkupfalse% |
|
3004 \ {\isachardoublequoteopen}y\ {\isacharequal}\ {\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}\ \isacommand{hence}\isamarkupfalse% |
|
3005 \ {\isachardoublequoteopen}x\ {\isacharequal}\ {\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
3006 \ h\ \isanewline |
|
3007 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3008 \ {\isacharparenleft}auto\ simp{\isacharcolon}str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def{\isacharparenright}\isanewline |
|
3009 \ \ \ \ \isacommand{{\isacharbraceright}}\isamarkupfalse% |
|
3010 \ \isacommand{moreover}\isamarkupfalse% |
|
3011 \ \isacommand{{\isacharbraceleft}}\isamarkupfalse% |
|
3012 \isanewline |
|
3013 \ \ \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
3014 \ {\isachardoublequoteopen}y\ {\isacharequal}\ {\isacharbrackleft}c{\isacharbrackright}{\isachardoublequoteclose}\ \isacommand{hence}\isamarkupfalse% |
|
3015 \ {\isachardoublequoteopen}x\ {\isacharequal}\ {\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
3016 \ h\ \isanewline |
|
3017 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3018 \ {\isacharparenleft}auto\ dest{\isacharbang}{\isacharcolon}spec{\isacharbrackleft}\isakeyword{where}\ x\ {\isacharequal}\ {\isachardoublequoteopen}{\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}{\isacharbrackright}\ simp{\isacharcolon}str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def{\isacharparenright}\isanewline |
|
3019 \ \ \ \ \isacommand{{\isacharbraceright}}\isamarkupfalse% |
|
3020 \ \isacommand{moreover}\isamarkupfalse% |
|
3021 \ \isacommand{{\isacharbraceleft}}\isamarkupfalse% |
|
3022 \isanewline |
|
3023 \ \ \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
3024 \ {\isachardoublequoteopen}y\ {\isasymnoteq}\ {\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}\ \isakeyword{and}\ {\isachardoublequoteopen}y\ {\isasymnoteq}\ {\isacharbrackleft}c{\isacharbrackright}{\isachardoublequoteclose}\isanewline |
|
3025 \ \ \ \ \ \ \isacommand{hence}\isamarkupfalse% |
|
3026 \ {\isachardoublequoteopen}{\isasymforall}\ z{\isachardot}\ {\isacharparenleft}y\ {\isacharat}\ z{\isacharparenright}\ {\isasymnoteq}\ {\isacharbrackleft}c{\isacharbrackright}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
3027 \ {\isacharparenleft}case{\isacharunderscore}tac\ y{\isacharcomma}\ auto{\isacharparenright}\isanewline |
|
3028 \ \ \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
3029 \ \isacommand{have}\isamarkupfalse% |
|
3030 \ {\isachardoublequoteopen}{\isasymAnd}\ p{\isachardot}\ {\isacharparenleft}p\ {\isasymnoteq}\ {\isacharbrackleft}{\isacharbrackright}\ {\isasymand}\ p\ {\isasymnoteq}\ {\isacharbrackleft}c{\isacharbrackright}{\isacharparenright}\ {\isacharequal}\ {\isacharparenleft}{\isasymforall}\ q{\isachardot}\ p\ {\isacharat}\ q\ {\isasymnoteq}\ {\isacharbrackleft}c{\isacharbrackright}{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
3031 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3032 \ {\isacharparenleft}case{\isacharunderscore}tac\ p{\isacharcomma}\ auto{\isacharparenright}\isanewline |
|
3033 \ \ \ \ \ \ \isacommand{ultimately}\isamarkupfalse% |
|
3034 \ \isacommand{have}\isamarkupfalse% |
|
3035 \ {\isachardoublequoteopen}x\ {\isacharequal}\ UNIV\ {\isacharminus}\ {\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharcomma}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
3036 \ h\isanewline |
|
3037 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3038 \ {\isacharparenleft}auto\ simp\ add{\isacharcolon}str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def{\isacharparenright}\isanewline |
|
3039 \ \ \ \ \isacommand{{\isacharbraceright}}\isamarkupfalse% |
|
3040 \ \isacommand{ultimately}\isamarkupfalse% |
|
3041 \ \isacommand{show}\isamarkupfalse% |
|
3042 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
3043 \ blast\isanewline |
|
3044 \ \ \isacommand{qed}\isamarkupfalse% |
|
3045 \isanewline |
|
3046 \isacommand{qed}\isamarkupfalse% |
|
3047 % |
|
3048 \endisatagproof |
|
3049 {\isafoldproof}% |
|
3050 % |
|
3051 \isadelimproof |
|
3052 % |
|
3053 \endisadelimproof |
|
3054 % |
|
3055 \isamarkupsubsection{The case for \isa{SEQ}% |
|
3056 } |
|
3057 \isamarkuptrue% |
|
3058 \isacommand{definition}\isamarkupfalse% |
|
3059 \ \isanewline |
|
3060 \ \ {\isachardoublequoteopen}tag{\isacharunderscore}str{\isacharunderscore}SEQ\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}\ x\ {\isasymequiv}\ \isanewline |
|
3061 \ \ \ \ \ \ \ {\isacharparenleft}{\isacharparenleft}{\isasymapprox}L\isactrlisub {\isadigit{1}}{\isacharparenright}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}x{\isacharbraceright}{\isacharcomma}\ {\isacharbraceleft}{\isacharparenleft}{\isasymapprox}L\isactrlisub {\isadigit{2}}{\isacharparenright}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}x\ {\isacharminus}\ xa{\isacharbraceright}{\isacharbar}\ xa{\isachardot}\ \ xa\ {\isasymle}\ x\ {\isasymand}\ xa\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isacharbraceright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3062 \isanewline |
|
3063 \isacommand{lemma}\isamarkupfalse% |
|
3064 \ tag{\isacharunderscore}str{\isacharunderscore}seq{\isacharunderscore}range{\isacharunderscore}finite{\isacharcolon}\isanewline |
|
3065 \ \ {\isachardoublequoteopen}{\isasymlbrakk}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{1}}{\isacharparenright}{\isacharsemicolon}\ finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isasymrbrakk}\ \isanewline |
|
3066 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isasymLongrightarrow}\ finite\ {\isacharparenleft}range\ {\isacharparenleft}tag{\isacharunderscore}str{\isacharunderscore}SEQ\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3067 % |
|
3068 \isadelimproof |
|
3069 % |
|
3070 \endisadelimproof |
|
3071 % |
|
3072 \isatagproof |
|
3073 \isacommand{apply}\isamarkupfalse% |
|
3074 \ {\isacharparenleft}rule{\isacharunderscore}tac\ B\ {\isacharequal}\ {\isachardoublequoteopen}{\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{1}}{\isacharparenright}\ {\isasymtimes}\ {\isacharparenleft}Pow\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\ \isakeyword{in}\ finite{\isacharunderscore}subset{\isacharparenright}\isanewline |
|
3075 \isacommand{by}\isamarkupfalse% |
|
3076 \ {\isacharparenleft}auto\ simp{\isacharcolon}tag{\isacharunderscore}str{\isacharunderscore}SEQ{\isacharunderscore}def\ Image{\isacharunderscore}def\ quotient{\isacharunderscore}def\ split{\isacharcolon}if{\isacharunderscore}splits{\isacharparenright}% |
|
3077 \endisatagproof |
|
3078 {\isafoldproof}% |
|
3079 % |
|
3080 \isadelimproof |
|
3081 \isanewline |
|
3082 % |
|
3083 \endisadelimproof |
|
3084 \isanewline |
|
3085 \isacommand{lemma}\isamarkupfalse% |
|
3086 \ append{\isacharunderscore}seq{\isacharunderscore}elim{\isacharcolon}\isanewline |
|
3087 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}x\ {\isacharat}\ y\ {\isasymin}\ L\isactrlisub {\isadigit{1}}\ {\isacharsemicolon}{\isacharsemicolon}\ L\isactrlisub {\isadigit{2}}{\isachardoublequoteclose}\isanewline |
|
3088 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}{\isacharparenleft}{\isasymexists}\ xa\ {\isasymle}\ x{\isachardot}\ xa\ {\isasymin}\ L\isactrlisub {\isadigit{1}}\ {\isasymand}\ {\isacharparenleft}x\ {\isacharminus}\ xa{\isacharparenright}\ {\isacharat}\ y\ {\isasymin}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}\ {\isasymor}\ \isanewline |
|
3089 \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\isasymexists}\ ya\ {\isasymle}\ y{\isachardot}\ {\isacharparenleft}x\ {\isacharat}\ ya{\isacharparenright}\ {\isasymin}\ L\isactrlisub {\isadigit{1}}\ {\isasymand}\ {\isacharparenleft}y\ {\isacharminus}\ ya{\isacharparenright}\ {\isasymin}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3090 % |
|
3091 \isadelimproof |
|
3092 % |
|
3093 \endisadelimproof |
|
3094 % |
|
3095 \isatagproof |
|
3096 \isacommand{proof}\isamarkupfalse% |
|
3097 {\isacharminus}\isanewline |
|
3098 \ \ \isacommand{from}\isamarkupfalse% |
|
3099 \ assms\ \isacommand{obtain}\isamarkupfalse% |
|
3100 \ s\isactrlisub {\isadigit{1}}\ s\isactrlisub {\isadigit{2}}\ \isanewline |
|
3101 \ \ \ \ \isakeyword{where}\ {\isachardoublequoteopen}x\ {\isacharat}\ y\ {\isacharequal}\ s\isactrlisub {\isadigit{1}}\ {\isacharat}\ s\isactrlisub {\isadigit{2}}{\isachardoublequoteclose}\ \isanewline |
|
3102 \ \ \ \ \isakeyword{and}\ in{\isacharunderscore}seq{\isacharcolon}\ {\isachardoublequoteopen}s\isactrlisub {\isadigit{1}}\ {\isasymin}\ L\isactrlisub {\isadigit{1}}\ {\isasymand}\ s\isactrlisub {\isadigit{2}}\ {\isasymin}\ L\isactrlisub {\isadigit{2}}{\isachardoublequoteclose}\ \isanewline |
|
3103 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3104 \ {\isacharparenleft}auto\ simp{\isacharcolon}Seq{\isacharunderscore}def{\isacharparenright}\isanewline |
|
3105 \ \ \isacommand{hence}\isamarkupfalse% |
|
3106 \ {\isachardoublequoteopen}{\isacharparenleft}x\ {\isasymle}\ s\isactrlisub {\isadigit{1}}\ {\isasymand}\ {\isacharparenleft}s\isactrlisub {\isadigit{1}}\ {\isacharminus}\ x{\isacharparenright}\ {\isacharat}\ s\isactrlisub {\isadigit{2}}\ {\isacharequal}\ y{\isacharparenright}\ {\isasymor}\ {\isacharparenleft}s\isactrlisub {\isadigit{1}}\ {\isasymle}\ x\ {\isasymand}\ {\isacharparenleft}x\ {\isacharminus}\ s\isactrlisub {\isadigit{1}}{\isacharparenright}\ {\isacharat}\ y\ {\isacharequal}\ s\isactrlisub {\isadigit{2}}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3107 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
3108 \ app{\isacharunderscore}eq{\isacharunderscore}dest\ \isacommand{by}\isamarkupfalse% |
|
3109 \ auto\isanewline |
|
3110 \ \ \isacommand{moreover}\isamarkupfalse% |
|
3111 \ \isacommand{have}\isamarkupfalse% |
|
3112 \ {\isachardoublequoteopen}{\isasymlbrakk}x\ {\isasymle}\ s\isactrlisub {\isadigit{1}}{\isacharsemicolon}\ {\isacharparenleft}s\isactrlisub {\isadigit{1}}\ {\isacharminus}\ x{\isacharparenright}\ {\isacharat}\ s\isactrlisub {\isadigit{2}}\ {\isacharequal}\ y{\isasymrbrakk}\ {\isasymLongrightarrow}\ \isanewline |
|
3113 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isasymexists}\ ya\ {\isasymle}\ y{\isachardot}\ {\isacharparenleft}x\ {\isacharat}\ ya{\isacharparenright}\ {\isasymin}\ L\isactrlisub {\isadigit{1}}\ {\isasymand}\ {\isacharparenleft}y\ {\isacharminus}\ ya{\isacharparenright}\ {\isasymin}\ L\isactrlisub {\isadigit{2}}{\isachardoublequoteclose}\ \isanewline |
|
3114 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
3115 \ in{\isacharunderscore}seq\ \isacommand{by}\isamarkupfalse% |
|
3116 \ {\isacharparenleft}rule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}s\isactrlisub {\isadigit{1}}\ {\isacharminus}\ x{\isachardoublequoteclose}\ \isakeyword{in}\ exI{\isacharcomma}\ auto\ elim{\isacharcolon}prefixE{\isacharparenright}\isanewline |
|
3117 \ \ \isacommand{moreover}\isamarkupfalse% |
|
3118 \ \isacommand{have}\isamarkupfalse% |
|
3119 \ {\isachardoublequoteopen}{\isasymlbrakk}s\isactrlisub {\isadigit{1}}\ {\isasymle}\ x{\isacharsemicolon}\ {\isacharparenleft}x\ {\isacharminus}\ s\isactrlisub {\isadigit{1}}{\isacharparenright}\ {\isacharat}\ y\ {\isacharequal}\ s\isactrlisub {\isadigit{2}}{\isasymrbrakk}\ {\isasymLongrightarrow}\ \isanewline |
|
3120 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isasymexists}\ xa\ {\isasymle}\ x{\isachardot}\ xa\ {\isasymin}\ L\isactrlisub {\isadigit{1}}\ {\isasymand}\ {\isacharparenleft}x\ {\isacharminus}\ xa{\isacharparenright}\ {\isacharat}\ y\ {\isasymin}\ L\isactrlisub {\isadigit{2}}{\isachardoublequoteclose}\ \isanewline |
|
3121 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
3122 \ in{\isacharunderscore}seq\ \isacommand{by}\isamarkupfalse% |
|
3123 \ {\isacharparenleft}rule{\isacharunderscore}tac\ x\ {\isacharequal}\ s\isactrlisub {\isadigit{1}}\ \isakeyword{in}\ exI{\isacharcomma}\ auto{\isacharparenright}\isanewline |
|
3124 \ \ \isacommand{ultimately}\isamarkupfalse% |
|
3125 \ \isacommand{show}\isamarkupfalse% |
|
3126 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
3127 \ blast\isanewline |
|
3128 \isacommand{qed}\isamarkupfalse% |
|
3129 % |
|
3130 \endisatagproof |
|
3131 {\isafoldproof}% |
|
3132 % |
|
3133 \isadelimproof |
|
3134 \isanewline |
|
3135 % |
|
3136 \endisadelimproof |
|
3137 \isanewline |
|
3138 \isacommand{lemma}\isamarkupfalse% |
|
3139 \ tag{\isacharunderscore}str{\isacharunderscore}SEQ{\isacharunderscore}injI{\isacharcolon}\isanewline |
|
3140 \ \ {\isachardoublequoteopen}tag{\isacharunderscore}str{\isacharunderscore}SEQ\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}\ m\ {\isacharequal}\ tag{\isacharunderscore}str{\isacharunderscore}SEQ\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}\ n\ {\isasymLongrightarrow}\ m\ {\isasymapprox}{\isacharparenleft}L\isactrlisub {\isadigit{1}}\ {\isacharsemicolon}{\isacharsemicolon}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}\ n{\isachardoublequoteclose}\isanewline |
|
3141 % |
|
3142 \isadelimproof |
|
3143 % |
|
3144 \endisadelimproof |
|
3145 % |
|
3146 \isatagproof |
|
3147 \isacommand{proof}\isamarkupfalse% |
|
3148 {\isacharminus}\isanewline |
|
3149 \ \ \isacommand{{\isacharbraceleft}}\isamarkupfalse% |
|
3150 \ \isacommand{fix}\isamarkupfalse% |
|
3151 \ x\ y\ z\isanewline |
|
3152 \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
3153 \ xz{\isacharunderscore}in{\isacharunderscore}seq{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isacharat}\ z\ {\isasymin}\ L\isactrlisub {\isadigit{1}}\ {\isacharsemicolon}{\isacharsemicolon}\ L\isactrlisub {\isadigit{2}}{\isachardoublequoteclose}\isanewline |
|
3154 \ \ \ \ \isakeyword{and}\ tag{\isacharunderscore}xy{\isacharcolon}\ {\isachardoublequoteopen}tag{\isacharunderscore}str{\isacharunderscore}SEQ\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}\ x\ {\isacharequal}\ tag{\isacharunderscore}str{\isacharunderscore}SEQ\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}\ y{\isachardoublequoteclose}\isanewline |
|
3155 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
3156 {\isachardoublequoteopen}y\ {\isacharat}\ z\ {\isasymin}\ L\isactrlisub {\isadigit{1}}\ {\isacharsemicolon}{\isacharsemicolon}\ L\isactrlisub {\isadigit{2}}{\isachardoublequoteclose}\ \isanewline |
|
3157 \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
3158 {\isacharminus}\isanewline |
|
3159 \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
3160 \ {\isachardoublequoteopen}{\isacharparenleft}{\isasymexists}\ xa\ {\isasymle}\ x{\isachardot}\ xa\ {\isasymin}\ L\isactrlisub {\isadigit{1}}\ {\isasymand}\ {\isacharparenleft}x\ {\isacharminus}\ xa{\isacharparenright}\ {\isacharat}\ z\ {\isasymin}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}\ {\isasymor}\ \isanewline |
|
3161 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\isasymexists}\ za\ {\isasymle}\ z{\isachardot}\ {\isacharparenleft}x\ {\isacharat}\ za{\isacharparenright}\ {\isasymin}\ L\isactrlisub {\isadigit{1}}\ {\isasymand}\ {\isacharparenleft}z\ {\isacharminus}\ za{\isacharparenright}\ {\isasymin}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3162 \ \ \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
3163 \ xz{\isacharunderscore}in{\isacharunderscore}seq\ append{\isacharunderscore}seq{\isacharunderscore}elim\ \isacommand{by}\isamarkupfalse% |
|
3164 \ simp\isanewline |
|
3165 \ \ \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
3166 \ \isacommand{{\isacharbraceleft}}\isamarkupfalse% |
|
3167 \isanewline |
|
3168 \ \ \ \ \ \ \ \ \isacommand{fix}\isamarkupfalse% |
|
3169 \ xa\isanewline |
|
3170 \ \ \ \ \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
3171 \ h{\isadigit{1}}{\isacharcolon}\ {\isachardoublequoteopen}xa\ {\isasymle}\ x{\isachardoublequoteclose}\ \isakeyword{and}\ h{\isadigit{2}}{\isacharcolon}\ {\isachardoublequoteopen}xa\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isachardoublequoteclose}\ \isakeyword{and}\ h{\isadigit{3}}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}x\ {\isacharminus}\ xa{\isacharparenright}\ {\isacharat}\ z\ {\isasymin}\ L\isactrlisub {\isadigit{2}}{\isachardoublequoteclose}\isanewline |
|
3172 \ \ \ \ \ \ \ \ \isacommand{obtain}\isamarkupfalse% |
|
3173 \ ya\ \isakeyword{where}\ {\isachardoublequoteopen}ya\ {\isasymle}\ y{\isachardoublequoteclose}\ \isakeyword{and}\ {\isachardoublequoteopen}ya\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isachardoublequoteclose}\ \isakeyword{and}\ {\isachardoublequoteopen}{\isacharparenleft}y\ {\isacharminus}\ ya{\isacharparenright}\ {\isacharat}\ z\ {\isasymin}\ L\isactrlisub {\isadigit{2}}{\isachardoublequoteclose}\ \isanewline |
|
3174 \ \ \ \ \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
3175 \ {\isacharminus}\isanewline |
|
3176 \ \ \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
3177 \ {\isachardoublequoteopen}{\isasymexists}\ ya{\isachardot}\ \ ya\ {\isasymle}\ y\ {\isasymand}\ ya\ {\isasymin}\ L\isactrlisub {\isadigit{1}}\ {\isasymand}\ {\isacharparenleft}x\ {\isacharminus}\ xa{\isacharparenright}\ {\isasymapprox}L\isactrlisub {\isadigit{2}}\ {\isacharparenleft}y\ {\isacharminus}\ ya{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3178 \ \ \ \ \ \ \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
3179 \ {\isacharminus}\isanewline |
|
3180 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
3181 \ {\isachardoublequoteopen}{\isacharbraceleft}{\isasymapprox}L\isactrlisub {\isadigit{2}}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}x\ {\isacharminus}\ xa{\isacharbraceright}\ {\isacharbar}xa{\isachardot}\ xa\ {\isasymle}\ x\ {\isasymand}\ xa\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isacharbraceright}\ {\isacharequal}\ \isanewline |
|
3182 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharbraceleft}{\isasymapprox}L\isactrlisub {\isadigit{2}}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}y\ {\isacharminus}\ xa{\isacharbraceright}\ {\isacharbar}xa{\isachardot}\ xa\ {\isasymle}\ y\ {\isasymand}\ xa\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isacharbraceright}{\isachardoublequoteclose}\ \isanewline |
|
3183 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}\isakeyword{is}\ {\isachardoublequoteopen}{\isacharquery}Left\ {\isacharequal}\ {\isacharquery}Right{\isachardoublequoteclose}{\isacharparenright}\ \isanewline |
|
3184 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
3185 \ h{\isadigit{1}}\ tag{\isacharunderscore}xy\ \isacommand{by}\isamarkupfalse% |
|
3186 \ {\isacharparenleft}auto\ simp{\isacharcolon}tag{\isacharunderscore}str{\isacharunderscore}SEQ{\isacharunderscore}def{\isacharparenright}\isanewline |
|
3187 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
3188 \ \isacommand{have}\isamarkupfalse% |
|
3189 \ {\isachardoublequoteopen}{\isasymapprox}L\isactrlisub {\isadigit{2}}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}x\ {\isacharminus}\ xa{\isacharbraceright}\ {\isasymin}\ {\isacharquery}Left{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
3190 \ h{\isadigit{1}}\ h{\isadigit{2}}\ \isacommand{by}\isamarkupfalse% |
|
3191 \ auto\isanewline |
|
3192 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{ultimately}\isamarkupfalse% |
|
3193 \ \isacommand{have}\isamarkupfalse% |
|
3194 \ {\isachardoublequoteopen}{\isasymapprox}L\isactrlisub {\isadigit{2}}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}x\ {\isacharminus}\ xa{\isacharbraceright}\ {\isasymin}\ {\isacharquery}Right{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
3195 \ simp\isanewline |
|
3196 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
3197 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
3198 \ {\isacharparenleft}auto\ simp{\isacharcolon}Image{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}def{\isacharparenright}\isanewline |
|
3199 \ \ \ \ \ \ \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
3200 \isanewline |
|
3201 \ \ \ \ \ \ \ \ \ \ \isacommand{with}\isamarkupfalse% |
|
3202 \ prems\ \isacommand{show}\isamarkupfalse% |
|
3203 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
3204 \ {\isacharparenleft}auto\ simp{\isacharcolon}str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}def{\isacharparenright}\isanewline |
|
3205 \ \ \ \ \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
3206 \isanewline |
|
3207 \ \ \ \ \ \ \ \ \isacommand{hence}\isamarkupfalse% |
|
3208 \ {\isachardoublequoteopen}y\ {\isacharat}\ z\ {\isasymin}\ L\isactrlisub {\isadigit{1}}\ {\isacharsemicolon}{\isacharsemicolon}\ L\isactrlisub {\isadigit{2}}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
3209 \ {\isacharparenleft}erule{\isacharunderscore}tac\ prefixE{\isacharcomma}\ auto\ simp{\isacharcolon}Seq{\isacharunderscore}def{\isacharparenright}\ \ \ \ \ \ \ \ \ \ \isanewline |
|
3210 \ \ \ \ \ \ \isacommand{{\isacharbraceright}}\isamarkupfalse% |
|
3211 \ \isacommand{moreover}\isamarkupfalse% |
|
3212 \ \isacommand{{\isacharbraceleft}}\isamarkupfalse% |
|
3213 \isanewline |
|
3214 \ \ \ \ \ \ \ \ \isacommand{fix}\isamarkupfalse% |
|
3215 \ za\isanewline |
|
3216 \ \ \ \ \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
3217 \ h{\isadigit{1}}{\isacharcolon}\ {\isachardoublequoteopen}za\ {\isasymle}\ z{\isachardoublequoteclose}\ \isakeyword{and}\ h{\isadigit{2}}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}x\ {\isacharat}\ za{\isacharparenright}\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isachardoublequoteclose}\ \isakeyword{and}\ h{\isadigit{3}}{\isacharcolon}\ {\isachardoublequoteopen}z\ {\isacharminus}\ za\ {\isasymin}\ L\isactrlisub {\isadigit{2}}{\isachardoublequoteclose}\isanewline |
|
3218 \ \ \ \ \ \ \ \ \isacommand{hence}\isamarkupfalse% |
|
3219 \ {\isachardoublequoteopen}y\ {\isacharat}\ za\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isachardoublequoteclose}\isanewline |
|
3220 \ \ \ \ \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
3221 {\isacharminus}\isanewline |
|
3222 \ \ \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
3223 \ {\isachardoublequoteopen}{\isasymapprox}L\isactrlisub {\isadigit{1}}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}x{\isacharbraceright}\ {\isacharequal}\ {\isasymapprox}L\isactrlisub {\isadigit{1}}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}y{\isacharbraceright}{\isachardoublequoteclose}\ \isanewline |
|
3224 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
3225 \ h{\isadigit{1}}\ tag{\isacharunderscore}xy\ \isacommand{by}\isamarkupfalse% |
|
3226 \ {\isacharparenleft}auto\ simp{\isacharcolon}tag{\isacharunderscore}str{\isacharunderscore}SEQ{\isacharunderscore}def{\isacharparenright}\isanewline |
|
3227 \ \ \ \ \ \ \ \ \ \ \isacommand{with}\isamarkupfalse% |
|
3228 \ h{\isadigit{2}}\ \isacommand{show}\isamarkupfalse% |
|
3229 \ {\isacharquery}thesis\ \isanewline |
|
3230 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3231 \ {\isacharparenleft}auto\ simp{\isacharcolon}Image{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}def{\isacharparenright}\ \isanewline |
|
3232 \ \ \ \ \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
3233 \isanewline |
|
3234 \ \ \ \ \ \ \ \ \isacommand{with}\isamarkupfalse% |
|
3235 \ h{\isadigit{1}}\ h{\isadigit{3}}\ \isacommand{have}\isamarkupfalse% |
|
3236 \ {\isachardoublequoteopen}y\ {\isacharat}\ z\ {\isasymin}\ L\isactrlisub {\isadigit{1}}\ {\isacharsemicolon}{\isacharsemicolon}\ L\isactrlisub {\isadigit{2}}{\isachardoublequoteclose}\ \isanewline |
|
3237 \ \ \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3238 \ {\isacharparenleft}drule{\isacharunderscore}tac\ A\ {\isacharequal}\ L\isactrlisub {\isadigit{1}}\ \isakeyword{in}\ seq{\isacharunderscore}intro{\isacharcomma}\ auto\ elim{\isacharcolon}prefixE{\isacharparenright}\isanewline |
|
3239 \ \ \ \ \ \ \isacommand{{\isacharbraceright}}\isamarkupfalse% |
|
3240 \isanewline |
|
3241 \ \ \ \ \ \ \isacommand{ultimately}\isamarkupfalse% |
|
3242 \ \isacommand{show}\isamarkupfalse% |
|
3243 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
3244 \ blast\isanewline |
|
3245 \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
3246 \isanewline |
|
3247 \ \ \isacommand{{\isacharbraceright}}\isamarkupfalse% |
|
3248 \ \isacommand{thus}\isamarkupfalse% |
|
3249 \ {\isachardoublequoteopen}tag{\isacharunderscore}str{\isacharunderscore}SEQ\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}\ m\ {\isacharequal}\ tag{\isacharunderscore}str{\isacharunderscore}SEQ\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}\ n\ {\isasymLongrightarrow}\ m\ {\isasymapprox}{\isacharparenleft}L\isactrlisub {\isadigit{1}}\ {\isacharsemicolon}{\isacharsemicolon}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}\ n{\isachardoublequoteclose}\ \isanewline |
|
3250 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3251 \ {\isacharparenleft}auto\ simp\ add{\isacharcolon}\ str{\isacharunderscore}eq{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def{\isacharparenright}\isanewline |
|
3252 \isacommand{qed}\isamarkupfalse% |
|
3253 % |
|
3254 \endisatagproof |
|
3255 {\isafoldproof}% |
|
3256 % |
|
3257 \isadelimproof |
|
3258 \ \isanewline |
|
3259 % |
|
3260 \endisadelimproof |
|
3261 \isanewline |
|
3262 \isacommand{lemma}\isamarkupfalse% |
|
3263 \ quot{\isacharunderscore}seq{\isacharunderscore}finiteI{\isacharcolon}\isanewline |
|
3264 \ \ \isakeyword{assumes}\ finite{\isadigit{1}}{\isacharcolon}\ {\isachardoublequoteopen}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}{\isacharparenleft}L\isactrlisub {\isadigit{1}}{\isacharcolon}{\isacharcolon}string\ set{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3265 \ \ \isakeyword{and}\ finite{\isadigit{2}}{\isacharcolon}\ {\isachardoublequoteopen}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3266 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}{\isacharparenleft}L\isactrlisub {\isadigit{1}}\ {\isacharsemicolon}{\isacharsemicolon}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3267 % |
|
3268 \isadelimproof |
|
3269 % |
|
3270 \endisadelimproof |
|
3271 % |
|
3272 \isatagproof |
|
3273 \isacommand{proof}\isamarkupfalse% |
|
3274 {\isacharparenleft}rule{\isacharunderscore}tac\ f\ {\isacharequal}\ {\isachardoublequoteopen}{\isacharparenleft}op\ {\isacharbackquote}{\isacharparenright}\ {\isacharparenleft}tag{\isacharunderscore}str{\isacharunderscore}SEQ\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isachardoublequoteclose}\ \isakeyword{in}\ finite{\isacharunderscore}imageD{\isacharparenright}\isanewline |
|
3275 \ \ \isacommand{show}\isamarkupfalse% |
|
3276 \ {\isachardoublequoteopen}finite\ {\isacharparenleft}op\ {\isacharbackquote}\ {\isacharparenleft}tag{\isacharunderscore}str{\isacharunderscore}SEQ\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}\ {\isacharbackquote}\ UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{1}}\ {\isacharsemicolon}{\isacharsemicolon}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
3277 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
3278 \ finite{\isadigit{1}}\ finite{\isadigit{2}}\isanewline |
|
3279 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3280 \ {\isacharparenleft}auto\ intro{\isacharcolon}finite{\isacharunderscore}tag{\isacharunderscore}imageI\ tag{\isacharunderscore}str{\isacharunderscore}seq{\isacharunderscore}range{\isacharunderscore}finite{\isacharparenright}\isanewline |
|
3281 \isacommand{next}\isamarkupfalse% |
|
3282 \isanewline |
|
3283 \ \ \isacommand{show}\isamarkupfalse% |
|
3284 \ \ {\isachardoublequoteopen}inj{\isacharunderscore}on\ {\isacharparenleft}op\ {\isacharbackquote}\ {\isacharparenleft}tag{\isacharunderscore}str{\isacharunderscore}SEQ\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isacharparenright}\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{1}}\ {\isacharsemicolon}{\isacharsemicolon}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3285 \ \ \ \ \isacommand{apply}\isamarkupfalse% |
|
3286 \ {\isacharparenleft}rule\ tag{\isacharunderscore}image{\isacharunderscore}injI{\isacharparenright}\isanewline |
|
3287 \ \ \ \ \isacommand{apply}\isamarkupfalse% |
|
3288 \ {\isacharparenleft}rule\ tag{\isacharunderscore}str{\isacharunderscore}SEQ{\isacharunderscore}injI{\isacharparenright}\isanewline |
|
3289 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3290 \ {\isacharparenleft}auto\ intro{\isacharcolon}tag{\isacharunderscore}image{\isacharunderscore}injI\ tag{\isacharunderscore}str{\isacharunderscore}SEQ{\isacharunderscore}injI\ simp{\isacharcolon}{\isacharparenright}\isanewline |
|
3291 \isacommand{qed}\isamarkupfalse% |
|
3292 % |
|
3293 \endisatagproof |
|
3294 {\isafoldproof}% |
|
3295 % |
|
3296 \isadelimproof |
|
3297 % |
|
3298 \endisadelimproof |
|
3299 % |
|
3300 \isamarkupsubsection{The case for \isa{ALT}% |
|
3301 } |
|
3302 \isamarkuptrue% |
|
3303 \isacommand{definition}\isamarkupfalse% |
|
3304 \ \isanewline |
|
3305 \ \ {\isachardoublequoteopen}tag{\isacharunderscore}str{\isacharunderscore}ALT\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}string{\isacharparenright}\ {\isasymequiv}\ {\isacharparenleft}{\isacharparenleft}{\isasymapprox}L\isactrlisub {\isadigit{1}}{\isacharparenright}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}x{\isacharbraceright}{\isacharcomma}\ {\isacharparenleft}{\isasymapprox}L\isactrlisub {\isadigit{2}}{\isacharparenright}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}x{\isacharbraceright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3306 \isanewline |
|
3307 \isacommand{lemma}\isamarkupfalse% |
|
3308 \ tag{\isacharunderscore}str{\isacharunderscore}alt{\isacharunderscore}range{\isacharunderscore}finite{\isacharcolon}\isanewline |
|
3309 \ \ {\isachardoublequoteopen}{\isasymlbrakk}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{1}}{\isacharparenright}{\isacharsemicolon}\ finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isasymrbrakk}\ \isanewline |
|
3310 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isasymLongrightarrow}\ finite\ {\isacharparenleft}range\ {\isacharparenleft}tag{\isacharunderscore}str{\isacharunderscore}ALT\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3311 % |
|
3312 \isadelimproof |
|
3313 % |
|
3314 \endisadelimproof |
|
3315 % |
|
3316 \isatagproof |
|
3317 \isacommand{apply}\isamarkupfalse% |
|
3318 \ {\isacharparenleft}rule{\isacharunderscore}tac\ B\ {\isacharequal}\ {\isachardoublequoteopen}{\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{1}}{\isacharparenright}\ {\isasymtimes}\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isachardoublequoteclose}\ \isakeyword{in}\ finite{\isacharunderscore}subset{\isacharparenright}\isanewline |
|
3319 \isacommand{by}\isamarkupfalse% |
|
3320 \ {\isacharparenleft}auto\ simp{\isacharcolon}tag{\isacharunderscore}str{\isacharunderscore}ALT{\isacharunderscore}def\ Image{\isacharunderscore}def\ quotient{\isacharunderscore}def{\isacharparenright}% |
|
3321 \endisatagproof |
|
3322 {\isafoldproof}% |
|
3323 % |
|
3324 \isadelimproof |
|
3325 \isanewline |
|
3326 % |
|
3327 \endisadelimproof |
|
3328 \isanewline |
|
3329 \isacommand{lemma}\isamarkupfalse% |
|
3330 \ quot{\isacharunderscore}union{\isacharunderscore}finiteI{\isacharcolon}\isanewline |
|
3331 \ \ \isakeyword{assumes}\ finite{\isadigit{1}}{\isacharcolon}\ {\isachardoublequoteopen}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}{\isacharparenleft}L\isactrlisub {\isadigit{1}}{\isacharcolon}{\isacharcolon}string\ set{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3332 \ \ \isakeyword{and}\ finite{\isadigit{2}}{\isacharcolon}\ {\isachardoublequoteopen}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3333 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}{\isacharparenleft}L\isactrlisub {\isadigit{1}}\ {\isasymunion}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3334 % |
|
3335 \isadelimproof |
|
3336 % |
|
3337 \endisadelimproof |
|
3338 % |
|
3339 \isatagproof |
|
3340 \isacommand{proof}\isamarkupfalse% |
|
3341 {\isacharparenleft}rule{\isacharunderscore}tac\ f\ {\isacharequal}\ {\isachardoublequoteopen}{\isacharparenleft}op\ {\isacharbackquote}{\isacharparenright}\ {\isacharparenleft}tag{\isacharunderscore}str{\isacharunderscore}ALT\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isachardoublequoteclose}\ \isakeyword{in}\ finite{\isacharunderscore}imageD{\isacharparenright}\isanewline |
|
3342 \ \ \isacommand{show}\isamarkupfalse% |
|
3343 \ {\isachardoublequoteopen}finite\ {\isacharparenleft}op\ {\isacharbackquote}\ {\isacharparenleft}tag{\isacharunderscore}str{\isacharunderscore}ALT\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}\ {\isacharbackquote}\ UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{1}}\ {\isasymunion}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
3344 \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
3345 \ finite{\isadigit{1}}\ finite{\isadigit{2}}\isanewline |
|
3346 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3347 \ {\isacharparenleft}auto\ intro{\isacharcolon}finite{\isacharunderscore}tag{\isacharunderscore}imageI\ tag{\isacharunderscore}str{\isacharunderscore}alt{\isacharunderscore}range{\isacharunderscore}finite{\isacharparenright}\isanewline |
|
3348 \isacommand{next}\isamarkupfalse% |
|
3349 \isanewline |
|
3350 \ \ \isacommand{show}\isamarkupfalse% |
|
3351 \ {\isachardoublequoteopen}inj{\isacharunderscore}on\ {\isacharparenleft}op\ {\isacharbackquote}\ {\isacharparenleft}tag{\isacharunderscore}str{\isacharunderscore}ALT\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isacharparenright}\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{1}}\ {\isasymunion}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3352 \ \ \isacommand{proof}\isamarkupfalse% |
|
3353 {\isacharminus}\isanewline |
|
3354 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
3355 \ {\isachardoublequoteopen}{\isasymAnd}m\ n{\isachardot}\ tag{\isacharunderscore}str{\isacharunderscore}ALT\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}\ m\ {\isacharequal}\ tag{\isacharunderscore}str{\isacharunderscore}ALT\ L\isactrlisub {\isadigit{1}}\ L\isactrlisub {\isadigit{2}}\ n\ \isanewline |
|
3356 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isasymLongrightarrow}\ m\ {\isasymapprox}{\isacharparenleft}L\isactrlisub {\isadigit{1}}\ {\isasymunion}\ L\isactrlisub {\isadigit{2}}{\isacharparenright}\ n{\isachardoublequoteclose}\isanewline |
|
3357 \ \ \ \ \ \ \isacommand{unfolding}\isamarkupfalse% |
|
3358 \ tag{\isacharunderscore}str{\isacharunderscore}ALT{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}def\ Image{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse% |
|
3359 \ auto\isanewline |
|
3360 \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
3361 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
3362 \ {\isacharparenleft}auto\ intro{\isacharcolon}tag{\isacharunderscore}image{\isacharunderscore}injI{\isacharparenright}\isanewline |
|
3363 \ \ \isacommand{qed}\isamarkupfalse% |
|
3364 \isanewline |
|
3365 \isacommand{qed}\isamarkupfalse% |
|
3366 % |
|
3367 \endisatagproof |
|
3368 {\isafoldproof}% |
|
3369 % |
|
3370 \isadelimproof |
|
3371 % |
|
3372 \endisadelimproof |
|
3373 % |
|
3374 \isamarkupsubsection{The case for \isa{STAR}% |
|
3375 } |
|
3376 \isamarkuptrue% |
|
3377 % |
|
3378 \begin{isamarkuptext}% |
|
3379 This turned out to be the most tricky case.% |
|
3380 \end{isamarkuptext}% |
|
3381 \isamarkuptrue% |
|
3382 \isacommand{definition}\isamarkupfalse% |
|
3383 \ \isanewline |
|
3384 \ \ {\isachardoublequoteopen}tag{\isacharunderscore}str{\isacharunderscore}STAR\ L\isactrlisub {\isadigit{1}}\ x\ {\isasymequiv}\ {\isacharbraceleft}{\isacharparenleft}{\isasymapprox}L\isactrlisub {\isadigit{1}}{\isacharparenright}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}x\ {\isacharminus}\ xa{\isacharbraceright}\ {\isacharbar}\ xa{\isachardot}\ xa\ {\isacharless}\ x\ {\isasymand}\ xa\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isasymstar}{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
3385 \isanewline |
|
3386 \isacommand{lemma}\isamarkupfalse% |
|
3387 \ finite{\isacharunderscore}set{\isacharunderscore}has{\isacharunderscore}max{\isacharcolon}\ {\isachardoublequoteopen}{\isasymlbrakk}finite\ A{\isacharsemicolon}\ A\ {\isasymnoteq}\ {\isacharbraceleft}{\isacharbraceright}{\isasymrbrakk}\ {\isasymLongrightarrow}\ \isanewline |
|
3388 \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\isasymexists}\ max\ {\isasymin}\ A{\isachardot}\ {\isasymforall}\ a\ {\isasymin}\ A{\isachardot}\ f\ a\ {\isacharless}{\isacharequal}\ {\isacharparenleft}f\ max\ {\isacharcolon}{\isacharcolon}\ nat{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3389 % |
|
3390 \isadelimproof |
|
3391 % |
|
3392 \endisadelimproof |
|
3393 % |
|
3394 \isatagproof |
|
3395 \isacommand{proof}\isamarkupfalse% |
|
3396 \ {\isacharparenleft}induct\ rule{\isacharcolon}finite{\isachardot}induct{\isacharparenright}\isanewline |
|
3397 \ \ \isacommand{case}\isamarkupfalse% |
|
3398 \ emptyI\ \isacommand{thus}\isamarkupfalse% |
|
3399 \ {\isacharquery}case\ \isacommand{by}\isamarkupfalse% |
|
3400 \ simp\isanewline |
|
3401 \isacommand{next}\isamarkupfalse% |
|
3402 \isanewline |
|
3403 \ \ \isacommand{case}\isamarkupfalse% |
|
3404 \ {\isacharparenleft}insertI\ A\ a{\isacharparenright}\isanewline |
|
3405 \ \ \isacommand{show}\isamarkupfalse% |
|
3406 \ {\isacharquery}case\isanewline |
|
3407 \ \ \isacommand{proof}\isamarkupfalse% |
|
3408 \ {\isacharparenleft}cases\ {\isachardoublequoteopen}A\ {\isacharequal}\ {\isacharbraceleft}{\isacharbraceright}{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
3409 \ \ \ \ \isacommand{case}\isamarkupfalse% |
|
3410 \ True\ \isacommand{thus}\isamarkupfalse% |
|
3411 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
3412 \ {\isacharparenleft}rule{\isacharunderscore}tac\ x\ {\isacharequal}\ a\ \isakeyword{in}\ bexI{\isacharcomma}\ auto{\isacharparenright}\isanewline |
|
3413 \ \ \isacommand{next}\isamarkupfalse% |
|
3414 \isanewline |
|
3415 \ \ \ \ \isacommand{case}\isamarkupfalse% |
|
3416 \ False\isanewline |
|
3417 \ \ \ \ \isacommand{with}\isamarkupfalse% |
|
3418 \ prems\ \isacommand{obtain}\isamarkupfalse% |
|
3419 \ max\ \isanewline |
|
3420 \ \ \ \ \ \ \isakeyword{where}\ h{\isadigit{1}}{\isacharcolon}\ {\isachardoublequoteopen}max\ {\isasymin}\ A{\isachardoublequoteclose}\ \isanewline |
|
3421 \ \ \ \ \ \ \isakeyword{and}\ h{\isadigit{2}}{\isacharcolon}\ {\isachardoublequoteopen}{\isasymforall}a{\isasymin}A{\isachardot}\ f\ a\ {\isasymle}\ f\ max{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
3422 \ blast\isanewline |
|
3423 \ \ \ \ \isacommand{show}\isamarkupfalse% |
|
3424 \ {\isacharquery}thesis\isanewline |
|
3425 \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
3426 \ {\isacharparenleft}cases\ {\isachardoublequoteopen}f\ a\ {\isasymle}\ f\ max{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
3427 \ \ \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
3428 \ {\isachardoublequoteopen}f\ a\ {\isasymle}\ f\ max{\isachardoublequoteclose}\isanewline |
|
3429 \ \ \ \ \ \ \isacommand{with}\isamarkupfalse% |
|
3430 \ h{\isadigit{1}}\ h{\isadigit{2}}\ \isacommand{show}\isamarkupfalse% |
|
3431 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
3432 \ {\isacharparenleft}rule{\isacharunderscore}tac\ x\ {\isacharequal}\ max\ \isakeyword{in}\ bexI{\isacharcomma}\ auto{\isacharparenright}\isanewline |
|
3433 \ \ \ \ \isacommand{next}\isamarkupfalse% |
|
3434 \isanewline |
|
3435 \ \ \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
3436 \ {\isachardoublequoteopen}{\isasymnot}\ {\isacharparenleft}f\ a\ {\isasymle}\ f\ max{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3437 \ \ \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
3438 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
3439 \ h{\isadigit{2}}\ \isacommand{by}\isamarkupfalse% |
|
3440 \ {\isacharparenleft}rule{\isacharunderscore}tac\ x\ {\isacharequal}\ a\ \isakeyword{in}\ bexI{\isacharcomma}\ auto{\isacharparenright}\isanewline |
|
3441 \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
3442 \isanewline |
|
3443 \ \ \isacommand{qed}\isamarkupfalse% |
|
3444 \isanewline |
|
3445 \isacommand{qed}\isamarkupfalse% |
|
3446 % |
|
3447 \endisatagproof |
|
3448 {\isafoldproof}% |
|
3449 % |
|
3450 \isadelimproof |
|
3451 \isanewline |
|
3452 % |
|
3453 \endisadelimproof |
|
3454 \isanewline |
|
3455 \isacommand{lemma}\isamarkupfalse% |
|
3456 \ finite{\isacharunderscore}strict{\isacharunderscore}prefix{\isacharunderscore}set{\isacharcolon}\ {\isachardoublequoteopen}finite\ {\isacharbraceleft}xa{\isachardot}\ xa\ {\isacharless}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}string{\isacharparenright}{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
3457 % |
|
3458 \isadelimproof |
|
3459 % |
|
3460 \endisadelimproof |
|
3461 % |
|
3462 \isatagproof |
|
3463 \isacommand{apply}\isamarkupfalse% |
|
3464 \ {\isacharparenleft}induct\ x\ rule{\isacharcolon}rev{\isacharunderscore}induct{\isacharcomma}\ simp{\isacharparenright}\isanewline |
|
3465 \isacommand{apply}\isamarkupfalse% |
|
3466 \ {\isacharparenleft}subgoal{\isacharunderscore}tac\ {\isachardoublequoteopen}{\isacharbraceleft}xa{\isachardot}\ xa\ {\isacharless}\ xs\ {\isacharat}\ {\isacharbrackleft}x{\isacharbrackright}{\isacharbraceright}\ {\isacharequal}\ {\isacharbraceleft}xa{\isachardot}\ xa\ {\isacharless}\ xs{\isacharbraceright}\ {\isasymunion}\ {\isacharbraceleft}xs{\isacharbraceright}{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
3467 \isacommand{by}\isamarkupfalse% |
|
3468 \ {\isacharparenleft}auto\ simp{\isacharcolon}strict{\isacharunderscore}prefix{\isacharunderscore}def{\isacharparenright}% |
|
3469 \endisatagproof |
|
3470 {\isafoldproof}% |
|
3471 % |
|
3472 \isadelimproof |
|
3473 \isanewline |
|
3474 % |
|
3475 \endisadelimproof |
|
3476 \isanewline |
|
3477 \isanewline |
|
3478 \isacommand{lemma}\isamarkupfalse% |
|
3479 \ tag{\isacharunderscore}str{\isacharunderscore}star{\isacharunderscore}range{\isacharunderscore}finite{\isacharcolon}\isanewline |
|
3480 \ \ {\isachardoublequoteopen}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{1}}{\isacharparenright}\ {\isasymLongrightarrow}\ finite\ {\isacharparenleft}range\ {\isacharparenleft}tag{\isacharunderscore}str{\isacharunderscore}STAR\ L\isactrlisub {\isadigit{1}}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3481 % |
|
3482 \isadelimproof |
|
3483 % |
|
3484 \endisadelimproof |
|
3485 % |
|
3486 \isatagproof |
|
3487 \isacommand{apply}\isamarkupfalse% |
|
3488 \ {\isacharparenleft}rule{\isacharunderscore}tac\ B\ {\isacharequal}\ {\isachardoublequoteopen}Pow\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{1}}{\isacharparenright}{\isachardoublequoteclose}\ \isakeyword{in}\ finite{\isacharunderscore}subset{\isacharparenright}\isanewline |
|
3489 \isacommand{by}\isamarkupfalse% |
|
3490 \ {\isacharparenleft}auto\ simp{\isacharcolon}tag{\isacharunderscore}str{\isacharunderscore}STAR{\isacharunderscore}def\ Image{\isacharunderscore}def\ \isanewline |
|
3491 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ quotient{\isacharunderscore}def\ split{\isacharcolon}if{\isacharunderscore}splits{\isacharparenright}% |
|
3492 \endisatagproof |
|
3493 {\isafoldproof}% |
|
3494 % |
|
3495 \isadelimproof |
|
3496 \isanewline |
|
3497 % |
|
3498 \endisadelimproof |
|
3499 \isanewline |
|
3500 \isacommand{lemma}\isamarkupfalse% |
|
3501 \ tag{\isacharunderscore}str{\isacharunderscore}STAR{\isacharunderscore}injI{\isacharcolon}\isanewline |
|
3502 \ \ {\isachardoublequoteopen}tag{\isacharunderscore}str{\isacharunderscore}STAR\ L\isactrlisub {\isadigit{1}}\ m\ {\isacharequal}\ tag{\isacharunderscore}str{\isacharunderscore}STAR\ L\isactrlisub {\isadigit{1}}\ n\ {\isasymLongrightarrow}\ m\ {\isasymapprox}{\isacharparenleft}L\isactrlisub {\isadigit{1}}{\isasymstar}{\isacharparenright}\ n{\isachardoublequoteclose}\isanewline |
|
3503 % |
|
3504 \isadelimproof |
|
3505 % |
|
3506 \endisadelimproof |
|
3507 % |
|
3508 \isatagproof |
|
3509 \isacommand{proof}\isamarkupfalse% |
|
3510 {\isacharminus}\isanewline |
|
3511 \ \ \isacommand{{\isacharbraceleft}}\isamarkupfalse% |
|
3512 \ \isacommand{fix}\isamarkupfalse% |
|
3513 \ x\ y\ z\isanewline |
|
3514 \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
3515 \ xz{\isacharunderscore}in{\isacharunderscore}star{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isacharat}\ z\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isasymstar}{\isachardoublequoteclose}\isanewline |
|
3516 \ \ \ \ \isakeyword{and}\ tag{\isacharunderscore}xy{\isacharcolon}\ {\isachardoublequoteopen}tag{\isacharunderscore}str{\isacharunderscore}STAR\ L\isactrlisub {\isadigit{1}}\ x\ {\isacharequal}\ tag{\isacharunderscore}str{\isacharunderscore}STAR\ L\isactrlisub {\isadigit{1}}\ y{\isachardoublequoteclose}\isanewline |
|
3517 \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
3518 \ {\isachardoublequoteopen}y\ {\isacharat}\ z\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isasymstar}{\isachardoublequoteclose}\isanewline |
|
3519 \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
3520 {\isacharparenleft}cases\ {\isachardoublequoteopen}x\ {\isacharequal}\ {\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
3521 \ \ \ \ \ \ \isacommand{case}\isamarkupfalse% |
|
3522 \ True\isanewline |
|
3523 \ \ \ \ \ \ \isacommand{with}\isamarkupfalse% |
|
3524 \ tag{\isacharunderscore}xy\ \isacommand{have}\isamarkupfalse% |
|
3525 \ {\isachardoublequoteopen}y\ {\isacharequal}\ {\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}\ \isanewline |
|
3526 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3527 \ {\isacharparenleft}auto\ simp{\isacharcolon}tag{\isacharunderscore}str{\isacharunderscore}STAR{\isacharunderscore}def\ strict{\isacharunderscore}prefix{\isacharunderscore}def{\isacharparenright}\isanewline |
|
3528 \ \ \ \ \ \ \isacommand{thus}\isamarkupfalse% |
|
3529 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
3530 \ xz{\isacharunderscore}in{\isacharunderscore}star\ True\ \isacommand{by}\isamarkupfalse% |
|
3531 \ simp\isanewline |
|
3532 \ \ \ \ \isacommand{next}\isamarkupfalse% |
|
3533 \isanewline |
|
3534 \ \ \ \ \ \ \isacommand{case}\isamarkupfalse% |
|
3535 \ False\isanewline |
|
3536 \ \ \ \ \ \ \isacommand{obtain}\isamarkupfalse% |
|
3537 \ x{\isacharunderscore}max\ \isanewline |
|
3538 \ \ \ \ \ \ \ \ \isakeyword{where}\ h{\isadigit{1}}{\isacharcolon}\ {\isachardoublequoteopen}x{\isacharunderscore}max\ {\isacharless}\ x{\isachardoublequoteclose}\ \isanewline |
|
3539 \ \ \ \ \ \ \ \ \isakeyword{and}\ h{\isadigit{2}}{\isacharcolon}\ {\isachardoublequoteopen}x{\isacharunderscore}max\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isasymstar}{\isachardoublequoteclose}\ \isanewline |
|
3540 \ \ \ \ \ \ \ \ \isakeyword{and}\ h{\isadigit{3}}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}x\ {\isacharminus}\ x{\isacharunderscore}max{\isacharparenright}\ {\isacharat}\ z\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isasymstar}{\isachardoublequoteclose}\ \isanewline |
|
3541 \ \ \ \ \ \ \ \ \isakeyword{and}\ h{\isadigit{4}}{\isacharcolon}{\isachardoublequoteopen}{\isasymforall}\ xa\ {\isacharless}\ x{\isachardot}\ xa\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isasymstar}\ {\isasymand}\ {\isacharparenleft}x\ {\isacharminus}\ xa{\isacharparenright}\ {\isacharat}\ z\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isasymstar}\ \isanewline |
|
3542 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isasymlongrightarrow}\ length\ xa\ {\isasymle}\ length\ x{\isacharunderscore}max{\isachardoublequoteclose}\isanewline |
|
3543 \ \ \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
3544 {\isacharminus}\isanewline |
|
3545 \ \ \ \ \ \ \ \ \isacommand{let}\isamarkupfalse% |
|
3546 \ {\isacharquery}S\ {\isacharequal}\ {\isachardoublequoteopen}{\isacharbraceleft}xa{\isachardot}\ xa\ {\isacharless}\ x\ {\isasymand}\ xa\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isasymstar}\ {\isasymand}\ {\isacharparenleft}x\ {\isacharminus}\ xa{\isacharparenright}\ {\isacharat}\ z\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isasymstar}{\isacharbraceright}{\isachardoublequoteclose}\isanewline |
|
3547 \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
3548 \ {\isachardoublequoteopen}finite\ {\isacharquery}S{\isachardoublequoteclose}\isanewline |
|
3549 \ \ \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3550 \ {\isacharparenleft}rule{\isacharunderscore}tac\ B\ {\isacharequal}\ {\isachardoublequoteopen}{\isacharbraceleft}xa{\isachardot}\ xa\ {\isacharless}\ x{\isacharbraceright}{\isachardoublequoteclose}\ \isakeyword{in}\ finite{\isacharunderscore}subset{\isacharcomma}\ \isanewline |
|
3551 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ auto\ simp{\isacharcolon}finite{\isacharunderscore}strict{\isacharunderscore}prefix{\isacharunderscore}set{\isacharparenright}\isanewline |
|
3552 \ \ \ \ \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
3553 \ \isacommand{have}\isamarkupfalse% |
|
3554 \ {\isachardoublequoteopen}{\isacharquery}S\ {\isasymnoteq}\ {\isacharbraceleft}{\isacharbraceright}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
3555 \ False\ xz{\isacharunderscore}in{\isacharunderscore}star\isanewline |
|
3556 \ \ \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3557 \ {\isacharparenleft}simp{\isacharcomma}\ rule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}{\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}\ \isakeyword{in}\ exI{\isacharcomma}\ auto\ simp{\isacharcolon}strict{\isacharunderscore}prefix{\isacharunderscore}def{\isacharparenright}\isanewline |
|
3558 \ \ \ \ \ \ \ \ \isacommand{ultimately}\isamarkupfalse% |
|
3559 \ \isacommand{have}\isamarkupfalse% |
|
3560 \ {\isachardoublequoteopen}{\isasymexists}\ max\ {\isasymin}\ {\isacharquery}S{\isachardot}\ {\isasymforall}\ a\ {\isasymin}\ {\isacharquery}S{\isachardot}\ length\ a\ {\isasymle}\ length\ max{\isachardoublequoteclose}\ \isanewline |
|
3561 \ \ \ \ \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
3562 \ finite{\isacharunderscore}set{\isacharunderscore}has{\isacharunderscore}max\ \isacommand{by}\isamarkupfalse% |
|
3563 \ blast\isanewline |
|
3564 \ \ \ \ \ \ \ \ \isacommand{with}\isamarkupfalse% |
|
3565 \ prems\ \isacommand{show}\isamarkupfalse% |
|
3566 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
3567 \ blast\isanewline |
|
3568 \ \ \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
3569 \isanewline |
|
3570 \ \ \ \ \ \ \isacommand{obtain}\isamarkupfalse% |
|
3571 \ ya\ \isanewline |
|
3572 \ \ \ \ \ \ \ \ \isakeyword{where}\ h{\isadigit{5}}{\isacharcolon}\ {\isachardoublequoteopen}ya\ {\isacharless}\ y{\isachardoublequoteclose}\ \isakeyword{and}\ h{\isadigit{6}}{\isacharcolon}\ {\isachardoublequoteopen}ya\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isasymstar}{\isachardoublequoteclose}\ \isakeyword{and}\ h{\isadigit{7}}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}x\ {\isacharminus}\ x{\isacharunderscore}max{\isacharparenright}\ {\isasymapprox}L\isactrlisub {\isadigit{1}}\ {\isacharparenleft}y\ {\isacharminus}\ ya{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3573 \ \ \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
3574 {\isacharminus}\isanewline |
|
3575 \ \ \ \ \ \ \ \ \isacommand{from}\isamarkupfalse% |
|
3576 \ tag{\isacharunderscore}xy\ \isacommand{have}\isamarkupfalse% |
|
3577 \ {\isachardoublequoteopen}{\isacharbraceleft}{\isasymapprox}L\isactrlisub {\isadigit{1}}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}x\ {\isacharminus}\ xa{\isacharbraceright}\ {\isacharbar}xa{\isachardot}\ xa\ {\isacharless}\ x\ {\isasymand}\ xa\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isasymstar}{\isacharbraceright}\ {\isacharequal}\ \isanewline |
|
3578 \ \ \ \ \ \ \ \ \ \ {\isacharbraceleft}{\isasymapprox}L\isactrlisub {\isadigit{1}}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}y\ {\isacharminus}\ xa{\isacharbraceright}\ {\isacharbar}xa{\isachardot}\ xa\ {\isacharless}\ y\ {\isasymand}\ xa\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isasymstar}{\isacharbraceright}{\isachardoublequoteclose}\ {\isacharparenleft}\isakeyword{is}\ {\isachardoublequoteopen}{\isacharquery}left\ {\isacharequal}\ {\isacharquery}right{\isachardoublequoteclose}{\isacharparenright}\isanewline |
|
3579 \ \ \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3580 \ {\isacharparenleft}auto\ simp{\isacharcolon}tag{\isacharunderscore}str{\isacharunderscore}STAR{\isacharunderscore}def{\isacharparenright}\isanewline |
|
3581 \ \ \ \ \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
3582 \ \isacommand{have}\isamarkupfalse% |
|
3583 \ {\isachardoublequoteopen}{\isasymapprox}L\isactrlisub {\isadigit{1}}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}x\ {\isacharminus}\ x{\isacharunderscore}max{\isacharbraceright}\ {\isasymin}\ {\isacharquery}left{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
3584 \ h{\isadigit{1}}\ h{\isadigit{2}}\ \isacommand{by}\isamarkupfalse% |
|
3585 \ auto\isanewline |
|
3586 \ \ \ \ \ \ \ \ \isacommand{ultimately}\isamarkupfalse% |
|
3587 \ \isacommand{have}\isamarkupfalse% |
|
3588 \ {\isachardoublequoteopen}{\isasymapprox}L\isactrlisub {\isadigit{1}}\ {\isacharbackquote}{\isacharbackquote}\ {\isacharbraceleft}x\ {\isacharminus}\ x{\isacharunderscore}max{\isacharbraceright}\ {\isasymin}\ {\isacharquery}right{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
3589 \ simp\isanewline |
|
3590 \ \ \ \ \ \ \ \ \isacommand{with}\isamarkupfalse% |
|
3591 \ prems\ \isacommand{show}\isamarkupfalse% |
|
3592 \ {\isacharquery}thesis\ \isacommand{apply}\isamarkupfalse% |
|
3593 \ \isanewline |
|
3594 \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}simp\ add{\isacharcolon}Image{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}def{\isacharparenright}\ \isacommand{by}\isamarkupfalse% |
|
3595 \ blast\isanewline |
|
3596 \ \ \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
3597 \ \ \ \ \ \ \isanewline |
|
3598 \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
3599 \ {\isachardoublequoteopen}{\isacharparenleft}y\ {\isacharminus}\ ya{\isacharparenright}\ {\isacharat}\ z\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isasymstar}{\isachardoublequoteclose}\ \isanewline |
|
3600 \ \ \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
3601 {\isacharminus}\isanewline |
|
3602 \ \ \ \ \ \ \ \ \isacommand{from}\isamarkupfalse% |
|
3603 \ h{\isadigit{3}}\ h{\isadigit{1}}\ \isacommand{obtain}\isamarkupfalse% |
|
3604 \ a\ b\ \isakeyword{where}\ a{\isacharunderscore}in{\isacharcolon}\ {\isachardoublequoteopen}a\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isachardoublequoteclose}\ \isanewline |
|
3605 \ \ \ \ \ \ \ \ \ \ \isakeyword{and}\ a{\isacharunderscore}neq{\isacharcolon}\ {\isachardoublequoteopen}a\ {\isasymnoteq}\ {\isacharbrackleft}{\isacharbrackright}{\isachardoublequoteclose}\ \isakeyword{and}\ b{\isacharunderscore}in{\isacharcolon}\ {\isachardoublequoteopen}b\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isasymstar}{\isachardoublequoteclose}\ \isanewline |
|
3606 \ \ \ \ \ \ \ \ \ \ \isakeyword{and}\ ab{\isacharunderscore}max{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}x\ {\isacharminus}\ x{\isacharunderscore}max{\isacharparenright}\ {\isacharat}\ z\ {\isacharequal}\ a\ {\isacharat}\ b{\isachardoublequoteclose}\ \isanewline |
|
3607 \ \ \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3608 \ {\isacharparenleft}drule{\isacharunderscore}tac\ star{\isacharunderscore}decom{\isacharcomma}\ auto\ simp{\isacharcolon}strict{\isacharunderscore}prefix{\isacharunderscore}def\ elim{\isacharcolon}prefixE{\isacharparenright}\isanewline |
|
3609 \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
3610 \ {\isachardoublequoteopen}{\isacharparenleft}x\ {\isacharminus}\ x{\isacharunderscore}max{\isacharparenright}\ {\isasymle}\ a\ {\isasymand}\ {\isacharparenleft}a\ {\isacharminus}\ {\isacharparenleft}x\ {\isacharminus}\ x{\isacharunderscore}max{\isacharparenright}{\isacharparenright}\ {\isacharat}\ b\ {\isacharequal}\ z{\isachardoublequoteclose}\ \isanewline |
|
3611 \ \ \ \ \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
3612 \ {\isacharminus}\isanewline |
|
3613 \ \ \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
3614 \ {\isachardoublequoteopen}{\isacharparenleft}{\isacharparenleft}x\ {\isacharminus}\ x{\isacharunderscore}max{\isacharparenright}\ {\isasymle}\ a\ {\isasymand}\ {\isacharparenleft}a\ {\isacharminus}\ {\isacharparenleft}x\ {\isacharminus}\ x{\isacharunderscore}max{\isacharparenright}{\isacharparenright}\ {\isacharat}\ b\ {\isacharequal}\ z{\isacharparenright}\ {\isasymor}\ \isanewline |
|
3615 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}a\ {\isacharless}\ {\isacharparenleft}x\ {\isacharminus}\ x{\isacharunderscore}max{\isacharparenright}\ {\isasymand}\ {\isacharparenleft}{\isacharparenleft}x\ {\isacharminus}\ x{\isacharunderscore}max{\isacharparenright}\ {\isacharminus}\ a{\isacharparenright}\ {\isacharat}\ z\ {\isacharequal}\ b{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
3616 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
3617 \ app{\isacharunderscore}eq{\isacharunderscore}dest{\isacharbrackleft}OF\ ab{\isacharunderscore}max{\isacharbrackright}\ \isacommand{by}\isamarkupfalse% |
|
3618 \ {\isacharparenleft}auto\ simp{\isacharcolon}strict{\isacharunderscore}prefix{\isacharunderscore}def{\isacharparenright}\isanewline |
|
3619 \ \ \ \ \ \ \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
3620 \ \isacommand{{\isacharbraceleft}}\isamarkupfalse% |
|
3621 \ \isanewline |
|
3622 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{assume}\isamarkupfalse% |
|
3623 \ np{\isacharcolon}\ {\isachardoublequoteopen}a\ {\isacharless}\ {\isacharparenleft}x\ {\isacharminus}\ x{\isacharunderscore}max{\isacharparenright}{\isachardoublequoteclose}\ \isakeyword{and}\ b{\isacharunderscore}eqs{\isacharcolon}\ {\isachardoublequoteopen}\ {\isacharparenleft}{\isacharparenleft}x\ {\isacharminus}\ x{\isacharunderscore}max{\isacharparenright}\ {\isacharminus}\ a{\isacharparenright}\ {\isacharat}\ z\ {\isacharequal}\ b{\isachardoublequoteclose}\isanewline |
|
3624 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
3625 \ {\isachardoublequoteopen}False{\isachardoublequoteclose}\isanewline |
|
3626 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{proof}\isamarkupfalse% |
|
3627 \ {\isacharminus}\isanewline |
|
3628 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{let}\isamarkupfalse% |
|
3629 \ {\isacharquery}x{\isacharunderscore}max{\isacharprime}\ {\isacharequal}\ {\isachardoublequoteopen}x{\isacharunderscore}max\ {\isacharat}\ a{\isachardoublequoteclose}\isanewline |
|
3630 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse% |
|
3631 \ {\isachardoublequoteopen}{\isacharquery}x{\isacharunderscore}max{\isacharprime}\ {\isacharless}\ x{\isachardoublequoteclose}\ \isanewline |
|
3632 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
3633 \ np\ h{\isadigit{1}}\ \isacommand{by}\isamarkupfalse% |
|
3634 \ {\isacharparenleft}clarsimp\ simp{\isacharcolon}strict{\isacharunderscore}prefix{\isacharunderscore}def\ diff{\isacharunderscore}prefix{\isacharparenright}\ \isanewline |
|
3635 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
3636 \ \isacommand{have}\isamarkupfalse% |
|
3637 \ {\isachardoublequoteopen}{\isacharquery}x{\isacharunderscore}max{\isacharprime}\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isasymstar}{\isachardoublequoteclose}\ \isanewline |
|
3638 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
3639 \ a{\isacharunderscore}in\ h{\isadigit{2}}\ \isacommand{by}\isamarkupfalse% |
|
3640 \ {\isacharparenleft}simp\ add{\isacharcolon}star{\isacharunderscore}intro{\isadigit{3}}{\isacharparenright}\ \isanewline |
|
3641 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
3642 \ \isacommand{have}\isamarkupfalse% |
|
3643 \ {\isachardoublequoteopen}{\isacharparenleft}x\ {\isacharminus}\ {\isacharquery}x{\isacharunderscore}max{\isacharprime}{\isacharparenright}\ {\isacharat}\ z\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isasymstar}{\isachardoublequoteclose}\ \isanewline |
|
3644 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
3645 \ b{\isacharunderscore}eqs\ b{\isacharunderscore}in\ np\ h{\isadigit{1}}\ \isacommand{by}\isamarkupfalse% |
|
3646 \ {\isacharparenleft}simp\ add{\isacharcolon}diff{\isacharunderscore}diff{\isacharunderscore}appd{\isacharparenright}\isanewline |
|
3647 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{moreover}\isamarkupfalse% |
|
3648 \ \isacommand{have}\isamarkupfalse% |
|
3649 \ {\isachardoublequoteopen}{\isasymnot}\ {\isacharparenleft}length\ {\isacharquery}x{\isacharunderscore}max{\isacharprime}\ {\isasymle}\ length\ x{\isacharunderscore}max{\isacharparenright}{\isachardoublequoteclose}\ \isanewline |
|
3650 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
3651 \ a{\isacharunderscore}neq\ \isacommand{by}\isamarkupfalse% |
|
3652 \ simp\isanewline |
|
3653 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{ultimately}\isamarkupfalse% |
|
3654 \ \isacommand{show}\isamarkupfalse% |
|
3655 \ {\isacharquery}thesis\ \isacommand{using}\isamarkupfalse% |
|
3656 \ h{\isadigit{4}}\ \isacommand{by}\isamarkupfalse% |
|
3657 \ blast\isanewline |
|
3658 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
3659 \ \isanewline |
|
3660 \ \ \ \ \ \ \ \ \ \ \isacommand{{\isacharbraceright}}\isamarkupfalse% |
|
3661 \ \isacommand{ultimately}\isamarkupfalse% |
|
3662 \ \isacommand{show}\isamarkupfalse% |
|
3663 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
3664 \ blast\isanewline |
|
3665 \ \ \ \ \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
3666 \isanewline |
|
3667 \ \ \ \ \ \ \ \ \isacommand{then}\isamarkupfalse% |
|
3668 \ \isacommand{obtain}\isamarkupfalse% |
|
3669 \ za\ \isakeyword{where}\ z{\isacharunderscore}decom{\isacharcolon}\ {\isachardoublequoteopen}z\ {\isacharequal}\ za\ {\isacharat}\ b{\isachardoublequoteclose}\ \isanewline |
|
3670 \ \ \ \ \ \ \ \ \ \ \isakeyword{and}\ x{\isacharunderscore}za{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}x\ {\isacharminus}\ x{\isacharunderscore}max{\isacharparenright}\ {\isacharat}\ za\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isachardoublequoteclose}\ \isanewline |
|
3671 \ \ \ \ \ \ \ \ \ \ \isacommand{using}\isamarkupfalse% |
|
3672 \ a{\isacharunderscore}in\ \isacommand{by}\isamarkupfalse% |
|
3673 \ {\isacharparenleft}auto\ elim{\isacharcolon}prefixE{\isacharparenright}\ \ \ \ \ \ \ \ \isanewline |
|
3674 \ \ \ \ \ \ \ \ \isacommand{from}\isamarkupfalse% |
|
3675 \ x{\isacharunderscore}za\ h{\isadigit{7}}\ \isacommand{have}\isamarkupfalse% |
|
3676 \ {\isachardoublequoteopen}{\isacharparenleft}y\ {\isacharminus}\ ya{\isacharparenright}\ {\isacharat}\ za\ {\isasymin}\ L\isactrlisub {\isadigit{1}}{\isachardoublequoteclose}\ \isanewline |
|
3677 \ \ \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3678 \ {\isacharparenleft}auto\ simp{\isacharcolon}str{\isacharunderscore}eq{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def{\isacharparenright}\isanewline |
|
3679 \ \ \ \ \ \ \ \ \isacommand{with}\isamarkupfalse% |
|
3680 \ z{\isacharunderscore}decom\ b{\isacharunderscore}in\ \isacommand{show}\isamarkupfalse% |
|
3681 \ {\isacharquery}thesis\ \isacommand{by}\isamarkupfalse% |
|
3682 \ {\isacharparenleft}auto\ dest{\isacharbang}{\isacharcolon}step{\isacharbrackleft}of\ {\isachardoublequoteopen}{\isacharparenleft}y\ {\isacharminus}\ ya{\isacharparenright}\ {\isacharat}\ za{\isachardoublequoteclose}{\isacharbrackright}{\isacharparenright}\isanewline |
|
3683 \ \ \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
3684 \isanewline |
|
3685 \ \ \ \ \ \ \isacommand{with}\isamarkupfalse% |
|
3686 \ h{\isadigit{5}}\ h{\isadigit{6}}\ \isacommand{show}\isamarkupfalse% |
|
3687 \ {\isacharquery}thesis\ \isanewline |
|
3688 \ \ \ \ \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3689 \ {\isacharparenleft}drule{\isacharunderscore}tac\ star{\isacharunderscore}intro{\isadigit{1}}{\isacharcomma}\ auto\ simp{\isacharcolon}strict{\isacharunderscore}prefix{\isacharunderscore}def\ elim{\isacharcolon}prefixE{\isacharparenright}\isanewline |
|
3690 \ \ \ \ \isacommand{qed}\isamarkupfalse% |
|
3691 \ \ \ \ \ \ \isanewline |
|
3692 \ \ \isacommand{{\isacharbraceright}}\isamarkupfalse% |
|
3693 \ \isacommand{thus}\isamarkupfalse% |
|
3694 \ {\isachardoublequoteopen}tag{\isacharunderscore}str{\isacharunderscore}STAR\ L\isactrlisub {\isadigit{1}}\ m\ {\isacharequal}\ tag{\isacharunderscore}str{\isacharunderscore}STAR\ L\isactrlisub {\isadigit{1}}\ n\ {\isasymLongrightarrow}\ m\ {\isasymapprox}{\isacharparenleft}L\isactrlisub {\isadigit{1}}{\isasymstar}{\isacharparenright}\ n{\isachardoublequoteclose}\isanewline |
|
3695 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3696 \ {\isacharparenleft}auto\ simp\ add{\isacharcolon}str{\isacharunderscore}eq{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def{\isacharparenright}\isanewline |
|
3697 \isacommand{qed}\isamarkupfalse% |
|
3698 % |
|
3699 \endisatagproof |
|
3700 {\isafoldproof}% |
|
3701 % |
|
3702 \isadelimproof |
|
3703 \isanewline |
|
3704 % |
|
3705 \endisadelimproof |
|
3706 \isanewline |
|
3707 \isacommand{lemma}\isamarkupfalse% |
|
3708 \ quot{\isacharunderscore}star{\isacharunderscore}finiteI{\isacharcolon}\isanewline |
|
3709 \ \ \isakeyword{assumes}\ finite{\isacharcolon}\ {\isachardoublequoteopen}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}{\isacharparenleft}L\isactrlisub {\isadigit{1}}{\isacharcolon}{\isacharcolon}string\ set{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3710 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}{\isacharparenleft}L\isactrlisub {\isadigit{1}}{\isasymstar}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3711 % |
|
3712 \isadelimproof |
|
3713 % |
|
3714 \endisadelimproof |
|
3715 % |
|
3716 \isatagproof |
|
3717 \isacommand{proof}\isamarkupfalse% |
|
3718 {\isacharparenleft}rule{\isacharunderscore}tac\ f\ {\isacharequal}\ {\isachardoublequoteopen}{\isacharparenleft}op\ {\isacharbackquote}{\isacharparenright}\ {\isacharparenleft}tag{\isacharunderscore}str{\isacharunderscore}STAR\ L\isactrlisub {\isadigit{1}}{\isacharparenright}{\isachardoublequoteclose}\ \isakeyword{in}\ finite{\isacharunderscore}imageD{\isacharparenright}\isanewline |
|
3719 \ \ \isacommand{show}\isamarkupfalse% |
|
3720 \ {\isachardoublequoteopen}finite\ {\isacharparenleft}op\ {\isacharbackquote}\ {\isacharparenleft}tag{\isacharunderscore}str{\isacharunderscore}STAR\ L\isactrlisub {\isadigit{1}}{\isacharparenright}\ {\isacharbackquote}\ UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{1}}{\isasymstar}{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse% |
|
3721 \ finite\isanewline |
|
3722 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3723 \ {\isacharparenleft}auto\ intro{\isacharcolon}finite{\isacharunderscore}tag{\isacharunderscore}imageI\ tag{\isacharunderscore}str{\isacharunderscore}star{\isacharunderscore}range{\isacharunderscore}finite{\isacharparenright}\isanewline |
|
3724 \isacommand{next}\isamarkupfalse% |
|
3725 \isanewline |
|
3726 \ \ \isacommand{show}\isamarkupfalse% |
|
3727 \ {\isachardoublequoteopen}inj{\isacharunderscore}on\ {\isacharparenleft}op\ {\isacharbackquote}\ {\isacharparenleft}tag{\isacharunderscore}str{\isacharunderscore}STAR\ L\isactrlisub {\isadigit{1}}{\isacharparenright}{\isacharparenright}\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}L\isactrlisub {\isadigit{1}}{\isasymstar}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3728 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3729 \ {\isacharparenleft}auto\ intro{\isacharcolon}tag{\isacharunderscore}image{\isacharunderscore}injI\ tag{\isacharunderscore}str{\isacharunderscore}STAR{\isacharunderscore}injI{\isacharparenright}\isanewline |
|
3730 \isacommand{qed}\isamarkupfalse% |
|
3731 % |
|
3732 \endisatagproof |
|
3733 {\isafoldproof}% |
|
3734 % |
|
3735 \isadelimproof |
|
3736 % |
|
3737 \endisadelimproof |
|
3738 % |
|
3739 \isamarkupsubsection{The main lemma% |
|
3740 } |
|
3741 \isamarkuptrue% |
|
3742 \isacommand{lemma}\isamarkupfalse% |
|
3743 \ easier{\isacharunderscore}directio{\isasymnu}{\isacharcolon}\isanewline |
|
3744 \ \ {\isachardoublequoteopen}Lang\ {\isacharequal}\ L\ {\isacharparenleft}r{\isacharcolon}{\isacharcolon}rexp{\isacharparenright}\ {\isasymLongrightarrow}\ finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}Lang{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3745 % |
|
3746 \isadelimproof |
|
3747 % |
|
3748 \endisadelimproof |
|
3749 % |
|
3750 \isatagproof |
|
3751 \isacommand{proof}\isamarkupfalse% |
|
3752 \ {\isacharparenleft}induct\ arbitrary{\isacharcolon}Lang\ rule{\isacharcolon}rexp{\isachardot}induct{\isacharparenright}\isanewline |
|
3753 \ \ \isacommand{case}\isamarkupfalse% |
|
3754 \ NULL\isanewline |
|
3755 \ \ \isacommand{have}\isamarkupfalse% |
|
3756 \ {\isachardoublequoteopen}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}{\isacharbraceleft}{\isacharbraceright}{\isacharparenright}\ {\isasymsubseteq}\ {\isacharbraceleft}UNIV{\isacharbraceright}\ {\isachardoublequoteclose}\isanewline |
|
3757 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3758 \ {\isacharparenleft}auto\ simp{\isacharcolon}quotient{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}rel{\isacharunderscore}def\ str{\isacharunderscore}eq{\isacharunderscore}def{\isacharparenright}\isanewline |
|
3759 \ \ \isacommand{with}\isamarkupfalse% |
|
3760 \ prems\ \isacommand{show}\isamarkupfalse% |
|
3761 \ {\isachardoublequoteopen}{\isacharquery}case{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
|
3762 \ {\isacharparenleft}auto\ intro{\isacharcolon}finite{\isacharunderscore}subset{\isacharparenright}\isanewline |
|
3763 \isacommand{next}\isamarkupfalse% |
|
3764 \isanewline |
|
3765 \ \ \isacommand{case}\isamarkupfalse% |
|
3766 \ EMPTY\isanewline |
|
3767 \ \ \isacommand{have}\isamarkupfalse% |
|
3768 \ {\isachardoublequoteopen}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}{\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isacharparenright}\ {\isasymsubseteq}\ {\isacharbraceleft}{\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isacharcomma}\ UNIV\ {\isacharminus}\ {\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isacharbraceright}{\isachardoublequoteclose}\ \isanewline |
|
3769 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3770 \ {\isacharparenleft}rule\ quot{\isacharunderscore}empty{\isacharunderscore}subset{\isacharparenright}\isanewline |
|
3771 \ \ \isacommand{with}\isamarkupfalse% |
|
3772 \ prems\ \isacommand{show}\isamarkupfalse% |
|
3773 \ {\isacharquery}case\ \isacommand{by}\isamarkupfalse% |
|
3774 \ {\isacharparenleft}auto\ intro{\isacharcolon}finite{\isacharunderscore}subset{\isacharparenright}\isanewline |
|
3775 \isacommand{next}\isamarkupfalse% |
|
3776 \isanewline |
|
3777 \ \ \isacommand{case}\isamarkupfalse% |
|
3778 \ {\isacharparenleft}CHAR\ c{\isacharparenright}\isanewline |
|
3779 \ \ \isacommand{have}\isamarkupfalse% |
|
3780 \ {\isachardoublequoteopen}UNIV\ {\isacharslash}{\isacharslash}\ {\isacharparenleft}{\isasymapprox}{\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}{\isacharparenright}\ {\isasymsubseteq}\ {\isacharbraceleft}{\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharbraceright}{\isacharcomma}{\isacharbraceleft}{\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}{\isacharcomma}\ UNIV\ {\isacharminus}\ {\isacharbraceleft}{\isacharbrackleft}{\isacharbrackright}{\isacharcomma}\ {\isacharbrackleft}c{\isacharbrackright}{\isacharbraceright}{\isacharbraceright}{\isachardoublequoteclose}\ \isanewline |
|
3781 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3782 \ {\isacharparenleft}rule\ quot{\isacharunderscore}char{\isacharunderscore}subset{\isacharparenright}\isanewline |
|
3783 \ \ \isacommand{with}\isamarkupfalse% |
|
3784 \ prems\ \isacommand{show}\isamarkupfalse% |
|
3785 \ {\isacharquery}case\ \isacommand{by}\isamarkupfalse% |
|
3786 \ {\isacharparenleft}auto\ intro{\isacharcolon}finite{\isacharunderscore}subset{\isacharparenright}\isanewline |
|
3787 \isacommand{next}\isamarkupfalse% |
|
3788 \isanewline |
|
3789 \ \ \isacommand{case}\isamarkupfalse% |
|
3790 \ {\isacharparenleft}SEQ\ r\isactrlisub {\isadigit{1}}\ r\isactrlisub {\isadigit{2}}{\isacharparenright}\isanewline |
|
3791 \ \ \isacommand{have}\isamarkupfalse% |
|
3792 \ {\isachardoublequoteopen}{\isasymlbrakk}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}{\isacharparenleft}L\ r\isactrlisub {\isadigit{1}}{\isacharparenright}{\isacharparenright}{\isacharsemicolon}\ finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}{\isacharparenleft}L\ r\isactrlisub {\isadigit{2}}{\isacharparenright}{\isacharparenright}{\isasymrbrakk}\ \isanewline |
|
3793 \ \ \ \ \ \ \ \ \ \ \ \ {\isasymLongrightarrow}\ finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}{\isacharparenleft}L\ r\isactrlisub {\isadigit{1}}\ {\isacharsemicolon}{\isacharsemicolon}\ L\ r\isactrlisub {\isadigit{2}}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3794 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3795 \ {\isacharparenleft}erule\ quot{\isacharunderscore}seq{\isacharunderscore}finiteI{\isacharcomma}\ simp{\isacharparenright}\isanewline |
|
3796 \ \ \isacommand{with}\isamarkupfalse% |
|
3797 \ prems\ \isacommand{show}\isamarkupfalse% |
|
3798 \ {\isacharquery}case\ \isacommand{by}\isamarkupfalse% |
|
3799 \ simp\isanewline |
|
3800 \isacommand{next}\isamarkupfalse% |
|
3801 \isanewline |
|
3802 \ \ \isacommand{case}\isamarkupfalse% |
|
3803 \ {\isacharparenleft}ALT\ r\isactrlisub {\isadigit{1}}\ r\isactrlisub {\isadigit{2}}{\isacharparenright}\isanewline |
|
3804 \ \ \isacommand{have}\isamarkupfalse% |
|
3805 \ {\isachardoublequoteopen}{\isasymlbrakk}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}{\isacharparenleft}L\ r\isactrlisub {\isadigit{1}}{\isacharparenright}{\isacharparenright}{\isacharsemicolon}\ finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}{\isacharparenleft}L\ r\isactrlisub {\isadigit{2}}{\isacharparenright}{\isacharparenright}{\isasymrbrakk}\ \isanewline |
|
3806 \ \ \ \ \ \ \ \ \ \ \ \ {\isasymLongrightarrow}\ finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}{\isacharparenleft}L\ r\isactrlisub {\isadigit{1}}\ {\isasymunion}\ L\ r\isactrlisub {\isadigit{2}}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3807 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3808 \ {\isacharparenleft}erule\ quot{\isacharunderscore}union{\isacharunderscore}finiteI{\isacharcomma}\ simp{\isacharparenright}\isanewline |
|
3809 \ \ \isacommand{with}\isamarkupfalse% |
|
3810 \ prems\ \isacommand{show}\isamarkupfalse% |
|
3811 \ {\isacharquery}case\ \isacommand{by}\isamarkupfalse% |
|
3812 \ simp\ \ \isanewline |
|
3813 \isacommand{next}\isamarkupfalse% |
|
3814 \isanewline |
|
3815 \ \ \isacommand{case}\isamarkupfalse% |
|
3816 \ {\isacharparenleft}STAR\ r{\isacharparenright}\isanewline |
|
3817 \ \ \isacommand{have}\isamarkupfalse% |
|
3818 \ {\isachardoublequoteopen}finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}{\isacharparenleft}L\ r{\isacharparenright}{\isacharparenright}\ \isanewline |
|
3819 \ \ \ \ \ \ \ \ \ \ \ \ {\isasymLongrightarrow}\ finite\ {\isacharparenleft}UNIV\ {\isacharslash}{\isacharslash}\ {\isasymapprox}{\isacharparenleft}{\isacharparenleft}L\ r{\isacharparenright}{\isasymstar}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
3820 \ \ \ \ \isacommand{by}\isamarkupfalse% |
|
3821 \ {\isacharparenleft}erule\ quot{\isacharunderscore}star{\isacharunderscore}finiteI{\isacharparenright}\isanewline |
|
3822 \ \ \isacommand{with}\isamarkupfalse% |
|
3823 \ prems\ \isacommand{show}\isamarkupfalse% |
|
3824 \ {\isacharquery}case\ \isacommand{by}\isamarkupfalse% |
|
3825 \ simp\isanewline |
|
3826 \isacommand{qed}\isamarkupfalse% |
|
3827 % |
|
3828 \endisatagproof |
|
3829 {\isafoldproof}% |
|
3830 % |
|
3831 \isadelimproof |
|
3832 \ \isanewline |
|
3833 % |
|
3834 \endisadelimproof |
|
3835 % |
|
3836 \isadelimtheory |
|
3837 \isanewline |
|
3838 % |
|
3839 \endisadelimtheory |
|
3840 % |
|
3841 \isatagtheory |
|
3842 \isacommand{end}\isamarkupfalse% |
|
3843 % |
|
3844 \endisatagtheory |
|
3845 {\isafoldtheory}% |
|
3846 % |
|
3847 \isadelimtheory |
|
3848 \isanewline |
|
3849 % |
|
3850 \endisadelimtheory |
|
3851 \isanewline |
|
3852 \end{isabellebody}% |
|
3853 %%% Local Variables: |
|
3854 %%% mode: latex |
|
3855 %%% TeX-master: "root" |
|
3856 %%% End: |