2014-09-25 2 views
9

Как мы можем получить определение/тип для таких обозначений, как "+", или "++" из List?Найдите определение и обозначения как ++ в Coq

Я пробовал: Search ++, Search "++", Search (++), SearchAbout ... и Check ++, Check "++", Check(++).

Ни один из них не работает, однако ...

SearchAbout "++" действительно показывает некоторую информацию, но не определение "++".

ответ

12

ли:

Locate "++". 

для поиска по обозначениям.

Тогда вы можете указать Print/Check.

6

В дополнение к предыдущему ответу, вы можете использовать Unfold "++", чтобы развернуть его определение, не указав его первым.

Пример:

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

Нит: предположительно, вы имели в виду 'л ++ [] = L', а не' л ++ [] = [] '? –

+0

@MarkDickinson, который сделал бы это доказуемым, да. :) – sinan

Смежные вопросы