Coq

2014-09-25 21 views
9

'daki gibi tanımı ve gösterimleri bulun "+" veya "++""++"/List bu gibi tanımlamalar için nasıl tanım/tür alabilirim?Coq

denedim

: Search ++, Search "++", Search (++), SearchAbout ... ve Check ++, Check "++", Check(++). Bunlardan

Yok

SearchAbout "++"

biraz bilgi gösterir ... Ancak çalışır, ancak "++" değil tanım.

cevap

12

yapın:

Locate "++". 

gösterimler için arama belirleyin.

Sonra/Check gerçek süreli Print ifade ediliyor olabilir.

6

önceki cevaba ek olarak, önce onu bulmak olmadan tanım var açılmak Unfold "++" kullanabilirsiniz.

Örnek:

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: muhtemelen Eğer L ++ [] = L' değil, 'L ++ [] = []' 'anlamına? evet, kanıtlanabilir yapacak –

+0

@MarkDickinson. :) – sinan