Ausdrücken der Aussagen in formaler logischer Notation

Die Fragen stammen aus Mathematics for Computer Science von Albert R. Meyer, Eric Lehman und Frank Thomson Leighton.

Die Frage fordert uns auf, die folgenden Aussagen in formallogischer Notation zu schreiben:

(A) M ist ein Teiler von N .

(B) N ist eine Primzahl.

(C) N ist eine Primzahl.

Der Diskursbereich ist eine nichtnegative ganze Zahl, N { 0 } . Zusätzlich zu den Aussageoperatoren, Variablen und Quantoren können wir Prädikate definieren, indem wir Additions-, Multiplikations- und Gleichheitszeichen sowie nichtnegative Konstanten verwenden ( 0 , 1 , ) , aber keine Potenzierung (wie X j ).

MEINE LÖSUNGEN:

(A) DIV ( M , N ) ::= k : ( k M = N )

(B) PRIME ( N ) ::= k : [ DIV ( k , N ) ( k = 1 k = N ) ] .

(C) POWER PRIME ( N ) ::= M : PRIME ( M ) k : [ DIV ( k , N ) ( DIV ( M , k ) k = 1 ) ] .

Sind die Antworten richtig oder nicht? Und ich würde gerne wissen, ob jemand prägnantere und alternativere Lösungen für eine dieser Fragen anbieten kann. Ich würde mich über Ihre Antworten freuen.

Antworten (1)

Deine Lösung für (a) ist richtig. Beachten Sie, dass gemäß dieser Definition jede nichtnegative ganze Zahl ( 0 enthalten) ist ein Teiler von 0 , Und 0 kein Teiler einer anderen nichtnegativen Zahl ist.

Einige Lehrbücher schließen aus 0 aus der Definition von Divisor (siehe hier für eine kurze Begründung), in diesem Fall die korrekte Formalisierung von " M ist ein Teiler von N " wäre:

(A')   DIV ( M , N )   : M 0 N 0 k ( M k = N )

Die Wahl zwischen (a) und (a') hängt von der Definition des Divisors ab, die in Ihrem Lehrbuch oder Kurs verwendet wird. Die Art und Weise, wie Sie formalisieren DIV ( M , N ) wirkt sich auf die Art und Weise aus, wie Sie die anderen Anweisungen formalisieren.

Beachten Sie, dass M N ist nur eine Abkürzung für ¬ ( M = N ) , damit es in Ihrer Sprache ausgedrückt werden kann.


Eine nichtnegative Ganzzahl N ist prim, wenn ihre einzigen Teiler sind 1 Und N und es ist größer als 1 (siehe hier für eine kurze Diskussion über die Vorteile des Ausschließens 1 aus Primzahlen). Seit 0 hat viele andere Teiler als 1 Und 0 , es ist äquivalent zu sagen, dass eine nichtnegative ganze Zahl N ist prim, wenn ihre einzigen Teiler sind 1 Und N und es unterscheidet sich von 1 . Ihre Antwort ist also falsch, die korrekte Formalisierung von " N ist prim" ist:

(B)   PRIME ( N )   : N 1 k ( DIV ( k , N ) ( k = 1 k = N ) )

Die obige Formalisierung (b) geht davon aus, dass die Definition von Divisor beinhaltet 0 , dh DIV ( M , N ) ist wie in Ihrer Antwort (a) definiert. Wenn Ihre Definition des Divisors ausschließt 0 , dh DIV ( M , N ) wie in (a') definiert ist, dann DIV ( k , 0 ) ist für alle falsch k und so k ( DIV ( k , 0 ) ( k = 1 k = 0 ) ) ist vage wahr , daher ist es notwendig, explizit auszuschließen 0 aus der Definition der Primzahl. Daher, wenn DIV ( M , N ) wie in (a') definiert ist, dann ist die korrekte Formalisierung von " N ist prim" ist:

(B')   PRIME ( N )   : N 0 N 1 k ( DIV ( k , N ) ( k = 1 k = N ) )


Ihre Lösung für (c) ist richtig, wenn Sie (a) als Definition von verwenden DIV ( M , N ) .

Beachten Sie, dass 0 ist keine Potenz irgendeiner Primzahl.

Wenn Ihre Definition des Divisors ausschließt 0 , dh DIV ( M , N ) wie in (a') definiert ist, dann DIV ( k , 0 ) ist für alle falsch k und so k ( DIV ( k , 0 ) ( DIV ( M , k ) k = 1 ) ) ist vage wahr , daher ist es notwendig, explizit auszuschließen 0 aus der Definition der Potenz der Primzahl. Daher, wenn DIV ( M , N ) wie in (a') definiert ist, dann ist die korrekte Formalisierung von " N ist Potenz einer Primzahl" ist:

(C')   POWER_PRIME ( N )   :

N 0 M ( PRIME ( M ) k ( DIV ( k , N ) ( DIV ( M , k ) k = 1 ) ) ) .