let X be set ; :: thesis: for f1, f2 being complex-valued Function holds
( (f1 (#) f2) | X = (f1 | X) (#) (f2 | X) & (f1 (#) f2) | X = (f1 | X) (#) f2 & (f1 (#) f2) | X = f1 (#) (f2 | X) )

let f1, f2 be complex-valued Function; :: thesis: ( (f1 (#) f2) | X = (f1 | X) (#) (f2 | X) & (f1 (#) f2) | X = (f1 | X) (#) f2 & (f1 (#) f2) | X = f1 (#) (f2 | X) )
A1: now :: thesis: for c being object st c in dom ((f1 (#) f2) | X) holds
((f1 (#) f2) | X) . c = ((f1 | X) (#) (f2 | X)) . c
let c be object ; :: thesis: ( c in dom ((f1 (#) f2) | X) implies ((f1 (#) f2) | X) . c = ((f1 | X) (#) (f2 | X)) . c )
assume A2: c in dom ((f1 (#) f2) | X) ; :: thesis: ((f1 (#) f2) | X) . c = ((f1 | X) (#) (f2 | X)) . c
then A3: c in (dom (f1 (#) f2)) /\ X by RELAT_1:61;
then A4: c in X by XBOOLE_0:def 4;
c in dom (f1 (#) f2) by A3, XBOOLE_0:def 4;
then A5: c in (dom f1) /\ (dom f2) by VALUED_1:def 4;
then c in dom f1 by XBOOLE_0:def 4;
then c in (dom f1) /\ X by A4, XBOOLE_0:def 4;
then A6: c in dom (f1 | X) by RELAT_1:61;
c in dom f2 by A5, XBOOLE_0:def 4;
then c in (dom f2) /\ X by A4, XBOOLE_0:def 4;
then A7: c in dom (f2 | X) by RELAT_1:61;
thus ((f1 (#) f2) | X) . c = (f1 (#) f2) . c by A2, FUNCT_1:47
.= (f1 . c) * (f2 . c) by VALUED_1:5
.= ((f1 | X) . c) * (f2 . c) by A6, FUNCT_1:47
.= ((f1 | X) . c) * ((f2 | X) . c) by A7, FUNCT_1:47
.= ((f1 | X) (#) (f2 | X)) . c by VALUED_1:5 ; :: thesis: verum
end;
dom ((f1 (#) f2) | X) = (dom (f1 (#) f2)) /\ X by RELAT_1:61
.= ((dom f1) /\ (dom f2)) /\ (X /\ X) by VALUED_1:def 4
.= (dom f1) /\ ((dom f2) /\ (X /\ X)) by XBOOLE_1:16
.= (dom f1) /\ (((dom f2) /\ X) /\ X) by XBOOLE_1:16
.= (dom f1) /\ (X /\ (dom (f2 | X))) by RELAT_1:61
.= ((dom f1) /\ X) /\ (dom (f2 | X)) by XBOOLE_1:16
.= (dom (f1 | X)) /\ (dom (f2 | X)) by RELAT_1:61
.= dom ((f1 | X) (#) (f2 | X)) by VALUED_1:def 4 ;
hence (f1 (#) f2) | X = (f1 | X) (#) (f2 | X) by A1, FUNCT_1:2; :: thesis: ( (f1 (#) f2) | X = (f1 | X) (#) f2 & (f1 (#) f2) | X = f1 (#) (f2 | X) )
A8: now :: thesis: for c being object st c in dom ((f1 (#) f2) | X) holds
((f1 (#) f2) | X) . c = ((f1 | X) (#) f2) . c
let c be object ; :: thesis: ( c in dom ((f1 (#) f2) | X) implies ((f1 (#) f2) | X) . c = ((f1 | X) (#) f2) . c )
assume A9: c in dom ((f1 (#) f2) | X) ; :: thesis: ((f1 (#) f2) | X) . c = ((f1 | X) (#) f2) . c
then A10: c in (dom (f1 (#) f2)) /\ X by RELAT_1:61;
then c in dom (f1 (#) f2) by XBOOLE_0:def 4;
then c in (dom f1) /\ (dom f2) by VALUED_1:def 4;
then A11: c in dom f1 by XBOOLE_0:def 4;
c in X by A10, XBOOLE_0:def 4;
then c in (dom f1) /\ X by A11, XBOOLE_0:def 4;
then A12: c in dom (f1 | X) by RELAT_1:61;
thus ((f1 (#) f2) | X) . c = (f1 (#) f2) . c by A9, FUNCT_1:47
.= (f1 . c) * (f2 . c) by VALUED_1:5
.= ((f1 | X) . c) * (f2 . c) by A12, FUNCT_1:47
.= ((f1 | X) (#) f2) . c by VALUED_1:5 ; :: thesis: verum
end;
dom ((f1 (#) f2) | X) = (dom (f1 (#) f2)) /\ X by RELAT_1:61
.= ((dom f1) /\ (dom f2)) /\ X by VALUED_1:def 4
.= ((dom f1) /\ X) /\ (dom f2) by XBOOLE_1:16
.= (dom (f1 | X)) /\ (dom f2) by RELAT_1:61
.= dom ((f1 | X) (#) f2) by VALUED_1:def 4 ;
hence (f1 (#) f2) | X = (f1 | X) (#) f2 by A8, FUNCT_1:2; :: thesis: (f1 (#) f2) | X = f1 (#) (f2 | X)
A13: now :: thesis: for c being object st c in dom ((f1 (#) f2) | X) holds
((f1 (#) f2) | X) . c = (f1 (#) (f2 | X)) . c
let c be object ; :: thesis: ( c in dom ((f1 (#) f2) | X) implies ((f1 (#) f2) | X) . c = (f1 (#) (f2 | X)) . c )
assume A14: c in dom ((f1 (#) f2) | X) ; :: thesis: ((f1 (#) f2) | X) . c = (f1 (#) (f2 | X)) . c
then A15: c in (dom (f1 (#) f2)) /\ X by RELAT_1:61;
then c in dom (f1 (#) f2) by XBOOLE_0:def 4;
then c in (dom f1) /\ (dom f2) by VALUED_1:def 4;
then A16: c in dom f2 by XBOOLE_0:def 4;
c in X by A15, XBOOLE_0:def 4;
then c in (dom f2) /\ X by A16, XBOOLE_0:def 4;
then A17: c in dom (f2 | X) by RELAT_1:61;
thus ((f1 (#) f2) | X) . c = (f1 (#) f2) . c by A14, FUNCT_1:47
.= (f1 . c) * (f2 . c) by VALUED_1:5
.= (f1 . c) * ((f2 | X) . c) by A17, FUNCT_1:47
.= (f1 (#) (f2 | X)) . c by VALUED_1:5 ; :: thesis: verum
end;
dom ((f1 (#) f2) | X) = (dom (f1 (#) f2)) /\ X by RELAT_1:61
.= ((dom f1) /\ (dom f2)) /\ X by VALUED_1:def 4
.= (dom f1) /\ ((dom f2) /\ X) by XBOOLE_1:16
.= (dom f1) /\ (dom (f2 | X)) by RELAT_1:61
.= dom (f1 (#) (f2 | X)) by VALUED_1:def 4 ;
hence (f1 (#) f2) | X = f1 (#) (f2 | X) by A13, FUNCT_1:2; :: thesis: verum