
theorem Th32:
  for G1, G2 being Group for f being Homomorphism of G1, G2 holds
  FuncLatt f is sup-Semilattice-Homomorphism of lattice G1, lattice G2
proof
  let G1, G2 be Group;
  let f be Homomorphism of G1, G2;
  for a, b being Element of lattice G1 holds (FuncLatt f).(a "\/" b) = (
  FuncLatt f).a "\/" (FuncLatt f).b
  proof
    let a, b be Element of lattice G1;
    consider A1 being strict Subgroup of G1 such that
A1: A1 = a by Th2;
    consider B1 being strict Subgroup of G1 such that
A2: B1 = b by Th2;
    thus thesis
    proof
A3:   for g being Element of G2 st g in f.:the carrier of B1 holds g" in
      f.:the carrier of B1
      proof
        let g be Element of G2;
        assume g in f.:the carrier of B1;
        then consider x being Element of G1 such that
A4:     x in the carrier of B1 and
A5:     g = f.x by FUNCT_2:65;
        x in B1 by A4,STRUCT_0:def 5;
        then x" in B1 by GROUP_2:51;
        then
A6:     x" in the carrier of B1 by STRUCT_0:def 5;
        f.x" = (f.x)" by GROUP_6:32;
        hence thesis by A5,A6,FUNCT_2:35;
      end;
      1_G1 in A1 by GROUP_2:46;
      then
A7:   1_G1 in the carrier of A1 by STRUCT_0:def 5;
A8:   ex y being Element of G2 st y = f.1_G1;
      the carrier of A1 c= the carrier of G1 & the carrier of B1 c= the
      carrier of G1 by GROUP_2:def 5;
      then reconsider
      A = (the carrier of A1) \/ the carrier of B1 as Subset of G1
      by XBOOLE_1:8;
A9:   for g being Element of G2 st g in f.:the carrier of A1 holds g" in
      f.:the carrier of A1
      proof
        let g be Element of G2;
        assume g in f.:the carrier of A1;
        then consider x being Element of G1 such that
A10:    x in the carrier of A1 and
A11:    g = f.x by FUNCT_2:65;
        x in A1 by A10,STRUCT_0:def 5;
        then x" in A1 by GROUP_2:51;
        then
A12:    x" in the carrier of A1 by STRUCT_0:def 5;
        f.x" = (f.x)" by GROUP_6:32;
        hence thesis by A11,A12,FUNCT_2:35;
      end;
      reconsider B = (f.:the carrier of A1) \/ f.:the carrier of B1 as Subset
      of G2;
A13:  dom f = the carrier of G1 by FUNCT_2:def 1;
A14:  for g1, g2 being Element of G2 st g1 in f.:the carrier of B1 & g2
      in f.:the carrier of B1 holds g1 * g2 in f.:the carrier of B1
      proof
        let g1, g2 be Element of G2;
        assume that
A15:    g1 in f.:the carrier of B1 and
A16:    g2 in f.:the carrier of B1;
        consider x being Element of G1 such that
A17:    x in the carrier of B1 and
A18:    g1 = f.x by A15,FUNCT_2:65;
        consider y being Element of G1 such that
A19:    y in the carrier of B1 and
A20:    g2 = f.y by A16,FUNCT_2:65;
A21:    y in B1 by A19,STRUCT_0:def 5;
        x in B1 by A17,STRUCT_0:def 5;
        then x * y in B1 by A21,GROUP_2:50;
        then
A22:    x * y in the carrier of B1 by STRUCT_0:def 5;
        f.(x * y) = f.x * f.y by GROUP_6:def 6;
        hence thesis by A18,A20,A22,FUNCT_2:35;
      end;
      1_G1 in B1 by GROUP_2:46;
      then
A23:  1_G1 in the carrier of B1 by STRUCT_0:def 5;
A24:  (FuncLatt f).(A1 "\/" B1) = gr (f.:the carrier of A1 "\/" B1) by Def3;
      ex y1 being Element of G2 st y1 = f.1_G1;
      then f.:the carrier of B1 <> {} by A13,A23,FUNCT_1:def 6;
      then consider B3 being strict Subgroup of G2 such that
A25:  the carrier of B3 = f.:the carrier of B1 by A3,A14,GROUP_2:52;
A26:  for g1, g2 being Element of G2 st g1 in f.:the carrier of A1 & g2
      in f.:the carrier of A1 holds g1 * g2 in f.:the carrier of A1
      proof
        let g1, g2 be Element of G2;
        assume that
A27:    g1 in f.:the carrier of A1 and
A28:    g2 in f.:the carrier of A1;
        consider x being Element of G1 such that
A29:    x in the carrier of A1 and
A30:    g1 = f.x by A27,FUNCT_2:65;
        consider y being Element of G1 such that
A31:    y in the carrier of A1 and
A32:    g2 = f.y by A28,FUNCT_2:65;
A33:    y in A1 by A31,STRUCT_0:def 5;
        x in A1 by A29,STRUCT_0:def 5;
        then x * y in A1 by A33,GROUP_2:50;
        then
