21 (* Ordinal Union *) |
21 (* Ordinal Union *) |
22 OUnion :: "[i, i => i] => i" where |
22 OUnion :: "[i, i => i] => i" where |
23 "OUnion(i,B) == {z: \<Union>x\<in>i. B(x). Ord(i)}" |
23 "OUnion(i,B) == {z: \<Union>x\<in>i. B(x). Ord(i)}" |
24 |
24 |
25 syntax |
25 syntax |
26 "_oall" :: "[idt, i, o] => o" ("(3\<forall>_<_./ _)" 10) |
26 "_oall" :: "[idt, i, o] => o" (\<open>(3\<forall>_<_./ _)\<close> 10) |
27 "_oex" :: "[idt, i, o] => o" ("(3\<exists>_<_./ _)" 10) |
27 "_oex" :: "[idt, i, o] => o" (\<open>(3\<exists>_<_./ _)\<close> 10) |
28 "_OUNION" :: "[idt, i, i] => i" ("(3\<Union>_<_./ _)" 10) |
28 "_OUNION" :: "[idt, i, i] => i" (\<open>(3\<Union>_<_./ _)\<close> 10) |
29 translations |
29 translations |
30 "\<forall>x<a. P" \<rightleftharpoons> "CONST oall(a, \<lambda>x. P)" |
30 "\<forall>x<a. P" \<rightleftharpoons> "CONST oall(a, \<lambda>x. P)" |
31 "\<exists>x<a. P" \<rightleftharpoons> "CONST oex(a, \<lambda>x. P)" |
31 "\<exists>x<a. P" \<rightleftharpoons> "CONST oex(a, \<lambda>x. P)" |
32 "\<Union>x<a. B" \<rightleftharpoons> "CONST OUnion(a, \<lambda>x. B)" |
32 "\<Union>x<a. B" \<rightleftharpoons> "CONST OUnion(a, \<lambda>x. B)" |
33 |
33 |
190 definition |
190 definition |
191 "rex" :: "[i=>o, i=>o] => o" where |
191 "rex" :: "[i=>o, i=>o] => o" where |
192 "rex(M, P) == \<exists>x. M(x) & P(x)" |
192 "rex(M, P) == \<exists>x. M(x) & P(x)" |
193 |
193 |
194 syntax |
194 syntax |
195 "_rall" :: "[pttrn, i=>o, o] => o" ("(3\<forall>_[_]./ _)" 10) |
195 "_rall" :: "[pttrn, i=>o, o] => o" (\<open>(3\<forall>_[_]./ _)\<close> 10) |
196 "_rex" :: "[pttrn, i=>o, o] => o" ("(3\<exists>_[_]./ _)" 10) |
196 "_rex" :: "[pttrn, i=>o, o] => o" (\<open>(3\<exists>_[_]./ _)\<close> 10) |
197 translations |
197 translations |
198 "\<forall>x[M]. P" \<rightleftharpoons> "CONST rall(M, \<lambda>x. P)" |
198 "\<forall>x[M]. P" \<rightleftharpoons> "CONST rall(M, \<lambda>x. P)" |
199 "\<exists>x[M]. P" \<rightleftharpoons> "CONST rex(M, \<lambda>x. P)" |
199 "\<exists>x[M]. P" \<rightleftharpoons> "CONST rex(M, \<lambda>x. P)" |
200 |
200 |
201 |
201 |
321 |
321 |
322 |
322 |
323 subsubsection\<open>Sets as Classes\<close> |
323 subsubsection\<open>Sets as Classes\<close> |
324 |
324 |
325 definition |
325 definition |
326 setclass :: "[i,i] => o" ("##_" [40] 40) where |
326 setclass :: "[i,i] => o" (\<open>##_\<close> [40] 40) where |
327 "setclass(A) == %x. x \<in> A" |
327 "setclass(A) == %x. x \<in> A" |
328 |
328 |
329 lemma setclass_iff [simp]: "setclass(A,x) <-> x \<in> A" |
329 lemma setclass_iff [simp]: "setclass(A,x) <-> x \<in> A" |
330 by (simp add: setclass_def) |
330 by (simp add: setclass_def) |
331 |
331 |