changeset 47:0124e3c971e5

F is Functor proved.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 23 Jul 2013 03:39:56 +0900
parents 5d1b0fd2ad21
children d5a8edad2a83
files universal-mapping.agda
diffstat 1 files changed, 25 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/universal-mapping.agda	Tue Jul 23 02:57:11 2013 +0900
+++ b/universal-mapping.agda	Tue Jul 23 03:39:56 2013 +0900
@@ -177,10 +177,34 @@
               a (F b) (A [ η b  o  f ])  ((_* um) (A [ η b  o  g ])) ( lemma-cong2 a b f g eq )
     lemma-cong :  {a b : Obj A} {f g : Hom A a b} → A [ f ≈ g ] → B [ myFMap f ≈ myFMap g ]
     lemma-cong {a} {b} {f} {g} eq = lemma-cong1 a b f g eq
+    lemma-distr2 :  (a b c : Obj A) (f : Hom A a b) (g : Hom A b c) → 
+            A [ A [ FMap U (B [(_* um) (A [ η c o g ]) o (_* um)( A [ η b  o f ]) ])  o  η a ] ≈ (A [ η c o A [ g o f ] ]) ]
+    lemma-distr2 a b c f g = let open ≈-Reasoning (A) in
+       begin
+           ( FMap U (B [(_* um) (A [ η c o g ]) o (_* um)( A [ η b  o f ]) ] ) )  o  η a 
+       ≈⟨ car (IsFunctor.distr ( isFunctor U ))  ⟩
+           (( FMap U ((_* um) (A [ η c o g ])) o ( FMap U ((_* um)( A [ η b  o f ])))) )   o  η a 
+       ≈⟨ sym assoc ⟩
+           ( FMap U ((_* um) (A [ η c o g ])) o (( FMap U ((_* um)( A [ η b  o f ]))))   o  η a )
+       ≈⟨ cdr ( ( IsUniversalMapping.universalMapping ( isUniversalMapping um )) a (F b)) ⟩
+           ( FMap U ((_* um) (A [ η c o g ])) o ( η b  o f) )
+       ≈⟨ assoc ⟩
+           ( FMap U ((_* um) (A [ η c o g ])) o  η b)  o f
+       ≈⟨ car (( IsUniversalMapping.universalMapping ( isUniversalMapping um )) b (F c)) ⟩
+           (  η c o g )  o f
+       ≈⟨ sym assoc  ⟩
+            η c o ( g o f )
+       ∎
+    lemma-distr1 :  (a b c : Obj A) (f : Hom A a b) (g : Hom A b c) → 
+            B [ (_* um) (A [ η c o A [ g o f ] ]) ≈ (B [(_* um) (A [ η c o g ]) o (_* um)( A [ η b  o f ]) ] )]
+    lemma-distr1 a b c f g =  ( IsUniversalMapping.unique-universalMapping ( isUniversalMapping um ) a (F c)
+              (A [ η c o A [ g o f ] ]) ((B [(_* um) (A [ η c o g ]) o (_* um)( A [ η b  o f ]) ] )) ) (lemma-distr2 a b c f g )
+    lemma-distr :  {a b c : Obj A} {f : Hom A a b} {g : Hom A b c} → B [ myFMap (A [ g o f ]) ≈ (B [ myFMap g o myFMap f ] )]
+    lemma-distr {a} {b} {c} {f} {g} = lemma-distr1 a b c f g 
     myIsFunctor : IsFunctor A B F myFMap
     myIsFunctor =
       record { ≈-cong   = lemma-cong
              ; identity = lemma-id
-             ; distr    = {!!}
+             ; distr    = lemma-distr
              }