Advertisement
Guest User

Untitled

a guest
May 27th, 2015
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. open import Relation.Nullary
  2. open import Relation.Binary.PropositionalEquality
  3.  
  4. module Data.Functor
  5. (Alphabet : Set)
  6. (_≤_ : (a b : Alphabet) → Set)
  7. (_≟_ : (a b : Alphabet) → Dec (a ≡ b))
  8. (_≤?_ : (a b : Alphabet) → Dec (a ≤ b))
  9. where
  10.  
  11. open import RegExp.Search Alphabet _≤_ _≟_ _≤?_
  12.  
  13. open import Data.Unit
  14. open import Data.Product
  15. open import Data.Sum
  16. open import Data.List
  17. open import Function
  18. open import lib.Nullary
  19. open import Relation.Binary.PropositionalEquality
  20.  
  21. infixr 3 _`+_ _`*_
  22. data Desc : Set₁ where
  23. `K : (A : Set) → Desc -- constant
  24. `X : Desc -- recursive
  25. `L : Desc -- leaf
  26. _`+_ : (d₁ d₂ : Desc) → Desc -- disjunction
  27. _`*_ : (d₁ d₂ : Desc) → Desc -- conjunction
  28.  
  29. ⟦_⟧ : (d : Desc) (X : (e f : RegExp) → Set) (e f : RegExp) → Set
  30. ⟦ `K A ⟧ X e f = A × e ≡ f
  31. ⟦ `X ⟧ X e f = X e f
  32. ⟦ `L ⟧ X e f = Σ[ a ∈ Alphabet ] (e ⟪ a) ≡ f
  33. ⟦ d₁ `+ d₂ ⟧ X e f = ⟦ d₁ ⟧ X e f ⊎ ⟦ d₂ ⟧ X e f
  34. ⟦ d₁ `* d₂ ⟧ X e f = Σ[ ef ∈ RegExp ] ⟦ d₁ ⟧ X e ef × ⟦ d₂ ⟧ X ef f
  35.  
  36. data `μ (d : Desc) (e f : RegExp) : Set where
  37. ⟨_⟩ : ⟦ d ⟧ (`μ d) e f → `μ d e f
  38.  
  39. μ : (d : Desc) (e : RegExp) → Set
  40. μ d e = Σ[ f ∈ RegExp ] ([] ∈ f) × `μ d e f
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement