comparison freyd1.agda @ 691:917e51be9bbf

change argument of Limit and K
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 12 Nov 2017 09:56:40 +0900
parents 372205f40ab0
children
comparison
equal deleted inserted replaced
690:3d41a8edbf63 691:917e51be9bbf
49 49
50 50
51 --- Get a nat on A from a nat on CommaCategory 51 --- Get a nat on A from a nat on CommaCategory
52 -- 52 --
53 NIA : { I : Category c₁ c₂ ℓ } → ( Γ : Functor I CommaCategory ) 53 NIA : { I : Category c₁ c₂ ℓ } → ( Γ : Functor I CommaCategory )
54 (c : Obj CommaCategory ) ( ta : NTrans I CommaCategory ( K CommaCategory I c ) Γ ) → NTrans I A ( K A I (obj c) ) (FIA Γ) 54 (c : Obj CommaCategory ) ( ta : NTrans I CommaCategory ( K I CommaCategory c ) Γ ) → NTrans I A ( K I A (obj c) ) (FIA Γ)
55 NIA {I} Γ c ta = record { 55 NIA {I} Γ c ta = record {
56 TMap = λ x → arrow (TMap ta x ) 56 TMap = λ x → arrow (TMap ta x )
57 ; isNTrans = record { commute = comm1 } 57 ; isNTrans = record { commute = comm1 }
58 } where 58 } where
59 comm1 : {a b : Obj I} {f : Hom I a b} → 59 comm1 : {a b : Obj I} {f : Hom I a b} →
60 A [ A [ FMap (FIA Γ) f o arrow (TMap ta a) ] ≈ A [ arrow (TMap ta b) o FMap (K A I (obj c)) f ] ] 60 A [ A [ FMap (FIA Γ) f o arrow (TMap ta a) ] ≈ A [ arrow (TMap ta b) o FMap (K I A (obj c)) f ] ]
61 comm1 {a} {b} {f} = IsNTrans.commute (isNTrans ta ) 61 comm1 {a} {b} {f} = IsNTrans.commute (isNTrans ta )
62 62
63 63
64 open LimitPreserve 64 open LimitPreserve
65 65
66 -- Limit on A from Γ : I → CommaCategory 66 -- Limit on A from Γ : I → CommaCategory
67 -- 67 --
68 LimitC : { I : Category c₁ c₂ ℓ } → ( comp : Complete A I ) 68 LimitC : { I : Category c₁ c₂ ℓ } → ( comp : Complete A I )
69 → ( Γ : Functor I CommaCategory ) 69 → ( Γ : Functor I CommaCategory )
70 → ( glimit : LimitPreserve A I C G ) 70 → ( glimit : LimitPreserve I A C G )
71 → Limit C I (G ○ (FIA Γ)) 71 → Limit I C (G ○ (FIA Γ))
72 LimitC {I} comp Γ glimit = plimit glimit (climit comp (FIA Γ)) 72 LimitC {I} comp Γ glimit = plimit glimit (climit comp (FIA Γ))
73 73
74 tu : { I : Category c₁ c₂ ℓ } → ( comp : Complete A I) → ( Γ : Functor I CommaCategory ) 74 tu : { I : Category c₁ c₂ ℓ } → ( comp : Complete A I) → ( Γ : Functor I CommaCategory )
75 → NTrans I C (K C I (FObj F (limit-c comp (FIA Γ)))) (G ○ (FIA Γ)) 75 → NTrans I C (K I C (FObj F (limit-c comp (FIA Γ)))) (G ○ (FIA Γ))
76 tu {I} comp Γ = record { 76 tu {I} comp Γ = record {
77 TMap = λ i → C [ hom ( FObj Γ i ) o FMap F ( TMap (t0 ( climit comp (FIA Γ))) i) ] 77 TMap = λ i → C [ hom ( FObj Γ i ) o FMap F ( TMap (t0 ( climit comp (FIA Γ))) i) ]
78 ; isNTrans = record { commute = λ {a} {b} {f} → commute {a} {b} {f} } 78 ; isNTrans = record { commute = λ {a} {b} {f} → commute {a} {b} {f} }
79 } where 79 } where
80 commute : {a b : Obj I} {f : Hom I a b} → 80 commute : {a b : Obj I} {f : Hom I a b} →
81 C [ C [ FMap (G ○ (FIA Γ)) f o C [ hom (FObj Γ a) o FMap F (TMap (t0 ( climit comp (FIA Γ))) a) ] ] 81 C [ C [ FMap (G ○ (FIA Γ)) f o C [ hom (FObj Γ a) o FMap F (TMap (t0 ( climit comp (FIA Γ))) a) ] ]
82 ≈ C [ C [ hom (FObj Γ b) o FMap F (TMap (t0 ( climit comp (FIA Γ))) b) ] o FMap (K C I (FObj F (limit-c comp (FIA Γ)))) f ] ] 82 ≈ C [ C [ hom (FObj Γ b) o FMap F (TMap (t0 ( climit comp (FIA Γ))) b) ] o FMap (K I C (FObj F (limit-c comp (FIA Γ)))) f ] ]
83 commute {a} {b} {f} = let open ≈-Reasoning (C) in begin 83 commute {a} {b} {f} = let open ≈-Reasoning (C) in begin
84 FMap (G ○ (FIA Γ)) f o ( hom (FObj Γ a) o FMap F (TMap (t0 ( climit comp (FIA Γ))) a )) 84 FMap (G ○ (FIA Γ)) f o ( hom (FObj Γ a) o FMap F (TMap (t0 ( climit comp (FIA Γ))) a ))
85 ≈⟨⟩ 85 ≈⟨⟩
86 FMap G (arrow (FMap Γ f ) ) o ( hom (FObj Γ a) o FMap F ( TMap (t0 ( climit comp (FIA Γ))) a )) 86 FMap G (arrow (FMap Γ f ) ) o ( hom (FObj Γ a) o FMap F ( TMap (t0 ( climit comp (FIA Γ))) a ))
87 ≈⟨ assoc ⟩ 87 ≈⟨ assoc ⟩
93 ≈↑⟨ cdr (distr F) ⟩ 93 ≈↑⟨ cdr (distr F) ⟩
94 hom (FObj Γ b) o ( FMap F (A [ arrow (FMap Γ f) o TMap (t0 ( climit comp (FIA Γ))) a ] ) ) 94 hom (FObj Γ b) o ( FMap F (A [ arrow (FMap Γ f) o TMap (t0 ( climit comp (FIA Γ))) a ] ) )
95 ≈⟨⟩ 95 ≈⟨⟩
96 hom (FObj Γ b) o ( FMap F (A [ FMap (FIA Γ) f o TMap (t0 ( climit comp (FIA Γ))) a ] ) ) 96 hom (FObj Γ b) o ( FMap F (A [ FMap (FIA Γ) f o TMap (t0 ( climit comp (FIA Γ))) a ] ) )
97 ≈⟨ cdr ( fcong F ( IsNTrans.commute (isNTrans (t0 ( climit comp (FIA Γ))) ))) ⟩ 97 ≈⟨ cdr ( fcong F ( IsNTrans.commute (isNTrans (t0 ( climit comp (FIA Γ))) ))) ⟩
98 hom (FObj Γ b) o ( FMap F ( A [ (TMap (t0 ( climit comp (FIA Γ))) b) o FMap (K A I (a0 (climit comp (FIA Γ)))) f ] )) 98 hom (FObj Γ b) o ( FMap F ( A [ (TMap (t0 ( climit comp (FIA Γ))) b) o FMap (K I A (a0 (climit comp (FIA Γ)))) f ] ))
99 ≈⟨⟩ 99 ≈⟨⟩
100 hom (FObj Γ b) o ( FMap F ( A [ (TMap (t0 ( climit comp (FIA Γ))) b) o id1 A (limit-c comp (FIA Γ)) ] )) 100 hom (FObj Γ b) o ( FMap F ( A [ (TMap (t0 ( climit comp (FIA Γ))) b) o id1 A (limit-c comp (FIA Γ)) ] ))
101 ≈⟨ cdr ( distr F ) ⟩ 101 ≈⟨ cdr ( distr F ) ⟩
102 hom (FObj Γ b) o ( FMap F (TMap (t0 ( climit comp (FIA Γ))) b) o FMap F (id1 A (limit-c comp (FIA Γ)))) 102 hom (FObj Γ b) o ( FMap F (TMap (t0 ( climit comp (FIA Γ))) b) o FMap F (id1 A (limit-c comp (FIA Γ))))
103 ≈⟨ cdr ( cdr ( IsFunctor.identity (isFunctor F) ) ) ⟩ 103 ≈⟨ cdr ( cdr ( IsFunctor.identity (isFunctor F) ) ) ⟩
104 hom (FObj Γ b) o ( FMap F (TMap (t0 ( climit comp (FIA Γ))) b) o id1 C (FObj F (limit-c comp (FIA Γ)))) 104 hom (FObj Γ b) o ( FMap F (TMap (t0 ( climit comp (FIA Γ))) b) o id1 C (FObj F (limit-c comp (FIA Γ))))
105 ≈⟨ assoc ⟩ 105 ≈⟨ assoc ⟩
106 ( hom (FObj Γ b) o FMap F (TMap (t0 ( climit comp (FIA Γ))) b)) o FMap (K C I (FObj F (limit-c comp (FIA Γ)))) f 106 ( hom (FObj Γ b) o FMap F (TMap (t0 ( climit comp (FIA Γ))) b)) o FMap (K I C (FObj F (limit-c comp (FIA Γ)))) f
107 107
108 limitHom : { I : Category c₁ c₂ ℓ } → (comp : Complete A I) → ( Γ : Functor I CommaCategory ) 108 limitHom : { I : Category c₁ c₂ ℓ } → (comp : Complete A I) → ( Γ : Functor I CommaCategory )
109 → ( glimit : LimitPreserve A I C G ) → Hom C (FObj F (limit-c comp (FIA Γ ) )) (FObj G (limit-c comp (FIA Γ) )) 109 → ( glimit : LimitPreserve I A C G ) → Hom C (FObj F (limit-c comp (FIA Γ ) )) (FObj G (limit-c comp (FIA Γ) ))
110 limitHom comp Γ glimit = limit (isLimit (LimitC comp Γ glimit )) (FObj F ( limit-c comp (FIA Γ))) (tu comp Γ ) 110 limitHom comp Γ glimit = limit (isLimit (LimitC comp Γ glimit )) (FObj F ( limit-c comp (FIA Γ))) (tu comp Γ )
111 111
112 commaLimit : { I : Category c₁ c₂ ℓ } → ( Complete A I) → ( Γ : Functor I CommaCategory ) 112 commaLimit : { I : Category c₁ c₂ ℓ } → ( Complete A I) → ( Γ : Functor I CommaCategory )
113 → ( glimit : LimitPreserve A I C G ) 113 → ( glimit : LimitPreserve I A C G )
114 → Obj CommaCategory 114 → Obj CommaCategory
115 commaLimit {I} comp Γ glimit = record { 115 commaLimit {I} comp Γ glimit = record {
116 obj = limit-c comp (FIA Γ) 116 obj = limit-c comp (FIA Γ)
117 ; hom = limitHom comp Γ glimit 117 ; hom = limitHom comp Γ glimit
118 } 118 }
119 119
120 120
121 commaNat : { I : Category c₁ c₂ ℓ } → ( comp : Complete A I) → ( Γ : Functor I CommaCategory ) 121 commaNat : { I : Category c₁ c₂ ℓ } → ( comp : Complete A I) → ( Γ : Functor I CommaCategory )
122 → ( glimit : LimitPreserve A I C G ) 122 → ( glimit : LimitPreserve I A C G )
123 → NTrans I CommaCategory (K CommaCategory I (commaLimit {I} comp Γ glimit)) Γ 123 → NTrans I CommaCategory (K I CommaCategory (commaLimit {I} comp Γ glimit)) Γ
124 commaNat {I} comp Γ glimit = record { 124 commaNat {I} comp Γ glimit = record {
125 TMap = λ x → record { 125 TMap = λ x → record {
126 arrow = TMap ( limit-u comp (FIA Γ ) ) x 126 arrow = TMap ( limit-u comp (FIA Γ ) ) x
127 ; comm = comm1 x 127 ; comm = comm1 x
128 } 128 }
129 ; isNTrans = record { commute = comm2 } 129 ; isNTrans = record { commute = comm2 }
130 } where 130 } where
131 comm1 : (x : Obj I ) → 131 comm1 : (x : Obj I ) →
132 C [ C [ FMap G (TMap (limit-u comp (FIA Γ)) x) o hom (FObj (K CommaCategory I (commaLimit comp Γ glimit)) x) ] 132 C [ C [ FMap G (TMap (limit-u comp (FIA Γ)) x) o hom (FObj (K I CommaCategory (commaLimit comp Γ glimit)) x) ]
133 ≈ C [ hom (FObj Γ x) o FMap F (TMap (limit-u comp (FIA Γ)) x) ] ] 133 ≈ C [ hom (FObj Γ x) o FMap F (TMap (limit-u comp (FIA Γ)) x) ] ]
134 comm1 x = let open ≈-Reasoning (C) in begin 134 comm1 x = let open ≈-Reasoning (C) in begin
135 FMap G (TMap (limit-u comp (FIA Γ)) x) o hom (FObj (K CommaCategory I (commaLimit comp Γ glimit)) x) 135 FMap G (TMap (limit-u comp (FIA Γ)) x) o hom (FObj (K I CommaCategory (commaLimit comp Γ glimit)) x)
136 ≈⟨⟩ 136 ≈⟨⟩
137 FMap G (TMap (limit-u comp (FIA Γ)) x) o hom (commaLimit comp Γ glimit) 137 FMap G (TMap (limit-u comp (FIA Γ)) x) o hom (commaLimit comp Γ glimit)
138 ≈⟨⟩ 138 ≈⟨⟩
139 FMap G (TMap (limit-u comp (FIA Γ)) x) o limit (isLimit (LimitC comp Γ glimit )) (FObj F ( limit-c comp (FIA Γ))) (tu comp Γ ) 139 FMap G (TMap (limit-u comp (FIA Γ)) x) o limit (isLimit (LimitC comp Γ glimit )) (FObj F ( limit-c comp (FIA Γ))) (tu comp Γ )
140 ≈⟨⟩ 140 ≈⟨⟩
144 ≈⟨⟩ 144 ≈⟨⟩
145 hom (FObj Γ x) o FMap F (TMap (limit-u comp (FIA Γ)) x) 145 hom (FObj Γ x) o FMap F (TMap (limit-u comp (FIA Γ)) x)
146 146
147 comm2 : {a b : Obj I} {f : Hom I a b} → 147 comm2 : {a b : Obj I} {f : Hom I a b} →
148 CommaCategory [ CommaCategory [ FMap Γ f o record { arrow = TMap (limit-u comp (FIA Γ)) a ; comm = comm1 a } ] 148 CommaCategory [ CommaCategory [ FMap Γ f o record { arrow = TMap (limit-u comp (FIA Γ)) a ; comm = comm1 a } ]
149 ≈ CommaCategory [ record { arrow = TMap (limit-u comp (FIA Γ)) b ; comm = comm1 b } o FMap (K CommaCategory I (commaLimit comp Γ glimit)) f ] ] 149 ≈ CommaCategory [ record { arrow = TMap (limit-u comp (FIA Γ)) b ; comm = comm1 b } o FMap (K I CommaCategory (commaLimit comp Γ glimit)) f ] ]
150 comm2 {a} {b} {f} = let open ≈-Reasoning (A) in begin 150 comm2 {a} {b} {f} = let open ≈-Reasoning (A) in begin
151 FMap (FIA Γ) f o TMap (limit-u comp (FIA Γ)) a 151 FMap (FIA Γ) f o TMap (limit-u comp (FIA Γ)) a
152 ≈⟨ IsNTrans.commute (isNTrans (limit-u comp (FIA Γ))) ⟩ 152 ≈⟨ IsNTrans.commute (isNTrans (limit-u comp (FIA Γ))) ⟩
153 TMap (limit-u comp (FIA Γ)) b o FMap (K A I (limit-c comp (FIA Γ))) f 153 TMap (limit-u comp (FIA Γ)) b o FMap (K I A (limit-c comp (FIA Γ))) f
154 154
155 155
156 gnat : { I : Category c₁ c₂ ℓ } → ( Γ : Functor I CommaCategory ) 156 gnat : { I : Category c₁ c₂ ℓ } → ( Γ : Functor I CommaCategory )
157 → (a : CommaObj) → ( t : NTrans I CommaCategory (K CommaCategory I a) Γ ) → 157 → (a : CommaObj) → ( t : NTrans I CommaCategory (K I CommaCategory a) Γ ) →
158 NTrans I C (K C I (FObj F (obj a))) (G ○ FIA Γ) 158 NTrans I C (K I C (FObj F (obj a))) (G ○ FIA Γ)
159 gnat {I} Γ a t = record { 159 gnat {I} Γ a t = record {
160 TMap = λ i → C [ hom ( FObj Γ i ) o FMap F ( TMap (NIA Γ a t) i ) ] 160 TMap = λ i → C [ hom ( FObj Γ i ) o FMap F ( TMap (NIA Γ a t) i ) ]
161 ; isNTrans = record { commute = λ {x y f} → comm1 x y f } 161 ; isNTrans = record { commute = λ {x y f} → comm1 x y f }
162 } where 162 } where
163 comm1 : (x y : Obj I) (f : Hom I x y ) → 163 comm1 : (x y : Obj I) (f : Hom I x y ) →
164 C [ C [ FMap (G ○ FIA Γ) f o C [ hom (FObj Γ x) o FMap F (TMap (NIA Γ a t) x) ] ] 164 C [ C [ FMap (G ○ FIA Γ) f o C [ hom (FObj Γ x) o FMap F (TMap (NIA Γ a t) x) ] ]
165 ≈ C [ C [ hom (FObj Γ y) o FMap F (TMap (NIA Γ a t) y) ] o FMap (K C I (FObj F (obj a))) f ] ] 165 ≈ C [ C [ hom (FObj Γ y) o FMap F (TMap (NIA Γ a t) y) ] o FMap (K I C (FObj F (obj a))) f ] ]
166 comm1 x y f = let open ≈-Reasoning (C) in begin 166 comm1 x y f = let open ≈-Reasoning (C) in begin
167 FMap (G ○ FIA Γ) f o ( hom (FObj Γ x) o FMap F (TMap (NIA Γ a t) x )) 167 FMap (G ○ FIA Γ) f o ( hom (FObj Γ x) o FMap F (TMap (NIA Γ a t) x ))
168 ≈⟨⟩ 168 ≈⟨⟩
169 FMap G (FMap (FIA Γ) f) o ( hom (FObj Γ x) o FMap F (TMap (NIA Γ a t) x )) 169 FMap G (FMap (FIA Γ) f) o ( hom (FObj Γ x) o FMap F (TMap (NIA Γ a t) x ))
170 ≈⟨ assoc ⟩ 170 ≈⟨ assoc ⟩
178 ≈⟨ cdr ( fcong F ( IsNTrans.commute ( isNTrans ( NIA Γ a t )))) ⟩ 178 ≈⟨ cdr ( fcong F ( IsNTrans.commute ( isNTrans ( NIA Γ a t )))) ⟩
179 hom (FObj Γ y) o ( FMap F ( A [ TMap (NIA Γ a t) y o id1 A (obj a) ]) ) 179 hom (FObj Γ y) o ( FMap F ( A [ TMap (NIA Γ a t) y o id1 A (obj a) ]) )
180 ≈⟨ cdr ( fcong F ( IsCategory.identityR (Category.isCategory A))) ⟩ 180 ≈⟨ cdr ( fcong F ( IsCategory.identityR (Category.isCategory A))) ⟩
181 hom (FObj Γ y) o FMap F (TMap (NIA Γ a t) y) 181 hom (FObj Γ y) o FMap F (TMap (NIA Γ a t) y)
182 ≈↑⟨ idR ⟩ 182 ≈↑⟨ idR ⟩
183 ( hom (FObj Γ y) o FMap F (TMap (NIA Γ a t) y) ) o FMap (K C I (FObj F (obj a))) f 183 ( hom (FObj Γ y) o FMap F (TMap (NIA Γ a t) y) ) o FMap (K I C (FObj F (obj a))) f
184 184
185 185
186 186
187 comma-a0 : { I : Category c₁ c₂ ℓ } → ( comp : Complete A I) → ( Γ : Functor I CommaCategory ) 187 comma-a0 : { I : Category c₁ c₂ ℓ } → ( comp : Complete A I) → ( Γ : Functor I CommaCategory )
188 → ( glimit : LimitPreserve A I C G ) (a : CommaObj) → ( t : NTrans I CommaCategory (K CommaCategory I a) Γ ) → Hom CommaCategory a (commaLimit comp Γ glimit) 188 → ( glimit : LimitPreserve I A C G ) (a : CommaObj) → ( t : NTrans I CommaCategory (K I CommaCategory a) Γ ) → Hom CommaCategory a (commaLimit comp Γ glimit)
189 comma-a0 {I} comp Γ glimit a t = record { 189 comma-a0 {I} comp Γ glimit a t = record {
190 arrow = limit (isLimit ( climit comp (FIA Γ) ) ) (obj a ) (NIA {I} Γ a t ) 190 arrow = limit (isLimit ( climit comp (FIA Γ) ) ) (obj a ) (NIA {I} Γ a t )
191 ; comm = comm1 191 ; comm = comm1
192 } where 192 } where
193 comm1 : C [ C [ FMap G (limit (isLimit (climit comp (FIA Γ))) (obj a) (NIA Γ a t)) o hom a ] 193 comm1 : C [ C [ FMap G (limit (isLimit (climit comp (FIA Γ))) (obj a) (NIA Γ a t)) o hom a ]
241 ≈⟨⟩ 241 ≈⟨⟩
242 hom (commaLimit comp Γ glimit) o FMap F (limit (isLimit (climit comp (FIA Γ))) (obj a) (NIA Γ a t)) 242 hom (commaLimit comp Γ glimit) o FMap F (limit (isLimit (climit comp (FIA Γ))) (obj a) (NIA Γ a t))
243 243
244 244
245 comma-t0f=t : { I : Category c₁ c₂ ℓ } → ( comp : Complete A I) → ( Γ : Functor I CommaCategory ) 245 comma-t0f=t : { I : Category c₁ c₂ ℓ } → ( comp : Complete A I) → ( Γ : Functor I CommaCategory )
246 → ( glimit : LimitPreserve A I C G ) (a : CommaObj) → ( t : NTrans I CommaCategory (K CommaCategory I a) Γ ) (i : Obj I ) 246 → ( glimit : LimitPreserve I A C G ) (a : CommaObj) → ( t : NTrans I CommaCategory (K I CommaCategory a) Γ ) (i : Obj I )
247 → CommaCategory [ CommaCategory [ TMap (commaNat comp Γ glimit) i o comma-a0 comp Γ glimit a t ] ≈ TMap t i ] 247 → CommaCategory [ CommaCategory [ TMap (commaNat comp Γ glimit) i o comma-a0 comp Γ glimit a t ] ≈ TMap t i ]
248 comma-t0f=t {I} comp Γ glimit a t i = let open ≈-Reasoning (A) in begin 248 comma-t0f=t {I} comp Γ glimit a t i = let open ≈-Reasoning (A) in begin
249 TMap ( limit-u comp (FIA Γ ) ) i o limit (isLimit ( climit comp (FIA Γ) ) ) (obj a ) (NIA {I} Γ a t ) 249 TMap ( limit-u comp (FIA Γ ) ) i o limit (isLimit ( climit comp (FIA Γ) ) ) (obj a ) (NIA {I} Γ a t )
250 ≈⟨ t0f=t (isLimit ( climit comp (FIA Γ) ) ) ⟩ 250 ≈⟨ t0f=t (isLimit ( climit comp (FIA Γ) ) ) ⟩
251 TMap (NIA {I} Γ a t ) i 251 TMap (NIA {I} Γ a t ) i
252 252
253 253
254 comma-uniqueness : { I : Category c₁ c₂ ℓ } → ( comp : Complete A I) → ( Γ : Functor I CommaCategory ) 254 comma-uniqueness : { I : Category c₁ c₂ ℓ } → ( comp : Complete A I) → ( Γ : Functor I CommaCategory )
255 → ( glimit : LimitPreserve A I C G ) (a : CommaObj) → ( t : NTrans I CommaCategory (K CommaCategory I a) Γ ) 255 → ( glimit : LimitPreserve I A C G ) (a : CommaObj) → ( t : NTrans I CommaCategory (K I CommaCategory a) Γ )
256 → ( f : Hom CommaCategory a (commaLimit comp Γ glimit)) 256 → ( f : Hom CommaCategory a (commaLimit comp Γ glimit))
257 → ( ∀ { i : Obj I } → CommaCategory [ CommaCategory [ TMap ( commaNat { I} comp Γ glimit ) i o f ] ≈ TMap t i ] ) 257 → ( ∀ { i : Obj I } → CommaCategory [ CommaCategory [ TMap ( commaNat { I} comp Γ glimit ) i o f ] ≈ TMap t i ] )
258 → CommaCategory [ comma-a0 comp Γ glimit a t ≈ f ] 258 → CommaCategory [ comma-a0 comp Γ glimit a t ≈ f ]
259 comma-uniqueness {I} comp Γ glimit a t f t=f = let open ≈-Reasoning (A) in begin 259 comma-uniqueness {I} comp Γ glimit a t f t=f = let open ≈-Reasoning (A) in begin
260 limit (isLimit ( climit comp (FIA Γ) ) ) (obj a ) (NIA {I} Γ a t ) 260 limit (isLimit ( climit comp (FIA Γ) ) ) (obj a ) (NIA {I} Γ a t )
261 ≈⟨ limit-uniqueness (isLimit ( climit comp (FIA Γ) ) ) t=f ⟩ 261 ≈⟨ limit-uniqueness (isLimit ( climit comp (FIA Γ) ) ) t=f ⟩
262 arrow f 262 arrow f
263 263
264 264
265 hasLimit : { I : Category c₁ c₂ ℓ } → ( comp : Complete A I ) 265 hasLimit : { I : Category c₁ c₂ ℓ } → ( comp : Complete A I )
266 → ( glimit : LimitPreserve A I C G ) 266 → ( glimit : LimitPreserve I A C G )
267 → ( Γ : Functor I CommaCategory ) 267 → ( Γ : Functor I CommaCategory )
268 → Limit CommaCategory I Γ 268 → Limit I CommaCategory Γ
269 hasLimit {I} comp glimit Γ = record { 269 hasLimit {I} comp glimit Γ = record {
270 a0 = commaLimit {I} comp Γ glimit ; 270 a0 = commaLimit {I} comp Γ glimit ;
271 t0 = commaNat { I} comp Γ glimit ; 271 t0 = commaNat { I} comp Γ glimit ;
272 isLimit = record { 272 isLimit = record {
273 limit = λ a t → comma-a0 comp Γ glimit a t ; 273 limit = λ a t → comma-a0 comp Γ glimit a t ;