
theorem ThSPDM1:
  for L being Z_Lattice holds
  (for x being Vector of DivisibleMod(L)
  st for y being Vector of DivisibleMod(L) holds (ScProductDM(L)).(x, y) = 0
  holds x = 0.(DivisibleMod(L))) &
  (for x, y being Vector of DivisibleMod(L)
  holds (ScProductDM(L)).(x, y) = (ScProductDM(L)).(y, x)) &
  (for x, y, z being Vector of DivisibleMod(L), a being Element of INT.Ring
  holds (ScProductDM(L)).(x+y, z) =
  (ScProductDM(L)).(x, z) + (ScProductDM(L)).(y, z)
  & (ScProductDM(L)).(a*x, y) = a * (ScProductDM(L)).(x, y))
  proof
    let L be Z_Lattice;
    set D = DivisibleMod(L);
    set Z = EMbedding(L);
    set f = ScProductDM(L);
    A1: Z is Submodule of D by ZMODUL08:24;
    thus for x being Vector of D
    st for y being Vector of D holds f.(x, y) = 0
    holds x = 0.D
    proof
      let x be Vector of D such that
      B1: for y being Vector of D holds f.(x, y) = 0;
      consider a be Element of INT.Ring such that
      B2: a <> 0.INT.Ring & a * x in Z by ZMODUL08:29;
      reconsider xx = a * x as Vector of Z by B2;
      for yy being Vector of Z holds (ScProductEM(L)).(xx, yy) = 0
      proof
        let yy be Vector of Z;
        set b = 1.INT.Ring;
        yy in Z;
        then yy in D by A1,ZMODUL01:24;
        then reconsider y = b * yy as Vector of D;
        C1: b <> 0 & yy = b * y;
        INT c= the carrier of F_Real by NUMBERS:5;
        then reconsider af=a,bf=b as Element of F_Real;
        C2: f.(x, y) = af" * bf" * (ScProductEM(L)).(xx, yy)
        by B2,C1,defScProductDM;
        thus (ScProductEM(L)).(xx, yy) = 0
        proof
          assume (ScProductEM(L)).(xx, yy) <> 0;
          then XX1: af" = 0 or bf" = 0 by B1,C2;
          af <> 0.F_Real & bf <> 0.F_Real by B2;
          hence contradiction by XX1,VECTSP_1:25;
        end;
      end;
      then xx = 0.Z by ThSPEM1
      .= 0.D by A1,ZMODUL01:26;
      hence x = 0.D by B2,ZMODUL01:def 7;
    end;
    thus for x, y being Vector of D holds f.(x, y) = f.(y, x)
    proof
      let x, y be Vector of D;
      consider a be Element of INT.Ring such that
      B1: a <> 0 & a * x in Z by ZMODUL08:29;
      reconsider xx = a * x as Vector of Z by B1;
      consider b be Element of INT.Ring such that
      B2: b <> 0 & b * y in Z by ZMODUL08:29;
      reconsider yy = b * y as Vector of Z by B2;
      INT c= the carrier of F_Real by NUMBERS:5;
      then reconsider af=a,bf=b as Element of F_Real;
      thus f.(x, y) = af" * bf" * (ScProductEM(L)).(xx, yy)
      by B1,B2,defScProductDM
      .= bf" * af" * (ScProductEM(L)).(yy, xx) by ThSPEM1
      .= f.(y, x) by B1,B2,defScProductDM;
    end;
    thus for x, y, z being Vector of D, i being Element of INT.Ring
    holds f.(x+y, z) = f.(x, z) + f.(y, z) & f.(i*x, y) = i * f.(x, y)
    proof
      let x, y, z be Vector of D, i be Element of INT.Ring;
      consider a be Element of INT.Ring such that
      B1: a <> 0 & a * x in Z by ZMODUL08:29;
      reconsider xx = a * x as Vector of Z by B1;
      consider b be Element of INT.Ring such that
      B2: b <> 0 & b * y in Z by ZMODUL08:29;
      reconsider yy = b * y as Vector of Z by B2;
      consider c be Element of INT.Ring such that
      B3: c <> 0 & c * z in Z by ZMODUL08:29;
      reconsider zz = c * z as Vector of Z by B3;
      B41: b * (a*x) = b * xx by A1,ZMODUL01:29;
      B42: a * (b*y) = a * yy by A1,ZMODUL01:29;
      B4: (a*b) * (x + y) = (a*b) * x + (a*b) * y by VECTSP_1:def 14
      .= (b*a) * x + a * (b*y) by VECTSP_1:def 16
      .= b * (a*x) + a * (b*y) by VECTSP_1:def 16
      .= b * xx + a * yy by A1,B41,B42,ZMODUL01:28;
      then reconsider xy = (a*b) * (x + y) as Vector of Z;
      INT c= the carrier of F_Real by NUMBERS:5;
      then reconsider af=a,bf=b,cf = c as Element of F_Real;
      X2:af <> 0.F_Real & bf <> 0.F_Real by B1,B2; then
      X1: (af*bf)" * cf" = af" * bf" * cf" by VECTSP_2:11;
      thus f.(x+y, z) = af" * bf" * cf" * (ScProductEM(L)).(xy, zz)
      by B1,B2,B3,X1,defScProductDM
      .= (af" * bf" * cf") *
      ((ScProductEM(L)).(b * xx, zz) + (ScProductEM(L)).(a * yy, zz))
      by B4,ThSPEM1
      .= (af" * bf" * cf") * ((ScProductEM(L)).(b * xx, zz))
      + (af" * bf" * cf") * ((ScProductEM(L)).(a * yy, zz))
      .= (af" * bf" * cf") * (b * (ScProductEM(L)).(xx, zz))
      + (af" * bf" * cf") * ((ScProductEM(L)).(a * yy, zz)) by ThSPEM1
      .= (af" * (bf" * bf) * cf") * (ScProductEM(L)).(xx, zz)
      + (af" * bf" * cf") * ((ScProductEM(L)).(a * yy, zz))
      .= (af" * (1.F_Real) * cf") * (ScProductEM(L)).(xx, zz)
      + (af" * bf" * cf") * ((ScProductEM(L)).(a * yy, zz))
      by VECTSP_1:def 10,X2
      .= (af" * cf") * (ScProductEM(L)).(xx, zz)
      + (af" * bf" * cf") * (a * (ScProductEM(L)).(yy, zz)) by ThSPEM1
      .= af" * cf" * (ScProductEM(L)).(xx, zz)
      + (bf" * (af * af") * cf") * (ScProductEM(L)).(yy, zz)
      .= af" * cf" * (ScProductEM(L)).(xx, zz)
      + (bf" * (1.F_Real) * cf") * (ScProductEM(L)).(yy, zz)
      by VECTSP_1:def 10,X2
      .= f.(x, z) + bf" * cf" * (ScProductEM(L)).(yy, zz)
      by B1,B3,defScProductDM
      .= f.(x, z) + f.(y, z) by B2,B3,defScProductDM;
      a * (i*x) = (a*i) * x by VECTSP_1:def 16
      .= i * (a*x) by VECTSP_1:def 16
      .= i * xx by A1,ZMODUL01:29;
      hence f.(i*x, y) = af" * bf" * (ScProductEM(L)).(i * xx, yy)
      by B1,B2,defScProductDM
      .= (af" * bf") * (i * (ScProductEM(L)).(xx, yy)) by ThSPEM1
      .= i * (af" * bf" * (ScProductEM(L)).(xx, yy))
      .= i * f.(x, y) by B1,B2,defScProductDM;
    end;
  end;
