reserve x,X,Y for set;
reserve C for non empty set;
reserve c for Element of C;
reserve V for RealNormSpace;
reserve f,f1,f2,f3 for PartFunc of C,V;
reserve r,r1,r2,p for Real;

theorem
  for f1 be PartFunc of C,REAL holds
  (f1(#)f2)|X = f1|X (#) f2|X & (f1(#)f2)|X = f1|X (#) f2 &
  (f1(#)f2)|X = f1 (#) f2|X
proof
  let f1 be PartFunc of C,REAL;
A1: now
    let c;
    assume
A2: c in dom ((f1(#)f2)|X);
    then
A3: c in dom (f1(#)f2) /\ X by RELAT_1:61;
    then
A4: c in X by XBOOLE_0:def 4;
A5: c in dom (f1(#)f2) by A3,XBOOLE_0:def 4;
    then
A6: c in dom f1 /\ dom f2 by Def3;
    then c in dom f2 by 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;
    c in dom f1 by A6,XBOOLE_0:def 4;
    then c in dom f1 /\ X by A4,XBOOLE_0:def 4;
    then
A8: c in dom (f1|X) by RELAT_1:61;
    then c in dom (f1|X) /\ dom (f2|X) by A7,XBOOLE_0:def 4;
    then
A9: c in dom ((f1|X) (#) (f2|X)) by Def3;
    thus ((f1(#)f2)|X)/.c = (f1(#)f2)/.c by A2,PARTFUN2:15
      .= (f1.c) * (f2/.c) by A5,Def3
      .= ((f1|X).c) * (f2/.c) by A8,FUNCT_1:47
      .= ((f1|X).c) * ((f2|X)/.c) by A7,PARTFUN2:15
      .= ((f1|X)(#)(f2|X))/.c by A9,Def3;
  end;
  dom ((f1(#)f2)|X) = dom (f1(#)f2) /\ X by RELAT_1:61
    .= dom f1 /\ dom f2 /\ (X /\ X) by Def3
    .= 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 Def3;
  hence (f1(#)f2)|X = f1|X (#) f2|X by A1,PARTFUN2:1;
A10: now
    let c;
    assume
A11: c in dom ((f1(#)f2)|X);
    then
A12: c in dom (f1(#)f2) /\ X by RELAT_1:61;
    then
A13: c in X by XBOOLE_0:def 4;
A14: c in dom (f1(#)f2) by A12,XBOOLE_0:def 4;
    then
A15: c in dom f1 /\ dom f2 by Def3;
    then c in dom f1 by XBOOLE_0:def 4;
    then c in dom f1 /\ X by A13,XBOOLE_0:def 4;
    then
A16: c in dom (f1|X) by RELAT_1:61;
    c in dom f2 by A15,XBOOLE_0:def 4;
    then c in dom (f1|X) /\ dom f2 by A16,XBOOLE_0:def 4;
    then
A17: c in dom ((f1|X) (#) f2) by Def3;
    thus ((f1(#)f2)|X)/.c = (f1(#)f2)/.c by A11,PARTFUN2:15
      .= (f1.c) * (f2/.c) by A14,Def3
      .= ((f1|X).c) * (f2/.c) by A16,FUNCT_1:47
      .= ((f1|X)(#)f2)/.c by A17,Def3;
  end;
  dom ((f1(#)f2)|X) = dom (f1(#)f2) /\ X by RELAT_1:61
    .= dom f1 /\ dom f2 /\ X by Def3
    .= dom f1 /\ X /\ dom f2 by XBOOLE_1:16
    .= dom (f1|X) /\ dom f2 by RELAT_1:61
    .= dom ((f1|X)(#) f2) by Def3;
  hence (f1(#)f2)|X = f1|X (#) f2 by A10,PARTFUN2:1;
A18: now
    let c;
    assume
A19: c in dom ((f1(#)f2)|X);
    then
A20: c in dom (f1(#)f2) /\ X by RELAT_1:61;
    then
A21: c in X by XBOOLE_0:def 4;
A22: c in dom (f1(#)f2) by A20,XBOOLE_0:def 4;
    then
A23: c in dom f1 /\ dom f2 by Def3;
    then c in dom f2 by XBOOLE_0:def 4;
    then c in dom f2 /\ X by A21,XBOOLE_0:def 4;
    then
A24: c in dom (f2|X) by RELAT_1:61;
    c in dom f1 by A23,XBOOLE_0:def 4;
    then c in dom f1 /\ dom (f2|X) by A24,XBOOLE_0:def 4;
    then
A25: c in dom (f1 (#) (f2|X)) by Def3;
    thus ((f1(#)f2)|X)/.c = (f1(#)f2)/.c by A19,PARTFUN2:15
      .= (f1.c) * (f2/.c) by A22,Def3
      .= (f1.c) * ((f2|X)/.c) by A24,PARTFUN2:15
      .= (f1(#)(f2|X))/.c by A25,Def3;
  end;
  dom ((f1(#)f2)|X) = dom (f1(#)f2) /\ X by RELAT_1:61
    .= dom f1 /\ dom f2 /\ X by Def3
    .= dom f1 /\ (dom f2 /\ X) by XBOOLE_1:16
    .= dom f1 /\ dom (f2|X) by RELAT_1:61
    .= dom (f1 (#) (f2|X)) by Def3;
  hence thesis by A18,PARTFUN2:1;
end;
