
theorem Th31:
  for G1, G2 being Group for f being Homomorphism of G1, G2 st f
  is one-to-one holds FuncLatt f is Semilattice-Homomorphism of lattice G1,
  lattice G2
proof
  let G1, G2 be Group;
  let f be Homomorphism of G1, G2 such that
A1: f is one-to-one;
  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
A2: A1 = a by Th2;
    consider B1 being strict Subgroup of G1 such that
A3: B1 = b by Th2;
    thus thesis
    proof
A4:   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
A5:     g1 in f.:the carrier of B1 and
A6:     g2 in f.:the carrier of B1;
        consider x being Element of G1 such that
A7:     x in the carrier of B1 and
A8:     g1 = f.x by A5,FUNCT_2:65;
        consider y being Element of G1 such that
A9:     y in the carrier of B1 and
A10:    g2 = f.y by A6,FUNCT_2:65;
A11:    y in B1 by A9,STRUCT_0:def 5;
        x in B1 by A7,STRUCT_0:def 5;
        then x * y in B1 by A11,GROUP_2:50;
        then
A12:    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 A8,A10,A12,FUNCT_2:35;
      end;
A13:  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
A14:    x in the carrier of B1 and
A15:    g = f.x by FUNCT_2:65;
        x in B1 by A14,STRUCT_0:def 5;
        then x" in B1 by GROUP_2:51;
        then
A16:    x" in the carrier of B1 by STRUCT_0:def 5;
        f.x" = (f.x)" by GROUP_6:32;
        hence thesis by A15,A16,FUNCT_2:35;
      end;
A17:  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
A18:    x in the carrier of A1 and
A19:    g = f.x by FUNCT_2:65;
        x in A1 by A18,STRUCT_0:def 5;
        then x" in A1 by GROUP_2:51;
        then
A20:    x" in the carrier of A1 by STRUCT_0:def 5;
        f.x" = (f.x)" by GROUP_6:32;
        hence thesis by A19,A20,FUNCT_2:35;
      end;
      1_G1 in A1 by GROUP_2:46;
      then
A21:  1_G1 in the carrier of A1 by STRUCT_0:def 5;
A22:  (FuncLatt f).(A1 /\ B1) = gr (f.:the carrier of A1 /\ B1) by Def3;
      consider C1 being strict Subgroup of G1 such that
A23:  C1 = A1 /\ B1;
A24:  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
A25:    g1 in f.:the carrier of A1 and
A26:    g2 in f.:the carrier of A1;
        consider x being Element of G1 such that
A27:    x in the carrier of A1 and
A28:    g1 = f.x by A25,FUNCT_2:65;
        consider y being Element of G1 such that
A29:    y in the carrier of A1 and
A30:    g2 = f.y by A26,FUNCT_2:65;
A31:    y in A1 by A29,STRUCT_0:def 5;
        x in A1 by A27,STRUCT_0:def 5;
        then x * y in A1 by A31,GROUP_2:50;
        then
A32:    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 A28,A30,A32,FUNCT_2:35;
      end;
      1_G1 in B1 by GROUP_2:46;
      then
A33:  1_G1 in the carrier of B1 by STRUCT_0:def 5;
A34:  (FuncLatt f).a = gr (f.:the carrier of A1) & (FuncLatt f).b = gr (f
      .:the carrier of B1) by A2,A3,Def3;
A35:  dom f = the carrier of G1 by FUNCT_2:def 1;
A36:  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
A37:    g1 in f.:the carrier of C1 and
A38:    g2 in f.:the carrier of C1;
        consider x being Element of G1 such that
A39:    x in the carrier of C1 and
A40:    g1 = f.x by A37,FUNCT_2:65;
        consider y being Element of G1 such that
A41:    y in the carrier of C1 and
A42:    g2 = f.y by A38,FUNCT_2:65;
A43:    y in C1 by A41,STRUCT_0:def 5;
        x in C1 by A39,STRUCT_0:def 5;
        then x * y in C1 by A43,GROUP_2:50;
        then
A44:    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 A40,A42,A44,FUNCT_2:35;
      end;
