あなたの声明の問題は、それが真実ではないということです。 thm Nats_def
でℕの定義を見てください:ℕ = range of_nat
of_nat
はナチュラルから正規の準同型であるsemiring_1
に、すなわちA半環ℕの定義は、基本的にℕがリングのすべての要素で構成されていることを述べている1を持っています自然数がn
の場合はof_nat n
の形式です。 {m∈ℕ. m <4}
のタイプを見ると、それは'a
であるか、declare [[show_sorts]]
の前に'a :: {ord, semiring_1}
と表示されます。つまり、1でセミリングして何らかの注文をしています。この注文は、ではなく、はリング構造と互換性がなければならず、線形でなければならない。
あなたが定義したセットは常に{0, 1, 2, 3}
と設定されていると思われるかもしれませんが、順序はリング構造と互換性がある必要はないため、そうではありません。順序は自明である可能性がありますので、すべて自然数を取得します。
また、セットが{0, 1, 2, 3}
であっても、その基数はないが、必ずしも4(リングℤ/2ℤ考える - そのセットが{0, 1}
に等しくなるので、基数は2である)である
式の種類を少し制限したいと思うでしょう。私は右のタイプのクラスはここではlinordered_semidom
であると考えます。つまり、ゼロ除数が1であるセミリングと、リング構造と互換性のある線形の順序付けです。そうすれば、次のことができます。
lemma cd : "card {m∈ℕ. m < (4 :: 'a :: linordered_semidom)} = 4"
proof -
have "{m∈ℕ. m < (4 :: 'a)} = {m∈ℕ. m < (of_nat 4 :: 'a)}" by simp
also have "… = of_nat ` {m. m < 4}"
unfolding Nats_def by (auto simp del: of_nat_numeral)
also have "card … = 4" by (auto simp: inj_on_def card_image)
finally show ?thesis .
qed
この証明は、直感的に明白な命題がどれほどのものかを考えると醜いです。ここでの解決策は、最初にこの比較的不都合な方法で説明したいセットを書き留めないことです。便利な方法で物事を書く方法を知るには、少し経験が必要です。
math.stackexchange.comに投稿してください。 – Jameson
@Jamesonあなたは疑問を誤解しています - これは数学についてではなく、このサイトの範囲に非常に多い数学の公式化についてです - ここには多くの類似の質問があります。 "Isabelleで"私の質問にタグがこれを明確にしていない場合 – nicht