Article CAT_3, MML version 4.99.1005
:: CAT_3:funcnot 1 => PARTFUN1:func 7
definition
let a1, a2 be set;
let a3 be Function-like Relation of a1,a2;
let a4 be set;
assume a4 in a1;
func A3 /. A4 -> Element of a2 equals
a3 . a4;
end;
:: CAT_3:def 1
theorem
for b1 being set
for b2 being non empty set
for b3 being Function-like quasi_total Relation of b1,b2
for b4 being set
st b4 in b1
holds b3 /. b4 = b3 . b4;
:: CAT_3:sch 1
scheme CAT_3:sch 1
{F1 -> set,
F2 -> non empty set,
F3 -> Element of F2()}:
ex b1 being Function-like quasi_total Relation of F1(),F2() st
for b2 being set
st b2 in F1()
holds b1 /. b2 = F3(b2)
:: CAT_3:th 1
theorem
for b1 being set
for b2 being non empty set
for b3, b4 being Function-like quasi_total Relation of b1,b2
st for b5 being set
st b5 in b1
holds b3 /. b5 = b4 /. b5
holds b3 = b4;
:: CAT_3:sch 2
scheme CAT_3:sch 2
{F1 -> set,
F2 -> non empty set,
F3 -> Element of F2()}:
(ex b1 being Function-like quasi_total Relation of F1(),F2() st
for b2 being set
st b2 in F1()
holds b1 /. b2 = F3(b2)) &
(for b1, b2 being Function-like quasi_total Relation of F1(),F2()
st (for b3 being set
st b3 in F1()
holds b1 /. b3 = F3(b3)) &
(for b3 being set
st b3 in F1()
holds b2 /. b3 = F3(b3))
holds b1 = b2)
:: CAT_3:funcnot 2 => CAT_3:func 1
definition
let a1 be non empty set;
let a2 be set;
let a3 be Element of a1;
redefine func a2 .--> a3 -> Function-like quasi_total Relation of {a2},a1;
end;
:: CAT_3:th 2
theorem
for b1, b2 being set
for b3 being non empty set
for b4 being Element of b3
st b2 in b1
holds (b1 --> b4) /. b2 = b4;
:: CAT_3:th 7
theorem
for b1, b2 being set
for b3 being non empty set
st b1 <> b2
for b4, b5 being Element of b3 holds
((b1,b2)-->(b4,b5)) /. b1 = b4 & ((b1,b2)-->(b4,b5)) /. b2 = b5;
:: CAT_3:funcnot 3 => CAT_3:func 2
definition
let a1 be non void Category-like CatStr;
let a2 be set;
let a3 be Function-like quasi_total Relation of a2,the Edges of a1;
func doms A3 -> Function-like quasi_total Relation of a2,the Vertices of a1 means
for b1 being set
st b1 in a2
holds it /. b1 = dom (a3 /. b1);
end;
:: CAT_3:def 3
theorem
for b1 being non void Category-like CatStr
for b2 being set
for b3 being Function-like quasi_total Relation of b2,the Edges of b1
for b4 being Function-like quasi_total Relation of b2,the Vertices of b1 holds
b4 = doms b3
iff
for b5 being set
st b5 in b2
holds b4 /. b5 = dom (b3 /. b5);
:: CAT_3:funcnot 4 => CAT_3:func 3
definition
let a1 be non void Category-like CatStr;
let a2 be set;
let a3 be Function-like quasi_total Relation of a2,the Edges of a1;
func cods A3 -> Function-like quasi_total Relation of a2,the Vertices of a1 means
for b1 being set
st b1 in a2
holds it /. b1 = cod (a3 /. b1);
end;
:: CAT_3:def 4
theorem
for b1 being non void Category-like CatStr
for b2 being set
for b3 being Function-like quasi_total Relation of b2,the Edges of b1
for b4 being Function-like quasi_total Relation of b2,the Vertices of b1 holds
b4 = cods b3
iff
for b5 being set
st b5 in b2
holds b4 /. b5 = cod (b3 /. b5);
:: CAT_3:th 8
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Edges of b2 holds
doms (b1 --> b3) = b1 --> dom b3;
:: CAT_3:th 9
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Edges of b2 holds
cods (b1 --> b3) = b1 --> cod b3;
:: CAT_3:th 10
theorem
for b1, b2 being set
for b3 being non void Category-like CatStr
for b4, b5 being Element of the Edges of b3 holds
doms ((b1,b2)-->(b4,b5)) = (b1,b2)-->(dom b4,dom b5);
:: CAT_3:th 11
theorem
for b1, b2 being set
for b3 being non void Category-like CatStr
for b4, b5 being Element of the Edges of b3 holds
cods ((b1,b2)-->(b4,b5)) = (b1,b2)-->(cod b4,cod b5);
:: CAT_3:funcnot 5 => CAT_3:func 4
definition
let a1 be non void Category-like CatStr;
let a2 be set;
let a3 be Function-like quasi_total Relation of a2,the Edges of a1;
func A3 opp -> Function-like quasi_total Relation of a2,the Edges of a1 opp means
for b1 being set
st b1 in a2
holds it /. b1 = (a3 /. b1) opp;
end;
:: CAT_3:def 5
theorem
for b1 being non void Category-like CatStr
for b2 being set
for b3 being Function-like quasi_total Relation of b2,the Edges of b1
for b4 being Function-like quasi_total Relation of b2,the Edges of b1 opp holds
b4 = b3 opp
iff
for b5 being set
st b5 in b2
holds b4 /. b5 = (b3 /. b5) opp;
:: CAT_3:th 12
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Edges of b2 holds
(b1 --> b3) opp = b1 --> (b3 opp);
:: CAT_3:th 13
theorem
for b1, b2 being set
for b3 being non void Category-like CatStr
for b4, b5 being Element of the Edges of b3
st b1 <> b2
holds ((b1,b2)-->(b4,b5)) opp = (b1,b2)-->(b4 opp,b5 opp);
:: CAT_3:th 14
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Function-like quasi_total Relation of b1,the Edges of b2 holds
b3 opp opp = b3;
:: CAT_3:funcnot 6 => CAT_3:func 5
definition
let a1 be non void Category-like CatStr;
let a2 be set;
let a3 be Function-like quasi_total Relation of a2,the Edges of a1 opp;
func opp A3 -> Function-like quasi_total Relation of a2,the Edges of a1 means
for b1 being set
st b1 in a2
holds it /. b1 = opp (a3 /. b1);
end;
:: CAT_3:def 6
theorem
for b1 being non void Category-like CatStr
for b2 being set
for b3 being Function-like quasi_total Relation of b2,the Edges of b1 opp
for b4 being Function-like quasi_total Relation of b2,the Edges of b1 holds
b4 = opp b3
iff
for b5 being set
st b5 in b2
holds b4 /. b5 = opp (b3 /. b5);
:: CAT_3:th 15
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Edges of b2 opp holds
opp (b1 --> b3) = b1 --> opp b3;
:: CAT_3:th 16
theorem
for b1, b2 being set
for b3 being non void Category-like CatStr
st b1 <> b2
for b4, b5 being Element of the Edges of b3 opp holds
opp ((b1,b2)-->(b4,b5)) = (b1,b2)-->(opp b4,opp b5);
:: CAT_3:th 17
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Function-like quasi_total Relation of b1,the Edges of b2 holds
opp (b3 opp) = b3;
:: CAT_3:funcnot 7 => CAT_3:func 6
definition
let a1 be non void Category-like CatStr;
let a2 be set;
let a3 be Function-like quasi_total Relation of a2,the Edges of a1;
let a4 be Element of the Edges of a1;
func A3 * A4 -> Function-like quasi_total Relation of a2,the Edges of a1 means
for b1 being set
st b1 in a2
holds it /. b1 = (a3 /. b1) * a4;
end;
:: CAT_3:def 7
theorem
for b1 being non void Category-like CatStr
for b2 being set
for b3 being Function-like quasi_total Relation of b2,the Edges of b1
for b4 being Element of the Edges of b1
for b5 being Function-like quasi_total Relation of b2,the Edges of b1 holds
b5 = b3 * b4
iff
for b6 being set
st b6 in b2
holds b5 /. b6 = (b3 /. b6) * b4;
:: CAT_3:funcnot 8 => CAT_3:func 7
definition
let a1 be non void Category-like CatStr;
let a2 be set;
let a3 be Function-like quasi_total Relation of a2,the Edges of a1;
let a4 be Element of the Edges of a1;
func A4 * A3 -> Function-like quasi_total Relation of a2,the Edges of a1 means
for b1 being set
st b1 in a2
holds it /. b1 = a4 * (a3 /. b1);
end;
:: CAT_3:def 8
theorem
for b1 being non void Category-like CatStr
for b2 being set
for b3 being Function-like quasi_total Relation of b2,the Edges of b1
for b4 being Element of the Edges of b1
for b5 being Function-like quasi_total Relation of b2,the Edges of b1 holds
b5 = b4 * b3
iff
for b6 being set
st b6 in b2
holds b5 /. b6 = b4 * (b3 /. b6);
:: CAT_3:th 18
theorem
for b1, b2 being set
for b3 being non void Category-like CatStr
for b4, b5, b6 being Element of the Edges of b3
st b1 <> b2
holds ((b1,b2)-->(b4,b5)) * b6 = (b1,b2)-->(b4 * b6,b5 * b6);
:: CAT_3:th 19
theorem
for b1, b2 being set
for b3 being non void Category-like CatStr
for b4, b5, b6 being Element of the Edges of b3
st b1 <> b2
holds b4 * ((b1,b2)-->(b5,b6)) = (b1,b2)-->(b4 * b5,b4 * b6);
:: CAT_3:th 20
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Edges of b2
for b4 being Function-like quasi_total Relation of b1,the Edges of b2
st doms b4 = b1 --> cod b3
holds doms (b4 * b3) = b1 --> dom b3 & cods (b4 * b3) = cods b4;
:: CAT_3:th 21
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Edges of b2
for b4 being Function-like quasi_total Relation of b1,the Edges of b2
st cods b4 = b1 --> dom b3
holds doms (b3 * b4) = doms b4 & cods (b3 * b4) = b1 --> cod b3;
:: CAT_3:funcnot 9 => CAT_3:func 8
definition
let a1 be non void Category-like CatStr;
let a2 be set;
let a3, a4 be Function-like quasi_total Relation of a2,the Edges of a1;
func A3 "*" A4 -> Function-like quasi_total Relation of a2,the Edges of a1 means
for b1 being set
st b1 in a2
holds it /. b1 = (a3 /. b1) * (a4 /. b1);
end;
:: CAT_3:def 9
theorem
for b1 being non void Category-like CatStr
for b2 being set
for b3, b4, b5 being Function-like quasi_total Relation of b2,the Edges of b1 holds
b5 = b3 "*" b4
iff
for b6 being set
st b6 in b2
holds b5 /. b6 = (b3 /. b6) * (b4 /. b6);
:: CAT_3:th 22
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3, b4 being Function-like quasi_total Relation of b1,the Edges of b2
st doms b3 = cods b4
holds doms (b3 "*" b4) = doms b4 & cods (b3 "*" b4) = cods b3;
:: CAT_3:th 23
theorem
for b1, b2 being set
for b3 being non void Category-like CatStr
for b4, b5, b6, b7 being Element of the Edges of b3
st b1 <> b2
holds ((b1,b2)-->(b4,b5)) "*" ((b1,b2)-->(b6,b7)) = (b1,b2)-->(b4 * b6,b5 * b7);
:: CAT_3:th 24
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Edges of b2
for b4 being Function-like quasi_total Relation of b1,the Edges of b2 holds
b4 * b3 = b4 "*" (b1 --> b3);
:: CAT_3:th 25
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Edges of b2
for b4 being Function-like quasi_total Relation of b1,the Edges of b2 holds
b3 * b4 = (b1 --> b3) "*" b4;
:: CAT_3:attrnot 1 => CAT_3:attr 1
definition
let a1 be non void Category-like CatStr;
let a2 be Element of the Edges of a1;
attr a2 is retraction means
ex b1 being Element of the Edges of a1 st
cod b1 = dom a2 & a2 * b1 = id cod a2;
end;
:: CAT_3:dfs 9
definiens
let a1 be non void Category-like CatStr;
let a2 be Element of the Edges of a1;
To prove
a2 is retraction
it is sufficient to prove
thus ex b1 being Element of the Edges of a1 st
cod b1 = dom a2 & a2 * b1 = id cod a2;
:: CAT_3:def 10
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
b2 is retraction(b1)
iff
ex b3 being Element of the Edges of b1 st
cod b3 = dom b2 & b2 * b3 = id cod b2;
:: CAT_3:attrnot 2 => CAT_3:attr 2
definition
let a1 be non void Category-like CatStr;
let a2 be Element of the Edges of a1;
attr a2 is coretraction means
ex b1 being Element of the Edges of a1 st
dom b1 = cod a2 & b1 * a2 = id dom a2;
end;
:: CAT_3:dfs 10
definiens
let a1 be non void Category-like CatStr;
let a2 be Element of the Edges of a1;
To prove
a2 is coretraction
it is sufficient to prove
thus ex b1 being Element of the Edges of a1 st
dom b1 = cod a2 & b1 * a2 = id dom a2;
:: CAT_3:def 11
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
b2 is coretraction(b1)
iff
ex b3 being Element of the Edges of b1 st
dom b3 = cod b2 & b3 * b2 = id dom b2;
:: CAT_3:th 26
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1
st b2 is retraction(b1)
holds b2 is epi(b1);
:: CAT_3:th 27
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1
st b2 is coretraction(b1)
holds b2 is monic(b1);
:: CAT_3:th 28
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Edges of b1
st b2 is retraction(b1) & b3 is retraction(b1) & dom b3 = cod b2
holds b3 * b2 is retraction(b1);
:: CAT_3:th 29
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Edges of b1
st b2 is coretraction(b1) & b3 is coretraction(b1) & dom b3 = cod b2
holds b3 * b2 is coretraction(b1);
:: CAT_3:th 30
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Edges of b1
st dom b2 = cod b3 & b2 * b3 is retraction(b1)
holds b2 is retraction(b1);
:: CAT_3:th 31
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Edges of b1
st dom b2 = cod b3 & b2 * b3 is coretraction(b1)
holds b3 is coretraction(b1);
:: CAT_3:th 32
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1
st b2 is retraction(b1) & b2 is monic(b1)
holds b2 is invertible(b1);
:: CAT_3:th 33
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1
st b2 is coretraction(b1) & b2 is epi(b1)
holds b2 is invertible(b1);
:: CAT_3:th 34
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
b2 is invertible(b1)
iff
b2 is retraction(b1) & b2 is coretraction(b1);
:: CAT_3:th 35
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Element of the Edges of b1
for b4 being Functor of b1,b2
st b3 is retraction(b1)
holds b4 . b3 is retraction(b2);
:: CAT_3:th 36
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Element of the Edges of b1
for b4 being Functor of b1,b2
st b3 is coretraction(b1)
holds b4 . b3 is coretraction(b2);
:: CAT_3:th 37
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
b2 is retraction(b1)
iff
b2 opp is coretraction(b1 opp);
:: CAT_3:th 38
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
b2 is coretraction(b1)
iff
b2 opp is retraction(b1 opp);
:: CAT_3:funcnot 10 => CAT_3:func 9
definition
let a1 be non void Category-like CatStr;
let a2, a3 be Element of the Vertices of a1;
assume a3 is terminal(a1);
func term(A2,A3) -> Morphism of a2,a3 means
TRUE;
end;
:: CAT_3:def 12
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Vertices of b1
st b3 is terminal(b1)
for b4 being Morphism of b2,b3 holds
(b4 = term(b2,b3) implies TRUE) & b4 = term(b2,b3);
:: CAT_3:th 39
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Vertices of b1
st b2 is terminal(b1)
holds dom term(b3,b2) = b3 & cod term(b3,b2) = b2;
:: CAT_3:th 40
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Vertices of b1
for b4 being Element of the Edges of b1
st b2 is terminal(b1) & dom b4 = b3 & cod b4 = b2
holds term(b3,b2) = b4;
:: CAT_3:th 41
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Vertices of b1
for b4 being Morphism of b2,b3
st b3 is terminal(b1)
holds term(b2,b3) = b4;
:: CAT_3:funcnot 11 => CAT_3:func 10
definition
let a1 be non void Category-like CatStr;
let a2, a3 be Element of the Vertices of a1;
assume a2 is initial(a1);
func init(A2,A3) -> Morphism of a2,a3 means
TRUE;
end;
:: CAT_3:def 13
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Vertices of b1
st b2 is initial(b1)
for b4 being Morphism of b2,b3 holds
(b4 = init(b2,b3) implies TRUE) & b4 = init(b2,b3);
:: CAT_3:th 42
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Vertices of b1
st b2 is initial(b1)
holds dom init(b2,b3) = b2 & cod init(b2,b3) = b3;
:: CAT_3:th 43
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Vertices of b1
for b4 being Element of the Edges of b1
st b2 is initial(b1) & dom b4 = b2 & cod b4 = b3
holds init(b2,b3) = b4;
:: CAT_3:th 44
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Vertices of b1
for b4 being Morphism of b2,b3
st b2 is initial(b1)
holds init(b2,b3) = b4;
:: CAT_3:modenot 1 => CAT_3:mode 1
definition
let a1 be non void Category-like CatStr;
let a2 be Element of the Vertices of a1;
let a3 be set;
mode Projections_family of A2,A3 -> Function-like quasi_total Relation of a3,the Edges of a1 means
doms it = a3 --> a2;
end;
:: CAT_3:dfs 13
definiens
let a1 be non void Category-like CatStr;
let a2 be Element of the Vertices of a1;
let a3 be set;
let a4 be Function-like quasi_total Relation of a3,the Edges of a1;
To prove
a4 is Projections_family of a2,a3
it is sufficient to prove
thus doms a4 = a3 --> a2;
:: CAT_3:def 14
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3 being set
for b4 being Function-like quasi_total Relation of b3,the Edges of b1 holds
b4 is Projections_family of b2,b3
iff
doms b4 = b3 --> b2;
:: CAT_3:th 45
theorem
for b1, b2 being set
for b3 being non void Category-like CatStr
for b4 being Element of the Vertices of b3
for b5 being Projections_family of b4,b1
st b2 in b1
holds dom (b5 /. b2) = b4;
:: CAT_3:th 46
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3 being Function-like quasi_total Relation of {},the Edges of b1 holds
b3 is Projections_family of b2,{};
:: CAT_3:th 47
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Vertices of b2
for b4 being Element of the Edges of b2
st dom b4 = b3
holds b1 .--> b4 is Projections_family of b3,{b1};
:: CAT_3:th 48
theorem
for b1, b2 being set
for b3 being non void Category-like CatStr
for b4 being Element of the Vertices of b3
for b5, b6 being Element of the Edges of b3
st dom b5 = b4 & dom b6 = b4
holds (b1,b2)-->(b5,b6) is Projections_family of b4,{b1,b2};
:: CAT_3:th 50
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Vertices of b2
for b4 being Element of the Edges of b2
for b5 being Projections_family of b3,b1
st cod b4 = b3
holds b5 * b4 is Projections_family of dom b4,b1;
:: CAT_3:th 51
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Vertices of b2
for b4 being Function-like quasi_total Relation of b1,the Edges of b2
for b5 being Projections_family of b3,b1
st doms b4 = cods b5
holds b4 "*" b5 is Projections_family of b3,b1;
:: CAT_3:th 52
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Edges of b2
for b4 being Projections_family of cod b3,b1 holds
b3 opp * (b4 opp) = (b4 * b3) opp;
:: CAT_3:prednot 1 => CAT_3:pred 1
definition
let a1 be non void Category-like CatStr;
let a2 be Element of the Vertices of a1;
let a3 be set;
let a4 be Function-like quasi_total Relation of a3,the Edges of a1;
pred A2 is_a_product_wrt A4 means
a4 is Projections_family of a2,a3 &
(for b1 being Element of the Vertices of a1
for b2 being Projections_family of b1,a3
st cods a4 = cods b2
holds ex b3 being Element of the Edges of a1 st
b3 in Hom(b1,a2) &
(for b4 being Element of the Edges of a1
st b4 in Hom(b1,a2)
holds for b5 being set
st b5 in a3
holds (a4 /. b5) * b4 = b2 /. b5
iff
b3 = b4));
end;
:: CAT_3:dfs 14
definiens
let a1 be non void Category-like CatStr;
let a2 be Element of the Vertices of a1;
let a3 be set;
let a4 be Function-like quasi_total Relation of a3,the Edges of a1;
To prove
a2 is_a_product_wrt a4
it is sufficient to prove
thus a4 is Projections_family of a2,a3 &
(for b1 being Element of the Vertices of a1
for b2 being Projections_family of b1,a3
st cods a4 = cods b2
holds ex b3 being Element of the Edges of a1 st
b3 in Hom(b1,a2) &
(for b4 being Element of the Edges of a1
st b4 in Hom(b1,a2)
holds for b5 being set
st b5 in a3
holds (a4 /. b5) * b4 = b2 /. b5
iff
b3 = b4));
:: CAT_3:def 15
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3 being set
for b4 being Function-like quasi_total Relation of b3,the Edges of b1 holds
b2 is_a_product_wrt b4
iff
b4 is Projections_family of b2,b3 &
(for b5 being Element of the Vertices of b1
for b6 being Projections_family of b5,b3
st cods b4 = cods b6
holds ex b7 being Element of the Edges of b1 st
b7 in Hom(b5,b2) &
(for b8 being Element of the Edges of b1
st b8 in Hom(b5,b2)
holds for b9 being set
st b9 in b3
holds (b4 /. b9) * b8 = b6 /. b9
iff
b7 = b8));
:: CAT_3:th 53
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3, b4 being Element of the Vertices of b2
for b5 being Projections_family of b3,b1
for b6 being Projections_family of b4,b1
st b3 is_a_product_wrt b5 & b4 is_a_product_wrt b6 & cods b5 = cods b6
holds b3,b4 are_isomorphic;
:: CAT_3:th 54
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Vertices of b2
for b4 being Projections_family of b3,b1
st b3 is_a_product_wrt b4 &
(for b5, b6 being set
st b5 in b1 & b6 in b1
holds Hom(cod (b4 /. b5),cod (b4 /. b6)) <> {})
for b5 being set
st b5 in b1
holds b4 /. b5 is retraction(b2);
:: CAT_3:th 55
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3 being Function-like quasi_total Relation of {},the Edges of b1 holds
b2 is_a_product_wrt b3
iff
b2 is terminal(b1);
:: CAT_3:th 56
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3, b4 being Element of the Vertices of b2
for b5 being Element of the Edges of b2
for b6 being Projections_family of b3,b1
st b3 is_a_product_wrt b6 & dom b5 = b4 & cod b5 = b3 & b5 is invertible(b2)
holds b4 is_a_product_wrt b6 * b5;
:: CAT_3:th 57
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Vertices of b2 holds
b3 is_a_product_wrt b1 .--> id b3;
:: CAT_3:th 58
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Vertices of b2
for b4 being Projections_family of b3,b1
st b3 is_a_product_wrt b4 &
(for b5 being set
st b5 in b1
holds cod (b4 /. b5) is terminal(b2))
holds b3 is terminal(b2);
:: CAT_3:prednot 2 => CAT_3:pred 2
definition
let a1 be non void Category-like CatStr;
let a2 be Element of the Vertices of a1;
let a3, a4 be Element of the Edges of a1;
pred A2 is_a_product_wrt A3,A4 means
dom a3 = a2 &
dom a4 = a2 &
(for b1 being Element of the Vertices of a1
for b2, b3 being Element of the Edges of a1
st b2 in Hom(b1,cod a3) & b3 in Hom(b1,cod a4)
holds ex b4 being Element of the Edges of a1 st
b4 in Hom(b1,a2) &
(for b5 being Element of the Edges of a1
st b5 in Hom(b1,a2)
holds a3 * b5 = b2 & a4 * b5 = b3
iff
b4 = b5));
end;
:: CAT_3:dfs 15
definiens
let a1 be non void Category-like CatStr;
let a2 be Element of the Vertices of a1;
let a3, a4 be Element of the Edges of a1;
To prove
a2 is_a_product_wrt a3,a4
it is sufficient to prove
thus dom a3 = a2 &
dom a4 = a2 &
(for b1 being Element of the Vertices of a1
for b2, b3 being Element of the Edges of a1
st b2 in Hom(b1,cod a3) & b3 in Hom(b1,cod a4)
holds ex b4 being Element of the Edges of a1 st
b4 in Hom(b1,a2) &
(for b5 being Element of the Edges of a1
st b5 in Hom(b1,a2)
holds a3 * b5 = b2 & a4 * b5 = b3
iff
b4 = b5));
:: CAT_3:def 16
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3, b4 being Element of the Edges of b1 holds
b2 is_a_product_wrt b3,b4
iff
dom b3 = b2 &
dom b4 = b2 &
(for b5 being Element of the Vertices of b1
for b6, b7 being Element of the Edges of b1
st b6 in Hom(b5,cod b3) & b7 in Hom(b5,cod b4)
holds ex b8 being Element of the Edges of b1 st
b8 in Hom(b5,b2) &
(for b9 being Element of the Edges of b1
st b9 in Hom(b5,b2)
holds b3 * b9 = b6 & b4 * b9 = b7
iff
b8 = b9));
:: CAT_3:th 59
theorem
for b1, b2 being set
for b3 being non void Category-like CatStr
for b4 being Element of the Vertices of b3
for b5, b6 being Element of the Edges of b3
st b1 <> b2
holds b4 is_a_product_wrt b5,b6
iff
b4 is_a_product_wrt (b1,b2)-->(b5,b6);
:: CAT_3:th 60
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(b2,b4) <> {}
for b5 being Morphism of b2,b3
for b6 being Morphism of b2,b4 holds
b2 is_a_product_wrt b5,b6
iff
for b7 being Element of the Vertices of b1
st Hom(b7,b3) <> {} & Hom(b7,b4) <> {}
holds Hom(b7,b2) <> {} &
(for b8 being Morphism of b7,b3
for b9 being Morphism of b7,b4 holds
ex b10 being Morphism of b7,b2 st
for b11 being Morphism of b7,b2 holds
b5 * b11 = b8 & b6 * b11 = b9
iff
b10 = b11);
:: CAT_3:th 61
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Vertices of b1
for b4, b5, b6, b7 being Element of the Edges of b1
st b2 is_a_product_wrt b4,b5 & b3 is_a_product_wrt b6,b7 & cod b4 = cod b6 & cod b5 = cod b7
holds b2,b3 are_isomorphic;
:: CAT_3:th 62
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3, b4 being Element of the Edges of b1
st b2 is_a_product_wrt b3,b4 & Hom(cod b3,cod b4) <> {} & Hom(cod b4,cod b3) <> {}
holds b3 is retraction(b1) & b4 is retraction(b1);
:: CAT_3:th 63
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3, b4, b5 being Element of the Edges of b1
st b2 is_a_product_wrt b3,b4 & b5 in Hom(b2,b2) & b3 * b5 = b3 & b4 * b5 = b4
holds b5 = id b2;
:: CAT_3:th 64
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Vertices of b1
for b4, b5, b6 being Element of the Edges of b1
st b2 is_a_product_wrt b4,b5 & dom b6 = b3 & cod b6 = b2 & b6 is invertible(b1)
holds b3 is_a_product_wrt b4 * b6,b5 * b6;
:: CAT_3:th 65
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3, b4 being Element of the Edges of b1
st b2 is_a_product_wrt b3,b4 & cod b4 is terminal(b1)
holds b2,cod b3 are_isomorphic;
:: CAT_3:th 66
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3, b4 being Element of the Edges of b1
st b2 is_a_product_wrt b3,b4 & cod b3 is terminal(b1)
holds b2,cod b4 are_isomorphic;
:: CAT_3:modenot 2 => CAT_3:mode 2
definition
let a1 be non void Category-like CatStr;
let a2 be Element of the Vertices of a1;
let a3 be set;
mode Injections_family of A2,A3 -> Function-like quasi_total Relation of a3,the Edges of a1 means
cods it = a3 --> a2;
end;
:: CAT_3:dfs 16
definiens
let a1 be non void Category-like CatStr;
let a2 be Element of the Vertices of a1;
let a3 be set;
let a4 be Function-like quasi_total Relation of a3,the Edges of a1;
To prove
a4 is Injections_family of a2,a3
it is sufficient to prove
thus cods a4 = a3 --> a2;
:: CAT_3:def 17
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3 being set
for b4 being Function-like quasi_total Relation of b3,the Edges of b1 holds
b4 is Injections_family of b2,b3
iff
cods b4 = b3 --> b2;
:: CAT_3:th 67
theorem
for b1, b2 being set
for b3 being non void Category-like CatStr
for b4 being Element of the Vertices of b3
for b5 being Injections_family of b4,b1
st b2 in b1
holds cod (b5 /. b2) = b4;
:: CAT_3:th 68
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3 being Function-like quasi_total Relation of {},the Edges of b1 holds
b3 is Injections_family of b2,{};
:: CAT_3:th 69
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Vertices of b2
for b4 being Element of the Edges of b2
st cod b4 = b3
holds b1 .--> b4 is Injections_family of b3,{b1};
:: CAT_3:th 70
theorem
for b1, b2 being set
for b3 being non void Category-like CatStr
for b4 being Element of the Vertices of b3
for b5, b6 being Element of the Edges of b3
st cod b5 = b4 & cod b6 = b4
holds (b1,b2)-->(b5,b6) is Injections_family of b4,{b1,b2};
:: CAT_3:th 72
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Vertices of b2
for b4 being Element of the Edges of b2
for b5 being Injections_family of b3,b1
st dom b4 = b3
holds b4 * b5 is Injections_family of cod b4,b1;
:: CAT_3:th 73
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Vertices of b2
for b4 being Injections_family of b3,b1
for b5 being Function-like quasi_total Relation of b1,the Edges of b2
st doms b4 = cods b5
holds b4 "*" b5 is Injections_family of b3,b1;
:: CAT_3:th 74
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Vertices of b2
for b4 being Function-like quasi_total Relation of b1,the Edges of b2 holds
b4 is Projections_family of b3,b1
iff
b4 opp is Injections_family of b3 opp,b1;
:: CAT_3:th 75
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Function-like quasi_total Relation of b1,the Edges of b2 opp
for b4 being Element of the Vertices of b2 opp holds
b3 is Injections_family of b4,b1
iff
opp b3 is Projections_family of opp b4,b1;
:: CAT_3:th 76
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Edges of b2
for b4 being Injections_family of dom b3,b1 holds
b4 opp * (b3 opp) = (b3 * b4) opp;
:: CAT_3:prednot 3 => CAT_3:pred 3
definition
let a1 be non void Category-like CatStr;
let a2 be Element of the Vertices of a1;
let a3 be set;
let a4 be Function-like quasi_total Relation of a3,the Edges of a1;
pred A2 is_a_coproduct_wrt A4 means
a4 is Injections_family of a2,a3 &
(for b1 being Element of the Vertices of a1
for b2 being Injections_family of b1,a3
st doms a4 = doms b2
holds ex b3 being Element of the Edges of a1 st
b3 in Hom(a2,b1) &
(for b4 being Element of the Edges of a1
st b4 in Hom(a2,b1)
holds for b5 being set
st b5 in a3
holds b4 * (a4 /. b5) = b2 /. b5
iff
b3 = b4));
end;
:: CAT_3:dfs 17
definiens
let a1 be non void Category-like CatStr;
let a2 be Element of the Vertices of a1;
let a3 be set;
let a4 be Function-like quasi_total Relation of a3,the Edges of a1;
To prove
a2 is_a_coproduct_wrt a4
it is sufficient to prove
thus a4 is Injections_family of a2,a3 &
(for b1 being Element of the Vertices of a1
for b2 being Injections_family of b1,a3
st doms a4 = doms b2
holds ex b3 being Element of the Edges of a1 st
b3 in Hom(a2,b1) &
(for b4 being Element of the Edges of a1
st b4 in Hom(a2,b1)
holds for b5 being set
st b5 in a3
holds b4 * (a4 /. b5) = b2 /. b5
iff
b3 = b4));
:: CAT_3:def 18
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3 being set
for b4 being Function-like quasi_total Relation of b3,the Edges of b1 holds
b2 is_a_coproduct_wrt b4
iff
b4 is Injections_family of b2,b3 &
(for b5 being Element of the Vertices of b1
for b6 being Injections_family of b5,b3
st doms b4 = doms b6
holds ex b7 being Element of the Edges of b1 st
b7 in Hom(b2,b5) &
(for b8 being Element of the Edges of b1
st b8 in Hom(b2,b5)
holds for b9 being set
st b9 in b3
holds b8 * (b4 /. b9) = b6 /. b9
iff
b7 = b8));
:: CAT_3:th 77
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Vertices of b2
for b4 being Function-like quasi_total Relation of b1,the Edges of b2 holds
b3 is_a_product_wrt b4
iff
b3 opp is_a_coproduct_wrt b4 opp;
:: CAT_3:th 78
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3, b4 being Element of the Vertices of b2
for b5 being Injections_family of b3,b1
for b6 being Injections_family of b4,b1
st b3 is_a_coproduct_wrt b5 & b4 is_a_coproduct_wrt b6 & doms b5 = doms b6
holds b3,b4 are_isomorphic;
:: CAT_3:th 79
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Vertices of b2
for b4 being Injections_family of b3,b1
st b3 is_a_coproduct_wrt b4 &
(for b5, b6 being set
st b5 in b1 & b6 in b1
holds Hom(dom (b4 /. b5),dom (b4 /. b6)) <> {})
for b5 being set
st b5 in b1
holds b4 /. b5 is coretraction(b2);
:: CAT_3:th 80
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3, b4 being Element of the Vertices of b2
for b5 being Element of the Edges of b2
for b6 being Injections_family of b3,b1
st b3 is_a_coproduct_wrt b6 & dom b5 = b3 & cod b5 = b4 & b5 is invertible(b2)
holds b4 is_a_coproduct_wrt b5 * b6;
:: CAT_3:th 81
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3 being Injections_family of b2,{} holds
b2 is_a_coproduct_wrt b3
iff
b2 is initial(b1);
:: CAT_3:th 82
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Vertices of b2 holds
b3 is_a_coproduct_wrt b1 .--> id b3;
:: CAT_3:th 83
theorem
for b1 being set
for b2 being non void Category-like CatStr
for b3 being Element of the Vertices of b2
for b4 being Injections_family of b3,b1
st b3 is_a_coproduct_wrt b4 &
(for b5 being set
st b5 in b1
holds dom (b4 /. b5) is initial(b2))
holds b3 is initial(b2);
:: CAT_3:prednot 4 => CAT_3:pred 4
definition
let a1 be non void Category-like CatStr;
let a2 be Element of the Vertices of a1;
let a3, a4 be Element of the Edges of a1;
pred A2 is_a_coproduct_wrt A3,A4 means
cod a3 = a2 &
cod a4 = a2 &
(for b1 being Element of the Vertices of a1
for b2, b3 being Element of the Edges of a1
st b2 in Hom(dom a3,b1) & b3 in Hom(dom a4,b1)
holds ex b4 being Element of the Edges of a1 st
b4 in Hom(a2,b1) &
(for b5 being Element of the Edges of a1
st b5 in Hom(a2,b1)
holds b5 * a3 = b2 & b5 * a4 = b3
iff
b4 = b5));
end;
:: CAT_3:dfs 18
definiens
let a1 be non void Category-like CatStr;
let a2 be Element of the Vertices of a1;
let a3, a4 be Element of the Edges of a1;
To prove
a2 is_a_coproduct_wrt a3,a4
it is sufficient to prove
thus cod a3 = a2 &
cod a4 = a2 &
(for b1 being Element of the Vertices of a1
for b2, b3 being Element of the Edges of a1
st b2 in Hom(dom a3,b1) & b3 in Hom(dom a4,b1)
holds ex b4 being Element of the Edges of a1 st
b4 in Hom(a2,b1) &
(for b5 being Element of the Edges of a1
st b5 in Hom(a2,b1)
holds b5 * a3 = b2 & b5 * a4 = b3
iff
b4 = b5));
:: CAT_3:def 19
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3, b4 being Element of the Edges of b1 holds
b2 is_a_coproduct_wrt b3,b4
iff
cod b3 = b2 &
cod b4 = b2 &
(for b5 being Element of the Vertices of b1
for b6, b7 being Element of the Edges of b1
st b6 in Hom(dom b3,b5) & b7 in Hom(dom b4,b5)
holds ex b8 being Element of the Edges of b1 st
b8 in Hom(b2,b5) &
(for b9 being Element of the Edges of b1
st b9 in Hom(b2,b5)
holds b9 * b3 = b6 & b9 * b4 = b7
iff
b8 = b9));
:: CAT_3:th 84
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3, b4 being Element of the Edges of b1 holds
b2 is_a_product_wrt b3,b4
iff
b2 opp is_a_coproduct_wrt b3 opp,b4 opp;
:: CAT_3:th 85
theorem
for b1, b2 being set
for b3 being non void Category-like CatStr
for b4 being Element of the Vertices of b3
for b5, b6 being Element of the Edges of b3
st b1 <> b2
holds b4 is_a_coproduct_wrt b5,b6
iff
b4 is_a_coproduct_wrt (b1,b2)-->(b5,b6);
:: CAT_3:th 86
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Vertices of b1
for b4, b5, b6, b7 being Element of the Edges of b1
st b2 is_a_coproduct_wrt b4,b5 & b3 is_a_coproduct_wrt b6,b7 & dom b4 = dom b6 & dom b5 = dom b7
holds b2,b3 are_isomorphic;
:: CAT_3:th 87
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(b4,b3) <> {}
for b5 being Morphism of b2,b3
for b6 being Morphism of b4,b3 holds
b3 is_a_coproduct_wrt b5,b6
iff
for b7 being Element of the Vertices of b1
st Hom(b2,b7) <> {} & Hom(b4,b7) <> {}
holds Hom(b3,b7) <> {} &
(for b8 being Morphism of b2,b7
for b9 being Morphism of b4,b7 holds
ex b10 being Morphism of b3,b7 st
for b11 being Morphism of b3,b7 holds
b11 * b5 = b8 & b11 * b6 = b9
iff
b10 = b11);
:: CAT_3:th 88
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3, b4 being Element of the Edges of b1
st b2 is_a_coproduct_wrt b3,b4 & Hom(dom b3,dom b4) <> {} & Hom(dom b4,dom b3) <> {}
holds b3 is coretraction(b1) & b4 is coretraction(b1);
:: CAT_3:th 89
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3, b4, b5 being Element of the Edges of b1
st b2 is_a_coproduct_wrt b3,b4 & b5 in Hom(b2,b2) & b5 * b3 = b3 & b5 * b4 = b4
holds b5 = id b2;
:: CAT_3:th 90
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Vertices of b1
for b4, b5, b6 being Element of the Edges of b1
st b2 is_a_coproduct_wrt b4,b5 & dom b6 = b2 & cod b6 = b3 & b6 is invertible(b1)
holds b3 is_a_coproduct_wrt b6 * b4,b6 * b5;
:: CAT_3:th 91
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3, b4 being Element of the Edges of b1
st b2 is_a_coproduct_wrt b3,b4 & dom b4 is initial(b1)
holds dom b3,b2 are_isomorphic;
:: CAT_3:th 92
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1
for b3, b4 being Element of the Edges of b1
st b2 is_a_coproduct_wrt b3,b4 & dom b3 is initial(b1)
holds dom b4,b2 are_isomorphic;