A45:  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
A46:    x in the carrier of C1 and
A47:    g = f.x by FUNCT_2:65;
        x in C1 by A46,STRUCT_0:def 5;
        then x" in C1 by GROUP_2:51;
        then
A48:    x" in the carrier of C1 by STRUCT_0:def 5;
        f.x" = (f.x)" by GROUP_6:32;
        hence thesis by A47,A48,FUNCT_2:35;
      end;
      1_G1 in C1 by GROUP_2:46;
      then
A49:  1_G1 in the carrier of C1 by STRUCT_0:def 5;
      ex y2 being Element of G2 st y2 = f.1_G1;
      then f.:the carrier of C1 <> {} by A35,A49,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 A45,A36,GROUP_2:52;
      ex y1 being Element of G2 st y1 = f.1_G1;
      then f.:the carrier of B1 <> {} by A35,A33,FUNCT_1:def 6;
      then consider B3 being strict Subgroup of G2 such that
A51:  the carrier of B3 = f.:the carrier of B1 by A13,A4,GROUP_2:52;
      ex y being Element of G2 st y = f.1_G1;
      then f.:the carrier of A1 <> {} by A35,A21,FUNCT_1:def 6;
      then consider A3 being strict Subgroup of G2 such that
A52:  the carrier of A3 = f.:the carrier of A1 by A17,A24,GROUP_2:52;
A53:  the carrier of C3 c= the carrier of A3 /\ B3
      proof
A54:    f.:the carrier of A1 /\ B1 c= f.:the carrier of B1
        proof
          let x be object;
          assume
A55:      x in f.:the carrier of A1 /\ B1;
          then reconsider x as Element of G2;
          consider y being Element of G1 such that
A56:      y in the carrier of A1 /\ B1 and
A57:      x = f.y by A55,FUNCT_2:65;
          y in (the carrier of A1) /\ the carrier of B1 by A56,Th1;
          then y in the carrier of B1 by XBOOLE_0:def 4;
          hence thesis by A57,FUNCT_2:35;
        end;
A58:    f.:the carrier of A1 /\ B1 c= f.:the carrier of A1
        proof
          let x be object;
          assume
A59:      x in f.:the carrier of A1 /\ B1;
          then reconsider x as Element of G2;
          consider y being Element of G1 such that
A60:      y in the carrier of A1 /\ B1 and
A61:      x = f.y by A59,FUNCT_2:65;
          y in (the carrier of A1) /\ the carrier of B1 by A60,Th1;
          then y in the carrier of A1 by XBOOLE_0:def 4;
          hence thesis by A61,FUNCT_2:35;
        end;
        let x be object;
        assume
A62:    x in the carrier of C3;
        the carrier of C3 c= the carrier of G2 by GROUP_2:def 5;
        then reconsider x as Element of G2 by A62;
        consider y being Element of G1 such that
A63:    y in the carrier of A1 /\ B1 and
A64:    x = f.y by A23,A50,A62,FUNCT_2:65;
        f.y in f.:the carrier of A1 /\ B1 by A63,FUNCT_2:35;
        then f.y in (the carrier of A3) /\ the carrier of B3 by A52,A51,A58,A54
,XBOOLE_0:def 4;
        hence thesis by A64,Th1;
      end;
A65:  gr (f.:the carrier of B1) = B3 by A51,Th3;
      the carrier of A3 /\ B3 c= the carrier of C3
      proof
        let x be object;
        assume x in the carrier of A3 /\ B3;
        then x in (the carrier of A3) /\ the carrier of B3 by Th1;
        then
        x in f.:((the carrier of A1) /\ the carrier of B1) by A1,A52,A51,
FUNCT_1:62;
        hence thesis by A23,A50,Th1;
      end;
      then the carrier of A3 /\ B3 = the carrier of C3 by A53;
      then gr (f.:the carrier of A1 /\ B1) = A3 /\ B3 by A23,A50,Th3
        .= gr (f.:the carrier of A1) /\ gr (f.:the carrier of B1) by A52,A65
,Th3
        .= (FuncLatt f).a "/\" (FuncLatt f).b by A34,Th23;
      hence thesis by A2,A3,A22,Th23;
    end;
  end;
  hence thesis by LATTICE4:def 2;
end;
