Mercurial > hg > Members > kono > Proof > category
diff nat.agda @ 56:83ff8d48fdca
add unitility
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 24 Jul 2013 20:47:28 +0900 |
parents | 17b8bafebad7 |
children | c6f66c21230c |
line wrap: on
line diff
--- a/nat.agda Tue Jul 23 17:34:46 2013 +0900 +++ b/nat.agda Wed Jul 24 20:47:28 2013 +0900 @@ -9,7 +9,9 @@ open import Category -- https://github.com/konn/category-agda open import Level -open import Category.HomReasoning +--open import Category.HomReasoning +open import HomReasoning +open import cat-utility --T(g f) = T(g) T(f) @@ -33,24 +35,6 @@ -- μ(a)T(η(a)) = a -- μ(a)(μ(T(a))) = μ(a)T(μ(a)) -record IsMonad {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) - ( T : Functor A A ) - ( η : NTrans A A identityFunctor T ) - ( μ : NTrans A A (T ○ T) T) - : Set (suc (c₁ ⊔ c₂ ⊔ ℓ )) where - field - assoc : {a : Obj A} → A [ A [ TMap μ a o TMap μ ( FObj T a ) ] ≈ A [ TMap μ a o FMap T (TMap μ a) ] ] - unity1 : {a : Obj A} → A [ A [ TMap μ a o TMap η ( FObj T a ) ] ≈ Id {_} {_} {_} {A} (FObj T a) ] - unity2 : {a : Obj A} → A [ A [ TMap μ a o (FMap T (TMap η a ))] ≈ Id {_} {_} {_} {A} (FObj T a) ] - -record Monad {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) (T : Functor A A) (η : NTrans A A identityFunctor T) (μ : NTrans A A (T ○ T) T) - : Set (suc (c₁ ⊔ c₂ ⊔ ℓ )) where - eta : NTrans A A identityFunctor T - eta = η - mu : NTrans A A (T ○ T) T - mu = μ - field - isMonad : IsMonad A T η μ open Monad Lemma3 : {c₁ c₂ ℓ : Level} {A : Category c₁ c₂ ℓ} @@ -92,17 +76,6 @@ -- f ○ η(a) = f -- h ○ (g ○ f) = (h ○ g) ○ f -record Kleisli { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ ) - ( T : Functor A A ) - ( η : NTrans A A identityFunctor T ) - ( μ : NTrans A A (T ○ T) T ) - ( M : Monad A T η μ ) : Set (suc (c₁ ⊔ c₂ ⊔ ℓ )) where - monad : Monad A T η μ - monad = M - -- g ○ f = μ(c) T(g) f - join : { a b : Obj A } → ( c : Obj A ) → - ( Hom A b ( FObj T c )) → ( Hom A a ( FObj T b)) → Hom A a ( FObj T c ) - join c g f = A [ TMap μ c o A [ FMap T g o f ] ] lemma12 : {c₁ c₂ ℓ : Level} (L : Category c₁ c₂ ℓ) { a b c : Obj L } → ( x : Hom L c a ) → ( y : Hom L b c ) → L [ L [ x o y ] ≈ L [ x o y ] ] @@ -110,19 +83,18 @@ let open ≈-Reasoning ( L ) in begin L [ x o y ] ∎ - open Kleisli -- η(b) ○ f = f Lemma7 : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) → - ( T : Functor A A ) + { T : Functor A A } ( η : NTrans A A identityFunctor T ) { μ : NTrans A A (T ○ T) T } { a : Obj A } ( b : Obj A ) ( f : Hom A a ( FObj T b) ) ( m : Monad A T η μ ) - ( k : Kleisli A T η μ m) + { k : Kleisli A T η μ m} → A [ join k b (TMap η b) f ≈ f ] -Lemma7 c T η b f m k = +Lemma7 c {T} η b f m {k} = let open ≈-Reasoning (c) μ = mu ( monad k ) in @@ -167,17 +139,17 @@ -- h ○ (g ○ f) = (h ○ g) ○ f Lemma9 : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) - ( T : Functor A A ) - ( η : NTrans A A identityFunctor T ) - ( μ : NTrans A A (T ○ T) T ) - ( a b c d : Obj A ) + { T : Functor A A } + { η : NTrans A A identityFunctor T } + { μ : NTrans A A (T ○ T) T } + { a b c d : Obj A } ( f : Hom A a ( FObj T b) ) ( g : Hom A b ( FObj T c) ) ( h : Hom A c ( FObj T d) ) ( m : Monad A T η μ ) - ( k : Kleisli A T η μ m) + { k : Kleisli A T η μ m} → A [ join k d h (join k c g f) ≈ join k d ( join k d h g) f ] -Lemma9 A T η μ a b c d f g h m k = +Lemma9 A {T} {η} {μ} {a} {b} {c} {d} f g h m {k} = begin join k d h (join k c g f) ≈⟨⟩ @@ -231,7 +203,41 @@ join k d ( join k d h g) f ∎ where open ≈-Reasoning (A) +-- Kleisli-join : {!!} +-- Kleisli-join = {!!} +-- Kleisli-id : {!!} +-- Kleisli-id = {!!} + +-- Lemma10 : {!!} +-- Lemma10 = {!!} + +-- open import Relation.Binary.Core + +-- isKleisliCategory : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) +-- { T : Functor A A } +-- { η : NTrans A A identityFunctor T } +-- { μ : NTrans A A (T ○ T) T } +-- ( m : Monad A T η μ ) +-- { k : Kleisli A T η μ m} -> +-- IsCategory ( Obj A ) ( Hom A ) ( Category._≈_ A ) ( Kleisli-join ) Kleisli-id +-- isKleisliCategory A {T} {η} m = record { isEquivalence = IsCategory.isEquivalence ( Category.isCategory A ) +-- ; identityL = {!!} +-- ; identityR = {!!} +-- ; o-resp-≈ = {!!} +-- ; associative = {!!} +-- } +-- where +-- KidL : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) { T : Functor A A } +-- { η : NTrans A A identityFunctor T } +-- { μ : NTrans A A (T ○ T) T } ( m : Monad A T η μ ) -> {!!} +-- KidL = {!!} +-- KidR : {!!} +-- KidR = {!!} +-- Ko-resp : {!!} +-- Ko-resp = {!!} +-- Kassoc : {!!} +-- Kassoc = {!!} -- Kleisli : -- Kleisli = record { Hom = @@ -249,3 +255,20 @@ -- ; associative = associative -- } -- } + +open Adjunction + +-- ( \b -> FMap U ( TMap ε ( FObj F b)) ) +Adj2Monad : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ') + { U : Functor B A } + { F : Functor A B } + { η : NTrans A A identityFunctor ( U ○ F ) } + { ε : NTrans B B ( F ○ U ) identityFunctor } → + Adjunction A B U F η ε → Monad A (U ○ F) η {!!} +Adj2Monad A B {U} {F} {η} {ε} adj = record { + isMonad = record { + assoc = {!!}; + unity1 = {!!}; + unity2 = {!!} + } + }