我试图在isar中写一个关于整数指数的简单证明。
我已经在评论区写了我想要的论点,但我很难搞清楚如何表达它。我一直在研究src/HOL/Int.thy
,但我要么找不到这些方面的示例证据,要么就不明白我在看什么。 :)
theory Exponents
imports Main
begin
lemma rMulComm: "(a*b ::int) = (b*a ::int)"
by (rule Groups.ab_semigroup_mult_class.mult.commute)
lemma rExpMul: "((a^b)^c ::int) = (a^(b*c) ::int)"
by (rule Int.zpower_zpower)
theorem HELP: "((a^b)^c ::int) = ((a^c)^b :: int)"
(* 0. (a^b)^c
1. a^(b*c) by rExpMul
2. a^(c*b) by rMulComm
3. (a^c)^b by rExpMul *)
end
这不是家庭作业,顺便说一下。我不在学校。 :)
更新:我的最终版本,基于亚历山大的答案,如下:
theorem "((a^b)^c ::int) = ((a^c)^b :: int)"
proof -
have "(a^b)^c = a^(b*c)" by (simp only: rExpMul)
hence " ... = a^(c*b)" by (simp only: rMulComm)
thus "(a^b)^c = (a^c)^b" by (simp only: rExpMul)
qed
答案 0 :(得分:3)
问题与定理b
以及引理c
中HELP
和rExpMul
的类型有关:运算符{{}的指数1}}是一个自然数。因此,为整数指定的^
不能用于证明该定理。在重新设置自然数后
rMulComm
证据立即进行:
lemma rMulComm: "(a * b :: nat) = (b * a :: nat)"
可以缩短为theorem HELP: "((a^b)^c ::int) = ((a^c)^b :: int)"
proof -
have "(a ^ b) ^ c = a ^ (b * c)" by (simp only: rExpMul)
also have "… = a ^ (c * b)" by (simp only: rMulComm)
finally show ?thesis by (simp only: rExpMul)
qed
。