Coq 如何明确地获取集合的基数
我试图创建一个类似于Coq 如何明确地获取集合的基数,coq,Coq,我试图创建一个类似于定义基数(a:employee U):nat.的函数,以便为每个集合获取其基数。我发现这是一个具有挑战性的问题,我想得到一些帮助 顺便说一下,这里有一个基数U A n,如果|A |=n,那么它就变成了真的。一个问题是你不能为任意集合定义这个函数:你需要假设A是有限的。例如,您可以在Coq.set.Finite\u set中使用Finite谓词。您可能会尝试使用Coq.set.finite\u set\u facts中的finite\u cardinal引理,它表示每个有限集都
定义基数(a:employee U):nat.
的函数,以便为每个集合获取其基数。我发现这是一个具有挑战性的问题,我想得到一些帮助
顺便说一下,这里有一个基数U A n,如果
|A |=n
,那么它就变成了真的。一个问题是你不能为任意集合定义这个函数:你需要假设A
是有限的。例如,您可以在Coq.set.Finite\u set
中使用Finite
谓词。您可能会尝试使用Coq.set.finite\u set\u facts
中的finite\u cardinal
引理,它表示每个有限集都有一些基数。这将要求您从存在性语句中提取一个自然数exists n,基数U a n
,这反过来需要某种形式的选择公理(例如Coq.Logic.ClassicalChoice
中的choice
)。但我需要一个exist
来提取nat。有什么方法可以得到它吗?没关系,我会用构造性的\u确定的\u描述
。@user5876164是的,那将是一个很好的方法。这一原则是一种较弱的选择形式,在这种情况下就足够了。