首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Coq中,“归纳”n、“m”和“归纳n”的区别是什么?

在Coq中,“归纳”n、“m”和“归纳n”的区别是什么?
EN

Stack Overflow用户
提问于 2021-11-07 20:08:22
回答 1查看 87关注 0票数 2

我很难让induction n, mnm创建归纳假说,但经过一些尝试,情况似乎并非如此。顺便说一句,我假设是forall (n m : nat)

那么,induction n, m induction n. induction minduction n; induction m的区别是什么呢?

以下是我目前的理解:

我知道;是一个组合子,所以a; b可以在a生成的每个子目标上回放b,所以induction n; induction m会为induction n的每个子目标生成m的诱导低幂,对吗?

从同样的意义上说,induction n. induction m只会为当前的目标产生感应功能低下,因此这似乎并不特别有用。

我希望induction n, m就像在这两个变量上一样,它为自然数生成四个目标,就像我预期的那样,但是我希望IHm在第四个目标上,但是它不是!我错过了什么?

--

还在对此进行研究,似乎IHm在第四个目标上被IHn合并了,这是正确的吗?

-编辑2

下面是一些基于加法交换性的例子

因此,首先是induction n, m版本:

代码语言:javascript
运行
复制
Example add_comm' : forall (n m : nat), n + m = m + n.
  intros. induction n, m; try auto using plus_n_O.

这解决了琐碎的3个第一个目标,给我留下了第四个目标

代码语言:javascript
运行
复制
n, m : nat
IHn : n + S m = S m + n

========================= (1 / 1)

S n + S m = S m + S n

现在是induction n; induction m版本:

代码语言:javascript
运行
复制
n, m : nat
IHn : n + S m = S m + n
IHm : n + m = m + n -> S n + m = m + S n

========================= (1 / 1)

S (n + S m) = S (m + S n)

因此,对于这个特殊情况,induction n, m更好,但我无法解释(也无法理解)它在做什么。

在手册中,,在归纳中的唯一情况是

变体induction term+, using qualid 这个语法用于大小写,qualid表示带有复杂谓词的归纳原则,因为函数或函数式可能产生的归纳原则。

但是我不使用using qualid,所以我不确定是否是这样

-编辑3 --

正如Andrey在其评论中所说的,using qualid变体是被触发的,但我不知道它所做的解释是什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-09 14:33:02

induction n, minduction n; destruct m是一样的。这样做的原因是,非常罕见的是,您实际上需要两个归纳假设,而在您需要的情况下,您可能不想要induction n; induction m,因为m的归纳假设并不适合于n

8.15的参考手册比8.14的参考手册要完整得多,您可以在主分支的当前文档中找到这个文档

如果没有提供induction_principle子句,这相当于对第一个induction_clause执行归纳,然后对任何后续子句执行析构操作。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69876145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档