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) |