首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于集合内容的命题

关于集合内容的命题
EN

Stack Overflow用户
提问于 2017-08-05 10:24:34
回答 1查看 92关注 0票数 2

我刚开始用Coq。

我如何定义命题myProp,使得给定集HmyProp H是真当且仅当

特别是,如何表达H是命题中nat的子集这一事实?或者,我如何简单地声明,让H是nat的一个子集

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-05 12:29:19

你是在类型理论中,所以子集的概念并不完全以集合论的方式存在。

将某事物描述为nat的子集是通过将它描述为对自然数的一个命题来完成的。某种类型的nat -> Prop

H是nat的子集的句子是这样写的:

代码语言:javascript
运行
复制
Variable H : nat -> Prop.

现在,关于自然数的谓词只能应用于自然数。

如果您希望具有一致性,并讨论自然数的全部子集,则表示为(随机选择名称)。

代码语言:javascript
运行
复制
Definition all_nat n := True.

将注意力转到您的myProp谓词上,它将只应用于自然数上的谓词,因此您可以删除有关作为nat子集的部分,而nat的子集总是会满足的。

代码语言:javascript
运行
复制
Definition myProp (H : nat -> Prop) := forall x, H (2 * x) -> H x.

如果我真的想按照你最初的建议做一个描述,我会写

代码语言:javascript
运行
复制
Definition myProp' (H : nat -> Prop) :=
   (forall x, H x -> all_nat x) /\
   (forall x, H (2 * x) -> H x).

但是,在all_nat的情况下,连词的第一部分实际上是无用的。在其他情况下,如果您想要考虑另一个有意义的nat子集的所有子集,它可能会派上用场。

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

https://stackoverflow.com/questions/45520826

复制
相关文章

相似问题

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