annotate src/free-monoid.agda @ 1110:45de2b31bf02

add original library and fix for safe mode
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 07 Oct 2023 19:43:31 +0900
parents 40c39d3e6a75
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
167
c3863043c4a3 Free Monoid and Universal mapping problem done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 166
diff changeset
1 -- Free Monoid and it's Universal Mapping
c3863043c4a3 Free Monoid and Universal mapping problem done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 166
diff changeset
2 ---- using Sets and forgetful functor
155
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
3
162
18ab1be1ebb5 mapping done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 161
diff changeset
4 -- Shinji KONO <kono@ie.u-ryukyu.ac.jp>
18ab1be1ebb5 mapping done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 161
diff changeset
5
1110
45de2b31bf02 add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1034
diff changeset
6 {-# OPTIONS --cubical-compatible --safe #-}
45de2b31bf02 add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1034
diff changeset
7
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 open import Category -- https://github.com/konn/category-agda
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 open import Level
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 module free-monoid { c c₁ c₂ ℓ : Level } where
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
1110
45de2b31bf02 add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1034
diff changeset
12 open import Category.Sets hiding (_==_)
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 open import Category.Cat
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 open import HomReasoning
1110
45de2b31bf02 add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1034
diff changeset
15 open import Definitions
1034
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
16 open import Relation.Binary.Structures
178
6626a7cd9129 Yoneda Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
17 open import universal-mapping
1110
45de2b31bf02 add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1034
diff changeset
18 open import Relation.Binary.PropositionalEquality
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
162
18ab1be1ebb5 mapping done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 161
diff changeset
20 -- from https://github.com/danr/Agda-projects/blob/master/Category-Theory/FreeMonoid.agda
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21
1034
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
22 open import Algebra.Definitions -- using (Op₁; Op₂)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
23 open import Algebra.Core
342
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
24 open import Algebra.Structures
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
25 open import Data.Product
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
26
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
27 record ≡-Monoid : Set (suc c) where
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
28 infixr 9 _∙_
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
29 field
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
30 Carrier : Set c
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
31 _∙_ : Op₂ Carrier
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
32 ε : Carrier
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
33 isMonoid : IsMonoid _≡_ _∙_ ε
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
34
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
35 open ≡-Monoid
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
36
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
37 ≡-cong = Relation.Binary.PropositionalEquality.cong
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
38
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
39 -- module ≡-reasoning (m : ≡-Monoid ) where
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
40
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 infixr 40 _::_
156
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
42 data List (A : Set c ) : Set c where
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 [] : List A
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
44 _::_ : A → List A → List A
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 infixl 30 _++_
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
48 _++_ : {A : Set c } → List A → List A → List A
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 [] ++ ys = ys
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 (x :: xs) ++ ys = x :: (xs ++ ys)
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
52 list-id-l : { A : Set c } → { x : List A } → [] ++ x ≡ x
156
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
53 list-id-l {_} {_} = refl
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
54 list-id-r : { A : Set c } → { x : List A } → x ++ [] ≡ x
156
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
55 list-id-r {_} {[]} = refl
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
56 list-id-r {A} {x :: xs} = ≡-cong ( λ y → x :: y ) ( list-id-r {A} {xs} )
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
57 list-assoc : {A : Set c} → { xs ys zs : List A } →
156
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
58 ( xs ++ ( ys ++ zs ) ) ≡ ( ( xs ++ ys ) ++ zs )
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
59 list-assoc {_} {[]} {_} {_} = refl
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
60 list-assoc {A} {x :: xs} {ys} {zs} = ≡-cong ( λ y → x :: y )
156
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
61 ( list-assoc {A} {xs} {ys} {zs} )
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
62 list-o-resp-≈ : {A : Set c} → {f g : List A } → {h i : List A } →
156
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
63 f ≡ g → h ≡ i → (h ++ f) ≡ (i ++ g)
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
64 list-o-resp-≈ {A} refl refl = refl
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
65 list-isEquivalence : {A : Set c} → IsEquivalence {_} {_} {List A } _≡_
156
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
66 list-isEquivalence {A} = -- this is the same function as A's equivalence but has different types
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
67 record { refl = refl
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
68 ; sym = sym
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
69 ; trans = trans
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
70 }
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72
342
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
73 _<_∙_> : (m : ≡-Monoid) → Carrier m → Carrier m → Carrier m
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
74 m < x ∙ y > = _∙_ m x y
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75
342
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
76 infixr 9 _<_∙_>
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77
421
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
78 record Monomorph ( a b : ≡-Monoid ) : Set c where
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 field
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
80 morph : Carrier a → Carrier b
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 identity : morph (ε a) ≡ ε b
342
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
82 homo : ∀{x y} → morph ( a < x ∙ y > ) ≡ b < morph x ∙ morph y >
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 open Monomorph
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
86 _+_ : { a b c : ≡-Monoid } → Monomorph b c → Monomorph a b → Monomorph a c
155
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
87 _+_ {a} {b} {c} f g = record {
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
88 morph = λ x → morph f ( morph g x ) ;
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 identity = identity1 ;
168
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 167
diff changeset
90 homo = homo1
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 } where
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 identity1 : morph f ( morph g (ε a) ) ≡ ε c
342
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
93 identity1 = let open ≡-Reasoning in begin
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
94 morph f (morph g (ε a))
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
95 ≡⟨ ≡-cong (morph f ) ( identity g ) ⟩
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
96 morph f (ε b)
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
97 ≡⟨ identity f ⟩
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
98 ε c
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
99
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
100 homo1 : ∀{x y} → morph f ( morph g ( a < x ∙ y > )) ≡ ( c < (morph f (morph g x )) ∙(morph f (morph g y) ) > )
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
101 homo1 {x} {y} = let open ≡-Reasoning in begin
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
102 morph f (morph g (a < x ∙ y >))
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
103 ≡⟨ ≡-cong (morph f ) ( homo g) ⟩
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
104 morph f (b < morph g x ∙ morph g y >)
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
105 ≡⟨ homo f ⟩
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
106 c < morph f (morph g x) ∙ morph f (morph g y) >
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
107
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
109 M-id : { a : ≡-Monoid } → Monomorph a a
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
110 M-id = record { morph = λ x → x ; identity = refl ; homo = refl }
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
112 _==_ : { a b : ≡-Monoid } → Monomorph a b → Monomorph a b → Set c
155
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
113 _==_ f g = morph f ≡ morph g
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
114
421
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
115 -- Functional Extensionality Axiom (We cannot prove this in Agda / Coq, just assumming )
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
116 -- postulate extensionality : { a b : Obj A } {f g : Hom A a b } → (∀ {x} → (f x ≡ g x)) → ( f ≡ g )
1034
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
117 -- postulate extensionality : Relation.Binary.PropositionalEquality.Extensionality c c
421
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
118
168
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 167
diff changeset
119 isMonoids : IsCategory ≡-Monoid Monomorph _==_ _+_ (M-id)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 167
diff changeset
120 isMonoids = record { isEquivalence = isEquivalence1
155
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
121 ; identityL = refl
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
122 ; identityR = refl
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
123 ; associative = refl
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
124 ; o-resp-≈ = λ {a} {b} {c} {f} {g} {h} {i} → o-resp-≈ {a} {b} {c} {f} {g} {h} {i}
155
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
125 }
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
126 where
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
127 isEquivalence1 : { a b : ≡-Monoid } → IsEquivalence {_} {_} {Monomorph a b} _==_
155
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
128 isEquivalence1 = -- this is the same function as A's equivalence but has different types
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
129 record { refl = refl
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
130 ; sym = sym
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
131 ; trans = trans
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
132 }
421
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
133 o-resp-≈ : {a b c : ≡-Monoid } {f g : Monomorph a b } → {h i : Monomorph b c } →
420
3e44951b9bdb refl in free-monoid trouble
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 343
diff changeset
134 f == g → h == i → (h + f) == (i + g)
421
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
135 o-resp-≈ {a} {b} {c} {f} {g} {h} {i} f==g h==i = let open ≡-Reasoning in begin
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
136 morph ( h + f )
1110
45de2b31bf02 add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1034
diff changeset
137 ≡⟨ ≡-cong ( λ g → ( ( λ (x : Carrier a ) → g x ) )) ? ⟩ -- (extensionality (Sets ) {Carrier a} lemma11) ⟩
421
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
138 morph ( i + g )
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
139
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
140 where
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
141 lemma11 : (x : Carrier a) → morph (h + f) x ≡ morph (i + g) x
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
142 lemma11 x = let open ≡-Reasoning in begin
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
143 morph ( h + f ) x
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
144 ≡⟨⟩
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
145 morph h ( ( morph f ) x )
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
146 ≡⟨ ≡-cong ( \y -> morph h ( y x ) ) f==g ⟩
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
147 morph h ( morph g x )
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
148 ≡⟨ ≡-cong ( \y -> y ( morph g x ) ) h==i ⟩
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
149 morph i ( morph g x )
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
150 ≡⟨⟩
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
151 morph ( i + g ) x
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
152
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
153
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
154
06ffcad985ac fix free-monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 420
diff changeset
155
420
3e44951b9bdb refl in free-monoid trouble
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 343
diff changeset
156
168
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 167
diff changeset
157 Monoids : Category _ _ _
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 167
diff changeset
158 Monoids =
155
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
159 record { Obj = ≡-Monoid
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
160 ; Hom = Monomorph
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
161 ; _o_ = _+_
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
162 ; _≈_ = _==_
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
163 ; Id = M-id
168
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 167
diff changeset
164 ; isCategory = isMonoids
155
d9cbaa749be6 Monoids done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 154
diff changeset
165 }
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166
156
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
167 A = Sets {c}
168
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 167
diff changeset
168 B = Monoids
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169
156
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
170 open Functor
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171
156
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
172 U : Functor B A
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
173 U = record {
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
174 FObj = λ m → Carrier m ;
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
175 FMap = λ f → morph f ;
156
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
176 isFunctor = record {
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
177 ≈-cong = λ x → x
156
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
178 ; identity = refl
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
179 ; distr = refl
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
180 }
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
181 }
154
744be443e232 on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182
156
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
183 -- FObj
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
184 list : (a : Set c) → ≡-Monoid
159
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 158
diff changeset
185 list a = record {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 158
diff changeset
186 Carrier = List a
342
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
187 ; _∙_ = _++_
159
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 158
diff changeset
188 ; ε = []
1034
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
189 ; isMonoid = record { isSemigroup = record { isMagma = record {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
190 isEquivalence = list-isEquivalence
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
191 ; ∙-cong = λ x → λ y → list-o-resp-≈ y x }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
192 ; assoc = λ x → λ y → λ z → sym ( list-assoc {a} {x} {y} {z} ) }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
193 ; identity = ( ( λ x → list-id-l {a} ) , ( λ x → list-id-r {a} ) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
194 } }
159
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 158
diff changeset
195
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
196 Generator : Obj A → Obj B
156
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
197 Generator s = list s
b15c1435cfcc list is monoid now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 155
diff changeset
198
157
34a152235ddd solution of universal mapping for free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 156
diff changeset
199 -- solution
34a152235ddd solution of universal mapping for free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 156
diff changeset
200
202
58ee98bbb333 remove an extensionality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
201 -- [a,b,c] → f(a) ∙ f(b) ∙ f(c)
341
33bc037319fa minor fix on free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 254
diff changeset
202 Φ : {a : Obj A } {b : Obj B} ( f : Hom A a (FObj U b) ) → List a → Carrier b
33bc037319fa minor fix on free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 254
diff changeset
203 Φ {a} {b} f [] = ε b
342
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
204 Φ {a} {b} f ( x :: xs ) = b < ( f x ) ∙ (Φ {a} {b} f xs ) >
161
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 160
diff changeset
205
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 160
diff changeset
206 solution : (a : Obj A ) (b : Obj B) ( f : Hom A a (FObj U b) ) → Hom B (Generator a ) b
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 160
diff changeset
207 solution a b f = record {
341
33bc037319fa minor fix on free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 254
diff changeset
208 morph = λ (l : List a) → Φ f l ;
33bc037319fa minor fix on free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 254
diff changeset
209 identity = refl;
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
210 homo = λ {x y} → homo1 x y
161
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 160
diff changeset
211 } where
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
212 _*_ : Carrier b → Carrier b → Carrier b
342
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
213 _*_ f g = b < f ∙ g >
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
214 homo1 : (x y : Carrier (Generator a)) → Φ f ( (Generator a) < x ∙ y > ) ≡ (Φ f x) * (Φ {a} {b} f y )
341
33bc037319fa minor fix on free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 254
diff changeset
215 homo1 [] y = sym (proj₁ ( IsMonoid.identity ( isMonoid b) ) (Φ f y))
168
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 167
diff changeset
216 homo1 (x :: xs) y = let open ≡-Reasoning in
161
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 160
diff changeset
217 sym ( begin
341
33bc037319fa minor fix on free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 254
diff changeset
218 (Φ {a} {b} f (x :: xs)) * (Φ f y)
161
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 160
diff changeset
219 ≡⟨⟩
341
33bc037319fa minor fix on free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 254
diff changeset
220 ((f x) * (Φ f xs)) * (Φ f y)
161
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 160
diff changeset
221 ≡⟨ ( IsMonoid.assoc ( isMonoid b )) _ _ _ ⟩
341
33bc037319fa minor fix on free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 254
diff changeset
222 (f x) * ( (Φ f xs) * (Φ f y) )
168
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 167
diff changeset
223 ≡⟨ sym ( (IsMonoid.∙-cong (isMonoid b)) refl (homo1 xs y )) ⟩
341
33bc037319fa minor fix on free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 254
diff changeset
224 (f x) * ( Φ f ( xs ++ y ) )
161
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 160
diff changeset
225 ≡⟨⟩
341
33bc037319fa minor fix on free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 254
diff changeset
226 Φ {a} {b} f ( x :: ( xs ++ y ) )
161
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 160
diff changeset
227 ≡⟨⟩
341
33bc037319fa minor fix on free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 254
diff changeset
228 Φ {a} {b} f ( (x :: xs) ++ y )
161
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 160
diff changeset
229 ≡⟨⟩
342
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
230 Φ {a} {b} f ((Generator a) < ( x :: xs) ∙ y > )
161
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 160
diff changeset
231 ∎ )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 160
diff changeset
232
162
18ab1be1ebb5 mapping done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 161
diff changeset
233 eta : (a : Obj A) → Hom A a ( FObj U (Generator a) )
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
234 eta a = λ ( x : a ) → x :: []
162
18ab1be1ebb5 mapping done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 161
diff changeset
235
690
3d41a8edbf63 fix universal mapping done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 689
diff changeset
236 FreeMonoidUniveralMapping : UniversalMapping A B U
162
18ab1be1ebb5 mapping done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 161
diff changeset
237 FreeMonoidUniveralMapping =
157
34a152235ddd solution of universal mapping for free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 156
diff changeset
238 record {
690
3d41a8edbf63 fix universal mapping done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 689
diff changeset
239 F = Generator ;
3d41a8edbf63 fix universal mapping done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 689
diff changeset
240 η = eta ;
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
241 _* = λ {a b} → λ f → solution a b f ;
157
34a152235ddd solution of universal mapping for free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 156
diff changeset
242 isUniversalMapping = record {
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
243 universalMapping = λ {a b f} → universalMapping {a} {b} {f} ;
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
244 uniquness = λ {a b f g} → uniquness {a} {b} {f} {g}
157
34a152235ddd solution of universal mapping for free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 156
diff changeset
245 }
159
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 158
diff changeset
246 } where
1110
45de2b31bf02 add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1034
diff changeset
247 universalMapping : {a : Obj A } {b : Obj B} { f : Hom A a (FObj U b) } → ? -- FMap U ( solution a b f ) o eta a ≡ f
45de2b31bf02 add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1034
diff changeset
248 universalMapping {a} {b} {f} =
159
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 158
diff changeset
249 begin
160
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 159
diff changeset
250 FMap U ( solution a b f ) o eta a
1110
45de2b31bf02 add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1034
diff changeset
251 ≡⟨ refl ⟩
341
33bc037319fa minor fix on free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 254
diff changeset
252 ( λ (x : a ) → Φ {a} {b} f (eta a x) )
1110
45de2b31bf02 add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1034
diff changeset
253 ≡⟨ refl ⟩
341
33bc037319fa minor fix on free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 254
diff changeset
254 ( λ (x : a ) → Φ {a} {b} f ( x :: [] ) )
1110
45de2b31bf02 add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1034
diff changeset
255 ≡⟨ refl ⟩
342
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
256 ( λ (x : a ) → b < ( f x ) ∙ (Φ {a} {b} f [] ) > )
1110
45de2b31bf02 add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1034
diff changeset
257 ≡⟨ refl ⟩
342
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
258 ( λ (x : a ) → b < ( f x ) ∙ ( ε b ) > )
1034
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
259 ≡⟨ ≡-cong ( λ g → ( ( λ (x : a ) → g x ) )) (extensionality A {a} lemma-ext1) ⟩
162
18ab1be1ebb5 mapping done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 161
diff changeset
260 ( λ (x : a ) → f x )
1110
45de2b31bf02 add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1034
diff changeset
261 ≡⟨ refl ⟩
162
18ab1be1ebb5 mapping done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 161
diff changeset
262 f
18ab1be1ebb5 mapping done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 161
diff changeset
263 ∎ where
1110
45de2b31bf02 add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1034
diff changeset
264 open ≡-Reasoning
342
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
265 lemma-ext1 : ∀( x : a ) → b < ( f x ) ∙ ( ε b ) > ≡ f x
169
44bf6e78f891 builtin extensionality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
266 lemma-ext1 x = ( proj₂ ( IsMonoid.identity ( isMonoid b) ) ) (f x)
159
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 158
diff changeset
267 uniquness : {a : Obj A } {b : Obj B} { f : Hom A a (FObj U b) } →
160
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 159
diff changeset
268 { g : Hom B (Generator a) b } → (FMap U g) o (eta a ) ≡ f → B [ solution a b f ≈ g ]
163
bc47179e3c9c uniqueness continue...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 162
diff changeset
269 uniquness {a} {b} {f} {g} eq =
1034
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
270 extensionality A lemma-ext2 where
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
271 lemma-ext2 : ( ∀( x : List a ) → (morph ( solution a b f)) x ≡ (morph g) x )
163
bc47179e3c9c uniqueness continue...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 162
diff changeset
272 -- (morph ( solution a b f)) [] ≡ (morph g) [] )
169
44bf6e78f891 builtin extensionality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
273 lemma-ext2 [] = let open ≡-Reasoning in
164
ab186f0e7b7a on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 163
diff changeset
274 begin
ab186f0e7b7a on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 163
diff changeset
275 (morph ( solution a b f)) []
ab186f0e7b7a on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 163
diff changeset
276 ≡⟨ identity ( solution a b f) ⟩
ab186f0e7b7a on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 163
diff changeset
277 ε b
ab186f0e7b7a on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 163
diff changeset
278 ≡⟨ sym ( identity g ) ⟩
ab186f0e7b7a on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 163
diff changeset
279 (morph g) []
ab186f0e7b7a on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 163
diff changeset
280
169
44bf6e78f891 builtin extensionality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
281 lemma-ext2 (x :: xs) = let open ≡-Reasoning in
164
ab186f0e7b7a on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 163
diff changeset
282 begin
ab186f0e7b7a on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 163
diff changeset
283 (morph ( solution a b f)) ( x :: xs )
168
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 167
diff changeset
284 ≡⟨ homo ( solution a b f) {x :: []} {xs} ⟩
342
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
285 b < ((morph ( solution a b f)) ( x :: []) ) ∙ ((morph ( solution a b f)) xs ) >
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
286 ≡⟨ ≡-cong ( λ k → (b < ((morph ( solution a b f)) ( x :: []) ) ∙ k > )) (lemma-ext2 xs ) ⟩
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
287 b < ((morph ( solution a b f)) ( x :: []) ) ∙((morph g) ( xs )) >
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
288 ≡⟨ ≡-cong ( λ k → ( b < ( k x ) ∙ ((morph g) ( xs )) > )) (
164
ab186f0e7b7a on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 163
diff changeset
289 begin
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
290 ( λ x → (morph ( solution a b f)) ( x :: [] ) )
1034
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
291 ≡⟨ extensionality A {a} lemma-ext3 ⟩
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
292 ( λ x → (morph g) ( x :: [] ) )
164
ab186f0e7b7a on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 163
diff changeset
293
ab186f0e7b7a on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 163
diff changeset
294 ) ⟩
342
a9711cf75a12 free-monoid fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 341
diff changeset
295 b < ((morph g) ( x :: [] )) ∙((morph g) ( xs )) >
168
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 167
diff changeset
296 ≡⟨ sym ( homo g ) ⟩
164
ab186f0e7b7a on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 163
diff changeset
297 (morph g) ( x :: xs )
ab186f0e7b7a on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 163
diff changeset
298 ∎ where
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
299 lemma-ext3 : ∀( x : a ) → (morph ( solution a b f)) (x :: []) ≡ (morph g) ( x :: [] )
169
44bf6e78f891 builtin extensionality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 168
diff changeset
300 lemma-ext3 x = let open ≡-Reasoning in
166
2246a7d67ba3 two yellow remain...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 165
diff changeset
301 begin
2246a7d67ba3 two yellow remain...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 165
diff changeset
302 (morph ( solution a b f)) (x :: [])
2246a7d67ba3 two yellow remain...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 165
diff changeset
303 ≡⟨ ( proj₂ ( IsMonoid.identity ( isMonoid b) )(f x) ) ⟩
2246a7d67ba3 two yellow remain...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 165
diff changeset
304 f x
254
45b81fcb8a64 equalizer fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 202
diff changeset
305 ≡⟨ sym ( ≡-cong (λ f → f x ) eq ) ⟩
166
2246a7d67ba3 two yellow remain...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 165
diff changeset
306 (morph g) ( x :: [] )
2246a7d67ba3 two yellow remain...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 165
diff changeset
307
2246a7d67ba3 two yellow remain...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 165
diff changeset
308
178
6626a7cd9129 Yoneda Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
309 open NTrans
6626a7cd9129 Yoneda Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
310 -- fm-ε b = Φ
688
a5f2ca67e7c5 fix monad/adjunction definition
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 421
diff changeset
311
178
6626a7cd9129 Yoneda Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
312 fm-ε : NTrans B B ( ( FunctorF A B FreeMonoidUniveralMapping) ○ U) identityFunctor
688
a5f2ca67e7c5 fix monad/adjunction definition
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 421
diff changeset
313 fm-ε = nat-ε A B FreeMonoidUniveralMapping
343
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
314 -- TMap = λ a → solution (FObj U a) a (λ x → x ) ;
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
315 -- isNTrans = record {
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
316 -- commute = commute1
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
317 -- }
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
318 -- } where
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
319 -- commute1 : {a b : Obj B} {f : Hom B a b} → let open ≈-Reasoning B renaming (_o_ to _*_ ) in
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
320 -- ( FMap (identityFunctor {_} {_} {_} {B}) f * solution (FObj U a) a (λ x → x) ) ≈
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
321 -- ( solution (FObj U b) b (λ x → x) * FMap (FunctorF A B FreeMonoidUniveralMapping ○ U) f )
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
322 -- commute1 {a} {b} {f} = let open ≡-Reasoning in begin
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
323 -- morph ((B ≈-Reasoning.o FMap identityFunctor f) (solution (FObj U a) a (λ x → x)))
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
324 -- ≡⟨ {!!} ⟩
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
325 -- morph ((B ≈-Reasoning.o solution (FObj U b) b (λ x → x)) (FMap (FunctorF A B FreeMonoidUniveralMapping ○ U) f))
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
326 -- ∎
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
327
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
328
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
329 fm-η : NTrans A A identityFunctor ( U ○ ( FunctorF A B FreeMonoidUniveralMapping) )
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
330 fm-η = record {
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
331 TMap = λ a → λ (x : a) → x :: [] ;
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
332 isNTrans = record {
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
333 commute = commute1
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
334 }
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
335 } where
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
336 commute1 : {a b : Obj A} {f : Hom A a b} → let open ≈-Reasoning A renaming (_o_ to _*_ ) in
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
337 (( FMap (U ○ FunctorF A B FreeMonoidUniveralMapping) f ) * (λ x → x :: []) ) ≈ ( (λ x → x :: []) * (λ z → FMap (identityFunctor {_} {_} {_} {A}) f z ) )
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
338 commute1 {a} {b} {f} = refl -- λ (x : a ) → f x :: []
d8cb7f9c7980 free-monoid comment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 342
diff changeset
339
157
34a152235ddd solution of universal mapping for free monoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 156
diff changeset
340
202
58ee98bbb333 remove an extensionality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
341 -- A = Sets {c}
58ee98bbb333 remove an extensionality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
342 -- B = Monoids
58ee98bbb333 remove an extensionality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
343 -- U underline funcotr
58ee98bbb333 remove an extensionality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
344 -- F generator = x :: []
58ee98bbb333 remove an extensionality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
345 -- Eta x :: []
58ee98bbb333 remove an extensionality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
346 -- Epsiron morph = Φ
58ee98bbb333 remove an extensionality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
347
690
3d41a8edbf63 fix universal mapping done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 689
diff changeset
348 adj = UMAdjunction A B U FreeMonoidUniveralMapping
167
c3863043c4a3 Free Monoid and Universal mapping problem done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 166
diff changeset
349
c3863043c4a3 Free Monoid and Universal mapping problem done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 166
diff changeset
350
c3863043c4a3 Free Monoid and Universal mapping problem done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 166
diff changeset
351
c3863043c4a3 Free Monoid and Universal mapping problem done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 166
diff changeset
352