reserve A for set,
  C for non empty set,
  B for Subset of A,
  x for Element of A,
  f,g for Function of A,C;
reserve B for Element of Fin A;
reserve L for non empty LattStr,
  a,b,c for Element of L;
reserve L for Lattice;
reserve a,b,c,u,v for Element of L;
reserve A for non empty set,
  x for Element of A,
  B for Element of Fin A,
  f,g for Function of A, the carrier of L;
reserve L for 0_Lattice,
  f,g for Function of A, the carrier of L,
  u for Element of L;
reserve L for 1_Lattice,
  f,g for Function of A, the carrier of L,
  u for Element of L;
reserve L for D0_Lattice,
  f,g for (Function of A, the carrier of L),
  u for Element of L;

theorem
  (for x st x in B holds g.x = u "/\" f.x) implies u "/\" FinJoin(B,f) =
  FinJoin(B,g)
proof
  reconsider G = ((the L_meet of L)[;](u,f)) +* (g|B) as Function of A, the
  carrier of L by Th3;
  dom (g|B) = B by Th9;
  then
A1: G|B = g|B by FUNCT_4:23;
  assume
A2: for x st x in B holds g.x = u "/\" f.x;
  now
    let x;
    assume x in B;
    hence g.x = u "/\" f.x by A2
      .= ((the L_meet of L)[;](u,f)).x by FUNCOP_1:53;
  end;
  then G = (the L_meet of L)[;](u,f) by Th10;
  hence u "/\" FinJoin(B,f) = FinJoin(B,G) by Th64
    .= FinJoin(B,g) by A1,Th53;
end;
