0 | module Control.Category.Records.Braided
2 | import Control.Category
3 | import Control.Category.Records.Category
4 | import Control.Category.Records.Functor
5 | import Control.Category.Records.Monoidal
6 | import Data.Morphisms
9 | %prefix_record_projections off
17 | record BraidedR where
18 | constructor MkBraidedR
20 | tensor : obj -> obj -> obj
22 | {auto impl : Braided hom tensor unit}
27 | PreBraidedR = BraidedR
31 | public export %inline
32 | (.categoryR) : (rec : BraidedR) -> CategoryR
33 | (.categoryR) (MkBraidedR {} {hom}) = MkCategoryR hom
36 | public export %inline
37 | (.id) : (rec : BraidedR) -> {a : _} -> rec.hom a a
38 | (.id) (MkBraidedR {}) = id
41 | public export %inline
42 | (.comp) : (rec : BraidedR) -> {a,b,c : _} ->
43 | rec.hom b c -> rec.hom a b -> rec.hom a c
44 | (.comp) (MkBraidedR {}) = (.)
48 | public export %inline
49 | (.tensorR) : (rec : BraidedR) -> EndoBifunctorR rec.categoryR
50 | (.tensorR) (MkBraidedR {} {tensor}) = MkBifunctorR tensor
54 | public export %inline
55 | (.monoidalR) : (rec : BraidedR) -> MonoidalR
56 | (.monoidalR) (MkBraidedR {} {hom,tensor,unit}) = MkMonoidalR hom tensor unit
59 | public export %inline
60 | (.assoc) : (rec : BraidedR) -> {a,b,c : _} ->
61 | rec.hom (rec.tensor (rec.tensor a b) c) (rec.tensor a (rec.tensor b c))
62 | (.assoc) (MkBraidedR {}) = assoc
65 | public export %inline
66 | (.assoc') : (rec : BraidedR) -> {a,b,c : _} ->
67 | rec.hom (rec.tensor a (rec.tensor b c)) (rec.tensor (rec.tensor a b) c)
68 | (.assoc') (MkBraidedR {}) = assoc'
71 | public export %inline
72 | (.unitl) : (rec : BraidedR) -> {a : _} ->
73 | rec.hom (rec.tensor rec.unit a) a
74 | (.unitl) (MkBraidedR {}) = unitl
77 | public export %inline
78 | (.unitl') : (rec : BraidedR) -> {a : _} ->
79 | rec.hom a (rec.tensor rec.unit a)
80 | (.unitl') (MkBraidedR {}) = unitl'
83 | public export %inline
84 | (.unitr) : (rec : BraidedR) -> {a : _} ->
85 | rec.hom (rec.tensor a rec.unit) a
86 | (.unitr) (MkBraidedR {}) = unitr
89 | public export %inline
90 | (.unitr') : (rec : BraidedR) -> {a : _} ->
91 | rec.hom a (rec.tensor a rec.unit)
92 | (.unitr') (MkBraidedR {}) = unitr'
96 | public export %inline
97 | (.braidedR) : (rec : BraidedR) -> BraidedR
101 | public export %inline
102 | (.braid) : (rec : BraidedR) -> {a,b : _} ->
103 | rec.hom (rec.tensor a b) (rec.tensor b a)
104 | (.braid) (MkBraidedR {}) = braid
107 | public export %inline
108 | (.braid') : (rec : BraidedR) -> {a,b : _} ->
109 | rec.hom (rec.tensor b a) (rec.tensor a b)
110 | (.braid') (MkBraidedR {}) = braid'
115 | (.flipBraid) : (rec : BraidedR) -> BraidedR
116 | (.flipBraid) (MkBraidedR hom ten i) =
117 | MkBraidedR hom ten i {impl = FlipBraid}
125 | record SymmetricR where
126 | constructor MkSymmetricR
128 | tensor : obj -> obj -> obj
130 | {auto impl : MonSymmetric hom tensor unit}
134 | PreSymmetricR : Type
135 | PreSymmetricR = SymmetricR
137 | namespace SymmetricR
139 | public export %inline
140 | (.categoryR) : (rec : SymmetricR) -> CategoryR
141 | (.categoryR) (MkSymmetricR {} {hom}) = MkCategoryR hom
144 | public export %inline
145 | (.id) : (rec : SymmetricR) -> {a : _} -> rec.hom a a
146 | (.id) (MkSymmetricR {}) = id
149 | public export %inline
150 | (.comp) : (rec : SymmetricR) -> {a,b,c : _} ->
151 | rec.hom b c -> rec.hom a b -> rec.hom a c
152 | (.comp) (MkSymmetricR {}) = (.)
156 | public export %inline
157 | (.tensorR) : (rec : SymmetricR) -> EndoBifunctorR rec.categoryR
158 | (.tensorR) (MkSymmetricR {} {tensor}) = MkBifunctorR tensor
162 | public export %inline
163 | (.monoidalR) : (rec : SymmetricR) -> MonoidalR
164 | (.monoidalR) (MkSymmetricR {} {hom,tensor,unit}) = MkMonoidalR hom tensor unit
167 | public export %inline
168 | (.assoc) : (rec : SymmetricR) -> {a,b,c : _} ->
169 | rec.hom (rec.tensor (rec.tensor a b) c) (rec.tensor a (rec.tensor b c))
170 | (.assoc) (MkSymmetricR {}) = assoc
173 | public export %inline
174 | (.assoc') : (rec : SymmetricR) -> {a,b,c : _} ->
175 | rec.hom (rec.tensor a (rec.tensor b c)) (rec.tensor (rec.tensor a b) c)
176 | (.assoc') (MkSymmetricR {}) = assoc'
179 | public export %inline
180 | (.unitl) : (rec : SymmetricR) -> {a : _} ->
181 | rec.hom (rec.tensor rec.unit a) a
182 | (.unitl) (MkSymmetricR {}) = unitl
185 | public export %inline
186 | (.unitl') : (rec : SymmetricR) -> {a : _} ->
187 | rec.hom a (rec.tensor rec.unit a)
188 | (.unitl') (MkSymmetricR {}) = unitl'
191 | public export %inline
192 | (.unitr) : (rec : SymmetricR) -> {a : _} ->
193 | rec.hom (rec.tensor a rec.unit) a
194 | (.unitr) (MkSymmetricR {}) = unitr
197 | public export %inline
198 | (.unitr') : (rec : SymmetricR) -> {a : _} ->
199 | rec.hom a (rec.tensor a rec.unit)
200 | (.unitr') (MkSymmetricR {}) = unitr'
204 | public export %inline
205 | (.braidedR) : (rec : SymmetricR) -> BraidedR
206 | (.braidedR) (MkSymmetricR {} {hom,tensor,unit}) = MkBraidedR hom tensor unit
209 | public export %inline
210 | (.braid) : (rec : SymmetricR) -> {a,b : _} ->
211 | rec.hom (rec.tensor a b) (rec.tensor b a)
212 | (.braid) (MkSymmetricR {}) = braid