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,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,V holds (f1 (#) f2) (#) f3 = f1 (#) (f2 (#) f3)

let f1, f2 be PartFunc of M,COMPLEX; :: thesis: for f3 being PartFunc of M,V holds (f1 (#) f2) (#) f3 = f1 (#) (f2 (#) f3)
let f3 be PartFunc of M,V; :: thesis: (f1 (#) f2) (#) f3 = f1 (#) (f2 (#) f3)
A1: dom ((f1 (#) f2) (#) f3) = (dom (f1 (#) f2)) /\ (dom f3) by Def1
.= ((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 Def1
.= dom (f1 (#) (f2 (#) f3)) by Def1 ;
now :: thesis: for x being Element of M st x in dom ((f1 (#) f2) (#) f3) holds
((f1 (#) f2) (#) f3) /. x = (f1 (#) (f2 (#) f3)) /. x
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 (#) f2)) /\ (dom f3) by Def1;
then A3: x in dom (f1 (#) f2) by XBOOLE_0:def 4;
A4: dom (f1 (#) f2) = (dom f1) /\ (dom f2) by VALUED_1:def 4;
then x in dom f1 by A3, XBOOLE_0:def 4;
then A5: f1 . x = f1 /. x by PARTFUN1:def 6;
x in dom f2 by A3, A4, XBOOLE_0:def 4;
then A6: f2 . x = f2 /. x by PARTFUN1:def 6;
A7: (f1 (#) f2) /. x = (f1 (#) f2) . x by A3, PARTFUN1:def 6
.= (f1 /. x) * (f2 /. x) by A3, A5, A6, VALUED_1:def 4 ;
x in (dom f1) /\ (dom (f2 (#) f3)) by A1, A2, Def1;
then A8: x in dom (f2 (#) f3) by XBOOLE_0:def 4;
thus ((f1 (#) f2) (#) f3) /. x = ((f1 (#) f2) /. x) * (f3 /. x) by A2, Def1
.= (f1 /. x) * ((f2 /. x) * (f3 /. x)) by A7, CLVECT_1:def 4
.= (f1 /. x) * ((f2 (#) f3) /. x) by A8, Def1
.= (f1 (#) (f2 (#) f3)) /. x by A1, A2, Def1 ; :: thesis: verum
end;
hence (f1 (#) f2) (#) f3 = f1 (#) (f2 (#) f3) by A1, PARTFUN2:1; :: thesis: verum