reserve S for non empty non void ManySortedSign;
reserve X for non-empty ManySortedSet of S;
reserve x,y,z for set, i,j for Nat;
reserve
  A0 for (X,S)-terms non-empty MSAlgebra over S,
  A1 for all_vars_including (X,S)-terms MSAlgebra over S,
  A2 for all_vars_including inheriting_operations (X,S)-terms MSAlgebra over S,
  A for all_vars_including inheriting_operations free_in_itself
  (X,S)-terms MSAlgebra over S;
reserve X0 for non-empty countable ManySortedSet of S;
reserve A0 for all_vars_including inheriting_operations free_in_itself
  (X0,S)-terms MSAlgebra over S;

theorem Th66:
  for o being OperSymbol of S
  for x being Element of Args(o,A) holds
  for x0 being Element of Args(o,Free(S,X)) st x0 = x holds
  (canonical_homomorphism A)#x0 = x
  proof:: set A = A0;
    let o be OperSymbol of S;
    let x be Element of Args(o,A);
    let x0 be Element of Args(o,Free(S,X));
    assume A1: x0 = x;
    set k = canonical_homomorphism A;
    now
      let n being Nat;
      assume
A2:   n in dom x0;
A3:   dom x = dom the_arity_of o by MSUALG_3:6; then
A4:   (the_arity_of o)/.n = (the_arity_of o).n by A1,A2,PARTFUN1:def 6;
      dom ((the Sorts of A)*the_arity_of o) = dom x by A3,PRALG_2:3; then
      x .n in ((the Sorts of A)*the_arity_of o).n by A1,A2,MSUALG_3:6; then
      x .n is Element of A, (the_arity_of o)/.n by A4,A2,A1,A3,FUNCT_1:13;
      hence x .n = k.((the_arity_of o)/.n).(x0.n) by A1,Th47;
    end;
    hence (canonical_homomorphism A)#x0 = x by MSUALG_3:def 6;
  end;
