JoelSjogren

Untitled

Mar 29th, 2019
542
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. open import Data.Nat --using (ℕ)
  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
Comments
  • User was banned
Add Comment
Please, Sign In to add comment