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));
reserve c,c1,c2 for set, d,d1 for DecoratedTree;
reserve
  w for (Element of Args(o,T)),
  p,p1 for Element of Args(o,Free(S,X));
reserve C for (context of x), C1 for (context of y), C9 for (context of z),
  C11 for (context of x11), C12 for (context of y11), D for context of s,X;
reserve
  S9 for sufficiently_rich non empty non void ManySortedSign,
  s9 for SortSymbol of S9,
  o9 for s9-dependent OperSymbol of S9,
  X9 for non-trivial ManySortedSet of the carrier of S9,
  x9 for (Element of X9.s9);
reserve h1 for x-constant Homomorphism of Free(S,X), T,
  h2 for y-constant Homomorphism of Free(S,Y), Q;

theorem
  Q is struct-invariant & v is y-omitting implies h2.v is y-omitting
  proof assume
Z0: Q is struct-invariant;
    defpred P[Element of Free(S,Y)] means
    $1 is y-omitting implies h2.$1 is y-omitting;
    set x0 = y; set s0 = s;
A1: for s, y holds P[y-term]
    proof let s,y; assume y-term is x0-omitting;
      then x0 <> y or s <> s0;
      hence thesis by CNST;
    end;
A2: for o, q st for v st v in rng q holds P[v]
    holds P[o-term q]
    proof
      let o, q;
      assume Z3: for v st v in rng q holds P[v];
      assume
Z4:   o-term q is y-omitting;
      canonical_homomorphism Q is_homomorphism Free(S,Y),Q by MSAFREE4:def 10;
      then
A3:   h2 is_homomorphism Free(S,Y),Q by HOMO;
      the_sort_of (o-term q) = the_result_sort_of o by Th8;
      then
A4:   h2.(o-term q) = h2.(the_result_sort_of o).(o-term q) by ABBR
      .= h2.(the_result_sort_of o).(Den(o,Free(S,Y)).q) by MSAFREE4:13
      .= Den(o,Q).(h2#q) by A3,MSUALG_3:def 7;
      for t being Element of Q st t in rng (h2#q) holds t is y-omitting
      proof
        let t be Element of Q;
A5:     dom q = dom the_arity_of o = dom (h2#q) by MSUALG_3:6;
        assume t in rng (h2#q);
        then consider i being object such that
A6:     i in dom q & t = (h2#q).i by A5,FUNCT_1:def 3;
        reconsider i as Nat by A6;
A8:     q.i = q/.i by A6,PARTFUN1:def 6;
        then q/.i in (the Sorts of Free(S,Y)).((the_arity_of o)/.i)
        by A5,A6,MSUALG_6:2;
        then
A7:     the_sort_of (q/.i) = (the_arity_of o)/.i by SORT;
A9:     t = h2.((the_arity_of o)/.i).(q/.i) by A6,A8,MSUALG_3:def 6
        .= h2.(q/.i) by A7,ABBR;
        q/.i is y-omitting & q/.i in rng q by Z4,A6,A8,Th54,FUNCT_1:def 3;
        hence t is y-omitting by A9,Z3;
      end;
      hence h2.(o-term q) is y-omitting by Z0,A4,Th77;
    end;
    thus P[v] from TermInd(A1,A2);
  end;
