src/ZF/Constructible/Internalize.thy
changeset 71417 89d05db6dd1f
parent 69593 3dda49e08b9d
child 76213 e44d86131648
equal deleted inserted replaced
71416:6a1c1d1ce6ae 71417:89d05db6dd1f
   341 
   341 
   342 lemma Member_iff_sats:
   342 lemma Member_iff_sats:
   343       "[| nth(i,env) = x; nth(j,env) = y; nth(k,env) = z;
   343       "[| nth(i,env) = x; nth(j,env) = y; nth(k,env) = z;
   344           i \<in> nat; j \<in> nat; k \<in> nat; env \<in> list(A)|]
   344           i \<in> nat; j \<in> nat; k \<in> nat; env \<in> list(A)|]
   345        ==> is_Member(##A, x, y, z) \<longleftrightarrow> sats(A, Member_fm(i,j,k), env)"
   345        ==> is_Member(##A, x, y, z) \<longleftrightarrow> sats(A, Member_fm(i,j,k), env)"
   346 by (simp add: sats_Member_fm)
   346 by (simp)
   347 
   347 
   348 theorem Member_reflection:
   348 theorem Member_reflection:
   349      "REFLECTS[\<lambda>x. is_Member(L,f(x),g(x),h(x)),
   349      "REFLECTS[\<lambda>x. is_Member(L,f(x),g(x),h(x)),
   350                \<lambda>i x. is_Member(##Lset(i),f(x),g(x),h(x))]"
   350                \<lambda>i x. is_Member(##Lset(i),f(x),g(x),h(x))]"
   351 apply (simp only: is_Member_def)
   351 apply (simp only: is_Member_def)
   374 
   374 
   375 lemma Equal_iff_sats:
   375 lemma Equal_iff_sats:
   376       "[| nth(i,env) = x; nth(j,env) = y; nth(k,env) = z;
   376       "[| nth(i,env) = x; nth(j,env) = y; nth(k,env) = z;
   377           i \<in> nat; j \<in> nat; k \<in> nat; env \<in> list(A)|]
   377           i \<in> nat; j \<in> nat; k \<in> nat; env \<in> list(A)|]
   378        ==> is_Equal(##A, x, y, z) \<longleftrightarrow> sats(A, Equal_fm(i,j,k), env)"
   378        ==> is_Equal(##A, x, y, z) \<longleftrightarrow> sats(A, Equal_fm(i,j,k), env)"
   379 by (simp add: sats_Equal_fm)
   379 by (simp)
   380 
   380 
   381 theorem Equal_reflection:
   381 theorem Equal_reflection:
   382      "REFLECTS[\<lambda>x. is_Equal(L,f(x),g(x),h(x)),
   382      "REFLECTS[\<lambda>x. is_Equal(L,f(x),g(x),h(x)),
   383                \<lambda>i x. is_Equal(##Lset(i),f(x),g(x),h(x))]"
   383                \<lambda>i x. is_Equal(##Lset(i),f(x),g(x),h(x))]"
   384 apply (simp only: is_Equal_def)
   384 apply (simp only: is_Equal_def)
   407 
   407 
   408 lemma Nand_iff_sats:
   408 lemma Nand_iff_sats:
   409       "[| nth(i,env) = x; nth(j,env) = y; nth(k,env) = z;
   409       "[| nth(i,env) = x; nth(j,env) = y; nth(k,env) = z;
   410           i \<in> nat; j \<in> nat; k \<in> nat; env \<in> list(A)|]
   410           i \<in> nat; j \<in> nat; k \<in> nat; env \<in> list(A)|]
   411        ==> is_Nand(##A, x, y, z) \<longleftrightarrow> sats(A, Nand_fm(i,j,k), env)"
   411        ==> is_Nand(##A, x, y, z) \<longleftrightarrow> sats(A, Nand_fm(i,j,k), env)"
   412 by (simp add: sats_Nand_fm)
   412 by (simp)
   413 
   413 
   414 theorem Nand_reflection:
   414 theorem Nand_reflection:
   415      "REFLECTS[\<lambda>x. is_Nand(L,f(x),g(x),h(x)),
   415      "REFLECTS[\<lambda>x. is_Nand(L,f(x),g(x),h(x)),
   416                \<lambda>i x. is_Nand(##Lset(i),f(x),g(x),h(x))]"
   416                \<lambda>i x. is_Nand(##Lset(i),f(x),g(x),h(x))]"
   417 apply (simp only: is_Nand_def)
   417 apply (simp only: is_Nand_def)
   438 
   438 
   439 lemma Forall_iff_sats:
   439 lemma Forall_iff_sats:
   440       "[| nth(i,env) = x; nth(j,env) = y; 
   440       "[| nth(i,env) = x; nth(j,env) = y; 
   441           i \<in> nat; j \<in> nat; env \<in> list(A)|]
   441           i \<in> nat; j \<in> nat; env \<in> list(A)|]
   442        ==> is_Forall(##A, x, y) \<longleftrightarrow> sats(A, Forall_fm(i,j), env)"
   442        ==> is_Forall(##A, x, y) \<longleftrightarrow> sats(A, Forall_fm(i,j), env)"
   443 by (simp add: sats_Forall_fm)
   443 by (simp)
   444 
   444 
   445 theorem Forall_reflection:
   445 theorem Forall_reflection:
   446      "REFLECTS[\<lambda>x. is_Forall(L,f(x),g(x)),
   446      "REFLECTS[\<lambda>x. is_Forall(L,f(x),g(x)),
   447                \<lambda>i x. is_Forall(##Lset(i),f(x),g(x))]"
   447                \<lambda>i x. is_Forall(##Lset(i),f(x),g(x))]"
   448 apply (simp only: is_Forall_def)
   448 apply (simp only: is_Forall_def)
   735 
   735 
   736 lemma cartprod_iff_sats:
   736 lemma cartprod_iff_sats:
   737       "[| nth(i,env) = x; nth(j,env) = y; nth(k,env) = z;
   737       "[| nth(i,env) = x; nth(j,env) = y; nth(k,env) = z;
   738           i \<in> nat; j \<in> nat; k \<in> nat; env \<in> list(A)|]
   738           i \<in> nat; j \<in> nat; k \<in> nat; env \<in> list(A)|]
   739        ==> cartprod(##A, x, y, z) \<longleftrightarrow> sats(A, cartprod_fm(i,j,k), env)"
   739        ==> cartprod(##A, x, y, z) \<longleftrightarrow> sats(A, cartprod_fm(i,j,k), env)"
   740 by (simp add: sats_cartprod_fm)
   740 by (simp)
   741 
   741 
   742 theorem cartprod_reflection:
   742 theorem cartprod_reflection:
   743      "REFLECTS[\<lambda>x. cartprod(L,f(x),g(x),h(x)),
   743      "REFLECTS[\<lambda>x. cartprod(L,f(x),g(x),h(x)),
   744                \<lambda>i x. cartprod(##Lset(i),f(x),g(x),h(x))]"
   744                \<lambda>i x. cartprod(##Lset(i),f(x),g(x),h(x))]"
   745 apply (simp only: cartprod_def)
   745 apply (simp only: cartprod_def)
  1041 
  1041 
  1042 lemma eclose_n_iff_sats:
  1042 lemma eclose_n_iff_sats:
  1043       "[| nth(i,env) = x; nth(j,env) = y; nth(k,env) = z;
  1043       "[| nth(i,env) = x; nth(j,env) = y; nth(k,env) = z;
  1044           i \<in> nat; j < length(env); k < length(env); env \<in> list(A)|]
  1044           i \<in> nat; j < length(env); k < length(env); env \<in> list(A)|]
  1045        ==> is_eclose_n(##A, x, y, z) \<longleftrightarrow> sats(A, eclose_n_fm(i,j,k), env)"
  1045        ==> is_eclose_n(##A, x, y, z) \<longleftrightarrow> sats(A, eclose_n_fm(i,j,k), env)"
  1046 by (simp add: sats_eclose_n_fm)
  1046 by (simp)
  1047 
  1047 
  1048 theorem eclose_n_reflection:
  1048 theorem eclose_n_reflection:
  1049      "REFLECTS[\<lambda>x. is_eclose_n(L, f(x), g(x), h(x)),  
  1049      "REFLECTS[\<lambda>x. is_eclose_n(L, f(x), g(x), h(x)),  
  1050                \<lambda>i x. is_eclose_n(##Lset(i), f(x), g(x), h(x))]"
  1050                \<lambda>i x. is_eclose_n(##Lset(i), f(x), g(x), h(x))]"
  1051 apply (simp only: is_eclose_n_def)
  1051 apply (simp only: is_eclose_n_def)
  1184 
  1184 
  1185 lemma list_N_iff_sats:
  1185 lemma list_N_iff_sats:
  1186       "[| nth(i,env) = x; nth(j,env) = y; nth(k,env) = z;
  1186       "[| nth(i,env) = x; nth(j,env) = y; nth(k,env) = z;
  1187           i \<in> nat; j < length(env); k < length(env); env \<in> list(A)|]
  1187           i \<in> nat; j < length(env); k < length(env); env \<in> list(A)|]
  1188        ==> is_list_N(##A, x, y, z) \<longleftrightarrow> sats(A, list_N_fm(i,j,k), env)"
  1188        ==> is_list_N(##A, x, y, z) \<longleftrightarrow> sats(A, list_N_fm(i,j,k), env)"
  1189 by (simp add: sats_list_N_fm)
  1189 by (simp)
  1190 
  1190 
  1191 theorem list_N_reflection:
  1191 theorem list_N_reflection:
  1192      "REFLECTS[\<lambda>x. is_list_N(L, f(x), g(x), h(x)),  
  1192      "REFLECTS[\<lambda>x. is_list_N(L, f(x), g(x), h(x)),  
  1193                \<lambda>i x. is_list_N(##Lset(i), f(x), g(x), h(x))]"
  1193                \<lambda>i x. is_list_N(##Lset(i), f(x), g(x), h(x))]"
  1194 apply (simp only: is_list_N_def)
  1194 apply (simp only: is_list_N_def)
  1334 
  1334 
  1335 lemma formula_N_iff_sats:
  1335 lemma formula_N_iff_sats:
  1336       "[| nth(i,env) = x; nth(j,env) = y; 
  1336       "[| nth(i,env) = x; nth(j,env) = y; 
  1337           i < length(env); j < length(env); env \<in> list(A)|]
  1337           i < length(env); j < length(env); env \<in> list(A)|]
  1338        ==> is_formula_N(##A, x, y) \<longleftrightarrow> sats(A, formula_N_fm(i,j), env)"
  1338        ==> is_formula_N(##A, x, y) \<longleftrightarrow> sats(A, formula_N_fm(i,j), env)"
  1339 by (simp add: sats_formula_N_fm)
  1339 by (simp)
  1340 
  1340 
  1341 theorem formula_N_reflection:
  1341 theorem formula_N_reflection:
  1342      "REFLECTS[\<lambda>x. is_formula_N(L, f(x), g(x)),  
  1342      "REFLECTS[\<lambda>x. is_formula_N(L, f(x), g(x)),  
  1343                \<lambda>i x. is_formula_N(##Lset(i), f(x), g(x))]"
  1343                \<lambda>i x. is_formula_N(##Lset(i), f(x), g(x))]"
  1344 apply (simp only: is_formula_N_def)
  1344 apply (simp only: is_formula_N_def)