doc-src/TutorialI/CodeGen/document/CodeGen.tex
changeset 17181 5f42dd5e6570
parent 17175 1eced27ee0e1
child 17187 45bee2f6e61f
equal deleted inserted replaced
17180:5fefe658a6f8 17181:5f42dd5e6570
     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