reserve x,y for object,
        D,D1,D2 for non empty set,
        i,j,k,m,n for Nat,
        f,g for FinSequence of D*,
        f1 for FinSequence of D1*,
        f2 for FinSequence of D2*;
reserve f for complex-valued Function,
        g,h for complex-valued FinSequence;

theorem
   for f be Function-yielding Function holds
     f is double-one-to-one iff
       (for x holds f.x is one-to-one)
         &
        for x,y st x<>y holds rng (f.x) misses rng (f.y)
proof
  let f be Function-yielding Function;
  thus f is double-one-to-one implies
    (for x holds f.x is one-to-one)&
    for x,y st x<>y holds rng (f.x) misses rng (f.y)
  proof
    assume A1:f is double-one-to-one;
    hence for x holds f.x is one-to-one;
    let x,y;
    assume A2:x<>y;
    assume rng (f.x) meets rng (f.y);
    then consider z be object such that
    A3: z in rng (f.x) & z in rng (f.y) by XBOOLE_0:3;
    consider w1 be object such that
    A4:w1 in dom (f.x) & (f.x).w1 = z by A3,FUNCT_1:def 3;
    consider w2 be object such that
    A5:w2 in dom (f.y) & (f.y).w2 = z by A3,FUNCT_1:def 3;
    A6:f_(x,w1)=f_(y,w2) by A4,A5;
    A7:x in dom f
    proof
      assume not x in dom f;
      then f.x={} by FUNCT_1:def 2;
      hence thesis by A4;
    end;
    y in dom f
    proof
      assume not y in dom f;
      then f.y={} by FUNCT_1:def 2;
      hence thesis by A5;
    end;
    hence thesis by A4,A5,A1,A6,A7,A2;
  end;
  assume that A8:for x holds f.x is one-to-one
         and
              A9:for x,y st x<>y holds rng (f.x) misses rng (f.y);
  let x1,x2,y1,y2 be object such that
  A10:   x1 in dom f & y1 in dom (f.x1) &
         x2 in dom f & y2 in dom (f.x2) & f_(x1,y1)=f_(x2,y2);
  A11:f.x1.y1 in rng (f.x1) by A10,FUNCT_1:def 3;
  f.x2.y2 in rng (f.x2) by A10,FUNCT_1:def 3;
  then x1=x2 & f.x1.y1=f.x2.y2 & f.x1 is one-to-one
    by A11,A10,XBOOLE_0:3,A8,A9;
  hence thesis by A10;
end;
