Matrix Isabelle矩阵算法:使用不同的符号在库中确定线性行集合
我最近开始使用伊莎贝尔定理证明器。当我想证明另一个引理时,我想使用一个不同于引理“det_linear_row_setsum”中使用的符号,它可以在HOL库中找到。更具体地说,我想使用“χI j表示法”而不是“χI”。一段时间以来,我一直在试图建立一个等价的表达式,但还没有弄明白Matrix Isabelle矩阵算法:使用不同的符号在库中确定线性行集合,matrix,isabelle,theorem-proving,Matrix,Isabelle,Theorem Proving,我最近开始使用伊莎贝尔定理证明器。当我想证明另一个引理时,我想使用一个不同于引理“det_linear_row_setsum”中使用的符号,它可以在HOL库中找到。更具体地说,我想使用“χI j表示法”而不是“χI”。一段时间以来,我一直在试图建立一个等价的表达式,但还没有弄明白 (* ORIGINAL lemma from library *) (* from HOL/Multivariate_Analysis/Determinants.thy *) lemma det_linear_row_
(* ORIGINAL lemma from library *)
(* from HOL/Multivariate_Analysis/Determinants.thy *)
lemma det_linear_row_setsum:
assumes fS: "finite S"
shows "det ((χ i. if i = k then setsum (a i) S else c i)::'a::comm_ring_1^'n^'n) = setsum (λj. det ((χ i. if i = k then a i j else c i)::'a^'n^'n)) S"
proof(induct rule: finite_induct[OF fS])
case 1 thus ?case apply simp unfolding setsum_empty det_row_0[of k] ..
next
case (2 x F)
then show ?case by (simp add: det_row_add cong del: if_weak_cong)
qed
首先,弄清楚原始引理是怎么说的:
a
是由i
和j
索引的向量族,c
是由i
索引的向量族。左侧矩阵的k
-第行是集合S
中所有j
范围内的向量akj
的总和。
其他行取自c
。在右边,矩阵是相同的,除了行k
现在是akj
,并且j
在外和中绑定
如您所知,向量族a
仅用于索引i=k
,因此您可以用%\uj替换a
。vec1$j
。矩阵A
产生行族,即c
变成%r。A$r
。然后,您只需利用(χn.x$n)=x
(定理向量逆
)并通过if
和集合推动$
。结果如下:
lemma mydet_linear_row_setsum:
assumes fS: "finite S"
fixes A :: "'a::comm_ring_1^'n^'n" and k :: "'n" and vec1 :: "'vec1 => 'a^'n"
shows "det (χ r c . if r = k then setsum (%j. vec1 j $ c) S else A $ r $ c) =
(setsum (%j. (det(χ r c . if r = k then vec1 j $ c else A $ r $ c))) S)"
为了证明这一点,您只需撤销扩展和推送,引理if_distrib
,cond_application_beta
,以及setsum_component
可能会帮助您这样做
lemma mydet_linear_row_setsum:
assumes fS: "finite S"
fixes A :: "'a::comm_ring_1^'n^'n" and k :: "'n" and vec1 :: "'vec1 => 'a^'n"
shows "det (χ r c . if r = k then setsum (%j. vec1 j $ c) S else A $ r $ c) =
(setsum (%j. (det(χ r c . if r = k then vec1 j $ c else A $ r $ c))) S)"