equal
deleted
inserted
replaced
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 |