annotate utilities.agda @ 12:247ce3e67b5f

add utilitites
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 15 Dec 2018 17:24:35 +0900
parents
children 8d546766a9a8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 module utilities where
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 open import Function
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 open import Data.Nat
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 open import Data.Bool hiding ( _≟_ )
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 open import Level renaming ( suc to succ ; zero to Zero )
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 open import Relation.Nullary using (¬_; Dec; yes; no)
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 open import Relation.Binary.PropositionalEquality
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 record _/\_ {n : Level } (a : Set n) (b : Set n): Set n where
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 field
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 pi1 : a
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 pi2 : b
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 open _/\_
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 _-_ : ℕ → ℕ → ℕ
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 x - zero = x
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 zero - _ = zero
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 (suc x) - (suc y) = x - y
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 +zero : { y : ℕ } → y + zero ≡ y
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 +zero {zero} = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 +zero {suc y} = cong ( λ x → suc x ) ( +zero {y} )
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 +-sym : { x y : ℕ } → x + y ≡ y + x
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 +-sym {zero} {zero} = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 +-sym {zero} {suc y} = let open ≡-Reasoning in
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 begin
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 zero + suc y
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 ≡⟨⟩
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 suc y
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 ≡⟨ sym +zero ⟩
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 suc y + zero
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 +-sym {suc x} {zero} = let open ≡-Reasoning in
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 begin
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 suc x + zero
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 ≡⟨ +zero ⟩
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 suc x
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 ≡⟨⟩
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 zero + suc x
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 +-sym {suc x} {suc y} = cong ( λ z → suc z ) ( let open ≡-Reasoning in
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 begin
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 x + suc y
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 ≡⟨ +-sym {x} {suc y} ⟩
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 suc (y + x)
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 ≡⟨ cong ( λ z → suc z ) (+-sym {y} {x}) ⟩
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 suc (x + y)
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 ≡⟨ sym ( +-sym {y} {suc x}) ⟩
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 y + suc x
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 ∎ )
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 minus-plus : { x y : ℕ } → (suc x - 1) + (y + 1) ≡ suc x + y
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 minus-plus {zero} {y} = +-sym {y} {1}
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 minus-plus {suc x} {y} = cong ( λ z → suc z ) (minus-plus {x} {y})
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 +1≡suc : { x : ℕ } → x + 1 ≡ suc x
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 +1≡suc {zero} = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 +1≡suc {suc x} = cong ( λ z → suc z ) ( +1≡suc {x} )
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 lt : ℕ → ℕ → Bool
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 lt x y with (suc x ) ≤? y
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 lt x y | yes p = true
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 lt x y | no ¬p = false
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 predℕ : {n : ℕ } → lt 0 n ≡ true → ℕ
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 predℕ {zero} ()
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 predℕ {suc n} refl = n
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 predℕ+1=n : {n : ℕ } → (less : lt 0 n ≡ true ) → (predℕ less) + 1 ≡ n
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 predℕ+1=n {zero} ()
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 predℕ+1=n {suc n} refl = +1≡suc
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 suc-predℕ=n : {n : ℕ } → (less : lt 0 n ≡ true ) → suc (predℕ less) ≡ n
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 suc-predℕ=n {zero} ()
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 suc-predℕ=n {suc n} refl = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 Equal : ℕ → ℕ → Bool
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 Equal x y with x ≟ y
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 Equal x y | yes p = true
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 Equal x y | no ¬p = false
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 _⇒_ : Bool → Bool → Bool
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 false ⇒ _ = true
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 true ⇒ true = true
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 true ⇒ false = false
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 ⇒t : {x : Bool} → x ⇒ true ≡ true
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 ⇒t {x} with x
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 ⇒t {x} | false = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 ⇒t {x} | true = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 f⇒ : {x : Bool} → false ⇒ x ≡ true
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 f⇒ {x} with x
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 f⇒ {x} | false = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 f⇒ {x} | true = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 ∧-pi1 : { x y : Bool } → x ∧ y ≡ true → x ≡ true
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 ∧-pi1 {x} {y} eq with x | y | eq
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 ∧-pi1 {x} {y} eq | false | b | ()
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 ∧-pi1 {x} {y} eq | true | false | ()
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 ∧-pi1 {x} {y} eq | true | true | refl = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 ∧-pi2 : { x y : Bool } → x ∧ y ≡ true → y ≡ true
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 ∧-pi2 {x} {y} eq with x | y | eq
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 ∧-pi2 {x} {y} eq | false | b | ()
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 ∧-pi2 {x} {y} eq | true | false | ()
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 ∧-pi2 {x} {y} eq | true | true | refl = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 ∧true : { x : Bool } → x ∧ true ≡ x
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 ∧true {x} with x
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 ∧true {x} | false = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 ∧true {x} | true = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 true∧ : { x : Bool } → true ∧ x ≡ x
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 true∧ {x} with x
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 true∧ {x} | false = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 true∧ {x} | true = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 bool-case : ( x : Bool ) { p : Set } → ( x ≡ true → p ) → ( x ≡ false → p ) → p
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 bool-case x T F with x
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 bool-case x T F | false = F refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 bool-case x T F | true = T refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 impl⇒ : {x y : Bool} → (x ≡ true → y ≡ true ) → x ⇒ y ≡ true
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 impl⇒ {x} {y} p = bool-case x (λ x=t → let open ≡-Reasoning in
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 begin
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 x ⇒ y
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 ≡⟨ cong ( λ z → x ⇒ z ) (p x=t ) ⟩
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 x ⇒ true
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 ≡⟨ ⇒t ⟩
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 true
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 ) ( λ x=f → let open ≡-Reasoning in
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 begin
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 x ⇒ y
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 ≡⟨ cong ( λ z → z ⇒ y ) x=f ⟩
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 true
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 )
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 Equal→≡ : { x y : ℕ } → Equal x y ≡ true → x ≡ y
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 Equal→≡ {x} {y} eq with x ≟ y
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 Equal→≡ {x} {y} refl | yes refl = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 Equal→≡ {x} {y} () | no ¬p
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 Equal+1 : { x y : ℕ } → Equal x y ≡ Equal (suc x) (suc y)
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 Equal+1 {x} {y} with x ≟ y
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 Equal+1 {x} {.x} | yes refl = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 Equal+1 {x} {y} | no ¬p = refl
247ce3e67b5f add utilitites
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154