Mercurial > hg > Members > kono > Proof > category
diff monoidal.agda @ 698:d648ebb8ac29
Monoidal Functor
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 21 Nov 2017 09:57:42 +0900 |
parents | c68ba494abfd |
children | 10ab28030c20 |
line wrap: on
line diff
--- a/monoidal.agda Tue Nov 21 00:11:10 2017 +0900 +++ b/monoidal.agda Tue Nov 21 09:57:42 2017 +0900 @@ -13,33 +13,59 @@ open Functor -record _≅_ {ℓ : Level } ( C B : Set ℓ ) : Set (suc ℓ ) where +record Iso {c₁ c₂ ℓ : Level} (C : Category c₁ c₂ ℓ) + (x y : Obj C ) + : Set ( suc (c₁ ⊔ c₂ ⊔ ℓ ⊔ c₁)) where field - ≅→ : C → B - ≅← : B → C - ≅Id→ : {x : C} → ≅← ( ≅→ x ) ≡ x - ≅Id← : {x : B} → ≅→ ( ≅← x ) ≡ x + ≅→ : Hom C x y + ≅← : Hom C y x + iso→ : C [ C [ ≅← o ≅→ ] ≈ id1 C x ] + iso← : C [ C [ ≅→ o ≅← ] ≈ id1 C y ] -infix 4 _≅_ - -record IsMonoidal {c₁ c₂ ℓ : Level} (C : Category c₁ c₂ ℓ) (I : Obj C) ( BI : Functor ( C × C ) C ) +record IsStrictMonoidal {c₁ c₂ ℓ : Level} (C : Category c₁ c₂ ℓ) (I : Obj C) ( BI : Functor ( C × C ) C ) : Set ( suc (c₁ ⊔ c₂ ⊔ ℓ ⊔ c₁)) where infixr 9 _⊗_ _⊗_ : ( x y : Obj C ) → Obj C _⊗_ x y = FObj BI ( x , y ) field mα : {a b c : Obj C} → ( a ⊗ b) ⊗ c ≡ a ⊗ ( b ⊗ c ) - mλa : (a : Obj C) → I ⊗ a ≡ a - mσa : (a : Obj C) → a ⊗ I ≡ a + mλ : (a : Obj C) → I ⊗ a ≡ a + mσ : (a : Obj C) → a ⊗ I ≡ a + +record StrictMonoidal {c₁ c₂ ℓ : Level} (C : Category c₁ c₂ ℓ) + : Set ( suc (c₁ ⊔ c₂ ⊔ ℓ ⊔ c₁)) where + field + m-i : Obj C + m-bi : Functor ( C × C ) C + isMonoidal : IsStrictMonoidal C m-i m-bi + --- -- non strict version includes 6 naturalities --- mα→ : {a b c : Obj C} → Hom C ( ( a ⊗ b) ⊗ c) ( a ⊗ ( b ⊗ c ) ) --- mα← : {a b c : Obj C} → Hom C ( a ⊗ ( b ⊗ c )) ( ( a ⊗ b) ⊗ c) --- mα-iso→ : {a b c : Obj C} → C [ C [ mα← o mα→ ] ≈ id1 C (( a ⊗ b) ⊗ c ) ] --- mα-iso← : {a b c : Obj C} → C [ C [ mα→ o mα← ] ≈ id1 C ( a ⊗ (b ⊗ c )) ] --- mα→nat1 : {a a' b c : Obj C} → ( f : Hom C a a' ) → --- C [ C [ FMap BI ( f , id1 C (FObj BI ( b , c ) )) o mα→ {a} ] ≈ --- C [ mα→ {a'} o FMap BI ( FMap BI (f , id1 C b ) , id1 C c ) ] ] +-- non strict version includes 5 naturalities +record IsMonoidal {c₁ c₂ ℓ : Level} (C : Category c₁ c₂ ℓ) (I : Obj C) ( BI : Functor ( C × C ) C ) + : Set ( suc (c₁ ⊔ c₂ ⊔ ℓ ⊔ c₁)) where + open Iso + infixr 9 _⊗_ + _⊗_ : ( x y : Obj C ) → Obj C + _⊗_ x y = FObj BI ( x , y ) + field + mα-iso : {a b c : Obj C} → Iso C ( ( a ⊗ b) ⊗ c) ( a ⊗ ( b ⊗ c ) ) + mλ-iso : {a : Obj C} → Iso C ( I ⊗ a) a + mσ-iso : {a : Obj C} → Iso C ( a ⊗ I) a + mα→nat1 : {a a' b c : Obj C} → ( f : Hom C a a' ) → + C [ C [ FMap BI ( f , id1 C ( b ⊗ c )) o ≅→ (mα-iso {a} {b} {c}) ] ≈ + C [ ≅→ (mα-iso ) o FMap BI ( FMap BI (f , id1 C b ) , id1 C c ) ] ] + mα→nat2 : {a b b' c : Obj C} → ( f : Hom C b b' ) → + C [ C [ FMap BI ( id1 C a , FMap BI ( f , id1 C c ) ) o ≅→ (mα-iso {a} {b} {c} ) ] ≈ + C [ ≅→ (mα-iso ) o FMap BI ( FMap BI (id1 C a , f ) , id1 C c ) ] ] + mα→nat3 : {a b c c' : Obj C} → ( f : Hom C c c' ) → + C [ C [ FMap BI ( id1 C a , FMap BI ( id1 C b , f ) ) o ≅→ (mα-iso {a} {b} {c} ) ] ≈ + C [ ≅→ (mα-iso ) o FMap BI ( id1 C ( a ⊗ b ) , f ) ] ] + mλ→nat : {a a' : Obj C} → ( f : Hom C a a' ) → + C [ C [ f o ≅→ (mλ-iso {a} ) ] ≈ + C [ ≅→ (mλ-iso ) o FMap BI ( id1 C I , f ) ] ] + mσ→nat : {a a' : Obj C} → ( f : Hom C a a' ) → + C [ C [ f o ≅→ (mσ-iso {a} ) ] ≈ + C [ ≅→ (mσ-iso ) o FMap BI ( f , id1 C I ) ] ] record Monoidal {c₁ c₂ ℓ : Level} (C : Category c₁ c₂ ℓ) : Set ( suc (c₁ ⊔ c₂ ⊔ ℓ ⊔ c₁)) where @@ -51,10 +77,25 @@ open import Category.Cat + record IsMonoidalFunctor {c₁ c₂ ℓ : Level} {C D : Category c₁ c₂ ℓ} ( M : Monoidal C ) ( N : Monoidal D ) + ( MF : Functor C D ) + ( F● : Functor ( C × C ) D ) + ( F⊗ : Functor ( C × C ) D ) + ( φab : NTrans ( C × C ) D F● F⊗ ) + ( φ : Hom D (Monoidal.m-i N) (FObj MF (Monoidal.m-i M) ) ) : Set ( suc (c₁ ⊔ c₂ ⊔ ℓ ⊔ c₁)) where + _⊗_ : (x y : Obj C ) → Obj C + _⊗_ x y = (IsMonoidal._⊗_ (Monoidal.isMonoidal M) ) x y + _●_ : (x y : Obj D ) → Obj D + _●_ x y = (IsMonoidal._⊗_ (Monoidal.isMonoidal N) ) x y + open Iso + open Monoidal + open IsMonoidal hiding ( _⊗_ ) + αD : {a b c : Obj C} → Hom C (( a ⊗ b ) ⊗ c ) ( a ⊗ ( b ⊗ c ) ) + αD {a} {b} {c} = ≅→ (mα-iso (isMonoidal M) {a} {b} {c}) field - a : {!!} + comm1 : {!!} record MonoidalFunctor {c₁ c₂ ℓ : Level} {C D : Category c₁ c₂ ℓ} ( M : Monoidal C ) ( N : Monoidal D ) : Set ( suc (c₁ ⊔ c₂ ⊔ ℓ ⊔ c₁)) where @@ -81,4 +122,4 @@ field φab : NTrans ( C × C ) D F● F⊗ φ : Hom D (Monoidal.m-i N) (FObj MF (Monoidal.m-i M) ) - isMonodailFunctor : IsMonoidalFunctor M N + isMonodailFunctor : IsMonoidalFunctor M N MF F● F⊗ φab φ