Set 简单基数证明
所以我试图用基数来做一个简单的证明。它看起来像:Set 简单基数证明,set,isabelle,cardinality,Set,Isabelle,Cardinality,所以我试图用基数来做一个简单的证明。它看起来像: ⟦(A::nat set) ∩ B = {}⟧ ⟹ (card (A ∪ B) = card A + card B) 这似乎是有道理的,但由于某种原因,blast挂起,其余的验证程序无法应用,并且sledgehammer超时。我认为我对基数的了解有差距吗?如果不是,我如何证明这个引理 提前谢谢代码>,然后假定交集,∩ B是一个空集 我们只剩下: 卡(A)∪ B) =0,因为它们的并集也是无限的 卡A=0 卡B=1 所以我们可以看到,在这种情况下
⟦(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>代码>,然后假定交集,<代码>∩ B是一个空集
我们只剩下:卡(A)∪ B) =0
,因为它们的并集也是无限的
卡A=0
卡B=1
所以我们可以看到,在这种情况下,引理不成立
可以通过断言两个集合都是有限的来纠正引理:
lemma
"⟦finite A; finite B; ((A::nat set) ∩ B) = {}⟧ ⟹ (card (A ∪ B) = card A + card B)"
by (simp add: 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
我相信你要证明的引理没有恰当地考虑无限集的情况。 在Isabelle/HOL中,无限基数由零表示。我们可以通过下面的引理看到
lemma "¬(finite A) ⟹ card A = 0"
by simp
如果考虑无限集的情况,<代码> a <代码>,以及一组元素,<代码> b>代码>,然后假定交集,<代码>∩ B是一个空集
我们只剩下:卡(A)∪ B) =0
,因为它们的并集也是无限的
卡A=0
卡B=1
所以我们可以看到,在这种情况下,引理不成立
可以通过断言两个集合都是有限的来纠正引理:
lemma
"⟦finite A; finite B; ((A::nat set) ∩ B) = {}⟧ ⟹ (card (A ∪ B) = card A + card B)"
by (simp add: 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