reserve A, B for non empty preBoolean set,
  x, y for Element of [:A,B:];
reserve X for set,
  a,b,c for Element of [:A,B:];
reserve a for Element of [:Fin X, Fin X:];
reserve A for set;

theorem
  for X being non empty set for f being (Function of X,[:Fin A,Fin A:]),
  B being (Element of Fin X) for c being Element of [:Fin A, Fin A:] st for x
  being Element of X st x in B holds f.x c= c holds FinPairUnion(B,f) c= c
proof
  let X be non empty set, f be Function of X,[:Fin A,Fin A:];
  let B be (Element of Fin X), c be Element of [:Fin A, Fin A:];
  defpred P[Element of Fin X] means $1 c= B implies FinPairUnion A $$($1,f) c=
  c;
  assume
A1: for x being Element of X st x in B holds f.x c= c;
A2: now
    let C be (Element of Fin X), b be Element of X;
    assume
A3: P[C];
    now
      assume
A4:   C \/ {b} c= B;
      then {b} c= B by XBOOLE_1:11;
      then b in B by ZFMISC_1:31;
      then
A5:   f.b c= c by A1;
      FinPairUnion A $$(C \/ {.b.},f) = FinPairUnion A.(FinPairUnion A $$
      (C,f),f.b) by Th18,SETWISEO:32
        .= FinPairUnion A $$(C,f) \/ f.b by Def6;
      hence FinPairUnion A $$(C \/ {.b.},f) c= c by A3,A4,A5,Th9,XBOOLE_1:11;
    end;
    hence P[C \/ {.b.}];
  end;
A6: P[{}.X]
  proof
    assume {}.X c= B;
    FinPairUnion A $$({}.X,f) = the_unity_wrt FinPairUnion A by Th18,
SETWISEO:31;
    hence thesis by Th20;
  end;
  for C being Element of Fin X holds P[C] from SETWISEO:sch 4(A6,A2);
  hence thesis;
end;
