equal
deleted
inserted
replaced
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" |