【发布时间】:2021-10-06 21:34:13
【问题描述】:
我想对一个整数变量使用归纳法,在正负方向上都做一个归纳步骤。
考虑以下定理(为了演示,不管它是否有意义):
theorem exmpl (x : ℤ) : (x = 5):=
begin
induction x,
-- inductive steps
end
在精益策略状态下产生:
case int.of_nat
x: ℕ
⊢ int.of_nat x = 5
case int.neg_succ_of_nat
x: ℕ
⊢ -[1+ x] = 5
合理地,归纳产生两种情况,一种用于正方向,一种用于负方向。但同样会发生的是,x 现在变成了一个自然数,并且在目标中它变成了int.of_nat x 和-[1+ x]。
由于我的归纳在整数内部进行,我会假设这些类型是它们的某种“子集”,可能比整数具有更多有用的属性。 Lean Reference 指出第二个似乎是“一个隐含的参数,应该由类型类解析来推断”,但没有进一步解释这意味着什么。
虽然这种转换对于某些应用程序可能是必要的,但在我的用例中,我只想继续使用整数,但还没有找到将目标转换回使用整数的好方法。
所以我的问题是:
-
x转换为哪些新类型,它们是什么意思,为什么转换有意义? - 而且,更重要的是:如何将目标改回可以再次使用整数的情况?
提供更多背景信息: 我是一名具有一定编程和数学知识的学生,但没有使用证明助手的背景。我最近通过Natural Number Game 发现了精益,现在正在尝试使用整数。
【问题讨论】:
标签: types type-conversion induction lean