2017-02-19 3 views
1

Wie kann ich in Isabelle die einfache lemma cd : "card {m∈ℕ. m <4} = 4" Aussage beweisen?Nachweis der Kardinalität eines endlichen Satzes

auto hilft mir nicht und seltsam sledgehammer mal aus (auch wenn ich verschiedene Werte auf der rechten Seite verwenden, wie 3 oder 5 sicher zu machen, dass ich nicht ein paar technische Details Isabelle übersehen, die vielleicht tatsächlich machen die Kardinalität zu einer dieser Zahlen auswerten.)

Ich habe den Eindruck, dass ich einige Lemmas (oder Inspiration) von Set_Interval.thy verwenden müssen, da dort Sätze dieser Art ausgiebig verwendet werden, aber bis jetzt habe ich es nicht geschafft Fortschritte machen.

+0

Bitte schreiben Sie auf math.stackexchange.com. – Jameson

+2

@Jameson Sie haben die Frage missverstanden - es geht nicht um Mathematik, sondern um "Formalisierung" von Mathe (in Isabelle), die sehr in den Bereich dieser Site gehört - es gibt viele ähnliche Fragen hier "in Isabelle" zu meiner Frage, wenn der Tag das nicht geklärt hat. – nicht

Antwort

0

Das Problem mit Ihrer Aussage ist, dass es nicht wahr ist. Betrachten Sie die Definition von n mit thm Nats_def: ℕ = range of_nat

of_nat der kanonischen Homomorphismus von dem naturals in ein semiring_1 ist, also einen Halbring das hat eine 1. Die Definition von n im Grunde sagt, dass n all Elemente des Rings besteht das sind die Form of_nat n für eine natürliche Zahl n. Wenn Sie sich die Art von {m∈ℕ. m <4} ansehen, werden Sie sehen, dass es 'a ist, oder wenn Sie eine declare [[show_sorts]] davor tun, 'a :: {ord, semiring_1}, d.h. ein Semiring mit einer 1 und irgendeine Art von Bestellung darauf. Diese Reihenfolge muss nicht mit der Ringstruktur kompatibel sein, noch muss es linear sein.

Sie können denken, dass die von Ihnen definierte Menge immer die Menge {0, 1, 2, 3} ist, aber da die Bestellung nicht mit der Ringstruktur kompatibel sein muss, ist dies nicht der Fall. Die Reihenfolge könnte trivial sein, so erhalten Sie alle natürliche Zahlen.

Außerdem, selbst wenn der Satz ist{0, 1, 2, 3}, ist seine Mächtigkeit nicht unbedingt 4. (man denke an dem Ring z/2ℤ - dann wird dieser Satz auf {0, 1} gleich sein, so dass die Mächtigkeit 2)

Sie werden wahrscheinlich den Typ Ihres Ausdrucks ein wenig einschränken wollen. Ich denke, die richtige Typenklasse ist hier linordered_semidom, d. H. Ein Semiring mit einer 1, keine Nullteiler und eine lineare Ordnung, die mit der Ringstruktur kompatibel ist. Dann können Sie tun:

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 

Der Beweis ist ein bisschen hässlich, wenn man bedenkt, wie intuitiv offensichtlich der Vorschlag ist; Die Lösung besteht hier nicht darin, die Menge, die Sie beschreiben wollen, auf diese relativ unbequeme Weise aufzuschreiben. Es braucht ein wenig Erfahrung zu wissen, wie man Dinge auf eine bequeme Art und Weise schreibt.

+0

Wow, ich hätte nie erwartet, dass 'm∈ℕ' vs' n :: nat' so einen großen Unterschied machen. Vielen Dank für das umfangreiche Antwort: – nicht

+0

Wie gesagt, HOL ist eine typisierte Logik.Dies ist für Mathematiker am Anfang oft verwirrend. Ähnliche Probleme ergeben sich oft auch in der traditionellen Mathematik: Wie viele Elemente hat zum Beispiel die Menge "[1; 10]"? Zehn? Oder unendlich viele. Hängt davon ab, ob Sie es als eine Reihe von Naturalien oder Real sehen. Ähnlich ist '(0; 1)' offen? Es ist als Teilmenge von ℝ, aber nicht als Teilmenge von ℂ. –

3

Ich wollte nur hinzufügen, dass, wenn Sie Ihr Lemma zu "card {m::nat. m < n} = n" umschreiben, hat Isabelle kein Problem, es zu beweisen.

* Bearbeitet, danke Manuel.

+0

Sie meinen wahrscheinlich, Karte {m :: nat. m

+0

Das ist sehr hilfreich, danke. – nicht