equal
deleted
inserted
replaced
1 % |
1 % |
2 \begin{isabellebody}% |
2 \begin{isabellebody}% |
3 \def\isabellecontext{CodeGen}% |
3 \def\isabellecontext{CodeGen}% |
|
4 \isamarkupfalse% |
4 % |
5 % |
5 \isadelimtheory |
6 \isadelimtheory |
6 % |
7 % |
7 \endisadelimtheory |
8 \endisadelimtheory |
8 % |
9 % |
9 \isatagtheory |
10 \isatagtheory |
10 \isamarkupfalse% |
|
11 % |
11 % |
12 \endisatagtheory |
12 \endisatagtheory |
13 {\isafoldtheory}% |
13 {\isafoldtheory}% |
14 % |
14 % |
15 \isadelimtheory |
15 \isadelimtheory |
114 \isadelimproof |
114 \isadelimproof |
115 % |
115 % |
116 \endisadelimproof |
116 \endisadelimproof |
117 % |
117 % |
118 \isatagproof |
118 \isatagproof |
119 \isamarkupfalse% |
|
120 % |
119 % |
121 \endisatagproof |
120 \endisatagproof |
122 {\isafoldproof}% |
121 {\isafoldproof}% |
123 % |
122 % |
124 \isadelimproof |
123 \isadelimproof |
143 It will be proved by induction on \isa{e} followed by simplification. |
142 It will be proved by induction on \isa{e} followed by simplification. |
144 First, we must prove a lemma about executing the concatenation of two |
143 First, we must prove a lemma about executing the concatenation of two |
145 instruction sequences:% |
144 instruction sequences:% |
146 \end{isamarkuptxt}% |
145 \end{isamarkuptxt}% |
147 \isamarkuptrue% |
146 \isamarkuptrue% |
148 \isamarkupfalse% |
|
149 % |
147 % |
150 \endisatagproof |
148 \endisatagproof |
151 {\isafoldproof}% |
149 {\isafoldproof}% |
152 % |
150 % |
153 \isadelimproof |
151 \isadelimproof |
169 that contains two \isa{case}-expressions over instructions. Thus we add |
167 that contains two \isa{case}-expressions over instructions. Thus we add |
170 automatic case splitting, which finishes the proof:% |
168 automatic case splitting, which finishes the proof:% |
171 \end{isamarkuptxt}% |
169 \end{isamarkuptxt}% |
172 \isamarkuptrue% |
170 \isamarkuptrue% |
173 \isacommand{apply}\isamarkupfalse% |
171 \isacommand{apply}\isamarkupfalse% |
174 {\isacharparenleft}induct{\isacharunderscore}tac\ xs{\isacharcomma}\ simp{\isacharcomma}\ simp\ split{\isacharcolon}\ instr{\isachardot}split{\isacharparenright}\isamarkupfalse% |
172 {\isacharparenleft}induct{\isacharunderscore}tac\ xs{\isacharcomma}\ simp{\isacharcomma}\ simp\ split{\isacharcolon}\ instr{\isachardot}split{\isacharparenright}% |
175 % |
|
176 \endisatagproof |
173 \endisatagproof |
177 {\isafoldproof}% |
174 {\isafoldproof}% |
178 % |
175 % |
179 \isadelimproof |
176 \isadelimproof |
180 % |
177 % |
185 Note that because both \methdx{simp_all} and \methdx{auto} perform simplification, they can |
182 Note that because both \methdx{simp_all} and \methdx{auto} perform simplification, they can |
186 be modified in the same way as \isa{simp}. Thus the proof can be |
183 be modified in the same way as \isa{simp}. Thus the proof can be |
187 rewritten as% |
184 rewritten as% |
188 \end{isamarkuptext}% |
185 \end{isamarkuptext}% |
189 \isamarkuptrue% |
186 \isamarkuptrue% |
190 \isamarkupfalse% |
|
191 \isamarkupfalse% |
|
192 % |
187 % |
193 \isadelimproof |
188 \isadelimproof |
194 % |
189 % |
195 \endisadelimproof |
190 \endisadelimproof |
196 % |
191 % |
197 \isatagproof |
192 \isatagproof |
198 \isacommand{apply}\isamarkupfalse% |
193 \isacommand{apply}\isamarkupfalse% |
199 {\isacharparenleft}induct{\isacharunderscore}tac\ xs{\isacharcomma}\ simp{\isacharunderscore}all\ split{\isacharcolon}\ instr{\isachardot}split{\isacharparenright}\isamarkupfalse% |
194 {\isacharparenleft}induct{\isacharunderscore}tac\ xs{\isacharcomma}\ simp{\isacharunderscore}all\ split{\isacharcolon}\ instr{\isachardot}split{\isacharparenright}% |
200 % |
|
201 \endisatagproof |
195 \endisatagproof |
202 {\isafoldproof}% |
196 {\isafoldproof}% |
203 % |
197 % |
204 \isadelimproof |
198 \isadelimproof |
205 % |
199 % |
214 However, this is unnecessary because the generalized version fully subsumes |
208 However, this is unnecessary because the generalized version fully subsumes |
215 its instance.% |
209 its instance.% |
216 \index{compiling expressions example|)}% |
210 \index{compiling expressions example|)}% |
217 \end{isamarkuptext}% |
211 \end{isamarkuptext}% |
218 \isamarkuptrue% |
212 \isamarkuptrue% |
219 \isamarkupfalse% |
213 % |
220 % |
214 \isadelimproof |
221 \isadelimproof |
215 % |
222 % |
216 \endisadelimproof |
223 \endisadelimproof |
217 % |
224 % |
218 \isatagproof |
225 \isatagproof |
|
226 \isamarkupfalse% |
|
227 % |
219 % |
228 \endisatagproof |
220 \endisatagproof |
229 {\isafoldproof}% |
221 {\isafoldproof}% |
230 % |
222 % |
231 \isadelimproof |
223 \isadelimproof |
235 \isadelimtheory |
227 \isadelimtheory |
236 % |
228 % |
237 \endisadelimtheory |
229 \endisadelimtheory |
238 % |
230 % |
239 \isatagtheory |
231 \isatagtheory |
240 \isamarkupfalse% |
|
241 % |
232 % |
242 \endisatagtheory |
233 \endisatagtheory |
243 {\isafoldtheory}% |
234 {\isafoldtheory}% |
244 % |
235 % |
245 \isadelimtheory |
236 \isadelimtheory |