Mercurial > hg > Members > atton > delta_monad
annotate agda/list.agda @ 31:33b386de3f56
Proof list-associative
author | Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 18 Oct 2014 13:38:29 +0900 |
parents | 5ba82f107a95 |
children | 743c05b98dad |
rev | line source |
---|---|
25 | 1 module list where |
2 | |
3 open import Relation.Binary.PropositionalEquality | |
4 open ≡-Reasoning | |
5 | |
6 infixr 40 _::_ | |
7 data List (A : Set) : Set where | |
8 [] : List A | |
9 _::_ : A -> List A -> List A | |
10 | |
11 | |
12 infixl 30 _++_ | |
13 _++_ : {A : Set} -> List A -> List A -> List A | |
14 [] ++ ys = ys | |
15 (x :: xs) ++ ys = x :: (xs ++ ys) | |
16 | |
26
5ba82f107a95
Define Similar in Agda
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
17 [[_]] : {A : Set} -> A -> List A |
5ba82f107a95
Define Similar in Agda
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
18 [[ x ]] = x :: [] |
5ba82f107a95
Define Similar in Agda
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
19 |
25 | 20 |
21 empty-append : {A : Set} -> (xs : List A) -> xs ++ [] ≡ [] ++ xs | |
22 empty-append [] = refl | |
23 empty-append (x :: xs) = begin | |
24 x :: (xs ++ []) | |
25 ≡⟨ cong (_::_ x) (empty-append xs) ⟩ | |
26 x :: xs | |
31
33b386de3f56
Proof list-associative
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
26
diff
changeset
|
27 ∎ |
33b386de3f56
Proof list-associative
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
26
diff
changeset
|
28 |
33b386de3f56
Proof list-associative
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
26
diff
changeset
|
29 |
33b386de3f56
Proof list-associative
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
26
diff
changeset
|
30 list-associative : {A : Set} -> (a b c : List A) -> (a ++ (b ++ c)) ≡ ((a ++ b) ++ c) |
33b386de3f56
Proof list-associative
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
26
diff
changeset
|
31 list-associative [] b c = refl |
33b386de3f56
Proof list-associative
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
26
diff
changeset
|
32 list-associative (x :: a) b c = cong (_::_ x) (list-associative a b c) |