400 |
400 |
401 lemma PiE_insert_eq: "PiE (insert x S) T = (\<lambda>(y, g). g(x := y)) ` (T x \<times> PiE S T)" |
401 lemma PiE_insert_eq: "PiE (insert x S) T = (\<lambda>(y, g). g(x := y)) ` (T x \<times> PiE S T)" |
402 proof - |
402 proof - |
403 { |
403 { |
404 fix f assume "f \<in> PiE (insert x S) T" "x \<notin> S" |
404 fix f assume "f \<in> PiE (insert x S) T" "x \<notin> S" |
405 with assms have "f \<in> (\<lambda>(y, g). g(x := y)) ` (T x \<times> PiE S T)" |
405 then have "f \<in> (\<lambda>(y, g). g(x := y)) ` (T x \<times> PiE S T)" |
406 by (auto intro!: image_eqI[where x="(f x, f(x := undefined))"] intro: fun_upd_in_PiE PiE_mem) |
406 by (auto intro!: image_eqI[where x="(f x, f(x := undefined))"] intro: fun_upd_in_PiE PiE_mem) |
407 } |
407 } |
408 moreover |
408 moreover |
409 { |
409 { |
410 fix f assume "f \<in> PiE (insert x S) T" "x \<in> S" |
410 fix f assume "f \<in> PiE (insert x S) T" "x \<in> S" |
411 with assms have "f \<in> (\<lambda>(y, g). g(x := y)) ` (T x \<times> PiE S T)" |
411 then have "f \<in> (\<lambda>(y, g). g(x := y)) ` (T x \<times> PiE S T)" |
412 by (auto intro!: image_eqI[where x="(f x, f)"] intro: fun_upd_in_PiE PiE_mem simp: insert_absorb) |
412 by (auto intro!: image_eqI[where x="(f x, f)"] intro: fun_upd_in_PiE PiE_mem simp: insert_absorb) |
413 } |
413 } |
414 ultimately show ?thesis |
414 ultimately show ?thesis |
415 using assms by (auto intro: PiE_fun_upd) |
415 by (auto intro: PiE_fun_upd) |
416 qed |
416 qed |
417 |
417 |
418 lemma PiE_Int: "Pi\<^sub>E I A \<inter> Pi\<^sub>E I B = Pi\<^sub>E I (\<lambda>x. A x \<inter> B x)" |
418 lemma PiE_Int: "Pi\<^sub>E I A \<inter> Pi\<^sub>E I B = Pi\<^sub>E I (\<lambda>x. A x \<inter> B x)" |
419 by (auto simp: PiE_def) |
419 by (auto simp: PiE_def) |
420 |
420 |