open import Data.Nat
open import Agda.Builtin.Equality using (_≡_)
open import Codata.Stream
open import Agda.Builtin.Size
open import Codata.Thunk as Thunk using (Thunk; force)
record Ring : Set₁ where
constructor RING
field
Carrier : Set
? ? : Carrier
_⊕_ _⊗_ : Carrier → Carrier → Carrier
open Ring
record Hom (R S : Ring) : Set where
constructor HOM
field
fun : Carrier R → Carrier S
?-law : fun (? R) ≡ ? S
?-law : fun (? R) ≡ ? S
⊕-law : (a b : Carrier R) →
fun ((_⊕_ R) a b) ≡ (_⊕_ S) (fun a) (fun b)
⊗-law : (a b : Carrier R) →
fun ((_⊗_ R) a b) ≡ (_⊗_ S) (fun a) (fun b)
∞Decimal : Ring
∞Decimal = RING Carrier' ?' ?' _⊕'_ _⊗'_ where
Carrier' = Stream ℕ ∞
?' = repeat 0
?' = 1 ∷ λ where .force → ?'
_⊕'_ = zipWith _+_
infixl 10 _⊕'_
_⊗'_ : Carrier' → Carrier' → Carrier'
(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))
↺Decimal : Ring
↺Decimal = {!!}
⟦_⟧ : Hom ↺Decimal ∞Decimal
⟦_⟧ = {!!}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}