2016-07-28 19 views

Antwort

1

Nein, es gibt keine solche Funktionalität in Coq. Print wird nur den Körper des gegebenen Begriffs angezeigt werden, zum Beispiel:

Print plus. 
plus = 
fix plus (n m : nat) {struct n} : nat := 
    match n with 
    | 0 => m 
    | S p => S (plus p m) 
    end 
    : nat -> nat -> nat 

Argument scopes are [nat_scope nat_scope] 
1

Die folgende benutzerdefinierte Taktik genau dies tun kann, wenn sie von Umgebung, die Sie den Beweis Umwelt bedeuten.

Ltac printInType t := 
    match goal with 
    | [ H : t |- _ ] => 
     idtac H; fail 
    | _ => idtac 
    end 
. 

Theorem test : forall n m, n + m = m + n. 
Proof. 
    intros. 
    printInType nat. 
    (* prints in the Message window: 
    m 
    n 
    *) 
    printInType Set. 
    (* prints nothing 
    because nat for instance is not explicitely in the proof environment *) 

Was es tut genau das ist es durch den Beweis Umwelt geht und findet eine Hypothese oder eine Variable, die das Argument Typ t hat. idtac H druckt es, dann scheitert der Zweig wegen der fail Taktik. Jetzt versucht Coq wieder den gleichen Zweig auf einer anderen Hypothese/Variable, folglich werden alle solche Hypothesen/Variablen am Ende gedruckt. Jetzt ist der zweite Zweig | _ => idtac nur um sicherzustellen, dass die Taktik schließlich erfolgreich ist. Wenn dieser Zweig nicht vorhanden wäre, würde die Taktik mit einem Fehler fehlschlagen und beim Drucken des Fehlers würde Coq die zuvor gedruckten Informationen löschen.

+0

Meine Frage war nicht nur über die Beweisumgebung, aber das ist nützlich – jaam

3

Sie können die Suche nach einer Annäherung dazu verwenden. Sie tun können:

Search $Type. 

und bekommen Ergebnisse mit Typ $Type. Zum Beispiel

Search nat -(forall _, _). 

zeigt alle Bedingungen des Typs nat.

Search Set -(forall _, _). 

Zeigt alle nicht funktionalen Terme des Typs Set an. SearchPattern sollte ähnliche Funktionalität bieten, aber ich bin mir nicht sicher. Ssreflect Suche kann das und mehr tun.

+0

+ n für '- (...)' – jaam

+0

sorry @jaam, was meinst du? Das + n-Formular funktioniert nicht in meinem Setup. – ejgallego

+1

SO erlaubt keine Kommentare starten w/+1, also ... :) – jaam