src/HOL/Analysis/Determinants.thy
changeset 68074 8d50467f7555
parent 68073 fad29d2a17a5
child 68134 cfe796bf59da
equal deleted inserted replaced
68073:fad29d2a17a5 68074:8d50467f7555
   474 lemma det_row_span:
   474 lemma det_row_span:
   475   fixes A :: "'a::{field}^'n^'n"
   475   fixes A :: "'a::{field}^'n^'n"
   476   assumes x: "x \<in> vec.span {row j A |j. j \<noteq> i}"
   476   assumes x: "x \<in> vec.span {row j A |j. j \<noteq> i}"
   477   shows "det (\<chi> k. if k = i then row i A + x else row k A) = det A"
   477   shows "det (\<chi> k. if k = i then row i A + x else row k A) = det A"
   478   using x
   478   using x
   479 proof (induction rule: span_induct_alt)
   479 proof (induction rule: vec.span_induct_alt)
   480   case base
   480   case base
   481   {
   481   {
   482     fix k
   482     fix k
   483     have "(if k = i then row i A + 0 else row k A) = row k A"
   483     have "(if k = i then row i A + 0 else row k A) = row k A"
   484       by simp
   484       by simp
   842       by blast
   842       by blast
   843     have thr0: "- row i A = sum (\<lambda>j. (1/ c i) *s (c j *s row j A)) (?U - {i})"
   843     have thr0: "- row i A = sum (\<lambda>j. (1/ c i) *s (c j *s row j A)) (?U - {i})"
   844       unfolding sum_cmul
   844       unfolding sum_cmul
   845       using c ci   
   845       using c ci   
   846       by (auto simp add: sum.remove[OF fU iU] eq_vector_fraction_iff add_eq_0_iff)
   846       by (auto simp add: sum.remove[OF fU iU] eq_vector_fraction_iff add_eq_0_iff)
   847     have thr: "- row i A \<in> span {row j A| j. j \<noteq> i}"
   847     have thr: "- row i A \<in> vec.span {row j A| j. j \<noteq> i}"
   848       unfolding thr0
   848       unfolding thr0
   849       apply (rule vec.span_sum)
   849       apply (rule vec.span_sum)
   850       apply simp
   850       apply simp
   851       apply (rule span_mul)
   851       apply (rule vec.span_scale)
   852       apply (rule span_superset)
   852       apply (rule vec.span_base)
   853       apply auto
   853       apply auto
   854       done
   854       done
   855     let ?B = "(\<chi> k. if k = i then 0 else row k A) :: 'a^'n^'n"
   855     let ?B = "(\<chi> k. if k = i then 0 else row k A) :: 'a^'n^'n"
   856     have thrb: "row i ?B = 0" using iU by (vector row_def)
   856     have thrb: "row i ?B = 0" using iU by (vector row_def)
   857     have "det A = 0"
   857     have "det A = 0"