A34:    x * y in the carrier of A1 by STRUCT_0:def 5;
        f.(x * y) = f.x * f.y by GROUP_6:def 6;
        hence thesis by A30,A32,A34,FUNCT_2:35;
      end;
A35:  (FuncLatt f).a = gr (f.:the carrier of A1) & (FuncLatt f).b = gr (f
      .:the carrier of B1) by A1,A2,Def3;
      consider C1 being strict Subgroup of G1 such that
A36:  C1 = A1 "\/" B1;
A37:  for g1, g2 being Element of G2 st g1 in f.:the carrier of C1 & g2
      in f.:the carrier of C1 holds g1 * g2 in f.:the carrier of C1
      proof
        let g1, g2 be Element of G2;
        assume that
A38:    g1 in f.:the carrier of C1 and
A39:    g2 in f.:the carrier of C1;
        consider x being Element of G1 such that
A40:    x in the carrier of C1 and
A41:    g1 = f.x by A38,FUNCT_2:65;
        consider y being Element of G1 such that
A42:    y in the carrier of C1 and
A43:    g2 = f.y by A39,FUNCT_2:65;
A44:    y in C1 by A42,STRUCT_0:def 5;
        x in C1 by A40,STRUCT_0:def 5;
        then x * y in C1 by A44,GROUP_2:50;
        then
A45:    x * y in the carrier of C1 by STRUCT_0:def 5;
        f.(x * y) = f.x * f.y by GROUP_6:def 6;
        hence thesis by A41,A43,A45,FUNCT_2:35;
      end;
A46:  for g being Element of G2 st g in f.:the carrier of C1 holds g" in
      f.:the carrier of C1
      proof
        let g be Element of G2;
        assume g in f.:the carrier of C1;
        then consider x being Element of G1 such that
A47:    x in the carrier of C1 and
A48:    g = f.x by FUNCT_2:65;
        x in C1 by A47,STRUCT_0:def 5;
        then x" in C1 by GROUP_2:51;
        then
A49:    x" in the carrier of C1 by STRUCT_0:def 5;
        f.x" = (f.x)" by GROUP_6:32;
        hence thesis by A48,A49,FUNCT_2:35;
      end;
      1_G1 in C1 by GROUP_2:46;
      then 1_G1 in the carrier of C1 by STRUCT_0:def 5;
      then f.:the carrier of C1 <> {} by A13,A8,FUNCT_1:def 6;
      then consider C3 being strict Subgroup of G2 such that
A50:  the carrier of C3 = f.:the carrier of C1 by A46,A37,GROUP_2:52;
      ex y being Element of G2 st y = f.1_G1;
      then f.:the carrier of A1 <> {} by A13,A7,FUNCT_1:def 6;
      then consider A3 being strict Subgroup of G2 such that
A51:  the carrier of A3 = f.:the carrier of A1 by A9,A26,GROUP_2:52;
A52:  gr (f.:the carrier of B1) = B3 by A25,Th3;
      the carrier of A3 "\/" B3 = the carrier of C3
      proof
A53:    f.:the carrier of B1 c= the carrier of C3
        proof
          let x be object;
          assume
A54:      x in f.:the carrier of B1;
          then reconsider x as Element of G2;
          consider y being Element of G1 such that
A55:      y in the carrier of B1 and
A56:      x = f.y by A54,FUNCT_2:65;
          y in A by A55,XBOOLE_0:def 3;
          then y in gr A by GROUP_4:29;
          then y in the carrier of gr A by STRUCT_0:def 5;
          then y in the carrier of A1 "\/" B1 by Th4;
          hence thesis by A36,A50,A56,FUNCT_2:35;
        end;
        f.:the carrier of A1 c= the carrier of C3
        proof
          let x be object;
          assume
A57:      x in f.:the carrier of A1;
          then reconsider x as Element of G2;
          consider y being Element of G1 such that
