equal
deleted
inserted
replaced
139 also have "\<dots> = setprod (\<lambda>i. ?di A i (p i)) ?U" |
139 also have "\<dots> = setprod (\<lambda>i. ?di A i (p i)) ?U" |
140 proof- |
140 proof- |
141 {fix i assume i: "i \<in> ?U" |
141 {fix i assume i: "i \<in> ?U" |
142 from i permutes_inv_o[OF pU] permutes_in_image[OF pU] |
142 from i permutes_inv_o[OF pU] permutes_in_image[OF pU] |
143 have "((\<lambda>i. ?di (transpose A) i (inv p i)) o p) i = ?di A i (p i)" |
143 have "((\<lambda>i. ?di (transpose A) i (inv p i)) o p) i = ?di A i (p i)" |
144 unfolding transpose_def by (simp add: expand_fun_eq)} |
144 unfolding transpose_def by (simp add: ext_iff)} |
145 then show "setprod ((\<lambda>i. ?di (transpose A) i (inv p i)) o p) ?U = setprod (\<lambda>i. ?di A i (p i)) ?U" by (auto intro: setprod_cong) |
145 then show "setprod ((\<lambda>i. ?di (transpose A) i (inv p i)) o p) ?U = setprod (\<lambda>i. ?di A i (p i)) ?U" by (auto intro: setprod_cong) |
146 qed |
146 qed |
147 finally have "of_int (sign (inv p)) * (setprod (\<lambda>i. ?di (transpose A) i (inv p i)) ?U) = of_int (sign p) * (setprod (\<lambda>i. ?di A i (p i)) ?U)" using sth |
147 finally have "of_int (sign (inv p)) * (setprod (\<lambda>i. ?di (transpose A) i (inv p i)) ?U) = of_int (sign p) * (setprod (\<lambda>i. ?di A i (p i)) ?U)" using sth |
148 by simp} |
148 by simp} |
149 then show ?thesis unfolding det_def apply (subst setsum_permutations_inverse) |
149 then show ?thesis unfolding det_def apply (subst setsum_permutations_inverse) |
205 have fU: "finite ?U" by simp |
205 have fU: "finite ?U" by simp |
206 from finite_permutations[OF fU] have fPU: "finite ?PU" . |
206 from finite_permutations[OF fU] have fPU: "finite ?PU" . |
207 have id0: "{id} \<subseteq> ?PU" by (auto simp add: permutes_id) |
207 have id0: "{id} \<subseteq> ?PU" by (auto simp add: permutes_id) |
208 {fix p assume p: "p \<in> ?PU - {id}" |
208 {fix p assume p: "p \<in> ?PU - {id}" |
209 then have "p \<noteq> id" by simp |
209 then have "p \<noteq> id" by simp |
210 then obtain i where i: "p i \<noteq> i" unfolding expand_fun_eq by auto |
210 then obtain i where i: "p i \<noteq> i" unfolding ext_iff by auto |
211 from ld [OF i [symmetric]] have ex:"\<exists>i \<in> ?U. A$i$p i = 0" by blast |
211 from ld [OF i [symmetric]] have ex:"\<exists>i \<in> ?U. A$i$p i = 0" by blast |
212 from setprod_zero [OF fU ex] have "?pp p = 0" by simp} |
212 from setprod_zero [OF fU ex] have "?pp p = 0" by simp} |
213 then have p0: "\<forall>p \<in> ?PU - {id}. ?pp p = 0" by blast |
213 then have p0: "\<forall>p \<in> ?PU - {id}. ?pp p = 0" by blast |
214 from setsum_mono_zero_cong_left[OF fPU id0 p0] show ?thesis |
214 from setsum_mono_zero_cong_left[OF fPU id0 p0] show ?thesis |
215 unfolding det_def by (simp add: sign_id) |
215 unfolding det_def by (simp add: sign_id) |