Advertisement
JoelSjogren

Untitled

Mar 29th, 2019
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. open import Data.Nat
  2. open import Agda.Builtin.Equality using (_≑_)
  3. open import Codata.Stream
  4. open import Agda.Builtin.Size
  5. open import Codata.Thunk as Thunk using (Thunk; force)
  6.  
  7. record Ring : Set₁ where
  8. constructor RING
  9. field
  10. Carrier : Set
  11. 𝟘 πŸ™ : Carrier
  12. _βŠ•_ _βŠ—_ : Carrier β†’ Carrier β†’ Carrier
  13.  
  14. open Ring
  15.  
  16. record Hom (R S : Ring) : Set where
  17. constructor HOM
  18. field
  19. fun : Carrier R β†’ Carrier S
  20.  
  21. 𝟘-law : fun (𝟘 R) ≑ 𝟘 S
  22. πŸ™-law : fun (πŸ™ R) ≑ 𝟘 S
  23.  
  24. βŠ•-law : (a b : Carrier R) β†’
  25. fun ((_βŠ•_ R) a b) ≑ (_βŠ•_ S) (fun a) (fun b)
  26. βŠ—-law : (a b : Carrier R) β†’
  27. fun ((_βŠ—_ R) a b) ≑ (_βŠ—_ S) (fun a) (fun b)
  28.  
  29.  
  30. ∞Decimal : Ring
  31. ∞Decimal = RING Carrier' 𝟘' πŸ™' _βŠ•'_ _βŠ—'_ where
  32. Carrier' = Stream β„• ∞
  33. 𝟘' = repeat 0
  34. πŸ™' = 1 ∷ Ξ» where .force β†’ 𝟘'
  35. _βŠ•'_ = zipWith _+_
  36. infixl 10 _βŠ•'_
  37. _βŠ—'_ : Carrier' β†’ Carrier' β†’ Carrier'
  38. (x ∷ xs) βŠ—' (y ∷ ys) = (x * y) ∷ Ξ» where .force β†’ (zipWith _*_ (repeat x) (ys .force)) βŠ•' (zipWith _*_ (xs .force) (repeat y)) βŠ•' (0 ∷ Ξ» where .force β†’ _βŠ—'_ (xs .force) (ys .force))
  39.  
  40.  
  41. β†ΊDecimal : Ring
  42. β†ΊDecimal = {!!}
  43.  
  44. ⟦_⟧ : Hom β†ΊDecimal ∞Decimal
  45. ⟦_⟧ = {!!}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement