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