Article FUNCTOR2, MML version 4.99.1005
:: FUNCTOR2:condreg 1
registration
let a1 be non empty transitive with_units AltCatStr;
let a2 be non empty with_units AltCatStr;
cluster -> feasible id-preserving (Functor of a1,a2);
end;
:: FUNCTOR2:condreg 2
registration
let a1 be non empty transitive with_units AltCatStr;
let a2 be non empty with_units AltCatStr;
cluster covariant -> Covariant comp-preserving (Functor of a1,a2);
end;
:: FUNCTOR2:condreg 3
registration
let a1 be non empty transitive with_units AltCatStr;
let a2 be non empty with_units AltCatStr;
cluster Covariant comp-preserving -> covariant (Functor of a1,a2);
end;
:: FUNCTOR2:condreg 4
registration
let a1 be non empty transitive with_units AltCatStr;
let a2 be non empty with_units AltCatStr;
cluster contravariant -> Contravariant comp-reversing (Functor of a1,a2);
end;
:: FUNCTOR2:condreg 5
registration
let a1 be non empty transitive with_units AltCatStr;
let a2 be non empty with_units AltCatStr;
cluster Contravariant comp-reversing -> contravariant (Functor of a1,a2);
end;
:: FUNCTOR2:th 2
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being covariant Functor of b1,b2
for b4 being Element of the carrier of b1 holds
b3 . idm b4 = idm (b3 . b4);
:: FUNCTOR2:prednot 1 => FUNCTOR2:pred 1
definition
let a1, a2 be non empty transitive with_units AltCatStr;
let a3, a4 be covariant Functor of a1,a2;
pred A3 is_transformable_to A4 means
for b1 being Element of the carrier of a1 holds
<^a3 . b1,a4 . b1^> <> {};
reflexivity;
:: for a1, a2 being non empty transitive with_units AltCatStr
:: for a3 being covariant Functor of a1,a2 holds
:: a3 is_transformable_to a3;
end;
:: FUNCTOR2:dfs 1
definiens
let a1, a2 be non empty transitive with_units AltCatStr;
let a3, a4 be covariant Functor of a1,a2;
To prove
a3 is_transformable_to a4
it is sufficient to prove
thus for b1 being Element of the carrier of a1 holds
<^a3 . b1,a4 . b1^> <> {};
:: FUNCTOR2:def 1
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3, b4 being covariant Functor of b1,b2 holds
b3 is_transformable_to b4
iff
for b5 being Element of the carrier of b1 holds
<^b3 . b5,b4 . b5^> <> {};
:: FUNCTOR2:th 4
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3, b4, b5 being covariant Functor of b1,b2
st b3 is_transformable_to b4 & b4 is_transformable_to b5
holds b3 is_transformable_to b5;
:: FUNCTOR2:modenot 1 => FUNCTOR2:mode 1
definition
let a1, a2 be non empty transitive with_units AltCatStr;
let a3, a4 be covariant Functor of a1,a2;
assume a3 is_transformable_to a4;
mode transformation of A3,A4 -> ManySortedSet of the carrier of a1 means
for b1 being Element of the carrier of a1 holds
it . b1 is Element of <^a3 . b1,a4 . b1^>;
end;
:: FUNCTOR2:dfs 2
definiens
let a1, a2 be non empty transitive with_units AltCatStr;
let a3, a4 be covariant Functor of a1,a2;
let a5 be ManySortedSet of the carrier of a1;
To prove
a5 is transformation of a3,a4
it is sufficient to prove
thus a3 is_transformable_to a4;
thus for b1 being Element of the carrier of a1 holds
a5 . b1 is Element of <^a3 . b1,a4 . b1^>;
:: FUNCTOR2:def 2
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3, b4 being covariant Functor of b1,b2
st b3 is_transformable_to b4
for b5 being ManySortedSet of the carrier of b1 holds
b5 is transformation of b3,b4
iff
for b6 being Element of the carrier of b1 holds
b5 . b6 is Element of <^b3 . b6,b4 . b6^>;
:: FUNCTOR2:funcnot 1 => FUNCTOR2:func 1
definition
let a1, a2 be non empty transitive with_units AltCatStr;
let a3 be covariant Functor of a1,a2;
func idt A3 -> transformation of a3,a3 means
for b1 being Element of the carrier of a1 holds
it . b1 = idm (a3 . b1);
end;
:: FUNCTOR2:def 3
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being covariant Functor of b1,b2
for b4 being transformation of b3,b3 holds
b4 = idt b3
iff
for b5 being Element of the carrier of b1 holds
b4 . b5 = idm (b3 . b5);
:: FUNCTOR2:funcnot 2 => FUNCTOR2:func 2
definition
let a1, a2 be non empty transitive with_units AltCatStr;
let a3, a4 be covariant Functor of a1,a2;
let a5 be transformation of a3,a4;
let a6 be Element of the carrier of a1;
assume a3 is_transformable_to a4;
func A5 ! A6 -> Element of <^a3 . a6,a4 . a6^> means
it = a5 . a6;
end;
:: FUNCTOR2:def 4
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3, b4 being covariant Functor of b1,b2
st b3 is_transformable_to b4
for b5 being transformation of b3,b4
for b6 being Element of the carrier of b1
for b7 being Element of <^b3 . b6,b4 . b6^> holds
b7 = b5 ! b6
iff
b7 = b5 . b6;
:: FUNCTOR2:funcnot 3 => FUNCTOR2:func 3
definition
let a1, a2 be non empty transitive with_units AltCatStr;
let a3, a4, a5 be covariant Functor of a1,a2;
let a6 be transformation of a3,a4;
let a7 be transformation of a4,a5;
assume a3 is_transformable_to a4 & a4 is_transformable_to a5;
func A7 `*` A6 -> transformation of a3,a5 means
for b1 being Element of the carrier of a1 holds
it ! b1 = (a7 ! b1) * (a6 ! b1);
end;
:: FUNCTOR2:def 5
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3, b4, b5 being covariant Functor of b1,b2
st b3 is_transformable_to b4 & b4 is_transformable_to b5
for b6 being transformation of b3,b4
for b7 being transformation of b4,b5
for b8 being transformation of b3,b5 holds
b8 = b7 `*` b6
iff
for b9 being Element of the carrier of b1 holds
b8 ! b9 = (b7 ! b9) * (b6 ! b9);
:: FUNCTOR2:th 5
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3, b4 being covariant Functor of b1,b2
st b3 is_transformable_to b4
for b5, b6 being transformation of b3,b4
st for b7 being Element of the carrier of b1 holds
b5 ! b7 = b6 ! b7
holds b5 = b6;
:: FUNCTOR2:th 6
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being covariant Functor of b1,b2
for b4 being Element of the carrier of b1 holds
(idt b3) ! b4 = idm (b3 . b4);
:: FUNCTOR2:th 7
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3, b4 being covariant Functor of b1,b2
st b3 is_transformable_to b4
for b5 being transformation of b3,b4 holds
(idt b4) `*` b5 = b5 & b5 `*` idt b3 = b5;
:: FUNCTOR2:th 8
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3, b4, b5, b6 being covariant Functor of b1,b2
st b3 is_transformable_to b4 & b4 is_transformable_to b5 & b5 is_transformable_to b6
for b7 being transformation of b3,b4
for b8 being transformation of b4,b5
for b9 being transformation of b5,b6 holds
(b9 `*` b8) `*` b7 = b9 `*` (b8 `*` b7);
:: FUNCTOR2:prednot 2 => FUNCTOR2:pred 2
definition
let a1, a2 be non empty transitive with_units AltCatStr;
let a3, a4 be covariant Functor of a1,a2;
pred A3 is_naturally_transformable_to A4 means
a3 is_transformable_to a4 &
(ex b1 being transformation of a3,a4 st
for b2, b3 being Element of the carrier of a1
st <^b2,b3^> <> {}
for b4 being Element of <^b2,b3^> holds
(b1 ! b3) * (a3 . b4) = (a4 . b4) * (b1 ! b2));
end;
:: FUNCTOR2:dfs 6
definiens
let a1, a2 be non empty transitive with_units AltCatStr;
let a3, a4 be covariant Functor of a1,a2;
To prove
a3 is_naturally_transformable_to a4
it is sufficient to prove
thus a3 is_transformable_to a4 &
(ex b1 being transformation of a3,a4 st
for b2, b3 being Element of the carrier of a1
st <^b2,b3^> <> {}
for b4 being Element of <^b2,b3^> holds
(b1 ! b3) * (a3 . b4) = (a4 . b4) * (b1 ! b2));
:: FUNCTOR2:def 6
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3, b4 being covariant Functor of b1,b2 holds
b3 is_naturally_transformable_to b4
iff
b3 is_transformable_to b4 &
(ex b5 being transformation of b3,b4 st
for b6, b7 being Element of the carrier of b1
st <^b6,b7^> <> {}
for b8 being Element of <^b6,b7^> holds
(b5 ! b7) * (b3 . b8) = (b4 . b8) * (b5 ! b6));
:: FUNCTOR2:th 9
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being covariant Functor of b1,b2 holds
b3 is_naturally_transformable_to b3;
:: FUNCTOR2:th 10
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3, b4, b5 being covariant Functor of b1,b2
st b3 is_naturally_transformable_to b4 & b4 is_naturally_transformable_to b5
holds b3 is_naturally_transformable_to b5;
:: FUNCTOR2:modenot 2 => FUNCTOR2:mode 2
definition
let a1, a2 be non empty transitive with_units AltCatStr;
let a3, a4 be covariant Functor of a1,a2;
assume a3 is_naturally_transformable_to a4;
mode natural_transformation of A3,A4 -> transformation of a3,a4 means
for b1, b2 being Element of the carrier of a1
st <^b1,b2^> <> {}
for b3 being Element of <^b1,b2^> holds
(it ! b2) * (a3 . b3) = (a4 . b3) * (it ! b1);
end;
:: FUNCTOR2:dfs 7
definiens
let a1, a2 be non empty transitive with_units AltCatStr;
let a3, a4 be covariant Functor of a1,a2;
let a5 be transformation of a3,a4;
To prove
a5 is natural_transformation of a3,a4
it is sufficient to prove
thus a3 is_naturally_transformable_to a4;
thus for b1, b2 being Element of the carrier of a1
st <^b1,b2^> <> {}
for b3 being Element of <^b1,b2^> holds
(a5 ! b2) * (a3 . b3) = (a4 . b3) * (a5 ! b1);
:: FUNCTOR2:def 7
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3, b4 being covariant Functor of b1,b2
st b3 is_naturally_transformable_to b4
for b5 being transformation of b3,b4 holds
b5 is natural_transformation of b3,b4
iff
for b6, b7 being Element of the carrier of b1
st <^b6,b7^> <> {}
for b8 being Element of <^b6,b7^> holds
(b5 ! b7) * (b3 . b8) = (b4 . b8) * (b5 ! b6);
:: FUNCTOR2:funcnot 4 => FUNCTOR2:func 4
definition
let a1, a2 be non empty transitive with_units AltCatStr;
let a3 be covariant Functor of a1,a2;
redefine func idt a3 -> natural_transformation of a3,a3;
end;
:: FUNCTOR2:funcnot 5 => FUNCTOR2:func 5
definition
let a1, a2 be non empty transitive associative with_units AltCatStr;
let a3, a4, a5 be covariant Functor of a1,a2;
let a6 be natural_transformation of a3,a4;
let a7 be natural_transformation of a4,a5;
assume a3 is_naturally_transformable_to a4 & a4 is_naturally_transformable_to a5;
func A7 `*` A6 -> natural_transformation of a3,a5 means
it = a7 `*` a6;
end;
:: FUNCTOR2:def 8
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3, b4, b5 being covariant Functor of b1,b2
st b3 is_naturally_transformable_to b4 & b4 is_naturally_transformable_to b5
for b6 being natural_transformation of b3,b4
for b7 being natural_transformation of b4,b5
for b8 being natural_transformation of b3,b5 holds
b8 = b7 `*` b6
iff
b8 = b7 `*` b6;
:: FUNCTOR2:th 11
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3, b4 being covariant Functor of b1,b2
st b3 is_naturally_transformable_to b4
for b5 being natural_transformation of b3,b4 holds
(idt b4) `*` b5 = b5 & b5 `*` idt b3 = b5;
:: FUNCTOR2:th 12
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3, b4, b5 being covariant Functor of b1,b2
st b3 is_naturally_transformable_to b4 & b4 is_naturally_transformable_to b5
for b6 being natural_transformation of b3,b4
for b7 being natural_transformation of b4,b5
for b8 being Element of the carrier of b1 holds
(b7 `*` b6) ! b8 = (b7 ! b8) * (b6 ! b8);
:: FUNCTOR2:th 13
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3, b4, b5, b6 being covariant Functor of b1,b2
for b7 being natural_transformation of b3,b4
for b8 being natural_transformation of b4,b5
st b3 is_naturally_transformable_to b4 & b4 is_naturally_transformable_to b5 & b5 is_naturally_transformable_to b6
for b9 being natural_transformation of b5,b6 holds
(b9 `*` b8) `*` b7 = b9 `*` (b8 `*` b7);
:: FUNCTOR2:funcnot 6 => FUNCTOR2:func 6
definition
let a1 be set;
let a2, a3 be ManySortedSet of a1;
func Funcs(A2,A3) -> set means
for b1 being set holds
b1 in it
iff
b1 is ManySortedFunction of a2,a3
if for b1 being set
st b1 in a1 & a3 . b1 = {}
holds a2 . b1 = {}
otherwise it = {};
end;
:: FUNCTOR2:def 9
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
for b4 being set holds
(for b5 being set
st b5 in b1 & b3 . b5 = {}
holds b2 . b5 = {} implies (b4 = Funcs(b2,b3)
iff
for b5 being set holds
b5 in b4
iff
b5 is ManySortedFunction of b2,b3)) &
(for b5 being set
st b5 in b1 & b3 . b5 = {}
holds b2 . b5 = {} or (b4 = Funcs(b2,b3)
iff
b4 = {}));
:: FUNCTOR2:funcnot 7 => FUNCTOR2:func 7
definition
let a1, a2 be non empty transitive with_units AltCatStr;
func Funct(A1,A2) -> set means
for b1 being set holds
b1 in it
iff
b1 is strict covariant Functor of a1,a2;
end;
:: FUNCTOR2:def 10
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being set holds
b3 = Funct(b1,b2)
iff
for b4 being set holds
b4 in b3
iff
b4 is strict covariant Functor of b1,b2;
:: FUNCTOR2:funcnot 8 => FUNCTOR2:func 8
definition
let a1, a2 be non empty transitive associative with_units AltCatStr;
func Functors(A1,A2) -> non empty transitive strict AltCatStr means
the carrier of it = Funct(a1,a2) &
(for b1, b2 being strict covariant Functor of a1,a2
for b3 being set holds
b3 in (the Arrows of it) .(b1,b2)
iff
b1 is_naturally_transformable_to b2 & b3 is natural_transformation of b1,b2) &
(for b1, b2, b3 being strict covariant Functor of a1,a2
st b1 is_naturally_transformable_to b2 & b2 is_naturally_transformable_to b3
for b4 being natural_transformation of b1,b2
for b5 being natural_transformation of b2,b3 holds
ex b6 being Relation-like Function-like set st
b6 = (the Comp of it) .(b1,b2,b3) & b6 .(b5,b4) = b5 `*` b4);
end;
:: FUNCTOR2:def 11
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being non empty transitive strict AltCatStr holds
b3 = Functors(b1,b2)
iff
the carrier of b3 = Funct(b1,b2) &
(for b4, b5 being strict covariant Functor of b1,b2
for b6 being set holds
b6 in (the Arrows of b3) .(b4,b5)
iff
b4 is_naturally_transformable_to b5 & b6 is natural_transformation of b4,b5) &
(for b4, b5, b6 being strict covariant Functor of b1,b2
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
ex b9 being Relation-like Function-like set st
b9 = (the Comp of b3) .(b4,b5,b6) & b9 .(b8,b7) = b8 `*` b7);