Mercurial > hg > Members > kono > Proof > automaton
view agda/sbconst2.agda @ 32:cd311109d63b
suset construction for subset function nfa
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 05 Nov 2018 18:37:23 +0900 |
parents | agda/sbconst1.agda@08b589172493 |
children | aa15eff1aeb3 |
line wrap: on
line source
module sbconst2 where open import Level renaming ( suc to succ ; zero to Zero ) open import Data.Nat open import Data.List open import Data.Bool using ( Bool ; true ; false ; _∧_ ) open import automaton open import nfa open NAutomaton open Automaton open FiniteSet δconv : { Q : Set } { Σ : Set } { n : ℕ } → FiniteSet Q {n} → ( nδ : Q → Σ → Q → Bool ) → (Q → Bool) → Σ → (Q → Bool) δconv {Q} { Σ} { n} N nδ f i q = exists N ( λ r → nδ r i q ) subset-construction : { Q : Set } { Σ : Set } { n : ℕ } → FiniteSet Q {n} → (NAutomaton Q Σ ) → (Automaton (Q → Bool) Σ ) subset-construction {Q} { Σ} {n} N NFA = record { δ = λ q x → δconv N ( Nδ NFA ) q x ; astart = astart1 ; aend = aend1 } where astart1 : Q → Bool astart1 = Nstart NFA aend1 : (Q → Bool) → Bool aend1 f = exists N ( λ q → f q ∧ Nend NFA q ) test4 = subset-construction finState1 am2 test5 = accept test4 ( i0 ∷ i1 ∷ i0 ∷ [] ) test6 = accept test4 ( i1 ∷ i1 ∷ i1 ∷ [] )