Wie kann ich meine benutzerdefinierte Notation in Coq deaktivieren?

8

Ich habe eine Notation definiert, um imperative Style-Programmierung durch

zu simulieren %Vor%

Danach werden jedoch alle Ausdrücke der Funktionsanwendung als '& gt; & gt;' Stil. Zum Beispiel kann ich im Beweismodus von Coq Toplevel

sehen %Vor%

während es eigentlich

sein sollte %Vor%

Warum überschreibt Coq aggressiv alle Ausdrucke, die in der Funktion Anwendung verwendet werden, in meine angepasste '& gt; & gt;' Repräsentation? Wie kann ich alles wieder normal wiederherstellen, ich meine ich will 'a & gt; & gt; b "wird als" b a "interpretiert und" list nat "wird nicht als" nat & gt; & gt; " Liste '?

Danke!

    
xywang 18.05.2015, 03:20
quelle

2 Antworten

7

Standardmäßig geht Coq davon aus, dass Sie beim Ausdrucken einer Notation das Pretty-Printing verwenden möchten. Wenn Sie möchten, dass die Notation niemals im Pretty-Printing erscheint, deklarieren Sie sie als "nur Parsing".

%Vor%

Wenn a >> b manchmal angezeigt werden soll, können Sie es auf einen Bereich beschränken und einen Typ diesem Bereich zuordnen. dann wird die Notation nur angewendet, wenn der Ergebnistyp von diesem Typ ist.

Es gibt keine Möglichkeit, Coq zu sagen, "benutze die Notation nur dort, wo ich sie in meinem Quellcode benutzt habe", weil ein mit einer Notation geschriebener Term genauso ist wie der anders geschriebene: die ursprünglich verwendete Notation nicht Teil des Begriffs.

    
Gilles 18.05.2015, 18:48
quelle
6

Sie könnten stattdessen eine Definition verwenden. Auf diese Weise würden nur Dinge, die Sie als "foldedBy" markieren, auf diese Weise verdinglicht. Andernfalls kann die Maschine nicht wissen, wann sie ein Leerzeichen im Vergleich zu "& gt; & gt;" verwenden soll ...

%Vor%     
gallais 18.05.2015 17:15
quelle

Tags und Links