equal
deleted
inserted
replaced
129 let ?U = "(UNIV :: 'n set)" |
129 let ?U = "(UNIV :: 'n set)" |
130 have fU: "finite ?U" by simp |
130 have fU: "finite ?U" by simp |
131 {fix p assume p: "p \<in> {p. p permutes ?U}" |
131 {fix p assume p: "p \<in> {p. p permutes ?U}" |
132 from p have pU: "p permutes ?U" by blast |
132 from p have pU: "p permutes ?U" by blast |
133 have sth: "sign (inv p) = sign p" |
133 have sth: "sign (inv p) = sign p" |
134 by (metis sign_inverse fU p mem_def Collect_def permutation_permutes) |
134 by (metis sign_inverse fU p mem_Collect_eq permutation_permutes) |
135 from permutes_inj[OF pU] |
135 from permutes_inj[OF pU] |
136 have pi: "inj_on p ?U" by (blast intro: subset_inj_on) |
136 have pi: "inj_on p ?U" by (blast intro: subset_inj_on) |
137 from permutes_image[OF pU] |
137 from permutes_image[OF pU] |
138 have "setprod (\<lambda>i. ?di (transpose A) i (inv p i)) ?U = setprod (\<lambda>i. ?di (transpose A) i (inv p i)) (p ` ?U)" by simp |
138 have "setprod (\<lambda>i. ?di (transpose A) i (inv p i)) ?U = setprod (\<lambda>i. ?di (transpose A) i (inv p i)) (p ` ?U)" by simp |
139 also have "\<dots> = setprod ((\<lambda>i. ?di (transpose A) i (inv p i)) o p) ?U" |
139 also have "\<dots> = setprod ((\<lambda>i. ?di (transpose A) i (inv p i)) o p) ?U" |