doc-src/TutorialI/Types/document/Pairs.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{Pairs}%
     3 \def\isabellecontext{Pairs}%
       
     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
   130 \end{isabelle}
   130 \end{isabelle}
   131 This subgoal is easily proved by simplification. Thus we could have combined
   131 This subgoal is easily proved by simplification. Thus we could have combined
   132 simplification and splitting in one command that proves the goal outright:%
   132 simplification and splitting in one command that proves the goal outright:%
   133 \end{isamarkuptxt}%
   133 \end{isamarkuptxt}%
   134 \isamarkuptrue%
   134 \isamarkuptrue%
   135 \isamarkupfalse%
   135 %
   136 %
   136 \endisatagproof
   137 \endisatagproof
   137 {\isafoldproof}%
   138 {\isafoldproof}%
   138 %
   139 %
   139 \isadelimproof
   140 \isadelimproof
   140 %
   141 %
   141 \endisadelimproof
   142 \endisadelimproof
       
   143 \isamarkupfalse%
       
   144 %
   142 %
   145 \isadelimproof
   143 \isadelimproof
   146 %
   144 %
   147 \endisadelimproof
   145 \endisadelimproof
   148 %
   146 %
   176 \end{isabelle}
   174 \end{isabelle}
   177 A paired \isa{let} reduces to a paired $\lambda$-abstraction, which
   175 A paired \isa{let} reduces to a paired $\lambda$-abstraction, which
   178 can be split as above. The same is true for paired set comprehension:%
   176 can be split as above. The same is true for paired set comprehension:%
   179 \end{isamarkuptxt}%
   177 \end{isamarkuptxt}%
   180 \isamarkuptrue%
   178 \isamarkuptrue%
   181 \isamarkupfalse%
       
   182 %
   179 %
   183 \endisatagproof
   180 \endisatagproof
   184 {\isafoldproof}%
   181 {\isafoldproof}%
   185 %
   182 %
   186 \isadelimproof
   183 \isadelimproof
   204 as above. If you are worried about the strange form of the premise:
   201 as above. If you are worried about the strange form of the premise:
   205 \isa{{\isasymlambda}{\isacharparenleft}x{\isacharcomma}\ y{\isacharparenright}{\isachardot}\ x\ {\isacharequal}\ y} is short for \isa{{\isasymlambda}{\isacharparenleft}x{\isacharcomma}y{\isacharparenright}{\isachardot}\ x{\isacharequal}y}.
   202 \isa{{\isasymlambda}{\isacharparenleft}x{\isacharcomma}\ y{\isacharparenright}{\isachardot}\ x\ {\isacharequal}\ y} is short for \isa{{\isasymlambda}{\isacharparenleft}x{\isacharcomma}y{\isacharparenright}{\isachardot}\ x{\isacharequal}y}.
   206 The same proof procedure works for%
   203 The same proof procedure works for%
   207 \end{isamarkuptxt}%
   204 \end{isamarkuptxt}%
   208 \isamarkuptrue%
   205 \isamarkuptrue%
   209 \isamarkupfalse%
       
   210 %
   206 %
   211 \endisatagproof
   207 \endisatagproof
   212 {\isafoldproof}%
   208 {\isafoldproof}%
   213 %
   209 %
   214 \isadelimproof
   210 \isadelimproof
   229 
   225 
   230 However, splitting \isa{split} is not always a solution, as no \isa{split}
   226 However, splitting \isa{split} is not always a solution, as no \isa{split}
   231 may be present in the goal. Consider the following function:%
   227 may be present in the goal. Consider the following function:%
   232 \end{isamarkuptxt}%
   228 \end{isamarkuptxt}%
   233 \isamarkuptrue%
   229 \isamarkuptrue%
   234 \isamarkupfalse%
       
   235 %
   230 %
   236 \endisatagproof
   231 \endisatagproof
   237 {\isafoldproof}%
   232 {\isafoldproof}%
   238 %
   233 %
   239 \isadelimproof
   234 \isadelimproof
   283 In case the term to be split is a quantified variable, there are more options.
   278 In case the term to be split is a quantified variable, there are more options.
   284 You can split \emph{all} \isa{{\isasymAnd}}-quantified variables in a goal
   279 You can split \emph{all} \isa{{\isasymAnd}}-quantified variables in a goal
   285 with the rewrite rule \isa{split{\isacharunderscore}paired{\isacharunderscore}all}:%
   280 with the rewrite rule \isa{split{\isacharunderscore}paired{\isacharunderscore}all}:%
   286 \end{isamarkuptxt}%
   281 \end{isamarkuptxt}%
   287 \isamarkuptrue%
   282 \isamarkuptrue%
   288 \isamarkupfalse%
       
   289 %
   283 %
   290 \endisatagproof
   284 \endisatagproof
   291 {\isafoldproof}%
   285 {\isafoldproof}%
   292 %
   286 %
   293 \isadelimproof
   287 \isadelimproof
   333 of the simplifier.
   327 of the simplifier.
   334 The following command could fail (here it does not)
   328 The following command could fail (here it does not)
   335 where two separate \isa{simp} applications succeed.%
   329 where two separate \isa{simp} applications succeed.%
   336 \end{isamarkuptext}%
   330 \end{isamarkuptext}%
   337 \isamarkuptrue%
   331 \isamarkuptrue%
   338 \isamarkupfalse%
   332 %
   339 %
   333 \isadelimproof
   340 \isadelimproof
   334 %
   341 %
   335 \endisadelimproof
   342 \endisadelimproof
   336 %
   343 %
   337 \isatagproof
   344 \isatagproof
   338 \isacommand{apply}\isamarkupfalse%
   345 \isacommand{apply}\isamarkupfalse%
   339 {\isacharparenleft}simp\ add{\isacharcolon}\ split{\isacharunderscore}paired{\isacharunderscore}all{\isacharparenright}%
   346 {\isacharparenleft}simp\ add{\isacharcolon}\ split{\isacharunderscore}paired{\isacharunderscore}all{\isacharparenright}\isamarkupfalse%
       
   347 %
       
   348 \endisatagproof
   340 \endisatagproof
   349 {\isafoldproof}%
   341 {\isafoldproof}%
   350 %
   342 %
   351 \isadelimproof
   343 \isadelimproof
   352 %
   344 %
   393 \isadelimtheory
   385 \isadelimtheory
   394 %
   386 %
   395 \endisadelimtheory
   387 \endisadelimtheory
   396 %
   388 %
   397 \isatagtheory
   389 \isatagtheory
   398 \isamarkupfalse%
       
   399 %
   390 %
   400 \endisatagtheory
   391 \endisatagtheory
   401 {\isafoldtheory}%
   392 {\isafoldtheory}%
   402 %
   393 %
   403 \isadelimtheory
   394 \isadelimtheory