let a, b, c be Element of C; :: thesis: for f, g being Function st S2[a,b,f] & S2[b,c,g] holds
S2[a,c,g * f]

let f, g be Function; :: thesis: ( S2[a,b,f] & S2[b,c,g] implies S2[a,c,g * f] )
given fa, fb being object of C, ff being Morphism of fa,fb such that A2: ( fa = a & fb = b & <^fa,fb^> <> {} ) and
A3: for o being object of C st <^o,fa^> <> {} holds
for h being Morphism of o,fa holds f . [h,[o,fa]] = [(ff * h),[o,fb]] ; :: thesis: ( not S2[b,c,g] or S2[a,c,g * f] )
given ga, gb being object of C, gf being Morphism of ga,gb such that A4: ( ga = b & gb = c & <^ga,gb^> <> {} ) and
A5: for o being object of C st <^o,ga^> <> {} holds
for h being Morphism of o,ga holds g . [h,[o,ga]] = [(gf * h),[o,gb]] ; :: thesis: S2[a,c,g * f]
reconsider gf = gf as Morphism of fb,gb by A2, A4;
take fa ; :: thesis: ex fb being object of C ex g being Morphism of fa,fb st
( fa = a & fb = c & <^fa,fb^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds
for h being Morphism of o,fa holds (g * f) . [h,[o,fa]] = [(g * h),[o,fb]] ) )

take gb ; :: thesis: ex g being Morphism of fa,gb st
( fa = a & gb = c & <^fa,gb^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds
for h being Morphism of o,fa holds (g * f) . [h,[o,fa]] = [(g * h),[o,gb]] ) )

take k = gf * ff; :: thesis: ( fa = a & gb = c & <^fa,gb^> <> {} & ( for o being object of C st <^o,fa^> <> {} holds
for h being Morphism of o,fa holds (g * f) . [h,[o,fa]] = [(k * h),[o,gb]] ) )

thus ( fa = a & gb = c & <^fa,gb^> <> {} ) by A2, A4, ALTCAT_1:def 4; :: thesis: for o being object of C st <^o,fa^> <> {} holds
for h being Morphism of o,fa holds (g * f) . [h,[o,fa]] = [(k * h),[o,gb]]

let o be object of C; :: thesis: ( <^o,fa^> <> {} implies for h being Morphism of o,fa holds (g * f) . [h,[o,fa]] = [(k * h),[o,gb]] )
assume A6: <^o,fa^> <> {} ; :: thesis: for h being Morphism of o,fa holds (g * f) . [h,[o,fa]] = [(k * h),[o,gb]]
A7: <^o,fb^> <> {} by A2, A6, ALTCAT_1:def 4;
let h be Morphism of o,fa; :: thesis: (g * f) . [h,[o,fa]] = [(k * h),[o,gb]]
A8: f . [h,[o,fa]] = [(ff * h),[o,fb]] by A3, A6;
then [h,[o,fa]] in dom f by FUNCT_1:def 4;
hence (g * f) . [h,[o,fa]] = g . [(ff * h),[o,fb]] by A8, FUNCT_1:23
.= [(gf * (ff * h)),[o,gb]] by A2, A4, A5, A7
.= [(k * h),[o,gb]] by A2, A4, A6, ALTCAT_1:25 ;
:: thesis: verum