Mercurial > hg > Members > kono > Proof > category
comparison comparison-functor.agda @ 688:a5f2ca67e7c5
fix monad/adjunction definition
couniversal to limit does not work
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 11 Nov 2017 21:34:58 +0900 |
parents | d3cd28a71b3f |
children |
comparison
equal
deleted
inserted
replaced
687:d0bc017c6b61 | 688:a5f2ca67e7c5 |
---|---|
17 module comparison-functor | 17 module comparison-functor |
18 { c₁ c₂ ℓ : Level} { A : Category c₁ c₂ ℓ } | 18 { c₁ c₂ ℓ : Level} { A : Category c₁ c₂ ℓ } |
19 { T : Functor A A } | 19 { T : Functor A A } |
20 { η : NTrans A A identityFunctor T } | 20 { η : NTrans A A identityFunctor T } |
21 { μ : NTrans A A (T ○ T) T } | 21 { μ : NTrans A A (T ○ T) T } |
22 { M' : Monad A T η μ } | 22 { M' : IsMonad A T η μ } |
23 {c₁' c₂' ℓ' : Level} ( B : Category c₁' c₂' ℓ' ) | 23 {c₁' c₂' ℓ' : Level} ( B : Category c₁' c₂' ℓ' ) |
24 { U_K : Functor B A } { F_K : Functor A B } | 24 { U_K : Functor B A } { F_K : Functor A B } |
25 { η_K : NTrans A A identityFunctor ( U_K ○ F_K ) } | 25 { η_K : NTrans A A identityFunctor ( U_K ○ F_K ) } |
26 { ε_K : NTrans B B ( F_K ○ U_K ) identityFunctor } | 26 { ε_K : NTrans B B ( F_K ○ U_K ) identityFunctor } |
27 { μ_K' : NTrans A A (( U_K ○ F_K ) ○ ( U_K ○ F_K )) ( U_K ○ F_K ) } | 27 { μ_K' : NTrans A A (( U_K ○ F_K ) ○ ( U_K ○ F_K )) ( U_K ○ F_K ) } |
28 ( AdjK : Adjunction A B U_K F_K η_K ε_K ) | 28 ( AdjK : IsAdjunction A B U_K F_K η_K ε_K ) |
29 ( RK : MResolution A B T U_K F_K {η_K} {ε_K} {μ_K'} AdjK ) | |
30 where | 29 where |
31 | 30 |
32 open import adj-monad | 31 open import adj-monad |
33 | 32 |
34 T_K = U_K ○ F_K | 33 T_K = U_K ○ F_K |
35 | 34 |
36 μ_K : NTrans A A (( U_K ○ F_K ) ○ ( U_K ○ F_K )) ( U_K ○ F_K ) | 35 μ_K : NTrans A A (( U_K ○ F_K ) ○ ( U_K ○ F_K )) ( U_K ○ F_K ) |
37 μ_K = UεF A B U_K F_K ε_K | 36 μ_K = UεF A B U_K F_K ε_K |
38 | 37 |
39 M : Monad A (U_K ○ F_K ) η_K μ_K | 38 M : IsMonad A (U_K ○ F_K ) η_K μ_K |
40 M = Adj2Monad A B {U_K} {F_K} {η_K} {ε_K} AdjK | 39 M = Monad.isMonad ( Adj2Monad A B ( record { U = U_K; F = F_K ; η = η_K ; ε = ε_K ; isAdjunction = AdjK } ) ) |
41 | 40 |
42 open import kleisli {c₁} {c₂} {ℓ} {A} { U_K ○ F_K } { η_K } { μ_K } { M } | 41 open import kleisli {c₁} {c₂} {ℓ} {A} { U_K ○ F_K } { η_K } { μ_K } { M } |
43 | 42 |
44 open Functor | 43 open Functor |
45 open NTrans | 44 open NTrans |
66 kfmap (K-id {a}) | 65 kfmap (K-id {a}) |
67 ≈⟨⟩ | 66 ≈⟨⟩ |
68 TMap ε_K (FObj F_K a) o FMap F_K (KMap (K-id {a})) | 67 TMap ε_K (FObj F_K a) o FMap F_K (KMap (K-id {a})) |
69 ≈⟨⟩ | 68 ≈⟨⟩ |
70 TMap ε_K (FObj F_K a) o FMap F_K (TMap η_K a) | 69 TMap ε_K (FObj F_K a) o FMap F_K (TMap η_K a) |
71 ≈⟨ IsAdjunction.adjoint2 (isAdjunction AdjK) ⟩ | 70 ≈⟨ IsAdjunction.adjoint2 AdjK ⟩ |
72 id1 B (FObj F_K a) | 71 id1 B (FObj F_K a) |
73 ∎ | 72 ∎ |
74 ≈-cong : {a b : Obj A} → {f g : KHom a b} → A [ KMap f ≈ KMap g ] → B [ kfmap f ≈ kfmap g ] | 73 ≈-cong : {a b : Obj A} → {f g : KHom a b} → A [ KMap f ≈ KMap g ] → B [ kfmap f ≈ kfmap g ] |
75 ≈-cong {a} {b} {f} {g} f≈g = let open ≈-Reasoning (B) in | 74 ≈-cong {a} {b} {f} {g} f≈g = let open ≈-Reasoning (B) in |
76 begin | 75 begin |
142 TMap ε_K (FObj F_K b) o FMap F_K (A [ TMap η_K b o f ]) | 141 TMap ε_K (FObj F_K b) o FMap F_K (A [ TMap η_K b o f ]) |
143 ≈⟨ cdr ( distr F_K) ⟩ | 142 ≈⟨ cdr ( distr F_K) ⟩ |
144 TMap ε_K (FObj F_K b) o (FMap F_K (TMap η_K b) o FMap F_K f ) | 143 TMap ε_K (FObj F_K b) o (FMap F_K (TMap η_K b) o FMap F_K f ) |
145 ≈⟨ assoc ⟩ | 144 ≈⟨ assoc ⟩ |
146 (TMap ε_K (FObj F_K b) o FMap F_K (TMap η_K b)) o FMap F_K f | 145 (TMap ε_K (FObj F_K b) o FMap F_K (TMap η_K b)) o FMap F_K f |
147 ≈⟨ car ( IsAdjunction.adjoint2 (isAdjunction AdjK)) ⟩ | 146 ≈⟨ car ( IsAdjunction.adjoint2 AdjK) ⟩ |
148 id1 B (FObj F_K b) o FMap F_K f | 147 id1 B (FObj F_K b) o FMap F_K f |
149 ≈⟨ idL ⟩ | 148 ≈⟨ idL ⟩ |
150 FMap F_K f | 149 FMap F_K f |
151 ∎ | 150 ∎ |
152 | 151 |
168 Lemma-K3 b = let open ≈-Reasoning (B) in | 167 Lemma-K3 b = let open ≈-Reasoning (B) in |
169 begin | 168 begin |
170 FMap K_T (record { KMap = (TMap η_K b) }) | 169 FMap K_T (record { KMap = (TMap η_K b) }) |
171 ≈⟨⟩ | 170 ≈⟨⟩ |
172 TMap ε_K (FObj F_K b) o FMap F_K (TMap η_K b) | 171 TMap ε_K (FObj F_K b) o FMap F_K (TMap η_K b) |
173 ≈⟨ IsAdjunction.adjoint2 (isAdjunction AdjK) ⟩ | 172 ≈⟨ IsAdjunction.adjoint2 AdjK ⟩ |
174 id1 B (FObj F_K b) | 173 id1 B (FObj F_K b) |
175 ∎ | 174 ∎ |
176 | 175 |
177 Lemma-K4 : (b c : Obj A) (g : Hom A b (FObj T_K c)) → | 176 Lemma-K4 : (b c : Obj A) (g : Hom A b (FObj T_K c)) → |
178 B [ FMap K_T ( record { KMap = A [ (TMap η_K (FObj T_K c)) o g ] }) ≈ FMap F_K g ] | 177 B [ FMap K_T ( record { KMap = A [ (TMap η_K (FObj T_K c)) o g ] }) ≈ FMap F_K g ] |
183 TMap ε_K (FObj F_K (FObj T_K c)) o FMap F_K (A [ (TMap η_K (FObj T_K c)) o g ]) | 182 TMap ε_K (FObj F_K (FObj T_K c)) o FMap F_K (A [ (TMap η_K (FObj T_K c)) o g ]) |
184 ≈⟨ cdr (distr F_K) ⟩ | 183 ≈⟨ cdr (distr F_K) ⟩ |
185 TMap ε_K (FObj F_K (FObj T_K c)) o ( FMap F_K (TMap η_K (FObj T_K c)) o FMap F_K g ) | 184 TMap ε_K (FObj F_K (FObj T_K c)) o ( FMap F_K (TMap η_K (FObj T_K c)) o FMap F_K g ) |
186 ≈⟨ assoc ⟩ | 185 ≈⟨ assoc ⟩ |
187 (TMap ε_K (FObj F_K (FObj T_K c)) o ( FMap F_K (TMap η_K (FObj T_K c)))) o FMap F_K g | 186 (TMap ε_K (FObj F_K (FObj T_K c)) o ( FMap F_K (TMap η_K (FObj T_K c)))) o FMap F_K g |
188 ≈⟨ car ( IsAdjunction.adjoint2 (isAdjunction AdjK)) ⟩ | 187 ≈⟨ car ( IsAdjunction.adjoint2 AdjK) ⟩ |
189 id1 B (FObj F_K (FObj T_K c)) o FMap F_K g | 188 id1 B (FObj F_K (FObj T_K c)) o FMap F_K g |
190 ≈⟨ idL ⟩ | 189 ≈⟨ idL ⟩ |
191 FMap F_K g | 190 FMap F_K g |
192 ∎ | 191 ∎ |
193 | 192 |