let M be non empty set ; :: thesis: for V being ComplexNormSpace
for f1, f2 being PartFunc of M,COMPLEX
for f3 being PartFunc of M,the carrier of V holds (f1 (#) f2) (#) f3 = f1 (#) (f2 (#) f3)

let V be ComplexNormSpace; :: thesis: for f1, f2 being PartFunc of M,COMPLEX
for f3 being PartFunc of M,the carrier of V holds (f1 (#) f2) (#) f3 = f1 (#) (f2 (#) f3)

let f1, f2 be PartFunc of M,COMPLEX ; :: thesis: for f3 being PartFunc of M,the carrier of V holds (f1 (#) f2) (#) f3 = f1 (#) (f2 (#) f3)
let f3 be PartFunc of M,the carrier of V; :: thesis: (f1 (#) f2) (#) f3 = f1 (#) (f2 (#) f3)
A1: dom ((f1 (#) f2) (#) f3) = (dom (f1 (#) f2)) /\ (dom f3) by Def3
.= ((dom f1) /\ (dom f2)) /\ (dom f3) by VALUED_1:def 4
.= (dom f1) /\ ((dom f2) /\ (dom f3)) by XBOOLE_1:16
.= (dom f1) /\ (dom (f2 (#) f3)) by Def3
.= dom (f1 (#) (f2 (#) f3)) by Def3 ;
now
let x be Element of M; :: thesis: ( x in dom ((f1 (#) f2) (#) f3) implies ((f1 (#) f2) (#) f3) /. x = (f1 (#) (f2 (#) f3)) /. x )
assume A2: x in dom ((f1 (#) f2) (#) f3) ; :: thesis: ((f1 (#) f2) (#) f3) /. x = (f1 (#) (f2 (#) f3)) /. x
then x in (dom f1) /\ (dom (f2 (#) f3)) by A1, Def3;
then A3: x in dom (f2 (#) f3) by XBOOLE_0:def 4;
x in (dom (f1 (#) f2)) /\ (dom f3) by A2, Def3;
then A4: x in dom (f1 (#) f2) by XBOOLE_0:def 4;
dom (f1 (#) f2) = (dom f1) /\ (dom f2) by VALUED_1:def 4;
then ( x in dom f1 & x in dom f2 ) by A4, XBOOLE_0:def 4;
then A5: ( f1 . x = f1 /. x & f2 . x = f2 /. x ) by PARTFUN1:def 8;
A6: (f1 (#) f2) /. x = (f1 (#) f2) . x by A4, PARTFUN1:def 8
.= (f1 /. x) * (f2 /. x) by A4, A5, VALUED_1:def 4 ;
thus ((f1 (#) f2) (#) f3) /. x = ((f1 (#) f2) /. x) * (f3 /. x) by A2, Def3
.= (f1 /. x) * ((f2 /. x) * (f3 /. x)) by A6, CLVECT_1:def 2
.= (f1 /. x) * ((f2 (#) f3) /. x) by A3, Def3
.= (f1 (#) (f2 (#) f3)) /. x by A1, A2, Def3 ; :: thesis: verum
end;
hence (f1 (#) f2) (#) f3 = f1 (#) (f2 (#) f3) by A1, PARTFUN2:3; :: thesis: verum