Article ISOCAT_2, MML version 4.99.1005
:: ISOCAT_2:funcnot 1 => ISOCAT_2:func 1
definition
let a1, a2, a3 be non empty set;
let a4 be Function-like quasi_total Relation of a1,Funcs(a2,a3);
redefine func uncurry a4 -> Function-like quasi_total Relation of [:a1,a2:],a3;
end;
:: ISOCAT_2:th 1
theorem
for b1, b2, b3 being non empty set
for b4 being Function-like quasi_total Relation of b1,Funcs(b2,b3) holds
curry uncurry b4 = b4;
:: ISOCAT_2:th 2
theorem
for b1, b2, b3 being non empty set
for b4 being Function-like quasi_total Relation of b1,Funcs(b2,b3)
for b5 being Element of b1
for b6 being Element of b2 holds
(uncurry b4) .(b5,b6) = (b4 . b5) . b6;
:: ISOCAT_2:th 3
theorem
for b1 being set
for b2 being non empty set
for b3, b4 being Function-like quasi_total Relation of {b1},b2
st b3 . b1 = b4 . b1
holds b3 = b4;
:: ISOCAT_2:th 4
theorem
for b1, b2 being non empty set
for b3 being Element of b1
for b4 being Function-like quasi_total Relation of b1,b2 holds
b4 . b3 in rng b4;
:: ISOCAT_2:th 5
theorem
for b1, b2, b3 being non empty set
for b4, b5 being Function-like quasi_total Relation of b1,[:b2,b3:]
st (pr1(b2,b3)) * b4 = (pr1(b2,b3)) * b5 &
(pr2(b2,b3)) * b4 = (pr2(b2,b3)) * b5
holds b4 = b5;
:: ISOCAT_2:th 6
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
(id cod b2) * b2 = b2;
:: ISOCAT_2:th 7
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
b2 * id dom b2 = b2;
:: ISOCAT_2:th 8
theorem
for b1, b2 being non void Category-like CatStr
for b3 being set holds
b3 is Element of the Vertices of Functors(b1,b2)
iff
b3 is Functor of b1,b2;
:: ISOCAT_2:th 9
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Element of the Edges of Functors(b1,b2) holds
ex b4, b5 being Functor of b1,b2 st
ex b6 being natural_transformation of b4,b5 st
b4 is_naturally_transformable_to b5 & dom b3 = b4 & cod b3 = b5 & b3 = [[b4,b5],b6];
:: ISOCAT_2:funcnot 2 => ISOCAT_2:func 2
definition
let a1, a2 be non void Category-like CatStr;
let a3 be Element of the Vertices of a1;
func A3 |-> A2 -> Functor of Functors(a1,a2),a2 means
for b1, b2 being Functor of a1,a2
for b3 being natural_transformation of b1,b2
st b1 is_naturally_transformable_to b2
holds it . [[b1,b2],b3] = b3 . a3;
end;
:: ISOCAT_2:def 1
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Element of the Vertices of b1
for b4 being Functor of Functors(b1,b2),b2 holds
b4 = b3 |-> b2
iff
for b5, b6 being Functor of b1,b2
for b7 being natural_transformation of b5,b6
st b5 is_naturally_transformable_to b6
holds b4 . [[b5,b6],b7] = b7 . b3;
:: ISOCAT_2:th 11
theorem
for b1 being non void Category-like CatStr
for b2, b3 being set holds
Functors(1Cat(b2,b3),b1),b1 are_isomorphic;
:: ISOCAT_2:th 12
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of [:b1,b2:],b3
for b5 being Element of the Vertices of b1
for b6 being Element of the Vertices of b2 holds
(b4 ?- b5) . b6 = b4 . [b5,b6];
:: ISOCAT_2:th 13
theorem
for b1, b2 being non void Category-like CatStr
for b3, b4 being Element of the Vertices of b1
for b5, b6 being Element of the Vertices of b2 holds
Hom(b3,b4) <> {} & Hom(b5,b6) <> {}
iff
Hom([b3,b5],[b4,b6]) <> {};
:: ISOCAT_2:th 14
theorem
for b1, b2 being non void Category-like CatStr
for b3, b4 being Element of the Vertices of b1
for b5, b6 being Element of the Vertices of b2
st Hom([b3,b5],[b4,b6]) <> {}
for b7 being Element of the Edges of b1
for b8 being Element of the Edges of b2 holds
[b7,b8] is Morphism of [b3,b5],[b4,b6]
iff
b7 is Morphism of b3,b4 & b8 is Morphism of b5,b6;
:: ISOCAT_2:th 15
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of [:b1,b2:],b3
st b4 is_naturally_transformable_to b5
for b6 being natural_transformation of b4,b5
for b7 being Element of the Vertices of b1 holds
b4 ?- b7 is_naturally_transformable_to b5 ?- b7 &
(curry b6) . b7 is natural_transformation of b4 ?- b7,b5 ?- b7;
:: ISOCAT_2:funcnot 3 => ISOCAT_2:func 3
definition
let a1, a2, a3 be non void Category-like CatStr;
let a4 be Functor of [:a1,a2:],a3;
let a5 be Element of the Edges of a1;
func curry(A4,A5) -> Function-like quasi_total Relation of the Edges of a2,the Edges of a3 equals
(curry a4) . a5;
end;
:: ISOCAT_2:def 2
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of [:b1,b2:],b3
for b5 being Element of the Edges of b1 holds
curry(b4,b5) = (curry b4) . b5;
:: ISOCAT_2:th 16
theorem
for b1, b2 being non void Category-like CatStr
for b3, b4 being Element of the Vertices of b1
for b5, b6 being Element of the Vertices of b2
for b7 being Element of the Edges of b1
for b8 being Element of the Edges of b2
st b7 in Hom(b3,b4) & b8 in Hom(b5,b6)
holds [b7,b8] in Hom([b3,b5],[b4,b6]);
:: ISOCAT_2:th 17
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of [:b1,b2:],b3
for b5, b6 being Element of the Vertices of b1
st Hom(b5,b6) <> {}
for b7 being Morphism of b5,b6 holds
b4 ?- b5 is_naturally_transformable_to b4 ?- b6 &
(curry(b4,b7)) * the Id of b2 is natural_transformation of b4 ?- b5,b4 ?- b6;
:: ISOCAT_2:funcnot 4 => ISOCAT_2:func 4
definition
let a1, a2, a3 be non void Category-like CatStr;
let a4 be Functor of [:a1,a2:],a3;
let a5 be Element of the Edges of a1;
func A4 ?- A5 -> natural_transformation of a4 ?- dom a5,a4 ?- cod a5 equals
(curry(a4,a5)) * the Id of a2;
end;
:: ISOCAT_2:def 3
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of [:b1,b2:],b3
for b5 being Element of the Edges of b1 holds
b4 ?- b5 = (curry(b4,b5)) * the Id of b2;
:: ISOCAT_2:th 18
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of [:b1,b2:],b3
for b5 being Element of the Edges of b1 holds
b4 ?- dom b5 is_naturally_transformable_to b4 ?- cod b5;
:: ISOCAT_2:th 19
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of [:b1,b2:],b3
for b5 being Element of the Edges of b1
for b6 being Element of the Vertices of b2 holds
(b4 ?- b5) . b6 = b4 .(b5,id b6);
:: ISOCAT_2:th 20
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of [:b1,b2:],b3
for b5 being Element of the Vertices of b1 holds
id (b4 ?- b5) = b4 ?- id b5;
:: ISOCAT_2:th 21
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of [:b1,b2:],b3
for b5, b6 being Element of the Edges of b1
st dom b5 = cod b6
for b7 being natural_transformation of b4 ?- dom b6,b4 ?- dom b5
st b7 = b4 ?- b6
holds b4 ?- (b5 * b6) = (b4 ?- b5) `*` b7;
:: ISOCAT_2:funcnot 5 => ISOCAT_2:func 5
definition
let a1, a2, a3 be non void Category-like CatStr;
let a4 be Functor of [:a1,a2:],a3;
func export A4 -> Functor of a1,Functors(a2,a3) means
for b1 being Element of the Edges of a1 holds
it . b1 = [[a4 ?- dom b1,a4 ?- cod b1],a4 ?- b1];
end;
:: ISOCAT_2:def 4
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of [:b1,b2:],b3
for b5 being Functor of b1,Functors(b2,b3) holds
b5 = export b4
iff
for b6 being Element of the Edges of b1 holds
b5 . b6 = [[b4 ?- dom b6,b4 ?- cod b6],b4 ?- b6];
:: ISOCAT_2:th 24
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of [:b1,b2:],b3
for b5 being Element of the Vertices of b1 holds
(export b4) . b5 = b4 ?- b5;
:: ISOCAT_2:th 25
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of [:b1,b2:],b3
for b5 being Element of the Vertices of b1 holds
(export b4) . b5 is Functor of b2,b3;
:: ISOCAT_2:th 26
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of [:b1,b2:],b3
st export b4 = export b5
holds b4 = b5;
:: ISOCAT_2:th 27
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of [:b1,b2:],b3
st b4 is_naturally_transformable_to b5
for b6 being natural_transformation of b4,b5 holds
export b4 is_naturally_transformable_to export b5 &
(ex b7 being natural_transformation of export b4,export b5 st
for b8 being Function-like quasi_total Relation of [:the Vertices of b1,the Vertices of b2:],the Edges of b3
st b6 = b8
for b9 being Element of the Vertices of b1 holds
b7 . b9 = [[(export b4) . b9,(export b5) . b9],(curry b8) . b9]);
:: ISOCAT_2:funcnot 6 => ISOCAT_2:func 6
definition
let a1, a2, a3 be non void Category-like CatStr;
let a4, a5 be Functor of [:a1,a2:],a3;
let a6 be natural_transformation of a4,a5;
assume a4 is_naturally_transformable_to a5;
func export A6 -> natural_transformation of export a4,export a5 means
for b1 being Function-like quasi_total Relation of [:the Vertices of a1,the Vertices of a2:],the Edges of a3
st a6 = b1
for b2 being Element of the Vertices of a1 holds
it . b2 = [[(export a4) . b2,(export a5) . b2],(curry b1) . b2];
end;
:: ISOCAT_2:def 5
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of [:b1,b2:],b3
st b4 is_naturally_transformable_to b5
for b6 being natural_transformation of b4,b5
for b7 being natural_transformation of export b4,export b5 holds
b7 = export b6
iff
for b8 being Function-like quasi_total Relation of [:the Vertices of b1,the Vertices of b2:],the Edges of b3
st b6 = b8
for b9 being Element of the Vertices of b1 holds
b7 . b9 = [[(export b4) . b9,(export b5) . b9],(curry b8) . b9];
:: ISOCAT_2:th 28
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of [:b1,b2:],b3 holds
id export b4 = export id b4;
:: ISOCAT_2:th 29
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5, b6 being Functor of [:b1,b2:],b3
st b4 is_naturally_transformable_to b5 & b5 is_naturally_transformable_to b6
for b7 being natural_transformation of b4,b5
for b8 being natural_transformation of b5,b6 holds
export (b8 `*` b7) = (export b8) `*` export b7;
:: ISOCAT_2:th 30
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of [:b1,b2:],b3
st b4 is_naturally_transformable_to b5
for b6, b7 being natural_transformation of b4,b5
st export b6 = export b7
holds b6 = b7;
:: ISOCAT_2:th 31
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of b1,Functors(b2,b3) holds
ex b5 being Functor of [:b1,b2:],b3 st
b4 = export b5;
:: ISOCAT_2:th 32
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of [:b1,b2:],b3
st export b4 is_naturally_transformable_to export b5
for b6 being natural_transformation of export b4,export b5 holds
b4 is_naturally_transformable_to b5 &
(ex b7 being natural_transformation of b4,b5 st
b6 = export b7);
:: ISOCAT_2:funcnot 7 => ISOCAT_2:func 7
definition
let a1, a2, a3 be non void Category-like CatStr;
func export(A1,A2,A3) -> Functor of Functors([:a1,a2:],a3),Functors(a1,Functors(a2,a3)) means
for b1, b2 being Functor of [:a1,a2:],a3
st b1 is_naturally_transformable_to b2
for b3 being natural_transformation of b1,b2 holds
it . [[b1,b2],b3] = [[export b1,export b2],export b3];
end;
:: ISOCAT_2:def 6
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of Functors([:b1,b2:],b3),Functors(b1,Functors(b2,b3)) holds
b4 = export(b1,b2,b3)
iff
for b5, b6 being Functor of [:b1,b2:],b3
st b5 is_naturally_transformable_to b6
for b7 being natural_transformation of b5,b6 holds
b4 . [[b5,b6],b7] = [[export b5,export b6],export b7];
:: ISOCAT_2:th 33
theorem
for b1, b2, b3 being non void Category-like CatStr holds
export(b1,b2,b3) is isomorphic(Functors([:b1,b2:],b3), Functors(b1,Functors(b2,b3)));
:: ISOCAT_2:th 34
theorem
for b1, b2, b3 being non void Category-like CatStr holds
Functors([:b1,b2:],b3),Functors(b1,Functors(b2,b3)) are_isomorphic;
:: ISOCAT_2:th 35
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
for b6 being Functor of b2,b3
st b4 is_naturally_transformable_to b5
for b7 being natural_transformation of b4,b5 holds
b6 * b7 = b7 * b6;
:: ISOCAT_2:funcnot 8 => ISOCAT_2:func 8
definition
let a1, a2 be non void Category-like CatStr;
redefine func pr1(a1,a2) -> Functor of [:a1,a2:],a1;
end;
:: ISOCAT_2:funcnot 9 => ISOCAT_2:func 9
definition
let a1, a2 be non void Category-like CatStr;
redefine func pr2(a1,a2) -> Functor of [:a1,a2:],a2;
end;
:: ISOCAT_2:funcnot 10 => ISOCAT_2:func 10
definition
let a1, a2, a3 be non void Category-like CatStr;
let a4 be Functor of a1,a2;
let a5 be Functor of a1,a3;
redefine func <:a4, a5:> -> Functor of a1,[:a2,a3:];
end;
:: ISOCAT_2:funcnot 11 => ISOCAT_2:func 11
definition
let a1, a2, a3 be non void Category-like CatStr;
let a4 be Functor of a1,[:a2,a3:];
func Pr1 A4 -> Functor of a1,a2 equals
(pr1(a2,a3)) * a4;
end;
:: ISOCAT_2:def 7
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of b1,[:b2,b3:] holds
Pr1 b4 = (pr1(b2,b3)) * b4;
:: ISOCAT_2:funcnot 12 => ISOCAT_2:func 12
definition
let a1, a2, a3 be non void Category-like CatStr;
let a4 be Functor of a1,[:a2,a3:];
func Pr2 A4 -> Functor of a1,a3 equals
(pr2(a2,a3)) * a4;
end;
:: ISOCAT_2:def 8
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of b1,[:b2,b3:] holds
Pr2 b4 = (pr2(b2,b3)) * b4;
:: ISOCAT_2:th 36
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of b1,b2
for b5 being Functor of b1,b3 holds
Pr1 <:b4,b5:> = b4 & Pr2 <:b4,b5:> = b5;
:: ISOCAT_2:th 37
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,[:b2,b3:]
st Pr1 b4 = Pr1 b5 & Pr2 b4 = Pr2 b5
holds b4 = b5;
:: ISOCAT_2:funcnot 13 => ISOCAT_2:func 13
definition
let a1, a2, a3 be non void Category-like CatStr;
let a4, a5 be Functor of a1,[:a2,a3:];
let a6 be natural_transformation of a4,a5;
func Pr1 A6 -> natural_transformation of Pr1 a4,Pr1 a5 equals
(pr1(a2,a3)) * a6;
end;
:: ISOCAT_2:def 9
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,[:b2,b3:]
for b6 being natural_transformation of b4,b5 holds
Pr1 b6 = (pr1(b2,b3)) * b6;
:: ISOCAT_2:funcnot 14 => ISOCAT_2:func 14
definition
let a1, a2, a3 be non void Category-like CatStr;
let a4, a5 be Functor of a1,[:a2,a3:];
let a6 be natural_transformation of a4,a5;
func Pr2 A6 -> natural_transformation of Pr2 a4,Pr2 a5 equals
(pr2(a2,a3)) * a6;
end;
:: ISOCAT_2:def 10
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,[:b2,b3:]
for b6 being natural_transformation of b4,b5 holds
Pr2 b6 = (pr2(b2,b3)) * b6;
:: ISOCAT_2:th 39
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5, b6, b7 being Functor of b1,[:b2,b3:]
st b4 is_naturally_transformable_to b5 & b6 is_naturally_transformable_to b7
for b8 being natural_transformation of b4,b5
for b9 being natural_transformation of b6,b7
st Pr1 b8 = Pr1 b9 & Pr2 b8 = Pr2 b9
holds b8 = b9;
:: ISOCAT_2:th 42
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of b1,b2
for b5 being Functor of b1,b3
for b6, b7 being Element of the Vertices of b1
st Hom(b6,b7) <> {}
for b8 being Morphism of b6,b7 holds
<:b4,b5:> . b8 = [b4 . b8,b5 . b8];
:: ISOCAT_2:th 43
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of b1,b2
for b5 being Functor of b1,b3
for b6 being Element of the Vertices of b1 holds
<:b4,b5:> . b6 = [b4 . b6,b5 . b6];
:: ISOCAT_2:th 44
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
for b6, b7 being Functor of b1,b3
st b4 is_transformable_to b5 & b6 is_transformable_to b7
holds <:b4,b6:> is_transformable_to <:b5,b7:>;
:: ISOCAT_2:funcnot 15 => ISOCAT_2:func 15
definition
let a1, a2, a3 be non void Category-like CatStr;
let a4, a5 be Functor of a1,a2;
let a6, a7 be Functor of a1,a3;
let a8 be transformation of a4,a5;
let a9 be transformation of a6,a7;
assume a4 is_transformable_to a5 & a6 is_transformable_to a7;
func <:A8,A9:> -> transformation of <:a4,a6:>,<:a5,a7:> equals
<:a8,a9:>;
end;
:: ISOCAT_2:def 11
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
for b6, b7 being Functor of b1,b3
st b4 is_transformable_to b5 & b6 is_transformable_to b7
for b8 being transformation of b4,b5
for b9 being transformation of b6,b7 holds
<:b8,b9:> = <:b8,b9:>;
:: ISOCAT_2:th 45
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
for b6, b7 being Functor of b1,b3
st b4 is_transformable_to b5 & b6 is_transformable_to b7
for b8 being transformation of b4,b5
for b9 being transformation of b6,b7
for b10 being Element of the Vertices of b1 holds
<:b8,b9:> . b10 = [b8 . b10,b9 . b10];
:: ISOCAT_2:th 46
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
for b6, b7 being Functor of b1,b3
st b4 is_naturally_transformable_to b5 & b6 is_naturally_transformable_to b7
holds <:b4,b6:> is_naturally_transformable_to <:b5,b7:>;
:: ISOCAT_2:funcnot 16 => ISOCAT_2:func 16
definition
let a1, a2, a3 be non void Category-like CatStr;
let a4, a5 be Functor of a1,a2;
let a6, a7 be Functor of a1,a3;
let a8 be natural_transformation of a4,a5;
let a9 be natural_transformation of a6,a7;
assume a4 is_naturally_transformable_to a5 & a6 is_naturally_transformable_to a7;
func <:A8,A9:> -> natural_transformation of <:a4,a6:>,<:a5,a7:> equals
<:a8,a9:>;
end;
:: ISOCAT_2:def 12
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
for b6, b7 being Functor of b1,b3
st b4 is_naturally_transformable_to b5 & b6 is_naturally_transformable_to b7
for b8 being natural_transformation of b4,b5
for b9 being natural_transformation of b6,b7 holds
<:b8,b9:> = <:b8,b9:>;
:: ISOCAT_2:th 47
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
for b6, b7 being Functor of b1,b3
st b4 is_naturally_transformable_to b5 & b6 is_naturally_transformable_to b7
for b8 being natural_transformation of b4,b5
for b9 being natural_transformation of b6,b7 holds
Pr1 <:b8,b9:> = b8 & Pr2 <:b8,b9:> = b9;
:: ISOCAT_2:funcnot 17 => ISOCAT_2:func 17
definition
let a1, a2, a3 be non void Category-like CatStr;
func distribute(A1,A2,A3) -> Functor of Functors(a1,[:a2,a3:]),[:Functors(a1,a2),Functors(a1,a3):] means
for b1, b2 being Functor of a1,[:a2,a3:]
st b1 is_naturally_transformable_to b2
for b3 being natural_transformation of b1,b2 holds
it . [[b1,b2],b3] = [[[Pr1 b1,Pr1 b2],Pr1 b3],[[Pr2 b1,Pr2 b2],Pr2 b3]];
end;
:: ISOCAT_2:def 13
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of Functors(b1,[:b2,b3:]),[:Functors(b1,b2),Functors(b1,b3):] holds
b4 = distribute(b1,b2,b3)
iff
for b5, b6 being Functor of b1,[:b2,b3:]
st b5 is_naturally_transformable_to b6
for b7 being natural_transformation of b5,b6 holds
b4 . [[b5,b6],b7] = [[[Pr1 b5,Pr1 b6],Pr1 b7],[[Pr2 b5,Pr2 b6],Pr2 b7]];
:: ISOCAT_2:th 48
theorem
for b1, b2, b3 being non void Category-like CatStr holds
distribute(b1,b2,b3) is isomorphic(Functors(b1,[:b2,b3:]), [:Functors(b1,b2),Functors(b1,b3):]);
:: ISOCAT_2:th 49
theorem
for b1, b2, b3 being non void Category-like CatStr holds
Functors(b1,[:b2,b3:]),[:Functors(b1,b2),Functors(b1,b3):] are_isomorphic;