我很难证明两套具有相同的基数。 以下所有集合都是有限的。
首先假设我们设置了(M :: b set)和函数foo ::“bset⇒bset⇒bool”
这样(foo A C = foo BC⟷A= B)并且M中的每个A实际上都有一个C,这样就是foo A C.
我试图显示该卡{S ∃A∈M。 (S = {C. foo A C})} =卡M. 对此的非正式证明是显而易见的,但我似乎无法找到有效的证据 在伊莎贝尔;既不是≤也不是≥。
答案 0 :(得分:3)
好的,所以第一步是你应该以更方便的方式编写这个集合理解{S. ∃A∈M. (S = {C. foo A C}) }
。第一步是{{C. foo A C} |A. A ∈ M}
,但我建议使用'set image'运算符:
lemma "{S. ∃A∈M. (S = {C. foo A C})} = (λA. {C. foo A C}) ` M" by blast
然后你可以简单地使用(λA. {C. foo A C})
是单射的事实和规则card_image
,它表示在内射函数下集合图像的基数与原始图像的基数相同设置:
lemma
assumes "⋀A B C. A ∈ M ⟹ B ∈ M ⟹ foo A C = foo B C ⟷ A = B"
shows "card {S. ∃A∈M. (S = {C. foo A C})} = card M"
proof -
have "{S. ∃A∈M. (S = {C. foo A C})} = (λA. {C. foo A C}) ` M"
by blast
also have "inj_on (λA. {C. foo A C}) M"
using assms by (auto simp: inj_on_def)
hence "card ((λA. {C. foo A C}) ` M) = card M"
by (rule card_image)
finally show ?thesis .
qed