reserve
  a,b for object, I,J for set, f for Function, R for Relation,
  i,j,n for Nat, m for (Element of NAT),
  S for non empty non void ManySortedSign,
  s,s1,s2 for SortSymbol of S,
  o for OperSymbol of S,
  X for non-empty ManySortedSet of the carrier of S,
  x,x1,x2 for (Element of X.s), x11 for (Element of X.s1),
  T for all_vars_including inheriting_operations free_in_itself
  (X,S)-terms MSAlgebra over S,
  g for Translation of Free(S,X),s1,s2,
  h for Endomorphism of Free(S,X);
reserve
  r,r1,r2 for (Element of T),
  t,t1,t2 for (Element of Free(S,X));
reserve
  Y for infinite-yielding ManySortedSet of the carrier of S,
  y,y1 for (Element of Y.s), y11 for (Element of Y.s1),
  Q for all_vars_including inheriting_operations free_in_itself
  (Y,S)-terms MSAlgebra over S,
  q,q1 for (Element of Args(o,Free(S,Y))),
  u,u1,u2 for (Element of Q),
  v,v1,v2 for (Element of Free(S,Y)),
  Z for non-trivial ManySortedSet of the carrier of S,
  z,z1 for (Element of Z.s),
  l,l1 for (Element of Free(S,Z)),
  R for all_vars_including inheriting_operations free_in_itself
  (Z,S)-terms MSAlgebra over S,
  k,k1 for Element of Args(o,Free(S,Z));

theorem Lem12:
  for F being Function-yielding Function, f being Function holds
  doms(F+*(a,f)) = (doms F)+*(a, dom f)
  proof
    let F be Function-yielding Function;
    let f be Function;
A1: dom doms(F+*(a,f)) = dom (F+*(a,f)) = dom F = dom doms F
    = dom((doms F)+*(a, dom f)) by FUNCT_6:def 2,FUNCT_7:30;
    hence dom doms(F+*(a,f)) = dom((doms F)+*(a, dom f));
    let b; assume
A2: b in dom doms(F+*(a,f));
    then
A3: doms(F+*(a,f)).b = dom ((F+*(a,f)).b) by A1,FUNCT_6:def 2;
    per cases;
    suppose
A4:   a = b;
      hence doms(F+*(a,f)).b = dom f by A1,A2,A3,FUNCT_7:31
      .= ((doms F)+*(a, dom f)).b by A1,A2,A4,FUNCT_7:31;
    end;
    suppose
A4:   a <> b;
      hence doms(F+*(a,f)).b = dom (F.b) by A3,FUNCT_7:32
      .= (doms F).b by A1,A2,FUNCT_6:def 2
      .= ((doms F)+*(a, dom f)).b by A4,FUNCT_7:32;
    end;
  end;
