annotate automaton-in-agda/src/regex1-ex.agda @ 411:207e6c4e155c

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 29 Nov 2023 17:40:55 +0900
parents a5c874396cc4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
44
aa15eff1aeb3 seprate finite
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 41
diff changeset
1 {-# OPTIONS --allow-unsolved-metas #-}
384
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
2 module regex1-ex where
0
e5aa1cf746cb automaton lecture
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
e5aa1cf746cb automaton lecture
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 open import Level renaming ( suc to succ ; zero to Zero )
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 274
diff changeset
5 open import Data.Fin hiding ( pred )
34
a904b6bc76af add regular language
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
6 open import Data.Nat hiding ( _≟_ )
44
aa15eff1aeb3 seprate finite
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 41
diff changeset
7 open import Data.List hiding ( any ; [_] )
274
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
8 -- import Data.Bool using ( Bool ; true ; false ; _∧_ )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
9 -- open import Data.Bool using ( Bool ; true ; false ; _∧_ ; _∨_ )
34
a904b6bc76af add regular language
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
10 open import Relation.Binary.PropositionalEquality as RBF hiding ( [_] )
1
3c6de7cf2a95 nfa worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
11 open import Relation.Nullary using (¬_; Dec; yes; no)
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
12 open import regex
274
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
13 open import logic
383
708570e55a91 add regex2 (we need source reorganization)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 382
diff changeset
14 open import regular-language
1
3c6de7cf2a95 nfa worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
15
36
9558d870e8ae add cfg and derive
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
16 -- postulate a b c d : Set
9558d870e8ae add cfg and derive
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
17
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
18 data In : Set where
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
19 a : In
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
20 b : In
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
21 c : In
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
22 d : In
36
9558d870e8ae add cfg and derive
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
23
274
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
24 -- infixr 40 _&_ _||_
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
25
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
26 r1' = (< a > & < b >) & < c > --- abc
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
27 r1 = < a > & < b > & < c > --- abc
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
28 r0 : ¬ (r1' ≡ r1)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
29 r0 ()
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
30 any = < a > || < b > || < c > || < d > --- a|b|c|d
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
31 r2 = ( any * ) & ( < a > & < b > & < c > ) -- .*abc
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
32 r3 = ( any * ) & ( < a > & < b > & < c > & < a > & < b > & < c > )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
33 r4 = ( < a > & < b > & < c > ) || ( < b > & < c > & < d > )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
34 r5 = ( any * ) & ( < a > & < b > & < c > || < b > & < c > & < d > )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
35
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
36 open import nfa
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
37
411
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
38 tt1 : {Σ : Set} → ( P Q : List In → Bool ) → split P Q ( a ∷ b ∷ c ∷ [] ) ≡
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
39 P [] /\ Q (a ∷ b ∷ c ∷ []) \/
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
40 P (a ∷ []) /\ Q (b ∷ c ∷ []) \/
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
41 P (a ∷ b ∷ []) /\ Q (c ∷ []) \/ P (a ∷ b ∷ c ∷ []) /\ Q []
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
42 tt1 P Q = refl
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 274
diff changeset
43
411
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
44 test-AB→repeat3 : {Σ : Set} → {A : List In → Bool} → repeat A [] ( a ∷ [] ) ≡ A (a ∷ [] )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
45 test-AB→repeat3 {_} {A} = refl
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 274
diff changeset
46
411
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
47 test-AB→repeat2 : {Σ : Set} → {A : List In → Bool} → repeat A [] ( a ∷ b ∷ [] ) ≡ A (a ∷ []) /\ A (b ∷ []) \/ A (a ∷ b ∷ [])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
48 test-AB→repeat2 {_} {A} = refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
49
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
50 test-AB→repeat1 : {Σ : Set} → {A : List In → Bool} → repeat A [] ( a ∷ b ∷ c ∷ [] ) ≡
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
51 A (a ∷ []) /\ ((A (b ∷ []) /\ A (c ∷ [])) \/ A (b ∷ c ∷ []))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
52 \/ A (a ∷ b ∷ []) /\ A (c ∷ []) -- ok
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
53 \/ A (a ∷ b ∷ c ∷ []) -- ok
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 274
diff changeset
54 test-AB→repeat1 {_} {A} = refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 274
diff changeset
55
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
56 cmpi : (x y : In ) → Dec (x ≡ y)
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
57 cmpi a a = yes refl
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
58 cmpi b b = yes refl
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
59 cmpi c c = yes refl
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
60 cmpi d d = yes refl
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
61 cmpi a b = no (λ ())
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
62 cmpi a c = no (λ ())
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
63 cmpi a d = no (λ ())
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
64 cmpi b a = no (λ ())
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
65 cmpi b c = no (λ ())
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
66 cmpi b d = no (λ ())
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
67 cmpi c a = no (λ ())
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
68 cmpi c b = no (λ ())
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
69 cmpi c d = no (λ ())
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
70 cmpi d a = no (λ ())
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
71 cmpi d b = no (λ ())
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
72 cmpi d c = no (λ ())
36
9558d870e8ae add cfg and derive
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
73
411
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
74 test-regex : regex-language r1' cmpi ( a ∷ b ∷ c ∷ [] ) ≡ true
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
75 test-regex = refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
76
382
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
77 -- test-regex2 : regex-language r2 cmpi ( b ∷ c ∷ a ∷ b ∷ [] ) ≡ false
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 274
diff changeset
78 -- test-regex2 = refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 274
diff changeset
79
382
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
80 test-regex1 : regex-language r2 cmpi ( a ∷ a ∷ b ∷ c ∷ [] ) ≡ true
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
81 test-regex1 = refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
82
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
83
383
708570e55a91 add regex2 (we need source reorganization)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 382
diff changeset
84 --test-AB→split : {Σ : Set} → {A B : List In → Bool} → split A B ( a ∷ b ∷ a ∷ [] ) ≡ (
708570e55a91 add regex2 (we need source reorganization)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 382
diff changeset
85 -- ( A [] /\ B ( a ∷ b ∷ a ∷ [] ) ) \/
708570e55a91 add regex2 (we need source reorganization)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 382
diff changeset
86 -- ( A ( a ∷ [] ) /\ B ( b ∷ a ∷ [] ) ) \/
708570e55a91 add regex2 (we need source reorganization)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 382
diff changeset
87 -- ( A ( a ∷ b ∷ [] ) /\ B ( a ∷ [] ) ) \/
708570e55a91 add regex2 (we need source reorganization)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 382
diff changeset
88 -- ( A ( a ∷ b ∷ a ∷ [] ) /\ B [] )
708570e55a91 add regex2 (we need source reorganization)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 382
diff changeset
89 -- )
708570e55a91 add regex2 (we need source reorganization)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 382
diff changeset
90 -- test-AB→split {_} {A} {B} = refl
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
91
274
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
92 list-eq : {Σ : Set} → (cmpi : (s t : Σ) → Dec (s ≡ t )) → (s t : List Σ ) → Bool
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
93 list-eq cmpi [] [] = true
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
94 list-eq cmpi [] (x ∷ t) = false
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
95 list-eq cmpi (x ∷ s) [] = false
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
96 list-eq cmpi (x ∷ s) (y ∷ t) with cmpi x y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
97 ... | yes _ = list-eq cmpi s t
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
98 ... | no _ = false
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
99
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
100 -- split-spec-01 : {s t u : List In } → s ++ t ≡ u → split (list-eq cmpi s) (list-eq cmpi t) u ≡ true
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
101 -- split-spec-01 = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
102
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
103 -- from example 1.53 1
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
104
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
105 ex53-1 : Set
382
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
106 ex53-1 = (s : List In ) → regex-language ( (< a > *) & < b > & (< a > *) ) cmpi s ≡ true → {!!} -- contains exact one b
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
107
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
108 ex53-2 : Set
382
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
109 ex53-2 = (s : List In ) → regex-language ( (any * ) & < b > & (any *) ) cmpi s ≡ true → {!!} -- contains at lease one b
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
110
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
111 evenp : {Σ : Set} → List Σ → Bool
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
112 oddp : {Σ : Set} → List Σ → Bool
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
113 oddp [] = false
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
114 oddp (_ ∷ t) = evenp t
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
115
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
116 evenp [] = true
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
117 evenp (_ ∷ t) = oddp t
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
118
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
119 -- from example 1.53 5
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
120 egex-even : Set
382
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
121 egex-even = (s : List In ) → regex-language ( ( any & any ) * ) cmpi s ≡ true → evenp s ≡ true
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
122
382
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
123 test11 = regex-language ( ( any & any ) * ) cmpi (a ∷ [])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
124 test12 = regex-language ( ( any & any ) * ) cmpi (a ∷ b ∷ [])
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
125
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
126 -- proof-egex-even : egex-even
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
127 -- proof-egex-even [] _ = refl
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
128 -- proof-egex-even (a ∷ []) ()
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
129 -- proof-egex-even (b ∷ []) ()
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
130 -- proof-egex-even (c ∷ []) ()
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
131 -- proof-egex-even (x ∷ x₁ ∷ s) y = proof-egex-even s {!!}
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
132
274
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
133 open import finiteSet
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
134
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
135 iFin : FiniteSet In
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
136 iFin = record {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
137 finite = finite0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
138 ; Q←F = Q←F0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
139 ; F←Q = F←Q0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
140 ; finiso→ = finiso→0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
141 ; finiso← = finiso←0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
142 } where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
143 finite0 : ℕ
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
144 finite0 = 4
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
145 Q←F0 : Fin finite0 → In
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
146 Q←F0 zero = a
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
147 Q←F0 (suc zero) = b
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
148 Q←F0 (suc (suc zero)) = c
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
149 Q←F0 (suc (suc (suc zero))) = d
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
150 F←Q0 : In → Fin finite0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
151 F←Q0 a = # 0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
152 F←Q0 b = # 1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
153 F←Q0 c = # 2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
154 F←Q0 d = # 3
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
155 finiso→0 : (q : In) → Q←F0 ( F←Q0 q ) ≡ q
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
156 finiso→0 a = refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
157 finiso→0 b = refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
158 finiso→0 c = refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
159 finiso→0 d = refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
160 finiso←0 : (f : Fin finite0 ) → F←Q0 ( Q←F0 f ) ≡ f
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
161 finiso←0 zero = refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
162 finiso←0 (suc zero) = refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
163 finiso←0 (suc (suc zero)) = refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
164 finiso←0 (suc (suc (suc zero))) = refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
165
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 183
diff changeset
166
382
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
167 -- open import derive In iFin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
168 -- open import automaton
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
169
382
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
170 -- ra-ex = trace (regex→automaton cmpi r2) (record { state = r2 ; is-derived = unit refl }) ( a ∷ b ∷ c ∷ [])
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
171