reserve I for non empty set,
  J for ManySortedSet of I,
  S for non void non empty ManySortedSign,
  i for Element of I,
  c for set,
  A for MSAlgebra-Family of I,S,
  EqR for Equivalence_Relation of I,
  U0,U1,U2 for MSAlgebra over S,
  s for SortSymbol of S,
  o for OperSymbol of S,
  f for Function;

theorem
  for i be Element of I for A be MSAlgebra-Family of I,S holds proj(A,i)
  is_homomorphism product A,A.i
proof
  let i be Element of I;
  let A be MSAlgebra-Family of I,S;
  thus proj(A,i) is_homomorphism product A,A.i
  proof
    let o be OperSymbol of S such that
    Args(o,product A) <> {};
    let x be Element of Args(o,product A);
    set F = proj(A,i), s = the_result_sort_of o;
    o in the carrier' of S;
    then
A1: o in dom (the ResultSort of S) by FUNCT_2:def 1;
A2: Result(o,product A) = ((the Sorts of product A) * the ResultSort of S)
    .o by MSUALG_1:def 5
      .= (the Sorts of product A).((the ResultSort of S).o) by A1,FUNCT_1:13
      .= (SORTS A).s by MSUALG_1:def 2
      .= product Carrier(A,s) by PRALG_2:def 10;
    thus (F.s).(Den(o,product A).x) = Den(o,A.i).(F#x)
    proof
      per cases;
      suppose
A3:     the_arity_of o = {};
        then const(o,product A) in product(Carrier(A,s)) by A2,Th5;
        then
A4:     const(o,product A) in dom (proj (Carrier(A,s),i)) by CARD_3:def 16;
A5:     Args(o,product A) = {{}} by A3,PRALG_2:4;
        then
A6:     x = {} by TARSKI:def 1;
        (F.s).(Den(o,product A).x) = (F.s).(const(o,product A)) by A5,
TARSKI:def 1
          .= (proj (Carrier(A,s),i)).(const(o,product A)) by Def2
          .= (const(o,product A)).i by A4,CARD_3:def 16
          .= const(o,A.i) by A3,Th9
          .= Den(o,A.i).(F#x) by A3,A6,Th11;
        hence thesis;
      end;
      suppose
A7:     the_arity_of o <> {};
        reconsider D = (Den(o,product A).x) as Function by A2;
        (Den(o,product A).x) in product Carrier(A,s) by A2;
        then
A8:     (Den(o,product A).x) in dom (proj (Carrier(A,s),i)) by CARD_3:def 16;
        (F.s).(Den(o,product A).x) = (proj (Carrier(A,s),i)).(Den(o,
        product A).x) by Def2
          .= D.i by A8,CARD_3:def 16
          .= (Den(o,A.i)).((commute x).i) by A7,Th22
          .= (Den(o,A.i)).(proj(A,i)#x) by A7,Th23;
        hence thesis;
      end;
    end;
  end;
end;