A58:      y in the carrier of A1 and
A59:      x = f.y by A57,FUNCT_2:65;
          y in A by A58,XBOOLE_0:def 3;
          then y in gr A by GROUP_4:29;
          then y in the carrier of gr A by STRUCT_0:def 5;
          then y in the carrier of A1 "\/" B1 by Th4;
          hence thesis by A36,A50,A59,FUNCT_2:35;
        end;
        then B c= the carrier of C3 by A53,XBOOLE_1:8;
        then gr B is Subgroup of C3 by GROUP_4:def 4;
        then the carrier of gr B c= the carrier of C3 by GROUP_2:def 5;
        hence the carrier of A3 "\/" B3 c= the carrier of C3 by A51,A25,Th4;
        reconsider AA = (f"the carrier of A3) \/ f"the carrier of B3 as Subset
        of G1;
A60:    for g being Element of G1 st g in f"the carrier of A3 "\/" B3
        holds g" in f"the carrier of A3 "\/" B3
        proof
          let g be Element of G1;
          assume g in f"the carrier of A3 "\/" B3;
          then f.g in the carrier of A3 "\/" B3 by FUNCT_2:38;
          then f.g in A3 "\/" B3 by STRUCT_0:def 5;
          then (f.g)" in A3 "\/" B3 by GROUP_2:51;
          then f.g" in A3 "\/" B3 by GROUP_6:32;
          then f.g" in the carrier of A3 "\/" B3 by STRUCT_0:def 5;
          hence thesis by FUNCT_2:38;
        end;
        the carrier of B1 c= the carrier of G1 by GROUP_2:def 5;
        then
A61:    the carrier of B1 c= f"the carrier of B3 by A25,FUNCT_2:42;
        the carrier of A1 c= the carrier of G1 by GROUP_2:def 5;
        then the carrier of A1 c= f"the carrier of A3 by A51,FUNCT_2:42;
        then
A62:    A c= AA by A61,XBOOLE_1:13;
A63:    for g1, g2 being Element of G1 st g1 in f"the carrier of A3 "\/"
B3 & g2 in f"the carrier of A3 "\/" B3 holds g1 * g2 in f"the carrier of A3
        "\/" B3
        proof
          let g1, g2 be Element of G1;
          assume that
A64:      g1 in f"the carrier of A3 "\/" B3 and
A65:      g2 in f"the carrier of A3 "\/" B3;
          f.g2 in the carrier of A3 "\/" B3 by A65,FUNCT_2:38;
          then
A66:      f.g2 in A3 "\/" B3 by STRUCT_0:def 5;
          f.g1 in the carrier of A3 "\/" B3 by A64,FUNCT_2:38;
          then f.g1 in A3 "\/" B3 by STRUCT_0:def 5;
          then f.g1 * f.g2 in A3 "\/" B3 by A66,GROUP_2:50;
          then f.(g1 * g2) in A3 "\/" B3 by GROUP_6:def 6;
          then f.(g1 * g2) in the carrier of A3 "\/" B3 by STRUCT_0:def 5;
          hence thesis by FUNCT_2:38;
        end;
A67:    f"the carrier of B3 c= f"the carrier of A3 "\/" B3
        proof
          let x be object;
          assume
A68:      x in f"the carrier of B3;
          then f.x in the carrier of B3 by FUNCT_2:38;
          then
A69:      f.x in B3 by STRUCT_0:def 5;
          f.x in the carrier of G2 by A68,FUNCT_2:5;
          then f.x in A3 "\/" B3 by A69,Th5;
          then f.x in the carrier of A3 "\/" B3 by STRUCT_0:def 5;
          hence thesis by A68,FUNCT_2:38;
        end;
        1_G2 in A3 "\/" B3 by GROUP_2:46;
        then 1_G2 in the carrier of A3 "\/" B3 by STRUCT_0:def 5;
        then f.1_G1 in the carrier of A3 "\/" B3 by GROUP_6:31;
        then f"the carrier of A3 "\/" B3 <> {} by FUNCT_2:38;
        then consider H being strict Subgroup of G1 such that
A70:    the carrier of H = f"the carrier of A3 "\/" B3 by A60,A63,GROUP_2:52;
        f"the carrier of A3 c= f"the carrier of A3 "\/" B3
        proof
          let x be object;
          assume
A71:      x in f"the carrier of A3;
          then f.x in the carrier of A3 by FUNCT_2:38;
          then
A72:      f.x in A3 by STRUCT_0:def 5;
          f.x in the carrier of G2 by A71,FUNCT_2:5;
          then f.x in A3 "\/" B3 by A72,Th5;
          then f.x in the carrier of A3 "\/" B3 by STRUCT_0:def 5;
          hence thesis by A71,FUNCT_2:38;
        end;
        then (f"the carrier of A3) \/ f"the carrier of B3 c= f"the carrier of
        A3 "\/" B3 by A67,XBOOLE_1:8;
        then A c= the carrier of H by A62,A70;
        then gr A is Subgroup of H by GROUP_4:def 4;
        then the carrier of gr A c= the carrier of H by GROUP_2:def 5;
        then
A73:    the carrier of C1 c= f"the carrier of A3 "\/" B3 by A36,A70,Th4;
A74:    f.:the carrier of C1 c= f.:(f"the carrier of A3 "\/" B3)
        proof
          let x be object;
          assume
A75:      x in f.:the carrier of C1;
          then reconsider x as Element of G2;
          ex y being Element of G1 st y in the carrier of C1 & x = f.y by A75,
FUNCT_2:65;
          hence thesis by A73,FUNCT_2:35;
        end;
        f.:f"the carrier of A3 "\/" B3 c= the carrier of A3 "\/" B3 by
FUNCT_1:75;
        hence thesis by A50,A74;
      end;
      then gr (f.:the carrier of A1 "\/" B1) = A3 "\/" B3 by A36,A50,Th3
        .= gr (f.:the carrier of A1) "\/" gr (f.:the carrier of B1) by A51,A52
,Th3
        .= (FuncLatt f).a "\/" (FuncLatt f).b by A35,Th22;
      hence thesis by A1,A2,A24,Th22;
    end;
  end;
  hence thesis by LATTICE4:def 1;
end;
