annotate agda/nfa.agda @ 143:f896c112f01f

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 29 Dec 2020 15:32:57 +0900
parents b3f05cd08d24
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
1 {-# OPTIONS --allow-unsolved-metas #-}
25
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 module nfa where
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 -- open import Level renaming ( suc to succ ; zero to Zero )
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 open import Data.Nat
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 open import Data.List
27
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
7 open import Data.Fin hiding ( _<_ )
25
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 open import Data.Maybe
27
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
9 open import Relation.Nullary
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
10 open import Data.Empty
69
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
11 -- open import Data.Bool using ( Bool ; true ; false ; _∧_ ; _∨_ )
25
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 open import Relation.Binary.PropositionalEquality hiding ( [_] )
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 open import Relation.Nullary using (¬_; Dec; yes; no)
69
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
14 open import logic
36
9558d870e8ae add cfg and derive
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
15
25
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 data States1 : Set where
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 sr : States1
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 ss : States1
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 st : States1
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 data In2 : Set where
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 i0 : In2
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 i1 : In2
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 record NAutomaton ( Q : Set ) ( Σ : Set )
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 : Set where
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 field
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 Nδ : Q → Σ → Q → Bool
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 Nend : Q → Bool
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 open NAutomaton
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
34 LStates1 : List States1
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
35 LStates1 = sr ∷ ss ∷ st ∷ []
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
36
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
37 -- one of qs q is true
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
38 existsS1 : ( States1 → Bool ) → Bool
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
39 existsS1 qs = qs sr \/ qs ss \/ qs st
26
7ce76b3acc62 improve finite
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
40
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
41 -- extract list of q which qs q is true
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
42 to-listS1 : ( States1 → Bool ) → List States1
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
43 to-listS1 qs = ss1 LStates1 where
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
44 ss1 : List States1 → List States1
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
45 ss1 [] = []
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
46 ss1 (x ∷ t) with qs x
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
47 ... | true = x ∷ ss1 t
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
48 ... | false = ss1 t
25
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 Nmoves : { Q : Set } { Σ : Set }
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 → NAutomaton Q Σ
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
52 → (exists : ( Q → Bool ) → Bool)
69
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
53 → ( Qs : Q → Bool ) → (s : Σ ) → Q → Bool
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
54 Nmoves {Q} { Σ} M exists Qs s q =
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
55 exists ( λ qn → (Qs qn /\ ( Nδ M qn s q ) ))
25
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 Naccept : { Q : Set } { Σ : Set }
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 → NAutomaton Q Σ
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
59 → (exists : ( Q → Bool ) → Bool)
69
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
60 → (Nstart : Q → Bool) → List Σ → Bool
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
61 Naccept M exists sb [] = exists ( λ q → sb q /\ Nend M q )
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
62 Naccept M exists sb (i ∷ t ) = Naccept M exists (λ q → exists ( λ qn → (sb qn /\ ( Nδ M qn i q ) ))) t
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
63
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
64 Ntrace : { Q : Set } { Σ : Set }
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
65 → NAutomaton Q Σ
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
66 → (exists : ( Q → Bool ) → Bool)
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
67 → (to-list : ( Q → Bool ) → List Q )
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
68 → (Nstart : Q → Bool) → List Σ → List (List Q)
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
69 Ntrace M exists to-list sb [] = to-list ( λ q → sb q /\ Nend M q ) ∷ []
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
70 Ntrace M exists to-list sb (i ∷ t ) =
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
71 to-list (λ q → sb q ) ∷
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
72 Ntrace M exists to-list (λ q → exists ( λ qn → (sb qn /\ ( Nδ M qn i q ) ))) t
25
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 transition3 : States1 → In2 → States1 → Bool
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 transition3 sr i0 sr = true
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 transition3 sr i1 ss = true
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 transition3 sr i1 sr = true
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 transition3 ss i0 sr = true
31
9b00dc130ede nfa using subset mapping done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 30
diff changeset
80 transition3 ss i1 st = true
25
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 transition3 st i0 sr = true
31
9b00dc130ede nfa using subset mapping done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 30
diff changeset
82 transition3 st i1 st = true
25
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 transition3 _ _ _ = false
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 fin1 : States1 → Bool
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 fin1 st = true
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 fin1 ss = false
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 fin1 sr = false
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
90 test5 = existsS1 (λ q → fin1 q )
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
91 test6 = to-listS1 (λ q → fin1 q )
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
92
25
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 start1 : States1 → Bool
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 start1 sr = true
29
2887577a3d63 simpler exists , nfa accept dones not wokred
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
95 start1 _ = false
25
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 am2 : NAutomaton States1 In2
69
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
98 am2 = record { Nδ = transition3 ; Nend = fin1}
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
99
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
100 example2-1 = Naccept am2 existsS1 start1 ( i0 ∷ i1 ∷ i0 ∷ [] )
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
101 example2-2 = Naccept am2 existsS1 start1 ( i1 ∷ i1 ∷ i1 ∷ [] )
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
102
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
103 t-1 : List ( List States1 )
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
104 t-1 = Ntrace am2 existsS1 to-listS1 start1 ( i1 ∷ i1 ∷ i1 ∷ [] )
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
105 t-2 = Ntrace am2 existsS1 to-listS1 start1 ( i0 ∷ i1 ∷ i0 ∷ [] )
25
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106
69
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
107 transition4 : States1 → In2 → States1 → Bool
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
108 transition4 sr i0 sr = true
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
109 transition4 sr i1 ss = true
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
110 transition4 sr i1 sr = true
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
111 transition4 ss i0 ss = true
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
112 transition4 ss i1 st = true
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
113 transition4 st i0 st = true
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
114 transition4 st i1 st = true
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
115 transition4 _ _ _ = false
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
116
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
117 fin4 : States1 → Bool
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
118 fin4 st = true
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
119 fin4 _ = false
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
120
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
121 start4 : States1 → Bool
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
122 start4 ss = true
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
123 start4 _ = false
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
124
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
125 am4 : NAutomaton States1 In2
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
126 am4 = record { Nδ = transition4 ; Nend = fin4}
f124fceba460 subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
127
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
128 example4-1 = Naccept am4 existsS1 start4 ( i0 ∷ i1 ∷ i1 ∷ i0 ∷ [] )
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
129 example4-2 = Naccept am4 existsS1 start4 ( i0 ∷ i1 ∷ i1 ∷ i1 ∷ [] )
25
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130
30
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
131 fin0 : States1 → Bool
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
132 fin0 st = false
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
133 fin0 ss = false
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
134 fin0 sr = false
25
256b7a6de863 how to use Data.Fin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135
31
9b00dc130ede nfa using subset mapping done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 30
diff changeset
136 test0 : Bool
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
137 test0 = existsS1 fin0
31
9b00dc130ede nfa using subset mapping done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 30
diff changeset
138
30
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
139 test1 : Bool
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
140 test1 = existsS1 fin1
31
9b00dc130ede nfa using subset mapping done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 30
diff changeset
141
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
142 test2 = Nmoves am2 existsS1 start1
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
143
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
144 open import automaton
38
ab265470c2d0 push down automaton example
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
145
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
146 am2def : Automaton (States1 → Bool ) In2
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
147 am2def = record { δ = λ qs s q → existsS1 (λ qn → qs q /\ Nδ am2 q s qn )
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
148 ; aend = λ qs → existsS1 (λ q → qs q /\ Nend am2 q) }
44
aa15eff1aeb3 seprate finite
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 38
diff changeset
149
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
150 dexample4-1 = accept am2def start1 ( i0 ∷ i1 ∷ i1 ∷ i0 ∷ [] )
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
151 texample4-1 = trace am2def start1 ( i0 ∷ i1 ∷ i1 ∷ i0 ∷ [] )
38
ab265470c2d0 push down automaton example
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
152