comparison nat.agda @ 68:829e0698f87f

join implicit parameter
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 25 Jul 2013 13:56:16 +0900
parents 51f653bd9656
children 84a150c980ce
comparison
equal deleted inserted replaced
67:e75436075bf0 68:829e0698f87f
91 { μ : NTrans A A (T ○ T) T } 91 { μ : NTrans A A (T ○ T) T }
92 { a : Obj A } ( b : Obj A ) 92 { a : Obj A } ( b : Obj A )
93 ( f : Hom A a ( FObj T b) ) 93 ( f : Hom A a ( FObj T b) )
94 ( m : Monad A T η μ ) 94 ( m : Monad A T η μ )
95 { k : Kleisli A T η μ m} 95 { k : Kleisli A T η μ m}
96 → A [ join k b (TMap η b) f ≈ f ] 96 → A [ join k (TMap η b) f ≈ f ]
97 Lemma7 c {T} η b f m {k} = 97 Lemma7 c {T} η b f m {k} =
98 let open ≈-Reasoning (c) 98 let open ≈-Reasoning (c)
99 μ = mu ( monad k ) 99 μ = mu ( monad k )
100 in 100 in
101 begin 101 begin
102 join k b (TMap η b) f 102 join k (TMap η b) f
103 ≈⟨ refl-hom ⟩ 103 ≈⟨ refl-hom ⟩
104 c [ TMap μ b o c [ FMap T ((TMap η b)) o f ] ] 104 c [ TMap μ b o c [ FMap T ((TMap η b)) o f ] ]
105 ≈⟨ IsCategory.associative (Category.isCategory c) ⟩ 105 ≈⟨ IsCategory.associative (Category.isCategory c) ⟩
106 c [ c [ TMap μ b o FMap T ((TMap η b)) ] o f ] 106 c [ c [ TMap μ b o FMap T ((TMap η b)) ] o f ]
107 ≈⟨ car ( IsMonad.unity2 ( isMonad ( monad k )) ) ⟩ 107 ≈⟨ car ( IsMonad.unity2 ( isMonad ( monad k )) ) ⟩
117 { μ : NTrans A A (T ○ T) T } 117 { μ : NTrans A A (T ○ T) T }
118 ( a : Obj A ) ( b : Obj A ) 118 ( a : Obj A ) ( b : Obj A )
119 ( f : Hom A a ( FObj T b) ) 119 ( f : Hom A a ( FObj T b) )
120 ( m : Monad A T η μ ) 120 ( m : Monad A T η μ )
121 ( k : Kleisli A T η μ m) 121 ( k : Kleisli A T η μ m)
122 → A [ join k b f (TMap η a) ≈ f ] 122 → A [ join k f (TMap η a) ≈ f ]
123 Lemma8 c T η a b f m k = 123 Lemma8 c T η a b f m k =
124 begin 124 begin
125 join k b f (TMap η a) 125 join k f (TMap η a)
126 ≈⟨ refl-hom ⟩ 126 ≈⟨ refl-hom ⟩
127 c [ TMap μ b o c [ FMap T f o (TMap η a) ] ] 127 c [ TMap μ b o c [ FMap T f o (TMap η a) ] ]
128 ≈⟨ cdr ( nat η ) ⟩ 128 ≈⟨ cdr ( nat η ) ⟩
129 c [ TMap μ b o c [ (TMap η ( FObj T b)) o f ] ] 129 c [ TMap μ b o c [ (TMap η ( FObj T b)) o f ] ]
130 ≈⟨ IsCategory.associative (Category.isCategory c) ⟩ 130 ≈⟨ IsCategory.associative (Category.isCategory c) ⟩
146 ( f : Hom A a ( FObj T b) ) 146 ( f : Hom A a ( FObj T b) )
147 ( g : Hom A b ( FObj T c) ) 147 ( g : Hom A b ( FObj T c) )
148 ( h : Hom A c ( FObj T d) ) 148 ( h : Hom A c ( FObj T d) )
149 ( m : Monad A T η μ ) 149 ( m : Monad A T η μ )
150 { k : Kleisli A T η μ m} 150 { k : Kleisli A T η μ m}
151 → A [ join k d h (join k c g f) ≈ join k d ( join k d h g) f ] 151 → A [ join k h (join k g f) ≈ join k ( join k h g) f ]
152 Lemma9 A {T} {η} {μ} {a} {b} {c} {d} f g h m {k} = 152 Lemma9 A {T} {η} {μ} {a} {b} {c} {d} f g h m {k} =
153 begin 153 begin
154 join k d h (join k c g f) 154 join k h (join k g f)
155 ≈⟨⟩ 155 ≈⟨⟩
156 join k d h ( ( TMap μ c o ( FMap T g o f ) ) ) 156 join k h ( ( TMap μ c o ( FMap T g o f ) ) )
157 ≈⟨ refl-hom ⟩ 157 ≈⟨ refl-hom ⟩
158 ( TMap μ d o ( FMap T h o ( TMap μ c o ( FMap T g o f ) ) ) ) 158 ( TMap μ d o ( FMap T h o ( TMap μ c o ( FMap T g o f ) ) ) )
159 ≈⟨ cdr ( cdr ( assoc )) ⟩ 159 ≈⟨ cdr ( cdr ( assoc )) ⟩
160 ( TMap μ d o ( FMap T h o ( ( TMap μ c o FMap T g ) o f ) ) ) 160 ( TMap μ d o ( FMap T h o ( ( TMap μ c o FMap T g ) o f ) ) )
161 ≈⟨ assoc ⟩ --- ( f o ( g o h ) ) = ( ( f o g ) o h ) 161 ≈⟨ assoc ⟩ --- ( f o ( g o h ) ) = ( ( f o g ) o h )
196 ≈⟨ sym assoc ⟩ 196 ≈⟨ sym assoc ⟩
197 ( TMap μ d o ( ( FMap T ( TMap μ d ) o FMap T ( ( FMap T h o g ) ) ) o f ) ) 197 ( TMap μ d o ( ( FMap T ( TMap μ d ) o FMap T ( ( FMap T h o g ) ) ) o f ) )
198 ≈⟨ cdr ( car ( sym ( distr T ))) ⟩ 198 ≈⟨ cdr ( car ( sym ( distr T ))) ⟩
199 ( TMap μ d o ( FMap T ( ( ( TMap μ d ) o ( FMap T h o g ) ) ) o f ) ) 199 ( TMap μ d o ( FMap T ( ( ( TMap μ d ) o ( FMap T h o g ) ) ) o f ) )
200 ≈⟨ refl-hom ⟩ 200 ≈⟨ refl-hom ⟩
201 join k d ( ( TMap μ d o ( FMap T h o g ) ) ) f 201 join k ( ( TMap μ d o ( FMap T h o g ) ) ) f
202 ≈⟨ refl-hom ⟩ 202 ≈⟨ refl-hom ⟩
203 join k d ( join k d h g) f 203 join k ( join k h g) f
204 ∎ where open ≈-Reasoning (A) 204 ∎ where open ≈-Reasoning (A)
205 205
206 -- Kleisli-join : {!!} 206 -- Kleisli-join : {!!}
207 -- Kleisli-join = {!!} 207 -- Kleisli-join = {!!}
208 208