reserve A,B,C for Ordinal,
  K,L,M,N for Cardinal,
  x,y,y1,y2,z,u for object,X,Y,Z,Z1,Z2 for set,
  n for Nat,
  f,f1,g,h for Function,
  Q,R for Relation;
reserve ff for Cardinal-Function;
reserve F,G for Cardinal-Function;
reserve A,B for set;

theorem
  for A, B being non empty set for f being Function of A,B
  holds sproduct f = sproduct(f|{x where x is Element of A: f.x <> {} })
proof
  let A, B be non empty set;
  let f be Function of A,B;
  set X = {x where x is Element of A: f.x <> {} };
  thus sproduct f c= sproduct(f|X)
  proof
    let x be object;
    assume x in sproduct f;
    then consider g such that
A1: x = g and
A2: dom g c= dom f and
A3: for x being object st x in dom g holds g.x in f.x by Def9;
A4: now
      let x;
      assume
A5:   x in dom g;
      then reconsider a = x as Element of A by A2,FUNCT_2:def 1;
      f.a <> {} by A3,A5;
      hence x in X;
    end;
A6: now
      let x;
      assume
A7:   x in dom g;
      then x in X by A4;
      hence x in (dom f)/\ X by A2,A7,XBOOLE_0:def 4;
    end;
A8: dom g c= dom(f|X)
    proof
      let x be object;
      assume x in dom g;
      then x in (dom f)/\ X by A6;
      hence thesis by RELAT_1:61;
    end;
    now
      let x be object;
      assume
A9:   x in dom g;
      then g.x in f.x by A3;
      hence g.x in (f|X).x by A6,A9,FUNCT_1:48;
    end;
    hence thesis by A1,A8,Def9;
  end;
  thus thesis by Th56,RELAT_1:59;
end;
