annotate HomReasoning.agda @ 948:dca4b29553cb

mp-flatten
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 22 Aug 2020 10:45:40 +0900
parents ca5eba647990
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
56
83ff8d48fdca add unitility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
1 module HomReasoning where
31
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 -- Shinji KONO <kono@ie.u-ryukyu.ac.jp>
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 open import Category -- https://github.com/konn/category-agda
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 open import Level
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 open Functor
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 -- F(f)
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 -- F(a) ---→ F(b)
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 -- | |
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 -- |t(a) |t(b) G(f)t(a) = t(b)F(f)
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 -- | |
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 -- v v
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 -- G(a) ---→ G(b)
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 -- G(f)
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 record IsNTrans {c₁ c₂ ℓ c₁′ c₂′ ℓ′ : Level} (D : Category c₁ c₂ ℓ) (C : Category c₁′ c₂′ ℓ′)
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 ( F G : Functor D C )
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 (TMap : (A : Obj D) → Hom C (FObj F A) (FObj G A))
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 : Set (suc (c₁ ⊔ c₂ ⊔ ℓ ⊔ c₁′ ⊔ c₂′ ⊔ ℓ′)) where
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 field
130
5f331dfc000b remove Kleisli record
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
23 commute : {a b : Obj D} {f : Hom D a b}
31
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 → C [ C [ ( FMap G f ) o ( TMap a ) ] ≈ C [ (TMap b ) o (FMap F f) ] ]
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
130
5f331dfc000b remove Kleisli record
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
26 record NTrans {c₁ c₂ ℓ c₁′ c₂′ ℓ′ : Level} (domain : Category c₁ c₂ ℓ) (codomain : Category c₁′ c₂′ ℓ′)
5f331dfc000b remove Kleisli record
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
27 (F G : Functor domain codomain )
31
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 : Set (suc (c₁ ⊔ c₂ ⊔ ℓ ⊔ c₁′ ⊔ c₂′ ⊔ ℓ′)) where
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 field
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 TMap : (A : Obj domain) → Hom codomain (FObj F A) (FObj G A)
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 isNTrans : IsNTrans domain codomain F G TMap
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 module ≈-Reasoning {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) where
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 open import Relation.Binary.Core
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 _o_ : {a b c : Obj A } ( x : Hom A a b ) ( y : Hom A c a ) → Hom A c b
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 x o y = A [ x o y ]
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 _≈_ : {a b : Obj A } → Rel (Hom A a b) ℓ
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 x ≈ y = A [ x ≈ y ]
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 infixr 9 _o_
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 infix 4 _≈_
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 refl-hom : {a b : Obj A } { x : Hom A a b } → x ≈ x
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 refl-hom = IsEquivalence.refl (IsCategory.isEquivalence ( Category.isCategory A ))
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 trans-hom : {a b : Obj A } { x y z : Hom A a b } →
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 x ≈ y → y ≈ z → x ≈ z
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 trans-hom b c = ( IsEquivalence.trans (IsCategory.isEquivalence ( Category.isCategory A ))) b c
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 -- some short cuts
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 car : {a b c : Obj A } {x y : Hom A a b } { f : Hom A c a } →
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 x ≈ y → ( x o f ) ≈ ( y o f )
787
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 781
diff changeset
57 car eq = ( IsCategory.o-resp-≈ ( Category.isCategory A )) ( refl-hom ) eq
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 781
diff changeset
58
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 781
diff changeset
59 car1 : { c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) {a b c : Obj A } {x y : Hom A a b } { f : Hom A c a } →
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 781
diff changeset
60 A [ x ≈ y ] → A [ A [ x o f ] ≈ A [ y o f ] ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 781
diff changeset
61 car1 A eq = ( IsCategory.o-resp-≈ ( Category.isCategory A )) ( IsEquivalence.refl (IsCategory.isEquivalence ( Category.isCategory A )) ) eq
31
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 cdr : {a b c : Obj A } {x y : Hom A a b } { f : Hom A b c } →
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 x ≈ y → f o x ≈ f o y
787
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 781
diff changeset
65 cdr eq = ( IsCategory.o-resp-≈ ( Category.isCategory A )) eq (refl-hom )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 781
diff changeset
66
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 781
diff changeset
67 cdr1 : { c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) {a b c : Obj A } {x y : Hom A a b } { f : Hom A b c } →
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 781
diff changeset
68 A [ x ≈ y ] → A [ A [ f o x ] ≈ A [ f o y ] ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 781
diff changeset
69 cdr1 A eq = ( IsCategory.o-resp-≈ ( Category.isCategory A )) eq (IsEquivalence.refl (IsCategory.isEquivalence ( Category.isCategory A )) )
31
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 id : (a : Obj A ) → Hom A a a
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 id a = (Id {_} {_} {_} {A} a)
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73
479
a5034bdf6f38 Comma Category with A B C
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
74 idL : {a b : Obj A } { f : Hom A a b } → id b o f ≈ f
31
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 idL = IsCategory.identityL (Category.isCategory A)
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 idR : {a b : Obj A } { f : Hom A a b } → f o id a ≈ f
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 idR = IsCategory.identityR (Category.isCategory A)
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 sym : {a b : Obj A } { f g : Hom A a b } → f ≈ g → g ≈ f
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 sym = IsEquivalence.sym (IsCategory.isEquivalence (Category.isCategory A))
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82
455
55a9b6177ed4 on going ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
83 sym-hom = sym
55a9b6177ed4 on going ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
84
299
8c72f5284bc8 remove module parameter from yoneda functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
85 -- working on another cateogry
8c72f5284bc8 remove module parameter from yoneda functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
86 idL1 : { c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) {a b : Obj A } { f : Hom A b a } → A [ A [ Id {_} {_} {_} {A} a o f ] ≈ f ]
8c72f5284bc8 remove module parameter from yoneda functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
87 idL1 A = IsCategory.identityL (Category.isCategory A)
8c72f5284bc8 remove module parameter from yoneda functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
88
8c72f5284bc8 remove module parameter from yoneda functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
89 idR1 : { c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) {a b : Obj A } { f : Hom A a b } → A [ A [ f o Id {_} {_} {_} {A} a ] ≈ f ]
8c72f5284bc8 remove module parameter from yoneda functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
90 idR1 A = IsCategory.identityR (Category.isCategory A)
8c72f5284bc8 remove module parameter from yoneda functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
91
781
340708e8d54f fix for 2.5.4.2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 693
diff changeset
92 open import Relation.Binary.PropositionalEquality using ( _≡_ )
693
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 606
diff changeset
93 ≈←≡ : {a b : Obj A } { x y : Hom A a b } → (x≈y : x ≡ y ) → x ≈ y
781
340708e8d54f fix for 2.5.4.2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 693
diff changeset
94 ≈←≡ _≡_.refl = refl-hom
75
8e665152c306 Comparison Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
95
693
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 606
diff changeset
96 -- Ho← to prove this?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 606
diff changeset
97 -- ≡←≈ : {a b : Obj A } { x y : Hom A a b } → (x≈y : x ≈ y ) → x ≡ y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 606
diff changeset
98 -- ≡←≈ x≈y = irr x≈y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 606
diff changeset
99
75
8e665152c306 Comparison Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
100 ≡-cong : { c₁′ c₂′ ℓ′ : Level} {B : Category c₁′ c₂′ ℓ′} {x y : Obj B } { a b : Hom B x y } {x' y' : Obj A } →
420
3e44951b9bdb refl in free-monoid trouble
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 299
diff changeset
101 (f : Hom B x y → Hom A x' y' ) → a ≡ b → f a ≈ f b
781
340708e8d54f fix for 2.5.4.2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 693
diff changeset
102 ≡-cong f _≡_.refl = ≈←≡ _≡_.refl
75
8e665152c306 Comparison Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
103
67
e75436075bf0 cong-hom ?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 66
diff changeset
104 -- cong-≈ : { c₁′ c₂′ ℓ′ : Level} {B : Category c₁′ c₂′ ℓ′} {x y : Obj B } { a b : Hom B x y } {x' y' : Obj A } →
e75436075bf0 cong-hom ?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 66
diff changeset
105 -- B [ a ≈ b ] → (f : Hom B x y → Hom A x' y' ) → f a ≈ f b
75
8e665152c306 Comparison Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
106 -- cong-≈ eq f = {!!}
67
e75436075bf0 cong-hom ?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 66
diff changeset
107
69
84a150c980ce generalized distr and assco1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 67
diff changeset
108 assoc : {a b c d : Obj A } {f : Hom A c d} {g : Hom A b c} {h : Hom A a b}
299
8c72f5284bc8 remove module parameter from yoneda functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
109 → f o ( g o h ) ≈ ( f o g ) o h
31
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 assoc = IsCategory.associative (Category.isCategory A)
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111
299
8c72f5284bc8 remove module parameter from yoneda functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
112 -- working on another cateogry
8c72f5284bc8 remove module parameter from yoneda functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
113 assoc1 : { c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) {a b c d : Obj A } {f : Hom A c d} {g : Hom A b c} {h : Hom A a b}
69
84a150c980ce generalized distr and assco1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 67
diff changeset
114 → A [ A [ f o ( A [ g o h ] ) ] ≈ A [ ( A [ f o g ] ) o h ] ]
299
8c72f5284bc8 remove module parameter from yoneda functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
115 assoc1 A = IsCategory.associative (Category.isCategory A)
69
84a150c980ce generalized distr and assco1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 67
diff changeset
116
84a150c980ce generalized distr and assco1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 67
diff changeset
117 distr : { c₁ c₂ ℓ : Level} {A : Category c₁ c₂ ℓ}
84a150c980ce generalized distr and assco1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 67
diff changeset
118 { c₁′ c₂′ ℓ′ : Level} {D : Category c₁′ c₂′ ℓ′} (T : Functor D A) → {a b c : Obj D} {g : Hom D b c} { f : Hom D a b }
84a150c980ce generalized distr and assco1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 67
diff changeset
119 → A [ FMap T ( D [ g o f ] ) ≈ A [ FMap T g o FMap T f ] ]
75
8e665152c306 Comparison Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
120 distr T = IsFunctor.distr ( isFunctor T )
8e665152c306 Comparison Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
121
8e665152c306 Comparison Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
122 resp : {a b c : Obj A} {f g : Hom A a b} {h i : Hom A b c} → f ≈ g → h ≈ i → (h o f) ≈ (i o g)
8e665152c306 Comparison Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
123 resp = IsCategory.o-resp-≈ (Category.isCategory A)
8e665152c306 Comparison Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
124
8e665152c306 Comparison Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
125 fcong : { c₁ c₂ ℓ : Level} {C : Category c₁ c₂ ℓ}
8e665152c306 Comparison Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
126 { c₁′ c₂′ ℓ′ : Level} {D : Category c₁′ c₂′ ℓ′} {a b : Obj C} {f g : Hom C a b} → (T : Functor C D) → C [ f ≈ g ] → D [ FMap T f ≈ FMap T g ]
8e665152c306 Comparison Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 69
diff changeset
127 fcong T = IsFunctor.≈-cong (isFunctor T)
31
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 open NTrans
69
84a150c980ce generalized distr and assco1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 67
diff changeset
130 nat : { c₁ c₂ ℓ : Level} {A : Category c₁ c₂ ℓ} { c₁′ c₂′ ℓ′ : Level} {D : Category c₁′ c₂′ ℓ′}
84a150c980ce generalized distr and assco1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 67
diff changeset
131 {a b : Obj D} {f : Hom D a b} {F G : Functor D A }
31
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 → (η : NTrans D A F G )
69
84a150c980ce generalized distr and assco1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 67
diff changeset
133 → A [ A [ FMap G f o TMap η a ] ≈ A [ TMap η b o FMap F f ] ]
130
5f331dfc000b remove Kleisli record
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
134 nat η = IsNTrans.commute ( isNTrans η )
31
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135
460
961c236807f1 limit-to done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 455
diff changeset
136 nat1 : { c₁ c₂ ℓ : Level} {A : Category c₁ c₂ ℓ} { c₁′ c₂′ ℓ′ : Level} {D : Category c₁′ c₂′ ℓ′}
961c236807f1 limit-to done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 455
diff changeset
137 {a b : Obj D} {F G : Functor D A }
961c236807f1 limit-to done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 455
diff changeset
138 → (η : NTrans D A F G ) → (f : Hom D a b)
961c236807f1 limit-to done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 455
diff changeset
139 → A [ A [ FMap G f o TMap η a ] ≈ A [ TMap η b o FMap F f ] ]
961c236807f1 limit-to done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 455
diff changeset
140 nat1 η f = IsNTrans.commute ( isNTrans η )
961c236807f1 limit-to done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 455
diff changeset
141
606
92eb707498c7 fix for new agda
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 479
diff changeset
142 infix 3 _∎
31
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 infixr 2 _≈⟨_⟩_ _≈⟨⟩_
168
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 152
diff changeset
144 infixr 2 _≈↑⟨_⟩_
31
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 infix 1 begin_
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
146
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 ------ If we have this, for example, as an axiom of a category, we can use ≡-Reasoning directly
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 -- ≈-to-≡ : {a b : Obj A } { x y : Hom A a b } → A [ x ≈ y ] → x ≡ y
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 -- ≈-to-≡ refl-hom = refl
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 data _IsRelatedTo_ { a b : Obj A } ( x y : Hom A a b ) :
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 Set (suc (c₁ ⊔ c₂ ⊔ ℓ )) where
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 relTo : (x≈y : x ≈ y ) → x IsRelatedTo y
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 begin_ : { a b : Obj A } { x y : Hom A a b } →
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 x IsRelatedTo y → x ≈ y
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 begin relTo x≈y = x≈y
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 _≈⟨_⟩_ : { a b : Obj A } ( x : Hom A a b ) → { y z : Hom A a b } →
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 x ≈ y → y IsRelatedTo z → x IsRelatedTo z
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 _ ≈⟨ x≈y ⟩ relTo y≈z = relTo (trans-hom x≈y y≈z)
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
162
168
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 152
diff changeset
163 _≈↑⟨_⟩_ : { a b : Obj A } ( x : Hom A a b ) → { y z : Hom A a b } →
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 152
diff changeset
164 y ≈ x → y IsRelatedTo z → x IsRelatedTo z
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 152
diff changeset
165 _ ≈↑⟨ y≈x ⟩ relTo y≈z = relTo (trans-hom ( sym y≈x ) y≈z)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 152
diff changeset
166
31
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 _≈⟨⟩_ : { a b : Obj A } ( x : Hom A a b ) → { y : Hom A a b } → x IsRelatedTo y → x IsRelatedTo y
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 _ ≈⟨⟩ x∼y = x∼y
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
170 _∎ : { a b : Obj A } ( x : Hom A a b ) → x IsRelatedTo x
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 _∎ _ = relTo refl-hom
17b8bafebad7 add universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
172
948
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
173
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
174 ---
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
175 -- to avoid assoc storm, flatten composition according to the template
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
176 --
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
177
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
178 data MP : { a b : Obj A } ( x : Hom A a b ) → Set (c₁ ⊔ c₂ ⊔ ℓ ) where
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
179 am : { a b : Obj A } → (x : Hom A a b ) → MP x
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
180 _repl_by_ : { a b : Obj A } → (x y : Hom A a b ) → x ≈ y → MP y
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
181 _∙_ : { a b c : Obj A } {x : Hom A b c } { y : Hom A a b } → MP x → MP y → MP ( x o y )
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
182
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
183 open import Relation.Binary.HeterogeneousEquality as HE using (_≅_ )
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
184
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
185 mp-before : { a b : Obj A } { f : Hom A a b } → MP f → Hom A a b
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
186 mp-before (am x) = x
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
187 mp-before (x repl y by x₁) = x
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
188 mp-before (m ∙ m₁) = mp-before m o mp-before m₁
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
189
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
190 mp-after : { a b : Obj A } { f : Hom A a b } → MP f → Hom A a b
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
191 mp-after (am x) = x
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
192 mp-after (x repl y by x₁) = y
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
193 mp-after (m ∙ m₁) = mp-before m o mp-before m₁
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
194
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
195 mp≈ : { a b : Obj A } { f g : Hom A a b } → (m : MP f ) → mp-before m ≈ mp-after m
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
196 mp≈ {a} {b} {f} {g} (am x) = refl-hom
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
197 mp≈ {a} {b} {f} {g} (x repl y by x=y ) = x=y
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
198 mp≈ {a} {b} {f} {g} (m ∙ m₁) = resp refl-hom refl-hom
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
199
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
200 mpf : {a b c : Obj A } {y : Hom A b c } → (m : MP y ) → Hom A a b → Hom A a c
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
201 mpf (am x) y = x o y
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
202 mpf (x repl y by eq ) z = y o z
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
203 mpf (m ∙ m₁) y = mpf m ( mpf m₁ y )
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
204
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
205 mp-flatten : {a b : Obj A } {x : Hom A a b } → (m : MP x ) → Hom A a b
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
206 mp-flatten m = mpf m (id _)
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
207
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
208 mpl1 : {a b c : Obj A } → Hom A b c → {y : Hom A a b } → MP y → Hom A a c
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
209 mpl1 x (am y) = x o y
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
210 mpl1 x (z repl y by eq ) = x o y
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
211 mpl1 x (y ∙ y1) = mpl1 ( mpl1 x y ) y1
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
212
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
213 mpl : {a b c : Obj A } {x : Hom A b c } {z : Hom A a b } → MP x → MP z → Hom A a c
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
214 mpl (am x) m = mpl1 x m
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
215 mpl (y repl x by eq ) m = mpl1 x m
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
216 mpl (m ∙ m1) m2 = mpl m (m1 ∙ m2)
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
217
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
218 mp-flattenl : {a b : Obj A } {x : Hom A a b } → (m : MP x ) → Hom A a b
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
219 mp-flattenl m = mpl m (am (id _))
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
220
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
221 _⁻¹ : {a b : Obj A } ( f : Hom A a b ) → Set c₂
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
222 _⁻¹ {a} {b} f = Hom A b a
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
223
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
224 test1 : {a b c : Obj A } ( f : Hom A b c ) ( g : Hom A a b ) → ( _⁻¹ : {a b : Obj A } ( f : Hom A a b ) → Hom A b a ) → Hom A c a
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
225 test1 f g _⁻¹ = mp-flattenl ((am (g ⁻¹) ∙ am (f ⁻¹) ) ∙ ( (am f ∙ am g) ∙ am ((f o g) ⁻¹ )))
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
226
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
227 test2 : {a b c : Obj A } ( f : Hom A b c ) ( g : Hom A a b ) → ( _⁻¹ : {a b : Obj A } ( f : Hom A a b ) → Hom A b a ) → test1 f g _⁻¹ ≈ ((((g ⁻¹ o f ⁻¹ )o f ) o g ) o (f o g) ⁻¹ ) o id _
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
228 test2 f g _⁻¹ = refl-hom
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
229
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
230 test3 : {a b c : Obj A } ( f : Hom A b c ) ( g : Hom A a b ) → ( _⁻¹ : {a b : Obj A } ( f : Hom A a b ) → Hom A b a ) → Hom A c a
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
231 test3 f g _⁻¹ = mp-flatten ((am (g ⁻¹) ∙ am (f ⁻¹) ) ∙ ( (am f ∙ am g) ∙ am ((f o g) ⁻¹ )))
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
232
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
233 test4 : {a b c : Obj A } ( f : Hom A b c ) ( g : Hom A a b ) → ( _⁻¹ : {a b : Obj A } ( f : Hom A a b ) → Hom A b a ) → test3 f g _⁻¹ ≈ g ⁻¹ o (f ⁻¹ o (f o (g o ((f o g) ⁻¹ o id _))))
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
234 test4 f g _⁻¹ = refl-hom
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
235
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
236 o-flatten : {a b : Obj A } {x : Hom A a b } → (m : MP x ) → x ≈ mp-flatten m
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
237 o-flatten (am y) = sym-hom (idR )
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
238 o-flatten (y repl x by eq) = sym-hom (idR )
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
239 o-flatten (am x ∙ q) = resp ( o-flatten q ) refl-hom
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
240 o-flatten ((y repl x by eq) ∙ q) = resp ( o-flatten q ) refl-hom
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
241 -- d <- c <- b <- a ( p ∙ q ) ∙ r , ( x o y ) o z
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
242 o-flatten {a} {d} (_∙_ {a} {b} {d} {xy} {z} (_∙_ {b} {c} {d} {x} {y} p q) r) =
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
243 lemma9 _ _ _ ( o-flatten {b} {d} {x o y } (p ∙ q )) ( o-flatten {a} {b} {z} r ) where
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
244 mp-cong : { a b c : Obj A } → {p : Hom A b c} {q r : Hom A a b} → (P : MP p) → q ≈ r → mpf P q ≈ mpf P r
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
245 mp-cong (am x) q=r = resp q=r refl-hom
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
246 mp-cong (y repl x by eq) q=r = resp q=r refl-hom
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
247 mp-cong (P ∙ P₁) q=r = mp-cong P ( mp-cong P₁ q=r )
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
248 mp-assoc : {a b c d : Obj A } {p : Hom A c d} {q : Hom A b c} {r : Hom A a b} → (P : MP p) → mpf P q o r ≈ mpf P (q o r )
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
249 mp-assoc (am x) = sym-hom assoc
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
250 mp-assoc (y repl x by eq ) = sym-hom assoc
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
251 mp-assoc {_} {_} {_} {_} {p} {q} {r} (P ∙ P₁) = begin
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
252 mpf P (mpf P₁ q) o r ≈⟨ mp-assoc P ⟩
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
253 mpf P (mpf P₁ q o r) ≈⟨ mp-cong P (mp-assoc P₁) ⟩ mpf P ((mpf P₁) (q o r))
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
254
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
255 lemma9 : (x : Hom A c d) (y : Hom A b c) (z : Hom A a b) → x o y ≈ mpf p (mpf q (id _))
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
256 → z ≈ mpf r (id _)
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
257 → (x o y) o z ≈ mp-flatten ((p ∙ q) ∙ r)
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
258 lemma9 x y z t s = begin
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
259 (x o y) o z ≈⟨ resp refl-hom t ⟩
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
260 mpf p (mpf q (id _)) o z ≈⟨ mp-assoc p ⟩
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
261 mpf p (mpf q (id _) o z) ≈⟨ mp-cong p (mp-assoc q ) ⟩
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
262 mpf p (mpf q ((id _) o z)) ≈⟨ mp-cong p (mp-cong q idL) ⟩
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
263 mpf p (mpf q z) ≈⟨ mp-cong p (mp-cong q s) ⟩
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
264 mpf p (mpf q (mpf r (id _)))
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
265
dca4b29553cb mp-flatten
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 787
diff changeset
266
56
83ff8d48fdca add unitility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
267 -- an example
83ff8d48fdca add unitility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
268
83ff8d48fdca add unitility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
269 Lemma61 : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) →
83ff8d48fdca add unitility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
270 { a : Obj A } ( b : Obj A ) →
83ff8d48fdca add unitility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
271 ( f : Hom A a b )
83ff8d48fdca add unitility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
272 → A [ A [ (Id {_} {_} {_} {A} b) o f ] ≈ f ]
83ff8d48fdca add unitility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
273 Lemma61 c b g = -- IsCategory.identityL (Category.isCategory c)
606
92eb707498c7 fix for new agda
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 479
diff changeset
274 let open ≈-Reasoning (c) in begin
92eb707498c7 fix for new agda
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 479
diff changeset
275 c [ ( Id {_} {_} {_} {c} b ) o g ]
56
83ff8d48fdca add unitility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
276 ≈⟨ IsCategory.identityL (Category.isCategory c) ⟩
83ff8d48fdca add unitility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
277 g
83ff8d48fdca add unitility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
278
253
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
279
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
280 Lemma62 : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) →
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
281 { a b : Obj A } →
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
282 ( f g : Hom A a b )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
283 → A [ A [ (Id {_} {_} {_} {A} b) o f ] ≈ A [ (Id {_} {_} {_} {A} b) o g ] ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
284 → A [ g ≈ f ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
285 Lemma62 A {a} {b} f g 1g=1f = let open ≈-Reasoning A in
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
286 begin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
287 g
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
288 ≈↑⟨ idL ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
289 id b o g
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
290 ≈↑⟨ 1g=1f ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
291 id b o f
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
292 ≈⟨ idL ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
293 f
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
294