Nein, in diesem Fall hängen Prädikativität und Monotonie nicht eng zusammen.
Die Positivitätsprüfung in Coq / Adga dient dazu, sicherzustellen, dass Sie ungefähr den kleinsten Fixpunkt einer monotonen Sache nehmen.
So stellen Sie sich induktive Typen in Form von Gittern und monotonen Operatoren vor. Erinnern wir uns, dass das Knaster-Tarski-Theorem besagt, dass auf einem vollständigen Gitter jeder monotone Operator einen kleinsten festen Punkt . Als nächstes können wir uns die Typen in einer Typentheorie als ein Gitter unter Beweisbarkeit vorstellen. Das heißt, Typ liegt unter wenn die Wahrheit von die von . Nun möchten wir einen monotonen Operator für Typen nehmen und Knaster-Tarski verwenden, um eine Interpretation des kleinsten Fixpunkts dieses Operators . f : L → L μ ( f ) S T S T F μ ( F )Lf:L→Lμ(f)STSTFμ(F)
Typen in der Typentheorie sind jedoch nicht nur ein Gitter: Sie bilden eine Kategorie. Das heißt, da zwei Typen und gibt es möglicherweise viele Möglichkeiten für unter seinen , mit einer Art und Weise für jeden Beweis . Ein Typoperator auch bei diesen Beweisen etwas Vernünftiges tun. Die entsprechende Verallgemeinerung der Monotonie ist Funktorialität . Das heißt, wir möchten, dass einen Operator für Typen und auch eine Aktion für Beweise hat, so dass, wenn , dann .T S T e : S → T F F e : S → T F ( e ) : F ( S ) → F ( T )STSTe:S→TFFe:S→TF(e):F(S)→F(T)
Nun wird die Funktionalität durch Summen und Produkte bewahrt (dh wenn und Endofunktoren für Typen sind, dann sind und (punktweise) auch Funktoren für Typen (vorausgesetzt, wir haben Summen und Produkte in unserer Algebra) Es wird jedoch nicht vom Funktionsraum beibehalten, da der Exponential-Bifunktor in seinem linken Argument kontravariant ist. Wenn Sie also eine induktive Typdefinition schreiben, definieren Sie einen Funktor, der einen kleinsten festen Punkt annimmt Um sicherzustellen, dass es sich tatsächlich um einen Funktor handelt, müssen Sie Vorkommen des rekursiven Parameters auf der linken Seite von Funktionsräumen ausschließen - daher die Positivitätsprüfung.G F + G F × G F → GFGF+GF×GF→G
Impredikativität (im Sinne von System F) wird generell vermieden, da es sich um ein Prinzip handelt, das Sie zwingt, zwischen klassischer Logik und satztheoretischen Modellen zu wählen. Sie können Typen in der klassischen Mengenlehre nicht als Mengen interpretieren, wenn Sie über eine Indexierung im F-Stil verfügen. (Siehe Reynolds 'berühmter "Polymorphismus ist nicht satztheoretisch".)
Kategorisch bedingt besagt die Impredikativität im F-Stil, dass die Kategorie von Typen und Begriffen eine kleine vollständige Kategorie bildet (dh, homs und objects sind beide Mengen und Grenzen aller kleinen Diagramme existieren). Klassischerweise erzwingt dies, dass eine Kategorie ein Poset ist. Viele Konstruktivisten sind konstruktiv, weil sie wollen, dass ihre Theoreme mehr Systeme als nur klassische Logik enthalten, und deshalb nichts beweisen wollen, was klassisch falsch wäre. Daher sind sie misstrauisch gegenüber dem anmaßenden Polymorphismus.
Mit Polymorphismus können Sie jedoch viele Bedingungen angeben, die Ihrer Typentheorie nach klassisch "groß" sind - und Positivität ist eine davon! Ein Typoperator ist funktional, wenn Sie einen polymorphen Term erzeugen können:F
Fmap:∀α,β.(α→β)→(F(α)→F(β))
Sehen Sie, wie dies Funktionalität entspricht? IMO, dies wäre eine sehr schöne Option in Coq, da Sie damit viel einfacher generische Programme erstellen könnten. Die syntaktische Natur der Positivitätsprüfung ist ein großes Hindernis für die generische Programmierung, und ich würde gerne die Möglichkeit klassischer Axiome gegen flexiblere Funktionsprogramme eintauschen.
EDIT: Die Frage, die Sie nach dem Unterschied zwischen Prop und Set stellen, ergibt sich aus der Tatsache, dass die Coq-Entwickler Ihnen erlauben möchten, über Coq-Theoreme in naiven satztheoretischen Begriffen nachzudenken, wenn Sie möchten, ohne Sie dazu zu zwingen . Technisch gesehen teilen sie Prop und Set auf und verhindern dann, dass Sets vom rechnerischen Inhalt von Prop abhängen.
So können Sie Prop als Wahrheitswerte in ZFC interpretieren, bei denen es sich um die booleschen Werte true und false handelt. In dieser Welt sind alle Beweise von Sätzen gleich, und so sollte es offensichtlich nicht möglich sein, auf den Beweis eines Satzes zu verzweigen. Das Verbot von Sätzen in Abhängigkeit vom Recheninhalt von Proofs of Prop ist also durchaus sinnvoll. Darüber hinaus ist das 2-Element-Boolesche Gitter offensichtlich ein vollständiges Gitter, so dass es eine aussagekräftige Indizierung unterstützen sollte, da willkürlich festgelegte Übereinstimmungen existieren. Die Einschränkung der Prädikativität für Mengen ergibt sich aus der Tatsache (oben erwähnt), dass die Indexierung im F-Stil in klassischen satztheoretischen Modellen degeneriert ist.
Coq hat andere Modelle (es ist konstruktive Logik!), Aber der Punkt ist, dass es von der Stange nie beweisen wird, dass ein klassischer Mathematiker verwirrt wäre.