:: Some Isomorphisms Between Functor Categories :: by Andrzej Trybulec :: :: Received June 5, 1992 :: Copyright (c) 1992-2012 Association of Mizar Users begin definition let A, B, C be non empty set ; let f be Function of A,(Funcs (B,C)); :: original:uncurry redefine func uncurry f -> Function of [:A,B:],C; coherence uncurry f is Function of [:A,B:],C proofend; end; theorem Th1: :: ISOCAT_2:1 for A, B, C being non empty set for f being Function of A,(Funcs (B,C)) holds curry (uncurry f) = f proofend; theorem Th2: :: ISOCAT_2:2 for A, B, C being non empty set for f being Function of A,(Funcs (B,C)) for a being Element of A for b being Element of B holds (uncurry f) . (a,b) = (f . a) . b proofend; theorem :: ISOCAT_2:3 canceled; theorem :: ISOCAT_2:4 canceled; theorem Th5: :: ISOCAT_2:5 for A being Category for f being Morphism of A holds (id (cod f)) (*) f = f proofend; theorem Th6: :: ISOCAT_2:6 for A being Category for f being Morphism of A holds f (*) (id (dom f)) = f proofend; theorem Th7: :: ISOCAT_2:7 for A, B being Category for o being set holds ( o is Object of (Functors (A,B)) iff o is Functor of A,B ) proofend; theorem Th8: :: ISOCAT_2:8 for A, B being Category for f being Morphism of (Functors (A,B)) ex F1, F2 being Functor of A,B ex t being natural_transformation of F1,F2 st ( F1 is_naturally_transformable_to F2 & dom f = F1 & cod f = F2 & f = [[F1,F2],t] ) proofend; begin definition let A, B be Category; let a be Object of A; funca |-> B -> Functor of Functors (A,B),B means :Def1: :: ISOCAT_2:def 1 for F1, F2 being Functor of A,B for t being natural_transformation of F1,F2 st F1 is_naturally_transformable_to F2 holds it . [[F1,F2],t] = t . a; existence ex b1 being Functor of Functors (A,B),B st for F1, F2 being Functor of A,B for t being natural_transformation of F1,F2 st F1 is_naturally_transformable_to F2 holds b1 . [[F1,F2],t] = t . a proofend; uniqueness for b1, b2 being Functor of Functors (A,B),B st ( for F1, F2 being Functor of A,B for t being natural_transformation of F1,F2 st F1 is_naturally_transformable_to F2 holds b1 . [[F1,F2],t] = t . a ) & ( for F1, F2 being Functor of A,B for t being natural_transformation of F1,F2 st F1 is_naturally_transformable_to F2 holds b2 . [[F1,F2],t] = t . a ) holds b1 = b2 proofend; end; :: deftheorem Def1 defines |-> ISOCAT_2:def_1_:_ for A, B being Category for a being Object of A for b4 being Functor of Functors (A,B),B holds ( b4 = a |-> B iff for F1, F2 being Functor of A,B for t being natural_transformation of F1,F2 st F1 is_naturally_transformable_to F2 holds b4 . [[F1,F2],t] = t . a ); theorem :: ISOCAT_2:9 for A being Category for o, m being set holds Functors ((1Cat (o,m)),A) ~= A proofend; begin theorem Th10: :: ISOCAT_2:10 for A, B, C being Category for F being Functor of [:A,B:],C for a being Object of A for b being Object of B holds (F ?- a) . b = F . [a,b] proofend; theorem Th11: :: ISOCAT_2:11 for A, B being Category for a1, a2 being Object of A for b1, b2 being Object of B holds ( ( Hom (a1,a2) <> {} & Hom (b1,b2) <> {} ) iff Hom ([a1,b1],[a2,b2]) <> {} ) proofend; theorem Th12: :: ISOCAT_2:12 for A, B being Category for a1, a2 being Object of A for b1, b2 being Object of B st Hom ([a1,b1],[a2,b2]) <> {} holds for f being Morphism of A for g being Morphism of B holds ( [f,g] is Morphism of [a1,b1],[a2,b2] iff ( f is Morphism of a1,a2 & g is Morphism of b1,b2 ) ) proofend; theorem Th13: :: ISOCAT_2:13 for A, B, C being Category for F1, F2 being Functor of [:A,B:],C st F1 is_naturally_transformable_to F2 holds for t being natural_transformation of F1,F2 for a being Object of A holds ( F1 ?- a is_naturally_transformable_to F2 ?- a & (curry t) . a is natural_transformation of F1 ?- a,F2 ?- a ) proofend; definition let A, B, C be Category; let F be Functor of [:A,B:],C; let f be Morphism of A; func curry (F,f) -> Function of the carrier' of B, the carrier' of C equals :: ISOCAT_2:def 2 (curry F) . f; coherence (curry F) . f is Function of the carrier' of B, the carrier' of C proofend; end; :: deftheorem defines curry ISOCAT_2:def_2_:_ for A, B, C being Category for F being Functor of [:A,B:],C for f being Morphism of A holds curry (F,f) = (curry F) . f; theorem Th14: :: ISOCAT_2:14 for A, B being Category for a1, a2 being Object of A for b1, b2 being Object of B for f being Morphism of A for g being Morphism of B st f in Hom (a1,a2) & g in Hom (b1,b2) holds [f,g] in Hom ([a1,b1],[a2,b2]) proofend; theorem Th15: :: ISOCAT_2:15 for A, B, C being Category for F being Functor of [:A,B:],C for a, b being Object of A st Hom (a,b) <> {} holds for f being Morphism of a,b holds ( F ?- a is_naturally_transformable_to F ?- b & (curry (F,f)) * (IdMap B) is natural_transformation of F ?- a,F ?- b ) proofend; definition let A, B, C be Category; let F be Functor of [:A,B:],C; let f be Morphism of A; funcF ?- f -> natural_transformation of F ?- (dom f),F ?- (cod f) equals :: ISOCAT_2:def 3 (curry (F,f)) * (IdMap B); coherence (curry (F,f)) * (IdMap B) is natural_transformation of F ?- (dom f),F ?- (cod f) proofend; correctness ; end; :: deftheorem defines ?- ISOCAT_2:def_3_:_ for A, B, C being Category for F being Functor of [:A,B:],C for f being Morphism of A holds F ?- f = (curry (F,f)) * (IdMap B); theorem Th16: :: ISOCAT_2:16 for A, B, C being Category for F being Functor of [:A,B:],C for g being Morphism of A holds F ?- (dom g) is_naturally_transformable_to F ?- (cod g) proofend; theorem Th17: :: ISOCAT_2:17 for A, B, C being Category for F being Functor of [:A,B:],C for f being Morphism of A for b being Object of B holds (F ?- f) . b = F . (f,(id b)) proofend; theorem Th18: :: ISOCAT_2:18 for A, B, C being Category for F being Functor of [:A,B:],C for a being Object of A holds id (F ?- a) = F ?- (id a) proofend; theorem Th19: :: ISOCAT_2:19 for A, B, C being Category for F being Functor of [:A,B:],C for g, f being Morphism of A st dom g = cod f holds for t being natural_transformation of F ?- (dom f),F ?- (dom g) st t = F ?- f holds F ?- (g (*) f) = (F ?- g) `*` t proofend; definition let A, B, C be Category; let F be Functor of [:A,B:],C; func export F -> Functor of A, Functors (B,C) means :Def4: :: ISOCAT_2:def 4 for f being Morphism of A holds it . f = [[(F ?- (dom f)),(F ?- (cod f))],(F ?- f)]; existence ex b1 being Functor of A, Functors (B,C) st for f being Morphism of A holds b1 . f = [[(F ?- (dom f)),(F ?- (cod f))],(F ?- f)] proofend; uniqueness for b1, b2 being Functor of A, Functors (B,C) st ( for f being Morphism of A holds b1 . f = [[(F ?- (dom f)),(F ?- (cod f))],(F ?- f)] ) & ( for f being Morphism of A holds b2 . f = [[(F ?- (dom f)),(F ?- (cod f))],(F ?- f)] ) holds b1 = b2 proofend; end; :: deftheorem Def4 defines export ISOCAT_2:def_4_:_ for A, B, C being Category for F being Functor of [:A,B:],C for b5 being Functor of A, Functors (B,C) holds ( b5 = export F iff for f being Morphism of A holds b5 . f = [[(F ?- (dom f)),(F ?- (cod f))],(F ?- f)] ); Lm1: for A, B being Category for F1, F2 being Functor of A,B st F1 is_transformable_to F2 holds for t being transformation of F1,F2 for a being Object of A holds t . a in Hom ((F1 . a),(F2 . a)) proofend; theorem Th20: :: ISOCAT_2:20 for A, B, C being Category for F being Functor of [:A,B:],C for a being Object of A holds (export F) . a = F ?- a proofend; theorem Th21: :: ISOCAT_2:21 for A, B, C being Category for F being Functor of [:A,B:],C for a being Object of A holds (export F) . a is Functor of B,C proofend; theorem Th22: :: ISOCAT_2:22 for A, B, C being Category for F1, F2 being Functor of [:A,B:],C st export F1 = export F2 holds F1 = F2 proofend; theorem Th23: :: ISOCAT_2:23 for A, B, C being Category for F1, F2 being Functor of [:A,B:],C st F1 is_naturally_transformable_to F2 holds for t being natural_transformation of F1,F2 holds ( export F1 is_naturally_transformable_to export F2 & ex G being natural_transformation of export F1, export F2 st for s being Function of [: the carrier of A, the carrier of B:], the carrier' of C st t = s holds for a being Object of A holds G . a = [[((export F1) . a),((export F2) . a)],((curry s) . a)] ) proofend; definition let A, B, C be Category; let F1, F2 be Functor of [:A,B:],C; assume B1: F1 is_naturally_transformable_to F2 ; let t be natural_transformation of F1,F2; func export t -> natural_transformation of export F1, export F2 means :Def5: :: ISOCAT_2:def 5 for s being Function of [: the carrier of A, the carrier of B:], the carrier' of C st t = s holds for a being Object of A holds it . a = [[((export F1) . a),((export F2) . a)],((curry s) . a)]; existence ex b1 being natural_transformation of export F1, export F2 st for s being Function of [: the carrier of A, the carrier of B:], the carrier' of C st t = s holds for a being Object of A holds b1 . a = [[((export F1) . a),((export F2) . a)],((curry s) . a)] by B1, Th23; uniqueness for b1, b2 being natural_transformation of export F1, export F2 st ( for s being Function of [: the carrier of A, the carrier of B:], the carrier' of C st t = s holds for a being Object of A holds b1 . a = [[((export F1) . a),((export F2) . a)],((curry s) . a)] ) & ( for s being Function of [: the carrier of A, the carrier of B:], the carrier' of C st t = s holds for a being Object of A holds b2 . a = [[((export F1) . a),((export F2) . a)],((curry s) . a)] ) holds b1 = b2 proofend; end; :: deftheorem Def5 defines export ISOCAT_2:def_5_:_ for A, B, C being Category for F1, F2 being Functor of [:A,B:],C st F1 is_naturally_transformable_to F2 holds for t being natural_transformation of F1,F2 for b7 being natural_transformation of export F1, export F2 holds ( b7 = export t iff for s being Function of [: the carrier of A, the carrier of B:], the carrier' of C st t = s holds for a being Object of A holds b7 . a = [[((export F1) . a),((export F2) . a)],((curry s) . a)] ); theorem Th24: :: ISOCAT_2:24 for A, B, C being Category for F being Functor of [:A,B:],C holds id (export F) = export (id F) proofend; theorem Th25: :: ISOCAT_2:25 for A, B, C being Category for F1, F2, F3 being Functor of [:A,B:],C st F1 is_naturally_transformable_to F2 & F2 is_naturally_transformable_to F3 holds for t1 being natural_transformation of F1,F2 for t2 being natural_transformation of F2,F3 holds export (t2 `*` t1) = (export t2) `*` (export t1) proofend; theorem Th26: :: ISOCAT_2:26 for A, B, C being Category for F1, F2 being Functor of [:A,B:],C st F1 is_naturally_transformable_to F2 holds for t1, t2 being natural_transformation of F1,F2 st export t1 = export t2 holds t1 = t2 proofend; theorem Th27: :: ISOCAT_2:27 for A, B, C being Category for G being Functor of A, Functors (B,C) ex F being Functor of [:A,B:],C st G = export F proofend; theorem Th28: :: ISOCAT_2:28 for A, B, C being Category for F1, F2 being Functor of [:A,B:],C st export F1 is_naturally_transformable_to export F2 holds for t being natural_transformation of export F1, export F2 holds ( F1 is_naturally_transformable_to F2 & ex u being natural_transformation of F1,F2 st t = export u ) proofend; definition let A, B, C be Category; func export (A,B,C) -> Functor of Functors ([:A,B:],C), Functors (A,(Functors (B,C))) means :Def6: :: ISOCAT_2:def 6 for F1, F2 being Functor of [:A,B:],C st F1 is_naturally_transformable_to F2 holds for t being natural_transformation of F1,F2 holds it . [[F1,F2],t] = [[(export F1),(export F2)],(export t)]; existence ex b1 being Functor of Functors ([:A,B:],C), Functors (A,(Functors (B,C))) st for F1, F2 being Functor of [:A,B:],C st F1 is_naturally_transformable_to F2 holds for t being natural_transformation of F1,F2 holds b1 . [[F1,F2],t] = [[(export F1),(export F2)],(export t)] proofend; uniqueness for b1, b2 being Functor of Functors ([:A,B:],C), Functors (A,(Functors (B,C))) st ( for F1, F2 being Functor of [:A,B:],C st F1 is_naturally_transformable_to F2 holds for t being natural_transformation of F1,F2 holds b1 . [[F1,F2],t] = [[(export F1),(export F2)],(export t)] ) & ( for F1, F2 being Functor of [:A,B:],C st F1 is_naturally_transformable_to F2 holds for t being natural_transformation of F1,F2 holds b2 . [[F1,F2],t] = [[(export F1),(export F2)],(export t)] ) holds b1 = b2 proofend; end; :: deftheorem Def6 defines export ISOCAT_2:def_6_:_ for A, B, C being Category for b4 being Functor of Functors ([:A,B:],C), Functors (A,(Functors (B,C))) holds ( b4 = export (A,B,C) iff for F1, F2 being Functor of [:A,B:],C st F1 is_naturally_transformable_to F2 holds for t being natural_transformation of F1,F2 holds b4 . [[F1,F2],t] = [[(export F1),(export F2)],(export t)] ); registration let A, B, C be Category; cluster export (A,B,C) -> isomorphic ; coherence export (A,B,C) is isomorphic proofend; end; theorem :: ISOCAT_2:29 for A, B, C being Category holds Functors ([:A,B:],C) ~= Functors (A,(Functors (B,C))) proofend; begin theorem Th30: :: ISOCAT_2:30 for A, B, C being Category for F1, F2 being Functor of A,B for G being Functor of B,C st F1 is_naturally_transformable_to F2 holds for t being natural_transformation of F1,F2 holds G * t = G * t proofend; definition let A, B, C be Category; let F be Functor of A,B; let G be Functor of A,C; :: original:<: redefine func<:F,G:> -> Functor of A,[:B,C:]; coherence <:F,G:> is Functor of A,[:B,C:] proofend; end; definition let A, B, C be Category; let F be Functor of A,[:B,C:]; func Pr1 F -> Functor of A,B equals :: ISOCAT_2:def 7 (pr1 (B,C)) * F; correctness coherence (pr1 (B,C)) * F is Functor of A,B; ; func Pr2 F -> Functor of A,C equals :: ISOCAT_2:def 8 (pr2 (B,C)) * F; correctness coherence (pr2 (B,C)) * F is Functor of A,C; ; end; :: deftheorem defines Pr1 ISOCAT_2:def_7_:_ for A, B, C being Category for F being Functor of A,[:B,C:] holds Pr1 F = (pr1 (B,C)) * F; :: deftheorem defines Pr2 ISOCAT_2:def_8_:_ for A, B, C being Category for F being Functor of A,[:B,C:] holds Pr2 F = (pr2 (B,C)) * F; theorem Th31: :: ISOCAT_2:31 for A, B, C being Category for F being Functor of A,B for G being Functor of A,C holds ( Pr1 <:F,G:> = F & Pr2 <:F,G:> = G ) proofend; theorem Th32: :: ISOCAT_2:32 for A, B, C being Category for F, G being Functor of A,[:B,C:] st Pr1 F = Pr1 G & Pr2 F = Pr2 G holds F = G proofend; definition let A, B, C be Category; let F1, F2 be Functor of A,[:B,C:]; let t be natural_transformation of F1,F2; func Pr1 t -> natural_transformation of Pr1 F1, Pr1 F2 equals :: ISOCAT_2:def 9 (pr1 (B,C)) * t; coherence (pr1 (B,C)) * t is natural_transformation of Pr1 F1, Pr1 F2 ; func Pr2 t -> natural_transformation of Pr2 F1, Pr2 F2 equals :: ISOCAT_2:def 10 (pr2 (B,C)) * t; coherence (pr2 (B,C)) * t is natural_transformation of Pr2 F1, Pr2 F2 ; end; :: deftheorem defines Pr1 ISOCAT_2:def_9_:_ for A, B, C being Category for F1, F2 being Functor of A,[:B,C:] for t being natural_transformation of F1,F2 holds Pr1 t = (pr1 (B,C)) * t; :: deftheorem defines Pr2 ISOCAT_2:def_10_:_ for A, B, C being Category for F1, F2 being Functor of A,[:B,C:] for t being natural_transformation of F1,F2 holds Pr2 t = (pr2 (B,C)) * t; theorem Th33: :: ISOCAT_2:33 for A, B, C being Category for F1, F2, G1, G2 being Functor of A,[:B,C:] st F1 is_naturally_transformable_to F2 & G1 is_naturally_transformable_to G2 holds for s being natural_transformation of F1,F2 for t being natural_transformation of G1,G2 st Pr1 s = Pr1 t & Pr2 s = Pr2 t holds s = t proofend; Lm2: for A, B, C being Category for F1, G1 being Functor of A,B for F2, G2 being Functor of A,C st F1 is_transformable_to G1 & F2 is_transformable_to G2 holds for t1 being transformation of F1,G1 for t2 being transformation of F2,G2 for a being Object of A holds <:t1,t2:> . a = [(t1 . a),(t2 . a)] proofend; theorem Th34: :: ISOCAT_2:34 for A, B, C being Category for F being Functor of A,B for G being Functor of A,C for a, b being Object of A st Hom (a,b) <> {} holds for f being Morphism of a,b holds <:F,G:> . f = [(F . f),(G . f)] by FUNCT_3:59; theorem Th35: :: ISOCAT_2:35 for A, B, C being Category for F being Functor of A,B for G being Functor of A,C for a being Object of A holds <:F,G:> . a = [(F . a),(G . a)] proofend; Lm3: for A, B, C being Category for F1, G1 being Functor of A,B for F2, G2 being Functor of A,C st F1 is_transformable_to G1 & F2 is_transformable_to G2 holds for t1 being transformation of F1,G1 for t2 being transformation of F2,G2 for a being Object of A holds <:t1,t2:> . a in Hom ((<:F1,F2:> . a),(<:G1,G2:> . a)) proofend; theorem Th36: :: ISOCAT_2:36 for A, B, C being Category for F1, G1 being Functor of A,B for F2, G2 being Functor of A,C st F1 is_transformable_to G1 & F2 is_transformable_to G2 holds <:F1,F2:> is_transformable_to <:G1,G2:> proofend; definition let A, B, C be Category; let F1, G1 be Functor of A,B; let F2, G2 be Functor of A,C; assume A1: ( F1 is_transformable_to G1 & F2 is_transformable_to G2 ) ; let t1 be transformation of F1,G1; let t2 be transformation of F2,G2; func<:t1,t2:> -> transformation of <:F1,F2:>,<:G1,G2:> equals :Def11: :: ISOCAT_2:def 11 <:t1,t2:>; coherence <:t1,t2:> is transformation of <:F1,F2:>,<:G1,G2:> proofend; end; :: deftheorem Def11 defines <: ISOCAT_2:def_11_:_ for A, B, C being Category for F1, G1 being Functor of A,B for F2, G2 being Functor of A,C st F1 is_transformable_to G1 & F2 is_transformable_to G2 holds for t1 being transformation of F1,G1 for t2 being transformation of F2,G2 holds <:t1,t2:> = <:t1,t2:>; theorem Th37: :: ISOCAT_2:37 for A, B, C being Category for F1, G1 being Functor of A,B for F2, G2 being Functor of A,C st F1 is_transformable_to G1 & F2 is_transformable_to G2 holds for t1 being transformation of F1,G1 for t2 being transformation of F2,G2 for a being Object of A holds <:t1,t2:> . a = [(t1 . a),(t2 . a)] proofend; Lm4: for A, B, C being Category for F1, G1 being Functor of A,B for F2, G2 being Functor of A,C st F1 is_naturally_transformable_to G1 & F2 is_naturally_transformable_to G2 holds for t1 being natural_transformation of F1,G1 for t2 being natural_transformation of F2,G2 for a, b being Object of A st Hom (a,b) <> {} holds for f being Morphism of a,b holds (<:t1,t2:> . b) * (<:F1,F2:> /. f) = (<:G1,G2:> /. f) * (<:t1,t2:> . a) proofend; theorem Th38: :: ISOCAT_2:38 for A, B, C being Category for F1, G1 being Functor of A,B for F2, G2 being Functor of A,C st F1 is_naturally_transformable_to G1 & F2 is_naturally_transformable_to G2 holds <:F1,F2:> is_naturally_transformable_to <:G1,G2:> proofend; definition let A, B, C be Category; let F1, G1 be Functor of A,B; let F2, G2 be Functor of A,C; assume A1: ( F1 is_naturally_transformable_to G1 & F2 is_naturally_transformable_to G2 ) ; let t1 be natural_transformation of F1,G1; let t2 be natural_transformation of F2,G2; func<:t1,t2:> -> natural_transformation of <:F1,F2:>,<:G1,G2:> equals :Def12: :: ISOCAT_2:def 12 <:t1,t2:>; coherence <:t1,t2:> is natural_transformation of <:F1,F2:>,<:G1,G2:> proofend; end; :: deftheorem Def12 defines <: ISOCAT_2:def_12_:_ for A, B, C being Category for F1, G1 being Functor of A,B for F2, G2 being Functor of A,C st F1 is_naturally_transformable_to G1 & F2 is_naturally_transformable_to G2 holds for t1 being natural_transformation of F1,G1 for t2 being natural_transformation of F2,G2 holds <:t1,t2:> = <:t1,t2:>; theorem Th39: :: ISOCAT_2:39 for A, B, C being Category for F1, G1 being Functor of A,B for F2, G2 being Functor of A,C st F1 is_naturally_transformable_to G1 & F2 is_naturally_transformable_to G2 holds for t1 being natural_transformation of F1,G1 for t2 being natural_transformation of F2,G2 holds ( Pr1 <:t1,t2:> = t1 & Pr2 <:t1,t2:> = t2 ) proofend; definition let A, B, C be Category; func distribute (A,B,C) -> Functor of Functors (A,[:B,C:]),[:(Functors (A,B)),(Functors (A,C)):] means :Def13: :: ISOCAT_2:def 13 for F1, F2 being Functor of A,[:B,C:] st F1 is_naturally_transformable_to F2 holds for t being natural_transformation of F1,F2 holds it . [[F1,F2],t] = [[[(Pr1 F1),(Pr1 F2)],(Pr1 t)],[[(Pr2 F1),(Pr2 F2)],(Pr2 t)]]; existence ex b1 being Functor of Functors (A,[:B,C:]),[:(Functors (A,B)),(Functors (A,C)):] st for F1, F2 being Functor of A,[:B,C:] st F1 is_naturally_transformable_to F2 holds for t being natural_transformation of F1,F2 holds b1 . [[F1,F2],t] = [[[(Pr1 F1),(Pr1 F2)],(Pr1 t)],[[(Pr2 F1),(Pr2 F2)],(Pr2 t)]] proofend; uniqueness for b1, b2 being Functor of Functors (A,[:B,C:]),[:(Functors (A,B)),(Functors (A,C)):] st ( for F1, F2 being Functor of A,[:B,C:] st F1 is_naturally_transformable_to F2 holds for t being natural_transformation of F1,F2 holds b1 . [[F1,F2],t] = [[[(Pr1 F1),(Pr1 F2)],(Pr1 t)],[[(Pr2 F1),(Pr2 F2)],(Pr2 t)]] ) & ( for F1, F2 being Functor of A,[:B,C:] st F1 is_naturally_transformable_to F2 holds for t being natural_transformation of F1,F2 holds b2 . [[F1,F2],t] = [[[(Pr1 F1),(Pr1 F2)],(Pr1 t)],[[(Pr2 F1),(Pr2 F2)],(Pr2 t)]] ) holds b1 = b2 proofend; end; :: deftheorem Def13 defines distribute ISOCAT_2:def_13_:_ for A, B, C being Category for b4 being Functor of Functors (A,[:B,C:]),[:(Functors (A,B)),(Functors (A,C)):] holds ( b4 = distribute (A,B,C) iff for F1, F2 being Functor of A,[:B,C:] st F1 is_naturally_transformable_to F2 holds for t being natural_transformation of F1,F2 holds b4 . [[F1,F2],t] = [[[(Pr1 F1),(Pr1 F2)],(Pr1 t)],[[(Pr2 F1),(Pr2 F2)],(Pr2 t)]] ); registration let A, B, C be Category; cluster distribute (A,B,C) -> isomorphic ; coherence distribute (A,B,C) is isomorphic proofend; end; theorem :: ISOCAT_2:40 for A, B, C being Category holds Functors (A,[:B,C:]) ~= [:(Functors (A,B)),(Functors (A,C)):] proofend;