reserve U0,U1,U2,U3 for Universal_Algebra,
  n for Nat,
  x,y for set;
reserve A for non empty Subset of U0,
  o for operation of U0,
  x1,y1 for FinSequence of A;

theorem Th20:
  for U0 be Universal_Algebra, U1 be SubAlgebra of U0, A,B be
  Subset of U0 st (A <> {} or Constants(U0) <> {}) & B = A \/ the carrier of U1
  holds GenUnivAlg(A) "\/" U1 = GenUnivAlg(B)
proof
  let U0 be Universal_Algebra, U1 be SubAlgebra of U0, A,B be Subset of U0;
  reconsider u1 = the carrier of U1, a = the carrier of GenUnivAlg(A) as non
  empty Subset of U0 by Def7;
  assume that
A1: A <> {} or Constants(U0) <> {} and
A2: B = A \/ the carrier of U1;
A3: A c= the carrier of GenUnivAlg(A) by Def12;
A4: B c= the carrier of GenUnivAlg(B) by Def12;
  A c=B by A2,XBOOLE_1:7;
  then
A5: A c= the carrier of GenUnivAlg( B) by A4;
  now
    per cases by A1;
    case
      A <> {};
      hence
      (the carrier of GenUnivAlg(A)) /\ (the carrier of GenUnivAlg(B)) <>
      {} by A3,A5,XBOOLE_1:3,19;
    end;
    case
A6:   Constants(U0) <> {};
      Constants(U0) is Subset of GenUnivAlg(A) & Constants(U0) is Subset
      of GenUnivAlg(B) by Th15;
      hence
      (the carrier of GenUnivAlg(A)) /\ (the carrier of GenUnivAlg(B)) <>
      {} by A6,XBOOLE_1:3,19;
    end;
  end;
  then (the carrier of GenUnivAlg(A)) meets (the carrier of GenUnivAlg(B));
  then
A7: the carrier of (GenUnivAlg(A) /\ GenUnivAlg(B)) = (the carrier of
  GenUnivAlg(A)) /\ (the carrier of GenUnivAlg(B)) by Def9;
  reconsider b=a \/ u1 as non empty Subset of U0;
A8: (the carrier of GenUnivAlg(A)) /\ (the carrier of GenUnivAlg(B)) c= a
  by XBOOLE_1:17;
  A c= (the carrier of GenUnivAlg(A)) /\ (the carrier of GenUnivAlg(B) )
  by A3,A5,XBOOLE_1:19;
  then GenUnivAlg(A) is SubAlgebra of (GenUnivAlg(A) /\ GenUnivAlg(B)) by A1,A7
,Def12;
  then a is non empty Subset of (GenUnivAlg(A) /\ GenUnivAlg(B)) by Def7;
  then a= (the carrier of GenUnivAlg(A)) /\ (the carrier of GenUnivAlg(B)) by
A7,A8;
  then
A9: a c= the carrier of GenUnivAlg(B) by XBOOLE_1:17;
  u1 c= B by A2,XBOOLE_1:7;
  then u1 c= the carrier of GenUnivAlg(B) by A4;
  then b c= the carrier of GenUnivAlg(B) by A9,XBOOLE_1:8;
  then
A10: GenUnivAlg(b) is strict SubAlgebra of GenUnivAlg(B) by Def12;
A11: (GenUnivAlg(A) "\/" U1) = GenUnivAlg(b) by Def13;
  then
A12: a \/ u1 c= the carrier of (GenUnivAlg(A)"\/"U1) by Def12;
  A \/ u1 c= a \/ u1 by A3,XBOOLE_1:13;
  then B c=the carrier of (GenUnivAlg(A)"\/"U1) by A2,A12;
  then GenUnivAlg(B) is strict SubAlgebra of (GenUnivAlg(A)"\/"U1) by A2,Def12;
  hence thesis by A11,A10,Th10;
end;
