Advertisement
Guest User

Untitled

a guest
Jul 6th, 2015
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.91 KB | None | 0 0
  1. module RewriteQuote where
  2.  
  3. open import Data.Bool
  4. open import Data.Nat
  5. open import Function
  6.  
  7. open import Relation.Nullary
  8. open import Relation.Binary.PropositionalEquality
  9.  
  10. infixr 5 _`+_
  11. data Q : Set → Set₁ where
  12. `0 : Q ℕ
  13. `s : Q ℕ → Q ℕ
  14. _`+_ : Q ℕ → Q ℕ → Q ℕ
  15. `λ : {A B : Set} → Q B → Q (A → B)
  16. lift : (A : Set) (a : A) → Q A
  17. pair : (m n : ℕ) → Q Bool
  18.  
  19. postulate
  20.  
  21. myQuote : (A : Set) → Q A → Q A → Set
  22. myQuote0 : myQuote ℕ (lift ℕ 0) `0
  23. myQuotes : (m : ℕ) → myQuote ℕ (lift ℕ (suc m)) (`s (lift ℕ m))
  24. myQuote+ : ∀ m p → myQuote ℕ (lift ℕ (m + p)) (lift ℕ m `+ lift ℕ p)
  25. myComparemm : (m : ℕ) → myQuote _ (pair m m) (lift _ true)
  26. myComparemn : (m n : ℕ) → myQuote _ (pair m n) (lift _ false)
  27.  
  28. {-# BUILTIN REWRITE myQuote #-}
  29. {-# REWRITE myQuote0 #-}
  30. {-# REWRITE myQuotes #-}
  31. {-# REWRITE myQuote+ #-}
  32. {-# REWRITE myComparemm #-}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement