set - 简单基数证明
问题描述
所以我试图用基数来做一个简单的证明。看起来像:
⟦(A::nat set) ∩ B = {}⟧ ⟹ (card (A ∪ B) = card A + card B)
这似乎是有道理的,但由于某种原因blast
挂起,其余的证明者无法申请,并且sledgehammer
超时。我认为我对基数的了解是否存在差距?如果不是,我该如何证明这个引理?
提前致谢!
解决方案
我相信您试图证明的引理没有适当考虑无限集的情况。
在 Isabelle/HOL 中,无限基数用零表示。正如我们可以通过以下引理看到的。
lemma "¬(finite A) ⟹ card A = 0"
by simp
如果我们考虑无限集A
和一个元素的集合 的情况B
,那么假设交集A ∩ B
是一个空集。
我们剩下:
card (A ∪ B) = 0
因为他们的结合也将是无限的。
card A = 0
card B = 1
所以我们可以看到,在这种情况下,引理不成立。
可以通过断言两个集合都是有限的来纠正引理:
lemma
"⟦finite A; finite B; ((A::nat set) ∩ B) = {}⟧ ⟹ (card (A ∪ B) = card A + card B)"
by (simp add: card_Un_disjoint)
card_Un_disjoint
这与证明使用的基本相同:
lemma card_Un_disjoint: "finite A ⟹ finite B ⟹ A ∩ B = {} ⟹ card (A ∪ B) = card A + card B"
using card_Un_Int [of A B] by simp
推荐阅读
- spring - org.springframework.beans.factory.BeanCreationException:创建类路径资源中定义的名称为“securityInterceptor”的bean时出错
- python-3.x - 你如何打印在循环类中找到的变量
- laravel - Laravel,关系为空
- android - 边框半径在三星 Galaxy J7 中不起作用
- apache-spark - 使用 spark.read 读取大 csv 文件时是否需要手动重新分区
- macos - 收到错误“用户不在 sudoers 文件中。将报告此事件。”
- pandas - Dask Dataframe groupby 产生一个 pandas 系列,我该如何返回一个 dask 数据框?
- javascript - v8 NewInstance 内存泄漏
- python - 从数据框中部分删除索引值
- regex - 缺少尾部斜杠时语言 URL 重定向到原始路径