reserve i, j, k, c, m, n for Nat,
  a, x, y, z, X, Y for set,
  D, E for non empty set,
  R for Relation,
  f, g for Function,
  p, q for FinSequence;

theorem Th2:
  f+*(a,x) = g+*(a,y) implies f+*(a,z) = g+*(a,z)
proof
  set i = a;
  assume
A1: f+*(i,x) = g+*(i,y);
A2: dom (g+*(i,z)) = dom g by FUNCT_7:30;
A3: dom (g+*(i,y)) = dom g by FUNCT_7:30;
A4: dom (f+*(i,x)) = dom f by FUNCT_7:30;
  now
    thus dom (f+*(i,z)) = dom f by FUNCT_7:30;
    thus dom (g+*(i,z)) = dom f by A1,A3,A2,FUNCT_7:30;
    let a be object;
    assume
A5: a in dom f;
    per cases;
    suppose
A6:   a = i;
      hence (f+*(i,z)).a = z by A5,FUNCT_7:31
        .= (g+*(i,z)).a by A1,A4,A3,A5,A6,FUNCT_7:31;
    end;
    suppose
A7:   a <> i;
      hence (f+*(i,z)).a = f.a by FUNCT_7:32
        .= (g+*(i,y)).a by A1,A7,FUNCT_7:32
        .= g.a by A7,FUNCT_7:32
        .= (g+*(i,z)).a by A7,FUNCT_7:32;
    end;
  end;
  hence thesis;
end;
