annotate paper/src/Eq.Agda @ 52:fb42478e4c96

Writing agda description
author atton <atton@cr.ie.u-ryukyu.ac.jp>
date Tue, 31 Jan 2017 16:41:36 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
52
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 module Eq where
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 open import Data.Nat
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 open import Data.Bool
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 open import Data.List
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 record Eq (A : Set) : Set where
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 field
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 _==_ : A -> A -> Bool
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 _==Nat_ : ℕ -> ℕ -> Bool
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 zero ==Nat zero = true
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 (suc n) ==Nat zero = false
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 zero ==Nat (suc m) = false
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 (suc n) ==Nat (suc m) = n ==Nat m
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 instance
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 _ : Eq ℕ
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 _ = record { _==_ = _==Nat_}
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 _||_ : Bool -> Bool -> Bool
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 true || _ = true
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 false || x = x
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 elem : {A : Set} {{eqA : Eq A}} → A → List A → Bool
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 elem {{eqA}} x (y ∷ xs) = (Eq._==_ eqA x y) || (elem {{eqA}} x xs)
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 elem x [] = false
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 listHas4 : Bool
fb42478e4c96 Writing agda description
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 listHas4 = elem 4 (3 ∷ 2 ∷ 5 ∷ 4 ∷ []) -- true