changeset 25:a5aadebc084d

Define List in Agda
author Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
date Tue, 07 Oct 2014 10:38:57 +0900
parents ae41becf41db
children 5ba82f107a95
files agda/list.agda
diffstat 1 files changed, 24 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agda/list.agda	Tue Oct 07 10:38:57 2014 +0900
@@ -0,0 +1,24 @@
+module list where
+
+open import Relation.Binary.PropositionalEquality
+open ≡-Reasoning
+
+infixr 40 _::_
+data  List (A : Set) : Set where
+   [] : List A
+   _::_ : A -> List A -> List A
+
+
+infixl 30 _++_
+_++_ : {A : Set} -> List A -> List A -> List A
+[]        ++ ys = ys
+(x :: xs) ++ ys = x :: (xs ++ ys)
+
+
+empty-append : {A : Set} -> (xs : List A) -> xs ++ [] ≡ [] ++ xs
+empty-append [] = refl
+empty-append (x :: xs) = begin
+    x :: (xs ++ [])
+  ≡⟨ cong (_::_ x) (empty-append xs) ⟩
+    x :: xs
+  ∎
\ No newline at end of file