Mercurial > hg > Members > kono > Proof > category
diff src/freyd2.agda @ 1107:4a6d3d27a9fb
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 11 Mar 2023 01:14:24 +0900 |
parents | 270f0ba65b88 |
children | 45de2b31bf02 |
line wrap: on
line diff
--- a/src/freyd2.agda Fri Mar 10 16:19:46 2023 +0900 +++ b/src/freyd2.agda Sat Mar 11 01:14:24 2023 +0900 @@ -396,5 +396,43 @@ -- FisLeftAdjoint : Adjunction B A U F nat-η nat-ε -- FisLeftAdjoint = record { isAdjunction = record { +open import Data.Product renaming (_×_ to _∧_ ) hiding ( <_,_> ) +open import Category.Constructions.Product + +module pro-ex {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) ( _*_ : Obj A → Obj A → Obj A ) + (*-iso : (a b c x : Obj A) → IsoS A (A × A) x c (x , x ) (a , b )) where + +-- Hom A x c ≅ ( Hom A x a ) * ( Hom A x b ) + + open IsoS + + import Axiom.Extensionality.Propositional + postulate f-extensionality : { n m : Level} → Axiom.Extensionality.Propositional.Extensionality n m + + open import Category.Cat + + *eq : {a b : Obj (A × A) } { x y : Hom (A × A) a b } → (x≈y : (A × A) [ x ≈ y ]) → x ≡ y + *eq {a} {b} {x1 , x2} {y1 , y2} (eq1 , eq2) = cong₂ _,_ ( ≡←≈ A eq1 ) ( ≡←≈ A eq2 ) + + opA = Category.op A + prodFunctor : Functor (Category.op A) (Category.op (A × A)) + prodFunctor = record { + FObj = λ x → x , x + ; FMap = λ {x} {y} (f : Hom opA x y ) → f , f + ; isFunctor = record { identity = ? ; distr = ? ; ≈-cong = ? } + } + t00 : (a c d e : Obj opA) (f : Hom opA a c ) → Hom (A × A) (c , c) (d , e ) + t00 a c d e f = ≅→ (*-iso d e a c) f + nat-* : {a b c : Obj A} → NTrans (Category.op A) (Sets {c₂}) (Yoneda A (≡←≈ A) c ) (Yoneda (A × A) *eq (a , b) ○ prodFunctor ) + nat-* {a} {b} {c} = record { TMap = λ z f → ≅→ (*-iso a b c z) f ; isNTrans = record { commute = nat-comm } } where + nat-comm : {x y : Obj opA} {f : Hom opA x y} → + Sets [ Sets [ (λ g → opA [ f o proj₁ g ] , opA [ f o proj₂ g ]) o (λ f₁ → ≅→ (*-iso a b c x) f₁) ] + ≈ Sets [ (λ f₁ → ≅→ (*-iso a b c y) f₁) o (λ g → opA [ f o g ]) ] ] + nat-comm {x} {y} {f} = f-extensionality (λ g → ( begin + opA [ f o proj₁ (≅→ (*-iso a b c x) g) ] , opA [ f o proj₂ (≅→ (*-iso a b c x) g) ] ≡⟨ ? ⟩ + proj₁ (≅→ (*-iso a b c y) ( opA [ f o g ] )) , proj₂ (≅→ (*-iso a b c y) ( opA [ f o g ] ) ) ≡⟨ refl ⟩ + ≅→ (*-iso a b c y) ( opA [ f o g ] ) ∎ ) ) where open ≡-Reasoning + + -- end