Article ALTCAT_2, MML version 4.99.1005
:: ALTCAT_2:th 1
theorem
for b1, b2, b3, b4 being set holds
[:b1 --> b3,b2 --> b4:] = [:b1,b2:] --> [b3,b4];
:: ALTCAT_2:funcreg 1
registration
let a1 be set;
cluster [0] a1 -> Function-yielding;
end;
:: ALTCAT_2:th 2
theorem
for b1, b2 being Relation-like Function-like set holds
~ (b1 * b2) = (~ b1) * b2;
:: ALTCAT_2:th 3
theorem
for b1, b2, b3 being Relation-like Function-like set holds
~ ([:b2,b3:] * b1) = [:b3,b2:] * ~ b1;
:: ALTCAT_2:funcreg 2
registration
let a1 be Relation-like Function-like Function-yielding set;
cluster ~ a1 -> Relation-like Function-like Function-yielding;
end;
:: ALTCAT_2:th 4
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
st b2 is_transformable_to b3
for b5 being ManySortedFunction of b2,b3
for b6 being ManySortedFunction of b3,b4 holds
b6 ** b5 is ManySortedFunction of b2,b4;
:: ALTCAT_2:funcnot 1 => ALTCAT_2:func 1
definition
let a1 be set;
let a2 be ManySortedSet of [:a1,a1:];
redefine func ~ a2 -> ManySortedSet of [:a1,a1:];
end;
:: ALTCAT_2:th 5
theorem
for b1 being set
for b2 being non empty set
for b3 being Function-like quasi_total Relation of b1,b2
for b4, b5 being ManySortedSet of b2
for b6 being ManySortedFunction of b4,b5 holds
b6 * b3 is ManySortedFunction of b4 * b3,b5 * b3;
:: ALTCAT_2:funcnot 2 => ALTCAT_2:func 2
definition
let a1 be set;
let a2, a3 be ManySortedSet of [:a1,a1:];
let a4 be ManySortedFunction of a2,a3;
redefine func ~ a4 -> ManySortedFunction of ~ a2,~ a3;
end;
:: ALTCAT_2:th 6
theorem
for b1, b2 being non empty set
for b3 being ManySortedSet of [:b1,b2:]
for b4 being Element of b1
for b5 being Element of b2 holds
(~ b3) .(b5,b4) = b3 .(b4,b5);
:: ALTCAT_2:funcnot 3 => ALTCAT_2:func 3
definition
let a1 be set;
let a2, a3 be Function-yielding ManySortedSet of a1;
redefine func a3 ** a2 -> Function-yielding ManySortedSet of a1;
end;
:: ALTCAT_2:prednot 1 => ALTCAT_2:pred 1
definition
let a1, a2 be Relation-like Function-like set;
pred A1 cc= A2 means
proj1 a1 c= proj1 a2 &
(for b1 being set
st b1 in proj1 a1
holds a1 . b1 c= a2 . b1);
reflexivity;
:: for a1 being Relation-like Function-like set holds
:: a1 cc= a1;
end;
:: ALTCAT_2:dfs 1
definiens
let a1, a2 be Relation-like Function-like set;
To prove
a1 cc= a2
it is sufficient to prove
thus proj1 a1 c= proj1 a2 &
(for b1 being set
st b1 in proj1 a1
holds a1 . b1 c= a2 . b1);
:: ALTCAT_2:def 1
theorem
for b1, b2 being Relation-like Function-like set holds
b1 cc= b2
iff
proj1 b1 c= proj1 b2 &
(for b3 being set
st b3 in proj1 b1
holds b1 . b3 c= b2 . b3);
:: ALTCAT_2:prednot 2 => ALTCAT_2:pred 2
definition
let a1, a2 be set;
let a3 be ManySortedSet of a1;
let a4 be ManySortedSet of a2;
redefine pred A3 cc= A4 means
a1 c= a2 &
(for b1 being set
st b1 in a1
holds a3 . b1 c= a4 . b1);
reflexivity;
:: for a1, a2 being set
:: for a3 being ManySortedSet of a1 holds
:: a3 cc= a3;
end;
:: ALTCAT_2:dfs 2
definiens
let a1, a2 be set;
let a3 be ManySortedSet of a1;
let a4 be ManySortedSet of a2;
To prove
a3 cc= a4
it is sufficient to prove
thus a1 c= a2 &
(for b1 being set
st b1 in a1
holds a3 . b1 c= a4 . b1);
:: ALTCAT_2:def 2
theorem
for b1, b2 being set
for b3 being ManySortedSet of b1
for b4 being ManySortedSet of b2 holds
b3 cc= b4
iff
b1 c= b2 &
(for b5 being set
st b5 in b1
holds b3 . b5 c= b4 . b5);
:: ALTCAT_2:th 8
theorem
for b1, b2 being set
for b3 being ManySortedSet of b1
for b4 being ManySortedSet of b2
st b3 cc= b4 & b4 cc= b3
holds b3 = b4;
:: ALTCAT_2:th 9
theorem
for b1, b2, b3 being set
for b4 being ManySortedSet of b1
for b5 being ManySortedSet of b2
for b6 being ManySortedSet of b3
st b4 cc= b5 & b5 cc= b6
holds b4 cc= b6;
:: ALTCAT_2:th 10
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b2 cc= b3
iff
b2 c= b3;
:: ALTCAT_2:sch 1
scheme ALTCAT_2:sch 1
{F1 -> non empty set,
F2 -> set}:
{[b1,F2(b1)] where b1 is Element of F1(): P1[b1]} is Relation-like Function-like set
:: ALTCAT_2:sch 2
scheme ALTCAT_2:sch 2
{F1 -> non empty set,
F2 -> Relation-like Function-like set,
F3 -> set}:
proj1 F2() = {b1 where b1 is Element of F1(): P1[b1]}
provided
F2() = {[b1,F3(b1)] where b1 is Element of F1(): P1[b1]};
:: ALTCAT_2:sch 3
scheme ALTCAT_2:sch 3
{F1 -> non empty set,
F2 -> Relation-like Function-like set,
F3 -> Element of F1(),
F4 -> set}:
F2() . F3() = F4(F3())
provided
F2() = {[b1,F4(b1)] where b1 is Element of F1(): P1[b1]}
and
P1[F3()];
:: ALTCAT_2:th 11
theorem
for b1 being non void Category-like CatStr
for b2, b3, b4 being Element of the Vertices of b1 holds
[:Hom(b3,b4),Hom(b2,b3):] c= proj1 the Comp of b1;
:: ALTCAT_2:th 12
theorem
for b1 being non void Category-like CatStr
for b2, b3, b4 being Element of the Vertices of b1 holds
(the Comp of b1) .: [:Hom(b3,b4),Hom(b2,b3):] c= Hom(b2,b4);
:: ALTCAT_2:funcnot 4 => ALTCAT_2:func 4
definition
let a1 be non void CatStr;
func the_hom_sets_of A1 -> ManySortedSet of [:the Vertices of a1,the Vertices of a1:] means
for b1, b2 being Element of the Vertices of a1 holds
it .(b1,b2) = Hom(b1,b2);
end;
:: ALTCAT_2:def 3
theorem
for b1 being non void CatStr
for b2 being ManySortedSet of [:the Vertices of b1,the Vertices of b1:] holds
b2 = the_hom_sets_of b1
iff
for b3, b4 being Element of the Vertices of b1 holds
b2 .(b3,b4) = Hom(b3,b4);
:: ALTCAT_2:th 13
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1 holds
id b2 in (the_hom_sets_of b1) .(b2,b2);
:: ALTCAT_2:funcnot 5 => ALTCAT_2:func 5
definition
let a1 be non void Category-like CatStr;
func the_comps_of A1 -> ManySortedFunction of {|the_hom_sets_of a1,the_hom_sets_of a1|},{|the_hom_sets_of a1|} means
for b1, b2, b3 being Element of the Vertices of a1 holds
it .(b1,b2,b3) = (the Comp of a1) | [:(the_hom_sets_of a1) .(b2,b3),(the_hom_sets_of a1) .(b1,b2):];
end;
:: ALTCAT_2:def 4
theorem
for b1 being non void Category-like CatStr
for b2 being ManySortedFunction of {|the_hom_sets_of b1,the_hom_sets_of b1|},{|the_hom_sets_of b1|} holds
b2 = the_comps_of b1
iff
for b3, b4, b5 being Element of the Vertices of b1 holds
b2 .(b3,b4,b5) = (the Comp of b1) | [:(the_hom_sets_of b1) .(b4,b5),(the_hom_sets_of b1) .(b3,b4):];
:: ALTCAT_2:th 14
theorem
for b1 being non void Category-like CatStr
for b2, b3, b4 being Element of the Vertices of b1
st Hom(b2,b3) <> {} & Hom(b3,b4) <> {}
for b5 being Morphism of b2,b3
for b6 being Morphism of b3,b4 holds
((the_comps_of b1) .(b2,b3,b4)) .(b6,b5) = b6 * b5;
:: ALTCAT_2:th 15
theorem
for b1 being non void Category-like CatStr holds
the_comps_of b1 is associative(the Vertices of b1, the_hom_sets_of b1);
:: ALTCAT_2:th 16
theorem
for b1 being non void Category-like CatStr holds
the_comps_of b1 is with_left_units(the Vertices of b1, the_hom_sets_of b1) & the_comps_of b1 is with_right_units(the Vertices of b1, the_hom_sets_of b1);
:: ALTCAT_2:funcnot 6 => ALTCAT_2:func 6
definition
let a1 be non void Category-like CatStr;
func Alter A1 -> non empty strict AltCatStr equals
AltCatStr(#the Vertices of a1,the_hom_sets_of a1,the_comps_of a1#);
end;
:: ALTCAT_2:def 5
theorem
for b1 being non void Category-like CatStr holds
Alter b1 = AltCatStr(#the Vertices of b1,the_hom_sets_of b1,the_comps_of b1#);
:: ALTCAT_2:th 17
theorem
for b1 being non void Category-like CatStr holds
Alter b1 is associative;
:: ALTCAT_2:th 18
theorem
for b1 being non void Category-like CatStr holds
Alter b1 is with_units;
:: ALTCAT_2:th 19
theorem
for b1 being non void Category-like CatStr holds
Alter b1 is transitive;
:: ALTCAT_2:funcreg 3
registration
let a1 be non void Category-like CatStr;
cluster Alter a1 -> non empty transitive strict associative with_units;
end;
:: ALTCAT_2:exreg 1
registration
cluster non empty strict AltGraph;
end;
:: ALTCAT_2:attrnot 1 => ALTCAT_2:attr 1
definition
let a1 be AltGraph;
attr a1 is reflexive means
for b1 being set
st b1 in the carrier of a1
holds (the Arrows of a1) .(b1,b1) <> {};
end;
:: ALTCAT_2:dfs 6
definiens
let a1 be AltGraph;
To prove
a1 is reflexive
it is sufficient to prove
thus for b1 being set
st b1 in the carrier of a1
holds (the Arrows of a1) .(b1,b1) <> {};
:: ALTCAT_2:def 6
theorem
for b1 being AltGraph holds
b1 is reflexive
iff
for b2 being set
st b2 in the carrier of b1
holds (the Arrows of b1) .(b2,b2) <> {};
:: ALTCAT_2:attrnot 2 => ALTCAT_2:attr 1
definition
let a1 be AltGraph;
attr a1 is reflexive means
for b1 being Element of the carrier of a1 holds
<^b1,b1^> <> {};
end;
:: ALTCAT_2:dfs 7
definiens
let a1 be non empty AltGraph;
To prove
a1 is reflexive
it is sufficient to prove
thus for b1 being Element of the carrier of a1 holds
<^b1,b1^> <> {};
:: ALTCAT_2:def 7
theorem
for b1 being non empty AltGraph holds
b1 is reflexive
iff
for b2 being Element of the carrier of b1 holds
<^b2,b2^> <> {};
:: ALTCAT_2:attrnot 3 => ALTCAT_1:attr 11
definition
let a1 be non empty AltCatStr;
attr a1 is associative means
for b1, b2, b3, b4 being Element of the carrier of a1
for b5 being Element of <^b1,b2^>
for b6 being Element of <^b2,b3^>
for b7 being Element of <^b3,b4^>
st <^b1,b2^> <> {} & <^b2,b3^> <> {} & <^b3,b4^> <> {}
holds (b7 * b6) * b5 = b7 * (b6 * b5);
end;
:: ALTCAT_2:dfs 8
definiens
let a1 be non empty transitive AltCatStr;
To prove
a1 is associative
it is sufficient to prove
thus for b1, b2, b3, b4 being Element of the carrier of a1
for b5 being Element of <^b1,b2^>
for b6 being Element of <^b2,b3^>
for b7 being Element of <^b3,b4^>
st <^b1,b2^> <> {} & <^b2,b3^> <> {} & <^b3,b4^> <> {}
holds (b7 * b6) * b5 = b7 * (b6 * b5);
:: ALTCAT_2:def 8
theorem
for b1 being non empty transitive AltCatStr holds
b1 is associative
iff
for b2, b3, b4, b5 being Element of the carrier of b1
for b6 being Element of <^b2,b3^>
for b7 being Element of <^b3,b4^>
for b8 being Element of <^b4,b5^>
st <^b2,b3^> <> {} & <^b3,b4^> <> {} & <^b4,b5^> <> {}
holds (b8 * b7) * b6 = b8 * (b7 * b6);
:: ALTCAT_2:attrnot 4 => ALTCAT_1:attr 12
definition
let a1 be non empty AltCatStr;
attr a1 is with_units means
for b1 being Element of the carrier of a1 holds
<^b1,b1^> <> {} &
(ex b2 being Element of <^b1,b1^> st
for b3 being Element of the carrier of a1
for b4 being Element of <^b3,b1^>
for b5 being Element of <^b1,b3^> holds
(<^b3,b1^> = {} or b2 * b4 = b4) &
(<^b1,b3^> = {} or b5 * b2 = b5));
end;
:: ALTCAT_2:dfs 9
definiens
let a1 be non empty AltCatStr;
To prove
a1 is with_units
it is sufficient to prove
thus for b1 being Element of the carrier of a1 holds
<^b1,b1^> <> {} &
(ex b2 being Element of <^b1,b1^> st
for b3 being Element of the carrier of a1
for b4 being Element of <^b3,b1^>
for b5 being Element of <^b1,b3^> holds
(<^b3,b1^> = {} or b2 * b4 = b4) &
(<^b1,b3^> = {} or b5 * b2 = b5));
:: ALTCAT_2:def 9
theorem
for b1 being non empty AltCatStr holds
b1 is with_units
iff
for b2 being Element of the carrier of b1 holds
<^b2,b2^> <> {} &
(ex b3 being Element of <^b2,b2^> st
for b4 being Element of the carrier of b1
for b5 being Element of <^b4,b2^>
for b6 being Element of <^b2,b4^> holds
(<^b4,b2^> = {} or b3 * b5 = b5) &
(<^b2,b4^> = {} or b6 * b3 = b6));
:: ALTCAT_2:condreg 1
registration
cluster non empty with_units -> reflexive (AltCatStr);
end;
:: ALTCAT_2:exreg 2
registration
cluster non empty reflexive AltGraph;
end;
:: ALTCAT_2:exreg 3
registration
cluster non empty reflexive AltCatStr;
end;
:: ALTCAT_2:funcnot 7 => ALTCAT_2:func 7
definition
func the_empty_category -> strict AltCatStr means
the carrier of it is empty;
end;
:: ALTCAT_2:def 10
theorem
for b1 being strict AltCatStr holds
b1 = the_empty_category
iff
the carrier of b1 is empty;
:: ALTCAT_2:funcreg 4
registration
cluster the_empty_category -> empty strict;
end;
:: ALTCAT_2:exreg 4
registration
cluster empty strict AltCatStr;
end;
:: ALTCAT_2:th 20
theorem
for b1 being empty strict AltCatStr holds
b1 = the_empty_category;
:: ALTCAT_2:modenot 1 => ALTCAT_2:mode 1
definition
let a1 be AltCatStr;
mode SubCatStr of A1 -> AltCatStr means
the carrier of it c= the carrier of a1 & the Arrows of it cc= the Arrows of a1 & the Comp of it cc= the Comp of a1;
end;
:: ALTCAT_2:dfs 11
definiens
let a1, a2 be AltCatStr;
To prove
a2 is SubCatStr of a1
it is sufficient to prove
thus the carrier of a2 c= the carrier of a1 & the Arrows of a2 cc= the Arrows of a1 & the Comp of a2 cc= the Comp of a1;
:: ALTCAT_2:def 11
theorem
for b1, b2 being AltCatStr holds
b2 is SubCatStr of b1
iff
the carrier of b2 c= the carrier of b1 & the Arrows of b2 cc= the Arrows of b1 & the Comp of b2 cc= the Comp of b1;
:: ALTCAT_2:th 21
theorem
for b1 being AltCatStr holds
b1 is SubCatStr of b1;
:: ALTCAT_2:th 22
theorem
for b1, b2, b3 being AltCatStr
st b1 is SubCatStr of b2 & b2 is SubCatStr of b3
holds b1 is SubCatStr of b3;
:: ALTCAT_2:th 23
theorem
for b1, b2 being AltCatStr
st b1 is SubCatStr of b2 & b2 is SubCatStr of b1
holds AltCatStr(#the carrier of b1,the Arrows of b1,the Comp of b1#) = AltCatStr(#the carrier of b2,the Arrows of b2,the Comp of b2#);
:: ALTCAT_2:exreg 5
registration
let a1 be AltCatStr;
cluster strict SubCatStr of a1;
end;
:: ALTCAT_2:funcnot 8 => ALTCAT_2:func 8
definition
let a1 be non empty AltCatStr;
let a2 be Element of the carrier of a1;
func ObCat A2 -> strict SubCatStr of a1 means
the carrier of it = {a2} &
the Arrows of it = (a2,a2):-> <^a2,a2^> &
the Comp of it = [a2,a2,a2] .--> ((the Comp of a1) .(a2,a2,a2));
end;
:: ALTCAT_2:def 12
theorem
for b1 being non empty AltCatStr
for b2 being Element of the carrier of b1
for b3 being strict SubCatStr of b1 holds
b3 = ObCat b2
iff
the carrier of b3 = {b2} &
the Arrows of b3 = (b2,b2):-> <^b2,b2^> &
the Comp of b3 = [b2,b2,b2] .--> ((the Comp of b1) .(b2,b2,b2));
:: ALTCAT_2:th 24
theorem
for b1 being non empty AltCatStr
for b2 being Element of the carrier of b1
for b3 being Element of the carrier of ObCat b2 holds
b3 = b2;
:: ALTCAT_2:funcreg 5
registration
let a1 be non empty AltCatStr;
let a2 be Element of the carrier of a1;
cluster ObCat a2 -> non empty transitive strict;
end;
:: ALTCAT_2:exreg 6
registration
let a1 be non empty AltCatStr;
cluster non empty transitive strict SubCatStr of a1;
end;
:: ALTCAT_2:th 25
theorem
for b1 being non empty transitive AltCatStr
for b2, b3 being non empty transitive SubCatStr of b1
st the carrier of b2 c= the carrier of b3 & the Arrows of b2 cc= the Arrows of b3
holds b2 is SubCatStr of b3;
:: ALTCAT_2:attrnot 5 => ALTCAT_2:attr 2
definition
let a1 be AltCatStr;
let a2 be SubCatStr of a1;
attr a2 is full means
the Arrows of a2 = (the Arrows of a1) || the carrier of a2;
end;
:: ALTCAT_2:dfs 13
definiens
let a1 be AltCatStr;
let a2 be SubCatStr of a1;
To prove
a2 is full
it is sufficient to prove
thus the Arrows of a2 = (the Arrows of a1) || the carrier of a2;
:: ALTCAT_2:def 13
theorem
for b1 being AltCatStr
for b2 being SubCatStr of b1 holds
b2 is full(b1)
iff
the Arrows of b2 = (the Arrows of b1) || the carrier of b2;
:: ALTCAT_2:attrnot 6 => ALTCAT_2:attr 3
definition
let a1 be non empty with_units AltCatStr;
let a2 be SubCatStr of a1;
attr a2 is id-inheriting means
for b1 being Element of the carrier of a2
for b2 being Element of the carrier of a1
st b1 = b2
holds idm b2 in <^b1,b1^>
if a2 is not empty
otherwise TRUE;
end;
:: ALTCAT_2:dfs 14
definiens
let a1 be non empty with_units AltCatStr;
let a2 be SubCatStr of a1;
To prove
a2 is id-inheriting
it is sufficient to prove
per cases;
case a2 is not empty;
thus for b1 being Element of the carrier of a2
for b2 being Element of the carrier of a1
st b1 = b2
holds idm b2 in <^b1,b1^>;
end;
case a2 is empty;
thus TRUE;
end;
:: ALTCAT_2:def 14
theorem
for b1 being non empty with_units AltCatStr
for b2 being SubCatStr of b1 holds
(b2 is empty or (b2 is id-inheriting(b1)
iff
for b3 being Element of the carrier of b2
for b4 being Element of the carrier of b1
st b3 = b4
holds idm b4 in <^b3,b3^>)) &
(b2 is empty implies (b2 is id-inheriting(b1) implies TRUE) & b2 is id-inheriting(b1));
:: ALTCAT_2:exreg 7
registration
let a1 be AltCatStr;
cluster strict full SubCatStr of a1;
end;
:: ALTCAT_2:exreg 8
registration
let a1 be non empty AltCatStr;
cluster non empty strict full SubCatStr of a1;
end;
:: ALTCAT_2:funcreg 6
registration
let a1 be non empty transitive associative with_units AltCatStr;
let a2 be Element of the carrier of a1;
cluster ObCat a2 -> strict full id-inheriting;
end;
:: ALTCAT_2:exreg 9
registration
let a1 be non empty transitive associative with_units AltCatStr;
cluster non empty strict full id-inheriting SubCatStr of a1;
end;
:: ALTCAT_2:th 26
theorem
for b1 being non empty transitive AltCatStr
for b2 being SubCatStr of b1
st the carrier of b2 = the carrier of b1 & the Arrows of b2 = the Arrows of b1
holds AltCatStr(#the carrier of b2,the Arrows of b2,the Comp of b2#) = AltCatStr(#the carrier of b1,the Arrows of b1,the Comp of b1#);
:: ALTCAT_2:th 27
theorem
for b1 being non empty transitive AltCatStr
for b2, b3 being non empty transitive SubCatStr of b1
st the carrier of b2 = the carrier of b3 & the Arrows of b2 = the Arrows of b3
holds AltCatStr(#the carrier of b2,the Arrows of b2,the Comp of b2#) = AltCatStr(#the carrier of b3,the Arrows of b3,the Comp of b3#);
:: ALTCAT_2:th 28
theorem
for b1 being non empty transitive AltCatStr
for b2 being full SubCatStr of b1
st the carrier of b2 = the carrier of b1
holds AltCatStr(#the carrier of b2,the Arrows of b2,the Comp of b2#) = AltCatStr(#the carrier of b1,the Arrows of b1,the Comp of b1#);
:: ALTCAT_2:th 29
theorem
for b1 being non empty AltCatStr
for b2 being non empty full SubCatStr of b1
for b3, b4 being Element of the carrier of b1
for b5, b6 being Element of the carrier of b2
st b3 = b5 & b4 = b6
holds <^b3,b4^> = <^b5,b6^>;
:: ALTCAT_2:th 30
theorem
for b1 being non empty AltCatStr
for b2 being non empty SubCatStr of b1
for b3 being Element of the carrier of b2 holds
b3 is Element of the carrier of b1;
:: ALTCAT_2:condreg 2
registration
let a1 be non empty transitive AltCatStr;
cluster non empty full -> transitive (SubCatStr of a1);
end;
:: ALTCAT_2:th 31
theorem
for b1 being non empty transitive AltCatStr
for b2, b3 being non empty full SubCatStr of b1
st the carrier of b2 = the carrier of b3
holds AltCatStr(#the carrier of b2,the Arrows of b2,the Comp of b2#) = AltCatStr(#the carrier of b3,the Arrows of b3,the Comp of b3#);
:: ALTCAT_2:th 32
theorem
for b1 being non empty AltCatStr
for b2 being non empty SubCatStr of b1
for b3, b4 being Element of the carrier of b1
for b5, b6 being Element of the carrier of b2
st b3 = b5 & b4 = b6
holds <^b5,b6^> c= <^b3,b4^>;
:: ALTCAT_2:th 33
theorem
for b1 being non empty transitive AltCatStr
for b2 being non empty transitive SubCatStr of b1
for b3, b4, b5 being Element of the carrier of b2
st <^b3,b4^> <> {} & <^b4,b5^> <> {}
for b6, b7, b8 being Element of the carrier of b1
st b6 = b3 & b7 = b4 & b8 = b5
for b9 being Element of <^b6,b7^>
for b10 being Element of <^b7,b8^>
for b11 being Element of <^b3,b4^>
for b12 being Element of <^b4,b5^>
st b9 = b11 & b10 = b12
holds b10 * b9 = b12 * b11;
:: ALTCAT_2:condreg 3
registration
let a1 be non empty transitive associative AltCatStr;
cluster non empty transitive -> associative (SubCatStr of a1);
end;
:: ALTCAT_2:th 34
theorem
for b1 being non empty AltCatStr
for b2 being non empty SubCatStr of b1
for b3, b4 being Element of the carrier of b1
for b5, b6 being Element of the carrier of b2
st b3 = b5 & b4 = b6 & <^b5,b6^> <> {}
for b7 being Element of <^b5,b6^> holds
b7 is Element of <^b3,b4^>;
:: ALTCAT_2:condreg 4
registration
let a1 be non empty transitive with_units AltCatStr;
cluster non empty transitive id-inheriting -> with_units (SubCatStr of a1);
end;
:: ALTCAT_2:exreg 10
registration
let a1 be non empty transitive associative with_units AltCatStr;
cluster non empty transitive id-inheriting SubCatStr of a1;
end;
:: ALTCAT_2:modenot 2
definition
let a1 be non empty transitive associative with_units AltCatStr;
mode subcategory of a1 is transitive id-inheriting SubCatStr of a1;
end;
:: ALTCAT_2:th 35
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2 being non empty transitive id-inheriting SubCatStr of b1
for b3 being Element of the carrier of b2
for b4 being Element of the carrier of b1
st b3 = b4
holds idm b3 = idm b4;