reserve U1,U2,U3 for Universal_Algebra,
  n,m for Nat,
  x,y,z for object,
  A,B for non empty set,
  h1 for FinSequence of [:A,B:];
reserve h1 for homogeneous quasi_total non empty PartFunc of
    (the carrier of U1)*,the carrier of U1,
  h2 for homogeneous quasi_total non empty PartFunc of
    (the carrier of U2)*,the carrier of U2;

theorem Th1:
  U1,U2 are_similar implies
    UAStr (# [:the carrier of U1,the carrier of U2:], Opers(U1,U2) #)
      is strict Universal_Algebra
proof
  set C = UAStr(# [:the carrier of U1,the carrier of U2:], Opers(U1,U2) #);
A1: dom Opers(U1,U2) = Seg len Opers(U1,U2) by FINSEQ_1:def 3;
  assume
A2: U1,U2 are_similar;
  then
A3: dom the charact of(U2) = Seg len the charact of(U2) & len the charact of
  (U2) = len the charact of(U1) by FINSEQ_1:def 3,UNIALG_2:1;
A4: len Opers(U1,U2) = len the charact of(U1) by A2,Def4;
A5: dom the charact of(U1) = Seg len the charact of(U1) by FINSEQ_1:def 3;
A6: the charact of(C) is quasi_total
  proof
    let n;
    let h be PartFunc of (the carrier of C)*,(the carrier of C);
    assume that
A7: n in dom the charact of(C) and
A8: h = (the charact of(C)).n;
    reconsider h2=(the charact of(U2)).n as homogeneous quasi_total non empty
PartFunc of (the carrier of U2)*,the carrier of U2 by A1,A4,A3,A7,
MARGREL1:def 24;
    reconsider h1=(the charact of U1).n as homogeneous quasi_total non empty
PartFunc of (the carrier of U1)*,the carrier of U1 by A1,A5,A4,A7,
MARGREL1:def 24;
    h = [[:h1,h2:]] by A2,A7,A8,Def4;
    hence thesis;
  end;
A9: the charact of(C) is non-empty
  proof
    let n be object;
    set h = (the charact of(C)).n;
    assume
A10: n in dom the charact of(C);
    then reconsider m = n as Element of NAT;
    reconsider h2=(the charact of(U2)).m as homogeneous quasi_total non empty
PartFunc of (the carrier of U2)*,the carrier of U2 by A1,A4,A3,A10,
MARGREL1:def 24;
    reconsider h1=(the charact of(U1)).m as homogeneous quasi_total non empty
PartFunc of (the carrier of U1)*,the carrier of U1 by A1,A5,A4,A10,
MARGREL1:def 24;
    h = [[:h1,h2:]] by A2,A10,Def4;
    hence thesis;
  end;
A11: the charact of(C) is homogeneous
  proof
    let n;
    let h be PartFunc of (the carrier of C)*,the carrier of C;
    assume that
A12: n in dom the charact of(C) and
A13: h = (the charact of(C)).n;
    reconsider h2=(the charact of(U2)).n as homogeneous quasi_total non empty
PartFunc of (the carrier of U2)*,the carrier of U2 by A1,A4,A3,A12,
MARGREL1:def 24;
    reconsider h1=(the charact of(U1)).n as homogeneous quasi_total non empty
PartFunc of (the carrier of U1)*,the carrier of U1 by A1,A5,A4,A12,
MARGREL1:def 24;
    h = [[:h1,h2:]] by A2,A12,A13,Def4;
    hence thesis;
  end;
  the charact of(C) <> {} by A4;
  hence thesis by A6,A11,A9,UNIALG_1:def 1,def 2,def 3;
end;
