src/HOL/Multivariate_Analysis/Determinants.thy
changeset 44260 7784fa3232ce
parent 44228 5f974bead436
child 44457 d366fa5551ef
equal deleted inserted replaced
44259:b922e91dd1d9 44260:7784fa3232ce
   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"