297 Unions can be formed over the values of a given set. The syntax is |
297 Unions can be formed over the values of a given set. The syntax is |
298 \mbox{\isa{\isasymUnion x\isasymin A.\ B}} or \isa{UN |
298 \mbox{\isa{\isasymUnion x\isasymin A.\ B}} or \isa{UN |
299 x\isasymin A.\ B} in \textsc{ascii}. Indexed union satisfies this basic law: |
299 x\isasymin A.\ B} in \textsc{ascii}. Indexed union satisfies this basic law: |
300 \begin{isabelle} |
300 \begin{isabelle} |
301 (b\ \isasymin\ |
301 (b\ \isasymin\ |
302 (\isasymUnion x\isasymin A.\ B\ x))\ =\ (\isasymexists x\isasymin A.\ |
302 (\isasymUnion \isactrlbsub x\isasymin A\isactrlesub \ B\ x) =\ (\isasymexists x\isasymin A.\ |
303 b\ \isasymin\ B\ x) |
303 b\ \isasymin\ B\ x) |
304 \rulenamedx{UN_iff} |
304 \rulenamedx{UN_iff} |
305 \end{isabelle} |
305 \end{isabelle} |
306 It has two natural deduction rules similar to those for the existential |
306 It has two natural deduction rules similar to those for the existential |
307 quantifier. Sometimes \isa{UN_I} must be applied explicitly: |
307 quantifier. Sometimes \isa{UN_I} must be applied explicitly: |
308 \begin{isabelle} |
308 \begin{isabelle} |
309 \isasymlbrakk a\ \isasymin\ |
309 \isasymlbrakk a\ \isasymin\ |
310 A;\ b\ \isasymin\ |
310 A;\ b\ \isasymin\ |
311 B\ a\isasymrbrakk\ \isasymLongrightarrow\ |
311 B\ a\isasymrbrakk\ \isasymLongrightarrow\ |
312 b\ \isasymin\ |
312 b\ \isasymin\ |
313 ({\isasymUnion}x\isasymin A.\ |
313 (\isasymUnion \isactrlbsub x\isasymin A\isactrlesub \ B\ x) |
314 B\ x) |
|
315 \rulenamedx{UN_I}% |
314 \rulenamedx{UN_I}% |
316 \isanewline |
315 \isanewline |
317 \isasymlbrakk b\ \isasymin\ |
316 \isasymlbrakk b\ \isasymin\ |
318 ({\isasymUnion}x\isasymin A.\ |
317 (\isasymUnion \isactrlbsub x\isasymin A\isactrlesub \ B\ x);\ |
319 B\ x);\ |
|
320 {\isasymAnd}x.\ {\isasymlbrakk}x\ \isasymin\ |
318 {\isasymAnd}x.\ {\isasymlbrakk}x\ \isasymin\ |
321 A;\ b\ \isasymin\ |
319 A;\ b\ \isasymin\ |
322 B\ x\isasymrbrakk\ \isasymLongrightarrow\ |
320 B\ x\isasymrbrakk\ \isasymLongrightarrow\ |
323 R\isasymrbrakk\ \isasymLongrightarrow\ R% |
321 R\isasymrbrakk\ \isasymLongrightarrow\ R% |
324 \rulenamedx{UN_E} |
322 \rulenamedx{UN_E} |
327 The following built-in syntax translation (see {\S}\ref{sec:syntax-translations}) |
325 The following built-in syntax translation (see {\S}\ref{sec:syntax-translations}) |
328 lets us express the union over a \emph{type}: |
326 lets us express the union over a \emph{type}: |
329 \begin{isabelle} |
327 \begin{isabelle} |
330 \ \ \ \ \ |
328 \ \ \ \ \ |
331 ({\isasymUnion}x.\ B\ x)\ {\isasymrightleftharpoons}\ |
329 ({\isasymUnion}x.\ B\ x)\ {\isasymrightleftharpoons}\ |
332 ({\isasymUnion}x{\isasymin}UNIV.\ B\ x) |
330 ({\isasymUnion}\isactrlbsub x{\isasymin}UNIV\isactrlesub\ B\ x) |
333 \end{isabelle} |
331 \end{isabelle} |
334 %Abbreviations work as you might expect. The term on the left-hand side of |
332 %Abbreviations work as you might expect. The term on the left-hand side of |
335 %the \isasymrightleftharpoons\ symbol is automatically translated to the right-hand side when the |
333 %the \isasymrightleftharpoons\ symbol is automatically translated to the right-hand side when the |
336 %term is parsed, the reverse translation being done when the term is |
334 %term is parsed, the reverse translation being done when the term is |
337 %displayed. |
335 %displayed. |
349 than unions. The syntax below would be \isa{INT |
347 than unions. The syntax below would be \isa{INT |
350 x:\ A.\ B} and \isa{Inter\ C} in \textsc{ascii}. Among others, these |
348 x:\ A.\ B} and \isa{Inter\ C} in \textsc{ascii}. Among others, these |
351 theorems are available: |
349 theorems are available: |
352 \begin{isabelle} |
350 \begin{isabelle} |
353 (b\ \isasymin\ |
351 (b\ \isasymin\ |
354 ({\isasymInter}x\isasymin A.\ |
352 (\isasymInter \isactrlbsub x\isasymin A\isactrlesub \ B\ x))\ |
355 B\ x))\ |
|
356 =\ |
353 =\ |
357 ({\isasymforall}x\isasymin A.\ |
354 ({\isasymforall}x\isasymin A.\ |
358 b\ \isasymin\ B\ x) |
355 b\ \isasymin\ B\ x) |
359 \rulenamedx{INT_iff}% |
356 \rulenamedx{INT_iff}% |
360 \isanewline |
357 \isanewline |
1069 is perhaps the best-known concept defined as a |
1066 is perhaps the best-known concept defined as a |
1070 greatest fixed point. Exhibiting a bisimulation to prove the equality of |
1067 greatest fixed point. Exhibiting a bisimulation to prove the equality of |
1071 two agents in a process algebra is an example of coinduction. |
1068 two agents in a process algebra is an example of coinduction. |
1072 The coinduction rule can be strengthened in various ways. |
1069 The coinduction rule can be strengthened in various ways. |
1073 \index{fixed points|)} |
1070 \index{fixed points|)} |
|
1071 |
|
1072 %The section "Case Study: Verified Model Checking" is part of this chapter |
|
1073 \input{CTL/ctl} |
|
1074 \endinput |