Frage von KrasserTypxd, 82

Kann man ein Programm schreiben das einfache mathematische Sätze beweist?

z.b - die Summe von 3 aufeinanderfolgenede natürlichen Zahlen ist durch 3 teilbar

Expertenantwort
von Willibergi, Community-Experte für Mathematik, 28

Möglich ist das, aber kompliziert und zeitaufwändig.

LG Willibergi

Antwort
von vitus64, 53

Nein, da ein Programm immer nur eine endliche Anzahl von Summen aus drei aufeinander folgenden Zahlen berechnen kann, was nicht ausreichend ist

Kommentar von KrasserTypxd ,

Du hast meine Frage nicht verstanden.

Kommentar von NoHumanBeing ,

Das stimmt so nicht. Ein Programm kann (auf der symbolischen Ebene) den Ausdruck (n + (n + 1) + (n + 2)) / 3 umformen zu (3 * n + 3) / 3 und schließlich zu n + 1.

Klick: http://www.wolframalpha.com/input/?i=%28n+%2B+%28n+%2B+1%29+%2B+%28n+%2B+2%29%29...

(WolframAlpha ist im Grunde ein Server, auf dem Mathematica läuft.)

Wenn n eine natürliche Zahl ist, so auch n + 1.

Antwort
von chxxxxy, 47

ist sicher nicht einfach....du müsstest dann jedem Ausdruck einen bestimmten wert zuweisen bzw Wortkombinationen im vorhinein klar definieren. 

.....die if Struktur möchte ich mir gar nicht vorstellen :D

Kommentar von NoHumanBeing ,

Parsing macht man mittels Automaten, nicht mit verschachtelten If-Anweisungen.

So kann Dein C-Compiler beispielsweise Deinen Programmcode lesen. Der muss ihn ja auch "verstehen". Ist natürlich nicht "einfach". Man benötigt da schon umfassende Kenntnisse in Theoretischer Informatik und im Compilerbau. Solange die Sprache hinreichend formal ist, ist es aber zumindest möglich, dass ein Programm die Sprache "versteht".

Das grundsätzliche Problem ist allerdings, dass die Mathematik in sich nicht widerspruchsfrei ist. Der Unvollständigkeitssatz besagt, dass ein formales System entweder trivial oder unvollständig oder widersprüchlich ist. Er besagt weiterhin, dass man die Widerspruchsfreiheit eines Systems nicht in diesem System selbst beweisen kann. Du wirst also zwangsläufig entweder auf Sätze stoßen, die Du mit dem Formalismus nicht beweisen kannst oder aber auf einen Widerspruch im Formalismus selbst.

Antwort
von NoHumanBeing, 37

Es gibt "theorem prover", aber die sind komplex (schreibt man nicht mal eben selbst), erfordern eine spezielle Notation (also keine natürliche Sprache) als Input und können durch den Unvollständigkeitssatz auch nicht universell sein.

Antwort
von Roderic, 25

Ja, man kann.

Allerdings sind herkömmliche Programiersprachen, so wie du sie wahrscheinlich kennst, nicht sehr gut geeignet dafür. Es gibt neben dieser imperativen Programmierung auch die sogenannte

prädikative Programmierung.

Bekannteste Vertreter sind Prolog oder IQ.

Mit dieser Programmierlogik kann man in der Tat mathematische Sätze beweisen.

https://de.wikipedia.org/wiki/Logische\_Programmierung

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten