reconsider X = {0,1} as set ;
set comp = {[[0,0],0],[[0,1],1]};
A1:
for x, y1, y2 being object st [x,y1] in {[[0,0],0],[[0,1],1]} & [x,y2] in {[[0,0],0],[[0,1],1]} holds
y1 = y2
proof
let x,
y1,
y2 be
object ;
( [x,y1] in {[[0,0],0],[[0,1],1]} & [x,y2] in {[[0,0],0],[[0,1],1]} implies y1 = y2 )
assume A2:
[x,y1] in {[[0,0],0],[[0,1],1]}
;
( not [x,y2] in {[[0,0],0],[[0,1],1]} or y1 = y2 )
assume A3:
[x,y2] in {[[0,0],0],[[0,1],1]}
;
y1 = y2
end;
for x being object st x in {[[0,0],0],[[0,1],1]} holds
x in [:[:X,X:],X:]
proof
let x be
object ;
( x in {[[0,0],0],[[0,1],1]} implies x in [:[:X,X:],X:] )
assume A8:
x in {[[0,0],0],[[0,1],1]}
;
x in [:[:X,X:],X:]
end;
then reconsider comp = {[[0,0],0],[[0,1],1]} as PartFunc of [:X,X:],X by A1, TARSKI:def 3, FUNCT_1:def 1;
set C = CategoryStr(# X,comp #);
A13:
for f1, f2 being morphism of CategoryStr(# X,comp #) holds
( not f1 |> f2 or ( f1 = 0 & f2 = 0 & f1 (*) f2 = 0 ) or ( f1 = 0 & f2 = 1 & f1 (*) f2 = 1 ) )
proof
let f1,
f2 be
morphism of
CategoryStr(#
X,
comp #);
( not f1 |> f2 or ( f1 = 0 & f2 = 0 & f1 (*) f2 = 0 ) or ( f1 = 0 & f2 = 1 & f1 (*) f2 = 1 ) )
assume A14:
f1 |> f2
;
( ( f1 = 0 & f2 = 0 & f1 (*) f2 = 0 ) or ( f1 = 0 & f2 = 1 & f1 (*) f2 = 1 ) )
assume A15:
( not
f1 = 0 or not
f2 = 0 or not
f1 (*) f2 = 0 )
;
( f1 = 0 & f2 = 1 & f1 (*) f2 = 1 )
consider y being
object such that A16:
[[f1,f2],y] in the
composition of
CategoryStr(#
X,
comp #)
by A14, XTUPLE_0:def 12;
A17:
f1 (*) f2 =
the
composition of
CategoryStr(#
X,
comp #)
. (
f1,
f2)
by Def3, A14
.=
the
composition of
CategoryStr(#
X,
comp #)
. [f1,f2]
by BINOP_1:def 1
.=
y
by A16, FUNCT_1:1
;
end;
A18:
for f1, f2 being morphism of CategoryStr(# X,comp #) st f1 |> f2 holds
( f1 = 0 & ( f2 = 0 or f2 = 1 ) )
A20:
for f1, f2 being morphism of CategoryStr(# X,comp #) st f1 = 0 holds
f1 |> f2
for f, f1, f2 being morphism of CategoryStr(# X,comp #) st f1 |> f2 holds
( f1 (*) f2 |> f iff f2 |> f )
then A23:
CategoryStr(# X,comp #) is left_composable
;
for f, f1, f2 being morphism of CategoryStr(# X,comp #) st f1 |> f2 holds
( f |> f1 (*) f2 iff f |> f1 )
then A25:
CategoryStr(# X,comp #) is composable
by A23, Def9;
for f1 being morphism of CategoryStr(# X,comp #) st f1 in the carrier of CategoryStr(# X,comp #) holds
ex f being morphism of CategoryStr(# X,comp #) st
( f |> f1 & f is left_identity )
then A27:
CategoryStr(# X,comp #) is with_left_identities
;
ex f1 being morphism of CategoryStr(# X,comp #) st
( f1 in the carrier of CategoryStr(# X,comp #) & ( for f being morphism of CategoryStr(# X,comp #) st f1 |> f holds
not f is right_identity ) )
then A28:
not CategoryStr(# X,comp #) is with_right_identities
;
for f1, f2, f3 being morphism of CategoryStr(# X,comp #) st f1 |> f2 & f2 |> f3 & f1 (*) f2 |> f3 & f1 |> f2 (*) f3 holds
f1 (*) (f2 (*) f3) = (f1 (*) f2) (*) f3
hence
ex b1 being CategoryStr st
( b1 is with_left_identities & not b1 is with_right_identities & b1 is composable & b1 is associative )
by A25, A27, A28, Def10; verum