Mercurial > hg > Members > atton > delta_monad
diff agda/deltaM/functor.agda @ 112:0a3b6cb91a05
Prove left-unity-law for DeltaM
author | Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 30 Jan 2015 21:57:31 +0900 |
parents | cd058dd89864 |
children | 47f144540d51 |
line wrap: on
line diff
--- a/agda/deltaM/functor.agda Thu Jan 29 11:42:22 2015 +0900 +++ b/agda/deltaM/functor.agda Fri Jan 30 21:57:31 2015 +0900 @@ -14,9 +14,9 @@ deltaM-preserve-id : {l : Level} {A : Set l} {n : Nat} - {M : {l' : Level} -> Set l' -> Set l'} - (functorM : {l' : Level} -> Functor {l'} M) - {monadM : {l' : Level} -> Monad {l'} M functorM} + {M : Set l -> Set l} + (functorM : Functor M) + {monadM : Monad M functorM} -> (d : DeltaM M {functorM} {monadM} A (S n)) -> deltaM-fmap id d ≡ id d deltaM-preserve-id functorM (deltaM (mono x)) = begin deltaM-fmap id (deltaM (mono x)) ≡⟨ refl ⟩ @@ -44,9 +44,9 @@ deltaM-covariant : {l : Level} {A B C : Set l} {n : Nat} -> - {M : {l' : Level} -> Set l' -> Set l'} - (functorM : {l' : Level} -> Functor {l'} M) - {monadM : {l' : Level} -> Monad {l'} M functorM} + {M : Set l -> Set l} + (functorM : Functor M) + {monadM : Monad M functorM} (f : B -> C) -> (g : A -> B) -> (d : DeltaM M {functorM} {monadM} A (S n)) -> (deltaM-fmap (f ∙ g)) d ≡ ((deltaM-fmap f) ∙ (deltaM-fmap g)) d deltaM-covariant functorM f g (deltaM (mono x)) = begin @@ -79,12 +79,29 @@ (deltaM-fmap f ∙ deltaM-fmap g) (deltaM (delta x d)) ∎ +postulate deltaM-fmap-equiv : {l : Level} {A B : Set l} {n : Nat} + {M : Set l -> Set l} + {functorM : Functor M} + {monadM : Monad M functorM} + {f g : A -> B} + (eq : (x : A) -> f x ≡ g x) + (d : DeltaM M {functorM} {monadM} A (S n)) -> + deltaM-fmap f d ≡ deltaM-fmap g d +{- +deltaM-fmap-equiv {n = O} f g eq (deltaM (mono x)) = begin + {!!} ≡⟨ {!!} ⟩ + {!!} + ∎ +deltaM-fmap-equiv {n = S n} f g eq d = {!!} +-} deltaM-is-functor : {l : Level} {n : Nat} - {M : {l' : Level} -> Set l' -> Set l'} - {functorM : {l' : Level} -> Functor {l'} M } - {monadM : {l' : Level} -> Monad {l'} M functorM} + {M : Set l -> Set l} + {functorM : Functor M } + {monadM : Monad M functorM} -> Functor {l} (\A -> DeltaM M {functorM} {monadM} A (S n)) deltaM-is-functor {_} {_} {_} {functorM} = record { fmap = deltaM-fmap ; preserve-id = deltaM-preserve-id functorM ; - covariant = (\f g -> deltaM-covariant functorM g f)} + covariant = (\f g -> deltaM-covariant functorM g f); + fmap-equiv = deltaM-fmap-equiv + }