2016-10-20 2 views
0

Es ist mein Verständnis, dass die folgende Codezeile fügt effektiv die Tatsache, dass r12 = r0 auf die „Umwelt“ unter dem Z3 versuchen, die Einschränkungen bei der Typprüfung zu erfüllen:Wirkung von isfun() auf Constraint Solving

prval() = is_fun (pf12, pf0)

Ist es falsch zu glauben, dass dies tatsächlich die Anzahl der Constraints reduziert, weil die Anwendung von r12 = r0 dem Löser den Nachweis ermöglichen kann, dass zwei zuvor eindeutige Constraints nun äquivalent sind? Und sobald wir die Anzahl der Beschränkungen ausreichend reduziert haben, wird die induktive Hypothese zusammen mit unseren Basisfällen den Rest der Lösung liefern.

Ich versuche, einen allgemeinen Eindruck davon zu bekommen, was hinter den Kulissen passiert, um zu verstehen, wie Beweise in funktionaler Programmierung erstellt werden können.

Antwort

1

Ich würde sagen, dass es eine zusätzliche Information hinzufügt, die der Constraint-Solver verwenden kann, um Constraints zu lösen (generiert in dem entsprechenden Bereich, in dem diese neue Information verfügbar ist).