@@ -38,6 +38,9 @@ permAddNilRightNeutral {as=a::as1} {bs} (Ins {ys} p s) =
3838 (permAddNilRightNeutral p)
3939 (appendedNilNeutral s)
4040
41+ magic : {ys : List t} -> SwapDown (a1 :: ys) cs1 -> List t
42+ magic _ {ys} = ys
43+
4144permPreserveCompose : (a, b, c : (List o, List o))
4245 -> (f : ProductMorphism (permutationsCat o) (permutationsCat o) a b)
4346 -> (g : ProductMorphism (permutationsCat o) (permutationsCat o) b c)
@@ -51,95 +54,102 @@ permPreserveCompose (as, _) (bs, _) (cs, _) (MkProductMorphism f1 Nil) (MkProduc
5154 (sym $ appendNilRightNeutral cs)
5255 (sym $ permAddNilRightNeutral f1)
5356 (sym $ permAddNilRightNeutral g1)
54- permPreserveCompose (a1:: as1, a2:: as2) (bs1, bs2) (cs1, cs2)
55- (MkProductMorphism (Ins pf1 sf1) (Ins pf2 sf2)) (MkProductMorphism g1 g2) = ? y
56-
57- permTensor : (o : Type ) -> CFunctor (productCategory (permutationsCat o) (permutationsCat o)) (permutationsCat o)
58- permTensor _ = MkCFunctor
59- (\ a => fst a ++ snd a)
60- (\ a, b, f => permAdd (pi1 f) (pi2 f) {as= fst a} {bs= fst b} {cs= snd a} {ds= snd b})
61- (\ a => permPreserveId (fst a) (snd a))
62- permPreserveCompose
63-
64- permAddAssociativeMor : (pab : Perm as bs) -> (pcd : Perm cs ds) -> (pef : Perm es fs)
65- -> permAdd pab (permAdd pcd pef) = permAdd (permAdd pab pcd) pef
66- permAddAssociativeMor Nil _ _ = Refl
67- permAddAssociativeMor {as= a:: as} {bs} {cs} {ds} {es} {fs} (Ins {ys} pab s) pcd pef = insCong5
68- (appendAssociative as cs es)
69- (appendAssociative ys ds fs)
70- (appendAssociative bs ds fs)
71- (permAddAssociativeMor pab pcd pef)
72- (appendedAppendDistr ds fs s)
73-
74- permutationsSMC : (o : Type ) -> StrictMonoidalCategory
75- permutationsSMC o = MkStrictMonoidalCategory
76- (permutationsCat o)
77- (permTensor o)
78- []
79- (\ as => Refl )
80- (\ as => appendNilRightNeutral as)
81- appendAssociative
82- (\ _ , _ , _ , _ , _ , _ => permAddAssociativeMor)
83-
84-
85- -- for symmetric monoidal category
86- swapAddEq : (as, bs, cs : List o) -> swapAddIdR as bs cs = swap as bs `permAdd` permId cs
87- swapAddEq [] [] cs = Refl
88- swapAddEq [] bs cs = sym (permPreserveId bs cs) `trans` permAddCong6 Refl (sym $ appendNilRightNeutral bs) Refl Refl (rewriteRightIgnoreR Refl ) Refl
89- swapAddEq (a:: as) bs cs = insCong5 (appendAssociative as bs cs) (appendAssociative bs as cs) (appendAssociative bs (a:: as) cs) (swapAddEq as bs cs) (swapDownAppendedNeutral bs _ cs)
90-
91- swapNilRightNeutral : (l : List o) -> swap l [] = permId l
92- swapNilRightNeutral [] = Refl
93- swapNilRightNeutral (l:: ls) = insCong5 (appendNilRightNeutral ls) Refl Refl (swapNilRightNeutral ls) Refl
94-
95- swapAddIdRNilRightNeutral : (l : List o) -> (k : List o) -> swapAddIdR l [] k = permId (l ++ k)
96- swapAddIdRNilRightNeutral [] k = Refl
97- swapAddIdRNilRightNeutral (l:: ls) k = insCong5 Refl Refl Refl (swapAddIdRNilRightNeutral ls k) Refl
98-
99- -- \/----- --\/---}
100- -- /\-\/-- = {--/\/--}
101- -- ---/\-- {---/\--
102- swapHexagonal1 : (as, bs, cs : List o) ->
103- swapAddIdR as bs cs `permComp` permAddIdL bs (swap as cs) = swap as (bs ++ cs)
104-
105- swapHexagonal1' : (as, bs, cs, ds : List o) ->
106- swapAddIdR as bs (cs ++ ds) `permComp` permAddIdL bs (swapAddIdR as cs ds) = swapAddIdR as (bs ++ cs) ds
107-
108- -- ---\/-- {---\/--
109- -- \/-/\-- = {--\/\--}
110- -- /\----- --/\---}
111- swapHexagonal2 : (as, bs, cs : List o) ->
112- permAddIdL as (swap bs cs) `permComp` swapAddIdR as cs bs = swap (as ++ bs) cs
113-
114- swapHexagonal2' : (as, bs, cs, ds : List o) ->
115- permAddIdL as (swapAddIdR bs cs ds) `permComp` swapAddIdR as cs (bs ++ ds) = swapAddIdR (as ++ bs) cs ds
116-
117- -- p-\/-- = --\/----
118- -- --/\-- --/\-p--
119- swapNatural : (as, bs, cs : List o) -> (p : Perm as bs) ->
120- (p `permAdd` permId cs) `permComp` swap bs cs = swap as cs `permComp` permAddIdL cs p
121-
122- swapNatural' : (as, bs, cs, ds : List o) -> (p : Perm as bs) ->
123- (p `permAdd` permId (cs ++ ds)) `permComp` swapAddIdR bs cs ds = swapAddIdR as cs ds `permComp` permAddIdL cs (p `permAdd` permId ds)
124-
125- -- ---\/----- --\/----\/--
126- -- \/-/\-\/-- = --/\-\/-/\--
127- -- /\----/\-- -----/\-----
128- swap3' : (as, bs, cs, ds : List o)
129- -> (permAddIdL as (swapAddIdR bs cs ds) `permComp` swapAddIdR as cs (bs ++ ds)) `permComp` permAddIdL cs (swapAddIdR as bs ds)
130- = swapAddIdR as bs (cs ++ ds) `permComp` (permAddIdL bs (swapAddIdR as cs ds) `permComp` swapAddIdR bs cs (as ++ ds))
131- swap3' as bs cs ds =
132- trans (permCompCong5 (appendAssociative as bs (cs ++ ds))
133- (cong {f=\ z=> cs++ z} (appendAssociative as bs ds))
134- (cong {f=\ z=> cs++ z} (appendAssociative bs as ds))
135- (swapHexagonal2' as bs cs ds)
136- (permAddIdLCong4 Refl
137- (appendAssociative as bs ds)
138- (appendAssociative bs as ds)
139- (swapAddEq as bs ds)))
140- (trans (sym $ swapNatural' (as ++ bs) (bs ++ as) cs ds (swap as bs))
141- (permCompCong5 (sym $ appendAssociative as bs (cs ++ ds))
142- (sym $ appendAssociative bs as (cs ++ ds))
143- (cong {f=\ z=> cs++ z} (sym $ appendAssociative bs as ds))
144- (sym $ swapAddEq as bs (cs ++ ds))
145- (sym $ swapHexagonal2' bs as cs ds)))
57+ permPreserveCompose (a1:: as1, a2:: as2) ([], []) (cs1,cs2) (MkProductMorphism f1 f2) (MkProductMorphism g1 g2) = absurd f1
58+ permPreserveCompose (a1:: as1, as2) (a1:: ys1, bs2) (cs1, cs2)
59+ (MkProductMorphism (Ins pf1 HereS ) fs) (MkProductMorphism (Ins g1 gs1) gs) {o} = cong
60+ {f=\ x => Ins x (appended cs2 gs1)} $
61+ permPreserveCompose (as1, as2) (ys1, bs2) (magic {t= o} gs1, cs2) (MkProductMorphism pf1 fs) (MkProductMorphism g1 gs)
62+ permPreserveCompose (a1:: as1, as2) (b1:: bs1, bs2) (cs1, cs2)
63+ (MkProductMorphism (Ins pf1 (ThereS fs1)) fs) (MkProductMorphism (Ins g1 gs1) gs) {o} = ? y1
64+ permPreserveCompose (as1, a2:: as2) (bs1, b2:: bs2) (cs1, cs2)
65+ (MkProductMorphism fs (Ins pf2 sf2)) (MkProductMorphism gs (Ins pg2 sg2)) = ? y2
66+
67+ -- permTensor : (o : Type) -> CFunctor (productCategory (permutationsCat o) (permutationsCat o)) (permutationsCat o)
68+ -- permTensor _ = MkCFunctor
69+ -- (\a => fst a ++ snd a)
70+ -- (\a, b, f => permAdd (pi1 f) (pi2 f) {as=fst a} {bs=fst b} {cs=snd a} {ds=snd b})
71+ -- (\a => permPreserveId (fst a) (snd a))
72+ -- permPreserveCompose
73+
74+ -- permAddAssociativeMor : (pab : Perm as bs) -> (pcd : Perm cs ds) -> (pef : Perm es fs)
75+ -- -> permAdd pab (permAdd pcd pef) = permAdd (permAdd pab pcd) pef
76+ -- permAddAssociativeMor Nil _ _ = Refl
77+ -- permAddAssociativeMor {as=a::as} {bs} {cs} {ds} {es} {fs} (Ins {ys} pab s) pcd pef = insCong5
78+ -- (appendAssociative as cs es)
79+ -- (appendAssociative ys ds fs)
80+ -- (appendAssociative bs ds fs)
81+ -- (permAddAssociativeMor pab pcd pef)
82+ -- (appendedAppendDistr ds fs s)
83+
84+ -- permutationsSMC : (o : Type) -> StrictMonoidalCategory
85+ -- permutationsSMC o = MkStrictMonoidalCategory
86+ -- (permutationsCat o)
87+ -- (permTensor o)
88+ -- []
89+ -- (\as => Refl)
90+ -- (\as => appendNilRightNeutral as)
91+ -- appendAssociative
92+ -- (\_, _, _, _, _, _ => permAddAssociativeMor)
93+
94+
95+ -- -- for symmetric monoidal category
96+ -- swapAddEq : (as, bs, cs : List o) -> swapAddIdR as bs cs = swap as bs `permAdd` permId cs
97+ -- swapAddEq [] [] cs = Refl
98+ -- swapAddEq [] bs cs = sym (permPreserveId bs cs) `trans` permAddCong6 Refl (sym $ appendNilRightNeutral bs) Refl Refl (rewriteRightIgnoreR Refl) Refl
99+ -- swapAddEq (a::as) bs cs = insCong5 (appendAssociative as bs cs) (appendAssociative bs as cs) (appendAssociative bs (a::as) cs) (swapAddEq as bs cs) (swapDownAppendedNeutral bs _ cs)
100+
101+ -- swapNilRightNeutral : (l : List o) -> swap l [] = permId l
102+ -- swapNilRightNeutral [] = Refl
103+ -- swapNilRightNeutral (l::ls) = insCong5 (appendNilRightNeutral ls) Refl Refl (swapNilRightNeutral ls) Refl
104+
105+ -- swapAddIdRNilRightNeutral : (l : List o) -> (k : List o) -> swapAddIdR l [] k = permId (l ++ k)
106+ -- swapAddIdRNilRightNeutral [] k = Refl
107+ -- swapAddIdRNilRightNeutral (l::ls) k = insCong5 Refl Refl Refl (swapAddIdRNilRightNeutral ls k) Refl
108+
109+ -- --\/----- --\/---}
110+ -- --/\-\/-- = {--/\/--}
111+ -- -----/\-- {---/\--
112+ -- swapHexagonal1 : (as, bs, cs : List o) ->
113+ -- swapAddIdR as bs cs `permComp` permAddIdL bs (swap as cs) = swap as (bs ++ cs)
114+
115+ -- swapHexagonal1' : (as, bs, cs, ds : List o) ->
116+ -- swapAddIdR as bs (cs ++ ds) `permComp` permAddIdL bs (swapAddIdR as cs ds) = swapAddIdR as (bs ++ cs) ds
117+
118+ -- -----\/-- {---\/--
119+ -- --\/-/\-- = {--\/\--}
120+ -- --/\----- --/\---}
121+ -- swapHexagonal2 : (as, bs, cs : List o) ->
122+ -- permAddIdL as (swap bs cs) `permComp` swapAddIdR as cs bs = swap (as ++ bs) cs
123+
124+ -- swapHexagonal2' : (as, bs, cs, ds : List o) ->
125+ -- permAddIdL as (swapAddIdR bs cs ds) `permComp` swapAddIdR as cs (bs ++ ds) = swapAddIdR (as ++ bs) cs ds
126+
127+ -- --p-\/-- = --\/----
128+ -- ----/\-- --/\-p--
129+ -- swapNatural : (as, bs, cs : List o) -> (p : Perm as bs) ->
130+ -- (p `permAdd` permId cs) `permComp` swap bs cs = swap as cs `permComp` permAddIdL cs p
131+
132+ -- swapNatural' : (as, bs, cs, ds : List o) -> (p : Perm as bs) ->
133+ -- (p `permAdd` permId (cs ++ ds)) `permComp` swapAddIdR bs cs ds = swapAddIdR as cs ds `permComp` permAddIdL cs (p `permAdd` permId ds)
134+
135+ -- -----\/----- --\/----\/--
136+ -- --\/-/\-\/-- = --/\-\/-/\--
137+ -- --/\----/\-- -----/\-----
138+ -- swap3' : (as, bs, cs, ds : List o)
139+ -- -> (permAddIdL as (swapAddIdR bs cs ds) `permComp` swapAddIdR as cs (bs ++ ds)) `permComp` permAddIdL cs (swapAddIdR as bs ds)
140+ -- = swapAddIdR as bs (cs ++ ds) `permComp` (permAddIdL bs (swapAddIdR as cs ds) `permComp` swapAddIdR bs cs (as ++ ds))
141+ -- swap3' as bs cs ds =
142+ -- trans (permCompCong5 (appendAssociative as bs (cs ++ ds))
143+ -- (cong {f=\z=>cs++z} (appendAssociative as bs ds))
144+ -- (cong {f=\z=>cs++z} (appendAssociative bs as ds))
145+ -- (swapHexagonal2' as bs cs ds)
146+ -- (permAddIdLCong4 Refl
147+ -- (appendAssociative as bs ds)
148+ -- (appendAssociative bs as ds)
149+ -- (swapAddEq as bs ds)))
150+ -- (trans (sym $ swapNatural' (as ++ bs) (bs ++ as) cs ds (swap as bs))
151+ -- (permCompCong5 (sym $ appendAssociative as bs (cs ++ ds))
152+ -- (sym $ appendAssociative bs as (cs ++ ds))
153+ -- (cong {f=\z=>cs++z} (sym $ appendAssociative bs as ds))
154+ -- (sym $ swapAddEq as bs (cs ++ ds))
155+ -- (sym $ swapHexagonal2' bs as cs ds)))
0 commit comments