let C be non empty transitive associative AltCatStr ; :: thesis: for o1, o2, o3 being Object of C st <^o1,o2^> <> {} & <^o2,o3^> <> {} holds
for A being Morphism of o1,o2
for B being Morphism of o2,o3 st B * A is mono holds
A is mono

let o1, o2, o3 be Object of C; :: thesis: ( <^o1,o2^> <> {} & <^o2,o3^> <> {} implies for A being Morphism of o1,o2
for B being Morphism of o2,o3 st B * A is mono holds
A is mono )

assume A1: ( <^o1,o2^> <> {} & <^o2,o3^> <> {} ) ; :: thesis: for A being Morphism of o1,o2
for B being Morphism of o2,o3 st B * A is mono holds
A is mono

let A be Morphism of o1,o2; :: thesis: for B being Morphism of o2,o3 st B * A is mono holds
A is mono

let B be Morphism of o2,o3; :: thesis: ( B * A is mono implies A is mono )
assume A2: B * A is mono ; :: thesis: A is mono
let o be Object of C; :: according to ALTCAT_3:def 7 :: thesis: ( <^o,o1^> <> {} implies for B, C being Morphism of o,o1 st A * B = A * C holds
B = C )

assume A3: <^o,o1^> <> {} ; :: thesis: for B, C being Morphism of o,o1 st A * B = A * C holds
B = C

let M1, M2 be Morphism of o,o1; :: thesis: ( A * M1 = A * M2 implies M1 = M2 )
assume A4: A * M1 = A * M2 ; :: thesis: M1 = M2
( (B * A) * M1 = B * (A * M1) & (B * A) * M2 = B * (A * M2) ) by A1, A3, ALTCAT_1:21;
hence M1 = M2 by A2, A3, A4; :: thesis: verum