我在一个总和中有一个if语句的问题。
我在if statements in isabelle的另一个问题中检查了解决方案 但它没有帮助。
以下是一个例子:
theorem dummy:
fixes a :: "('a::comm_ring_1 poly)"
and B :: "(('a::comm_ring_1 poly)^'n∷finite^'n∷finite)"
shows "1=1"
proof-
{ fix i j
have "(∑k∈UNIV. if i = k then (B $ i $ j) else 0) = B $ i $ j" sorry
}
如何证明“对不起”的引理?
答案 0 :(得分:2)
您正在寻找的定理是setsum_delta
:
finite ?S ⟹
(∑k∈?S. if k = ?a then ?b k else 0) =
(if ?a ∈ ?S then ?b ?a else 0)
如果你在总和中写k = i
而不是i = k
,它甚至可以自动解决:
have "(∑k∈UNIV. if k = i then (B $ i $ j) else 0) = B $ i $ j"
by (simp add: setsum_delta)
find_theorems
命令对此非常有用。如果您输入
find_theorems "∑_∈_. if _ then _ else _"
你得到setsum_delta
作为其中一个匹配项 - 这就是我找到它的方式。