src/ZF/Constructible/L_axioms.thy
changeset 13655 95b95cdb4704
parent 13651 ac80e101306a
child 13807 a28a8fbc76d4
equal deleted inserted replaced
13654:b0d8bad27f42 13655:95b95cdb4704
   335 by blast
   335 by blast
   336 
   336 
   337 
   337 
   338 subsection{*Internalized Formulas for some Set-Theoretic Concepts*}
   338 subsection{*Internalized Formulas for some Set-Theoretic Concepts*}
   339 
   339 
   340 lemmas setclass_simps = rall_setclass_is_ball rex_setclass_is_bex
       
   341 
       
   342 subsubsection{*Some numbers to help write de Bruijn indices*}
   340 subsubsection{*Some numbers to help write de Bruijn indices*}
   343 
   341 
   344 syntax
   342 syntax
   345     "3" :: i   ("3")
   343     "3" :: i   ("3")
   346     "4" :: i   ("4")
   344     "4" :: i   ("4")
   381 by simp
   379 by simp
   382 
   380 
   383 theorem empty_reflection:
   381 theorem empty_reflection:
   384      "REFLECTS[\<lambda>x. empty(L,f(x)),
   382      "REFLECTS[\<lambda>x. empty(L,f(x)),
   385                \<lambda>i x. empty(**Lset(i),f(x))]"
   383                \<lambda>i x. empty(**Lset(i),f(x))]"
   386 apply (simp only: empty_def setclass_simps)
   384 apply (simp only: empty_def)
   387 apply (intro FOL_reflections)
   385 apply (intro FOL_reflections)
   388 done
   386 done
   389 
   387 
   390 text{*Not used.  But maybe useful?*}
   388 text{*Not used.  But maybe useful?*}
   391 lemma Transset_sats_empty_fm_eq_0:
   389 lemma Transset_sats_empty_fm_eq_0:
   465 by (simp add: sats_pair_fm)
   463 by (simp add: sats_pair_fm)
   466 
   464 
   467 theorem pair_reflection:
   465 theorem pair_reflection:
   468      "REFLECTS[\<lambda>x. pair(L,f(x),g(x),h(x)),
   466      "REFLECTS[\<lambda>x. pair(L,f(x),g(x),h(x)),
   469                \<lambda>i x. pair(**Lset(i),f(x),g(x),h(x))]"
   467                \<lambda>i x. pair(**Lset(i),f(x),g(x),h(x))]"
   470 apply (simp only: pair_def setclass_simps)
   468 apply (simp only: pair_def)
   471 apply (intro FOL_reflections upair_reflection)
   469 apply (intro FOL_reflections upair_reflection)
   472 done
   470 done
   473 
   471 
   474 
   472 
   475 subsubsection{*Binary Unions, Internalized*}
   473 subsubsection{*Binary Unions, Internalized*}
   496 by (simp add: sats_union_fm)
   494 by (simp add: sats_union_fm)
   497 
   495 
   498 theorem union_reflection:
   496 theorem union_reflection:
   499      "REFLECTS[\<lambda>x. union(L,f(x),g(x),h(x)),
   497      "REFLECTS[\<lambda>x. union(L,f(x),g(x),h(x)),
   500                \<lambda>i x. union(**Lset(i),f(x),g(x),h(x))]"
   498                \<lambda>i x. union(**Lset(i),f(x),g(x),h(x))]"
   501 apply (simp only: union_def setclass_simps)
   499 apply (simp only: union_def)
   502 apply (intro FOL_reflections)
   500 apply (intro FOL_reflections)
   503 done
   501 done
   504 
   502 
   505 
   503 
   506 subsubsection{*Set ``Cons,'' Internalized*}
   504 subsubsection{*Set ``Cons,'' Internalized*}
   528 by simp
   526 by simp
   529 
   527 
   530 theorem cons_reflection:
   528 theorem cons_reflection:
   531      "REFLECTS[\<lambda>x. is_cons(L,f(x),g(x),h(x)),
   529      "REFLECTS[\<lambda>x. is_cons(L,f(x),g(x),h(x)),
   532                \<lambda>i x. is_cons(**Lset(i),f(x),g(x),h(x))]"
   530                \<lambda>i x. is_cons(**Lset(i),f(x),g(x),h(x))]"
   533 apply (simp only: is_cons_def setclass_simps)
   531 apply (simp only: is_cons_def)
   534 apply (intro FOL_reflections upair_reflection union_reflection)
   532 apply (intro FOL_reflections upair_reflection union_reflection)
   535 done
   533 done
   536 
   534 
   537 
   535 
   538 subsubsection{*Successor Function, Internalized*}
   536 subsubsection{*Successor Function, Internalized*}
   557 by simp
   555 by simp
   558 
   556 
   559 theorem successor_reflection:
   557 theorem successor_reflection:
   560      "REFLECTS[\<lambda>x. successor(L,f(x),g(x)),
   558      "REFLECTS[\<lambda>x. successor(L,f(x),g(x)),
   561                \<lambda>i x. successor(**Lset(i),f(x),g(x))]"
   559                \<lambda>i x. successor(**Lset(i),f(x),g(x))]"
   562 apply (simp only: successor_def setclass_simps)
   560 apply (simp only: successor_def)
   563 apply (intro cons_reflection)
   561 apply (intro cons_reflection)
   564 done
   562 done
   565 
   563 
   566 
   564 
   567 subsubsection{*The Number 1, Internalized*}
   565 subsubsection{*The Number 1, Internalized*}
   586 by simp
   584 by simp
   587 
   585 
   588 theorem number1_reflection:
   586 theorem number1_reflection:
   589      "REFLECTS[\<lambda>x. number1(L,f(x)),
   587      "REFLECTS[\<lambda>x. number1(L,f(x)),
   590                \<lambda>i x. number1(**Lset(i),f(x))]"
   588                \<lambda>i x. number1(**Lset(i),f(x))]"
   591 apply (simp only: number1_def setclass_simps)
   589 apply (simp only: number1_def)
   592 apply (intro FOL_reflections empty_reflection successor_reflection)
   590 apply (intro FOL_reflections empty_reflection successor_reflection)
   593 done
   591 done
   594 
   592 
   595 
   593 
   596 subsubsection{*Big Union, Internalized*}
   594 subsubsection{*Big Union, Internalized*}
   618 by simp
   616 by simp
   619 
   617 
   620 theorem big_union_reflection:
   618 theorem big_union_reflection:
   621      "REFLECTS[\<lambda>x. big_union(L,f(x),g(x)),
   619      "REFLECTS[\<lambda>x. big_union(L,f(x),g(x)),
   622                \<lambda>i x. big_union(**Lset(i),f(x),g(x))]"
   620                \<lambda>i x. big_union(**Lset(i),f(x),g(x))]"
   623 apply (simp only: big_union_def setclass_simps)
   621 apply (simp only: big_union_def)
   624 apply (intro FOL_reflections)
   622 apply (intro FOL_reflections)
   625 done
   623 done
   626 
   624 
   627 
   625 
   628 subsubsection{*Variants of Satisfaction Definitions for Ordinals, etc.*}
   626 subsubsection{*Variants of Satisfaction Definitions for Ordinals, etc.*}
   639 by (simp add: subset_fm_def Relative.subset_def)
   637 by (simp add: subset_fm_def Relative.subset_def)
   640 
   638 
   641 theorem subset_reflection:
   639 theorem subset_reflection:
   642      "REFLECTS[\<lambda>x. subset(L,f(x),g(x)),
   640      "REFLECTS[\<lambda>x. subset(L,f(x),g(x)),
   643                \<lambda>i x. subset(**Lset(i),f(x),g(x))]"
   641                \<lambda>i x. subset(**Lset(i),f(x),g(x))]"
   644 apply (simp only: Relative.subset_def setclass_simps)
   642 apply (simp only: Relative.subset_def)
   645 apply (intro FOL_reflections)
   643 apply (intro FOL_reflections)
   646 done
   644 done
   647 
   645 
   648 lemma sats_transset_fm':
   646 lemma sats_transset_fm':
   649    "[|x \<in> nat; env \<in> list(A)|]
   647    "[|x \<in> nat; env \<in> list(A)|]
   651 by (simp add: sats_subset_fm' transset_fm_def transitive_set_def)
   649 by (simp add: sats_subset_fm' transset_fm_def transitive_set_def)
   652 
   650 
   653 theorem transitive_set_reflection:
   651 theorem transitive_set_reflection:
   654      "REFLECTS[\<lambda>x. transitive_set(L,f(x)),
   652      "REFLECTS[\<lambda>x. transitive_set(L,f(x)),
   655                \<lambda>i x. transitive_set(**Lset(i),f(x))]"
   653                \<lambda>i x. transitive_set(**Lset(i),f(x))]"
   656 apply (simp only: transitive_set_def setclass_simps)
   654 apply (simp only: transitive_set_def)
   657 apply (intro FOL_reflections subset_reflection)
   655 apply (intro FOL_reflections subset_reflection)
   658 done
   656 done
   659 
   657 
   660 lemma sats_ordinal_fm':
   658 lemma sats_ordinal_fm':
   661    "[|x \<in> nat; env \<in> list(A)|]
   659    "[|x \<in> nat; env \<in> list(A)|]
   667        ==> ordinal(**A, x) <-> sats(A, ordinal_fm(i), env)"
   665        ==> ordinal(**A, x) <-> sats(A, ordinal_fm(i), env)"
   668 by (simp add: sats_ordinal_fm')
   666 by (simp add: sats_ordinal_fm')
   669 
   667 
   670 theorem ordinal_reflection:
   668 theorem ordinal_reflection:
   671      "REFLECTS[\<lambda>x. ordinal(L,f(x)), \<lambda>i x. ordinal(**Lset(i),f(x))]"
   669      "REFLECTS[\<lambda>x. ordinal(L,f(x)), \<lambda>i x. ordinal(**Lset(i),f(x))]"
   672 apply (simp only: ordinal_def setclass_simps)
   670 apply (simp only: ordinal_def)
   673 apply (intro FOL_reflections transitive_set_reflection)
   671 apply (intro FOL_reflections transitive_set_reflection)
   674 done
   672 done
   675 
   673 
   676 
   674 
   677 subsubsection{*Membership Relation, Internalized*}
   675 subsubsection{*Membership Relation, Internalized*}
   701 by simp
   699 by simp
   702 
   700 
   703 theorem membership_reflection:
   701 theorem membership_reflection:
   704      "REFLECTS[\<lambda>x. membership(L,f(x),g(x)),
   702      "REFLECTS[\<lambda>x. membership(L,f(x),g(x)),
   705                \<lambda>i x. membership(**Lset(i),f(x),g(x))]"
   703                \<lambda>i x. membership(**Lset(i),f(x),g(x))]"
   706 apply (simp only: membership_def setclass_simps)
   704 apply (simp only: membership_def)
   707 apply (intro FOL_reflections pair_reflection)
   705 apply (intro FOL_reflections pair_reflection)
   708 done
   706 done
   709 
   707 
   710 subsubsection{*Predecessor Set, Internalized*}
   708 subsubsection{*Predecessor Set, Internalized*}
   711 
   709 
   735 by (simp add: sats_pred_set_fm)
   733 by (simp add: sats_pred_set_fm)
   736 
   734 
   737 theorem pred_set_reflection:
   735 theorem pred_set_reflection:
   738      "REFLECTS[\<lambda>x. pred_set(L,f(x),g(x),h(x),b(x)),
   736      "REFLECTS[\<lambda>x. pred_set(L,f(x),g(x),h(x),b(x)),
   739                \<lambda>i x. pred_set(**Lset(i),f(x),g(x),h(x),b(x))]"
   737                \<lambda>i x. pred_set(**Lset(i),f(x),g(x),h(x),b(x))]"
   740 apply (simp only: pred_set_def setclass_simps)
   738 apply (simp only: pred_set_def)
   741 apply (intro FOL_reflections pair_reflection)
   739 apply (intro FOL_reflections pair_reflection)
   742 done
   740 done
   743 
   741 
   744 
   742 
   745 
   743 
   770 by simp
   768 by simp
   771 
   769 
   772 theorem domain_reflection:
   770 theorem domain_reflection:
   773      "REFLECTS[\<lambda>x. is_domain(L,f(x),g(x)),
   771      "REFLECTS[\<lambda>x. is_domain(L,f(x),g(x)),
   774                \<lambda>i x. is_domain(**Lset(i),f(x),g(x))]"
   772                \<lambda>i x. is_domain(**Lset(i),f(x),g(x))]"
   775 apply (simp only: is_domain_def setclass_simps)
   773 apply (simp only: is_domain_def)
   776 apply (intro FOL_reflections pair_reflection)
   774 apply (intro FOL_reflections pair_reflection)
   777 done
   775 done
   778 
   776 
   779 
   777 
   780 subsubsection{*Range of a Relation, Internalized*}
   778 subsubsection{*Range of a Relation, Internalized*}
   804 by simp
   802 by simp
   805 
   803 
   806 theorem range_reflection:
   804 theorem range_reflection:
   807      "REFLECTS[\<lambda>x. is_range(L,f(x),g(x)),
   805      "REFLECTS[\<lambda>x. is_range(L,f(x),g(x)),
   808                \<lambda>i x. is_range(**Lset(i),f(x),g(x))]"
   806                \<lambda>i x. is_range(**Lset(i),f(x),g(x))]"
   809 apply (simp only: is_range_def setclass_simps)
   807 apply (simp only: is_range_def)
   810 apply (intro FOL_reflections pair_reflection)
   808 apply (intro FOL_reflections pair_reflection)
   811 done
   809 done
   812 
   810 
   813 
   811 
   814 subsubsection{*Field of a Relation, Internalized*}
   812 subsubsection{*Field of a Relation, Internalized*}
   839 by simp
   837 by simp
   840 
   838 
   841 theorem field_reflection:
   839 theorem field_reflection:
   842      "REFLECTS[\<lambda>x. is_field(L,f(x),g(x)),
   840      "REFLECTS[\<lambda>x. is_field(L,f(x),g(x)),
   843                \<lambda>i x. is_field(**Lset(i),f(x),g(x))]"
   841                \<lambda>i x. is_field(**Lset(i),f(x),g(x))]"
   844 apply (simp only: is_field_def setclass_simps)
   842 apply (simp only: is_field_def)
   845 apply (intro FOL_reflections domain_reflection range_reflection
   843 apply (intro FOL_reflections domain_reflection range_reflection
   846              union_reflection)
   844              union_reflection)
   847 done
   845 done
   848 
   846 
   849 
   847 
   875 by (simp add: sats_image_fm)
   873 by (simp add: sats_image_fm)
   876 
   874 
   877 theorem image_reflection:
   875 theorem image_reflection:
   878      "REFLECTS[\<lambda>x. image(L,f(x),g(x),h(x)),
   876      "REFLECTS[\<lambda>x. image(L,f(x),g(x),h(x)),
   879                \<lambda>i x. image(**Lset(i),f(x),g(x),h(x))]"
   877                \<lambda>i x. image(**Lset(i),f(x),g(x),h(x))]"
   880 apply (simp only: Relative.image_def setclass_simps)
   878 apply (simp only: Relative.image_def)
   881 apply (intro FOL_reflections pair_reflection)
   879 apply (intro FOL_reflections pair_reflection)
   882 done
   880 done
   883 
   881 
   884 
   882 
   885 subsubsection{*Pre-Image under a Relation, Internalized*}
   883 subsubsection{*Pre-Image under a Relation, Internalized*}
   910 by (simp add: sats_pre_image_fm)
   908 by (simp add: sats_pre_image_fm)
   911 
   909 
   912 theorem pre_image_reflection:
   910 theorem pre_image_reflection:
   913      "REFLECTS[\<lambda>x. pre_image(L,f(x),g(x),h(x)),
   911      "REFLECTS[\<lambda>x. pre_image(L,f(x),g(x),h(x)),
   914                \<lambda>i x. pre_image(**Lset(i),f(x),g(x),h(x))]"
   912                \<lambda>i x. pre_image(**Lset(i),f(x),g(x),h(x))]"
   915 apply (simp only: Relative.pre_image_def setclass_simps)
   913 apply (simp only: Relative.pre_image_def)
   916 apply (intro FOL_reflections pair_reflection)
   914 apply (intro FOL_reflections pair_reflection)
   917 done
   915 done
   918 
   916 
   919 
   917 
   920 subsubsection{*Function Application, Internalized*}
   918 subsubsection{*Function Application, Internalized*}
   945 by simp
   943 by simp
   946 
   944 
   947 theorem fun_apply_reflection:
   945 theorem fun_apply_reflection:
   948      "REFLECTS[\<lambda>x. fun_apply(L,f(x),g(x),h(x)),
   946      "REFLECTS[\<lambda>x. fun_apply(L,f(x),g(x),h(x)),
   949                \<lambda>i x. fun_apply(**Lset(i),f(x),g(x),h(x))]"
   947                \<lambda>i x. fun_apply(**Lset(i),f(x),g(x),h(x))]"
   950 apply (simp only: fun_apply_def setclass_simps)
   948 apply (simp only: fun_apply_def)
   951 apply (intro FOL_reflections upair_reflection image_reflection
   949 apply (intro FOL_reflections upair_reflection image_reflection
   952              big_union_reflection)
   950              big_union_reflection)
   953 done
   951 done
   954 
   952 
   955 
   953 
   977 by simp
   975 by simp
   978 
   976 
   979 theorem is_relation_reflection:
   977 theorem is_relation_reflection:
   980      "REFLECTS[\<lambda>x. is_relation(L,f(x)),
   978      "REFLECTS[\<lambda>x. is_relation(L,f(x)),
   981                \<lambda>i x. is_relation(**Lset(i),f(x))]"
   979                \<lambda>i x. is_relation(**Lset(i),f(x))]"
   982 apply (simp only: is_relation_def setclass_simps)
   980 apply (simp only: is_relation_def)
   983 apply (intro FOL_reflections pair_reflection)
   981 apply (intro FOL_reflections pair_reflection)
   984 done
   982 done
   985 
   983 
   986 
   984 
   987 subsubsection{*The Concept of Function, Internalized*}
   985 subsubsection{*The Concept of Function, Internalized*}
  1013 by simp
  1011 by simp
  1014 
  1012 
  1015 theorem is_function_reflection:
  1013 theorem is_function_reflection:
  1016      "REFLECTS[\<lambda>x. is_function(L,f(x)),
  1014      "REFLECTS[\<lambda>x. is_function(L,f(x)),
  1017                \<lambda>i x. is_function(**Lset(i),f(x))]"
  1015                \<lambda>i x. is_function(**Lset(i),f(x))]"
  1018 apply (simp only: is_function_def setclass_simps)
  1016 apply (simp only: is_function_def)
  1019 apply (intro FOL_reflections pair_reflection)
  1017 apply (intro FOL_reflections pair_reflection)
  1020 done
  1018 done
  1021 
  1019 
  1022 
  1020 
  1023 subsubsection{*Typed Functions, Internalized*}
  1021 subsubsection{*Typed Functions, Internalized*}
  1071 
  1069 
  1072 
  1070 
  1073 theorem typed_function_reflection:
  1071 theorem typed_function_reflection:
  1074      "REFLECTS[\<lambda>x. typed_function(L,f(x),g(x),h(x)),
  1072      "REFLECTS[\<lambda>x. typed_function(L,f(x),g(x),h(x)),
  1075                \<lambda>i x. typed_function(**Lset(i),f(x),g(x),h(x))]"
  1073                \<lambda>i x. typed_function(**Lset(i),f(x),g(x),h(x))]"
  1076 apply (simp only: typed_function_def setclass_simps)
  1074 apply (simp only: typed_function_def)
  1077 apply (intro FOL_reflections function_reflections)
  1075 apply (intro FOL_reflections function_reflections)
  1078 done
  1076 done
  1079 
  1077 
  1080 
  1078 
  1081 subsubsection{*Composition of Relations, Internalized*}
  1079 subsubsection{*Composition of Relations, Internalized*}
  1111 by simp
  1109 by simp
  1112 
  1110 
  1113 theorem composition_reflection:
  1111 theorem composition_reflection:
  1114      "REFLECTS[\<lambda>x. composition(L,f(x),g(x),h(x)),
  1112      "REFLECTS[\<lambda>x. composition(L,f(x),g(x),h(x)),
  1115                \<lambda>i x. composition(**Lset(i),f(x),g(x),h(x))]"
  1113                \<lambda>i x. composition(**Lset(i),f(x),g(x),h(x))]"
  1116 apply (simp only: composition_def setclass_simps)
  1114 apply (simp only: composition_def)
  1117 apply (intro FOL_reflections pair_reflection)
  1115 apply (intro FOL_reflections pair_reflection)
  1118 done
  1116 done
  1119 
  1117 
  1120 
  1118 
  1121 subsubsection{*Injections, Internalized*}
  1119 subsubsection{*Injections, Internalized*}
  1151 by simp
  1149 by simp
  1152 
  1150 
  1153 theorem injection_reflection:
  1151 theorem injection_reflection:
  1154      "REFLECTS[\<lambda>x. injection(L,f(x),g(x),h(x)),
  1152      "REFLECTS[\<lambda>x. injection(L,f(x),g(x),h(x)),
  1155                \<lambda>i x. injection(**Lset(i),f(x),g(x),h(x))]"
  1153                \<lambda>i x. injection(**Lset(i),f(x),g(x),h(x))]"
  1156 apply (simp only: injection_def setclass_simps)
  1154 apply (simp only: injection_def)
  1157 apply (intro FOL_reflections function_reflections typed_function_reflection)
  1155 apply (intro FOL_reflections function_reflections typed_function_reflection)
  1158 done
  1156 done
  1159 
  1157 
  1160 
  1158 
  1161 subsubsection{*Surjections, Internalized*}
  1159 subsubsection{*Surjections, Internalized*}
  1188 by simp
  1186 by simp
  1189 
  1187 
  1190 theorem surjection_reflection:
  1188 theorem surjection_reflection:
  1191      "REFLECTS[\<lambda>x. surjection(L,f(x),g(x),h(x)),
  1189      "REFLECTS[\<lambda>x. surjection(L,f(x),g(x),h(x)),
  1192                \<lambda>i x. surjection(**Lset(i),f(x),g(x),h(x))]"
  1190                \<lambda>i x. surjection(**Lset(i),f(x),g(x),h(x))]"
  1193 apply (simp only: surjection_def setclass_simps)
  1191 apply (simp only: surjection_def)
  1194 apply (intro FOL_reflections function_reflections typed_function_reflection)
  1192 apply (intro FOL_reflections function_reflections typed_function_reflection)
  1195 done
  1193 done
  1196 
  1194 
  1197 
  1195 
  1198 
  1196 
  1220 by simp
  1218 by simp
  1221 
  1219 
  1222 theorem bijection_reflection:
  1220 theorem bijection_reflection:
  1223      "REFLECTS[\<lambda>x. bijection(L,f(x),g(x),h(x)),
  1221      "REFLECTS[\<lambda>x. bijection(L,f(x),g(x),h(x)),
  1224                \<lambda>i x. bijection(**Lset(i),f(x),g(x),h(x))]"
  1222                \<lambda>i x. bijection(**Lset(i),f(x),g(x),h(x))]"
  1225 apply (simp only: bijection_def setclass_simps)
  1223 apply (simp only: bijection_def)
  1226 apply (intro And_reflection injection_reflection surjection_reflection)
  1224 apply (intro And_reflection injection_reflection surjection_reflection)
  1227 done
  1225 done
  1228 
  1226 
  1229 
  1227 
  1230 subsubsection{*Restriction of a Relation, Internalized*}
  1228 subsubsection{*Restriction of a Relation, Internalized*}
  1256 by simp
  1254 by simp
  1257 
  1255 
  1258 theorem restriction_reflection:
  1256 theorem restriction_reflection:
  1259      "REFLECTS[\<lambda>x. restriction(L,f(x),g(x),h(x)),
  1257      "REFLECTS[\<lambda>x. restriction(L,f(x),g(x),h(x)),
  1260                \<lambda>i x. restriction(**Lset(i),f(x),g(x),h(x))]"
  1258                \<lambda>i x. restriction(**Lset(i),f(x),g(x),h(x))]"
  1261 apply (simp only: restriction_def setclass_simps)
  1259 apply (simp only: restriction_def)
  1262 apply (intro FOL_reflections pair_reflection)
  1260 apply (intro FOL_reflections pair_reflection)
  1263 done
  1261 done
  1264 
  1262 
  1265 subsubsection{*Order-Isomorphisms, Internalized*}
  1263 subsubsection{*Order-Isomorphisms, Internalized*}
  1266 
  1264 
  1306 by simp
  1304 by simp
  1307 
  1305 
  1308 theorem order_isomorphism_reflection:
  1306 theorem order_isomorphism_reflection:
  1309      "REFLECTS[\<lambda>x. order_isomorphism(L,f(x),g(x),h(x),g'(x),h'(x)),
  1307      "REFLECTS[\<lambda>x. order_isomorphism(L,f(x),g(x),h(x),g'(x),h'(x)),
  1310                \<lambda>i x. order_isomorphism(**Lset(i),f(x),g(x),h(x),g'(x),h'(x))]"
  1308                \<lambda>i x. order_isomorphism(**Lset(i),f(x),g(x),h(x),g'(x),h'(x))]"
  1311 apply (simp only: order_isomorphism_def setclass_simps)
  1309 apply (simp only: order_isomorphism_def)
  1312 apply (intro FOL_reflections function_reflections bijection_reflection)
  1310 apply (intro FOL_reflections function_reflections bijection_reflection)
  1313 done
  1311 done
  1314 
  1312 
  1315 subsubsection{*Limit Ordinals, Internalized*}
  1313 subsubsection{*Limit Ordinals, Internalized*}
  1316 
  1314 
  1344 by simp
  1342 by simp
  1345 
  1343 
  1346 theorem limit_ordinal_reflection:
  1344 theorem limit_ordinal_reflection:
  1347      "REFLECTS[\<lambda>x. limit_ordinal(L,f(x)),
  1345      "REFLECTS[\<lambda>x. limit_ordinal(L,f(x)),
  1348                \<lambda>i x. limit_ordinal(**Lset(i),f(x))]"
  1346                \<lambda>i x. limit_ordinal(**Lset(i),f(x))]"
  1349 apply (simp only: limit_ordinal_def setclass_simps)
  1347 apply (simp only: limit_ordinal_def)
  1350 apply (intro FOL_reflections ordinal_reflection
  1348 apply (intro FOL_reflections ordinal_reflection
  1351              empty_reflection successor_reflection)
  1349              empty_reflection successor_reflection)
  1352 done
  1350 done
  1353 
  1351 
  1354 subsubsection{*Finite Ordinals: The Predicate ``Is A Natural Number''*}
  1352 subsubsection{*Finite Ordinals: The Predicate ``Is A Natural Number''*}
  1379 by simp
  1377 by simp
  1380 
  1378 
  1381 theorem finite_ordinal_reflection:
  1379 theorem finite_ordinal_reflection:
  1382      "REFLECTS[\<lambda>x. finite_ordinal(L,f(x)),
  1380      "REFLECTS[\<lambda>x. finite_ordinal(L,f(x)),
  1383                \<lambda>i x. finite_ordinal(**Lset(i),f(x))]"
  1381                \<lambda>i x. finite_ordinal(**Lset(i),f(x))]"
  1384 apply (simp only: finite_ordinal_def setclass_simps)
  1382 apply (simp only: finite_ordinal_def)
  1385 apply (intro FOL_reflections ordinal_reflection limit_ordinal_reflection)
  1383 apply (intro FOL_reflections ordinal_reflection limit_ordinal_reflection)
  1386 done
  1384 done
  1387 
  1385 
  1388 
  1386 
  1389 subsubsection{*Omega: The Set of Natural Numbers*}
  1387 subsubsection{*Omega: The Set of Natural Numbers*}
  1411 by simp
  1409 by simp
  1412 
  1410 
  1413 theorem omega_reflection:
  1411 theorem omega_reflection:
  1414      "REFLECTS[\<lambda>x. omega(L,f(x)),
  1412      "REFLECTS[\<lambda>x. omega(L,f(x)),
  1415                \<lambda>i x. omega(**Lset(i),f(x))]"
  1413                \<lambda>i x. omega(**Lset(i),f(x))]"
  1416 apply (simp only: omega_def setclass_simps)
  1414 apply (simp only: omega_def)
  1417 apply (intro FOL_reflections limit_ordinal_reflection)
  1415 apply (intro FOL_reflections limit_ordinal_reflection)
  1418 done
  1416 done
  1419 
  1417 
  1420 
  1418 
  1421 lemmas fun_plus_reflections =
  1419 lemmas fun_plus_reflections =