2014-09-25 9 views
9

Wie können wir die Definition/Typ für diese Bezeichnungen wie "+" oder "++" von List bekommen?Finden Sie die Definition und Notationen wie ++ in Coq

ich versucht habe: Search ++, Search "++", Search (++), SearchAbout ... und Check ++, Check "++", Check(++).

Keiner von ihnen jedoch arbeiten ...

SearchAbout "++" einige Informationen nicht zeigt, aber nicht die Definition von "++".

Antwort

12

Sie:

Locate "++". 

für Notationen Lookup.

Dann können Sie Print/Check den tatsächlichen Begriff bezeichnet werden.

6

Zusätzlich zur vorherigen Antwort können Sie Unfold "++" verwenden, um seine Definition zu entfalten, ohne sie zuerst zu finden.

Beispiel:

Coq < Goal forall A (l : list A), l ++ [] = []. 
1 subgoal 

    ============================ 
    forall (A : Type) (l : list A), l ++ [] = [] 

Unnamed_thm < unfold "++". 
1 subgoal 

    ============================ 
    forall (A : Type) (l : list A), 
    (fix app (l0 m : list A) {struct l0} : list A := 
     match l0 with 
     | [] => m 
     | a :: l1 => a :: app l1 m 
     end) l [] = [] 
+0

Nit: vermutlich gemeint Sie 'l ++ [] = l', nicht' l ++ [] = [] '? –

+0

@MarkDickinson das würde es beweisbar machen, ja. :) – sinan

Verwandte Themen