
theorem ThIntLat1A:
  for L being Z_Lattice, I being Basis of L
  st for v, u being Vector of L st v in I & u in I holds <; v, u ;> in INT
  holds for v, u being Vector of L holds <; v, u ;> in INT
  proof
    let L be Z_Lattice;
    defpred P[Nat] means
    for I be finite Subset of L
    st card(I) = $1 &
    for v, u being Vector of L st v in I & u in I holds  <; v, u ;> in INT
    holds
    for v, u being Vector of L st v in Lin(I) & u in Lin(I)
    holds <; v, u ;> in INT;
    P1: P[0]
    proof
      let I be finite Subset of L;
      assume card(I) = 0 &
      for v, u being Vector of L st v in I & u in I holds  <; v, u ;> in INT;
      then I = {}(the carrier of L);
      then
      A2: Lin(I) = (0).L by ZMODUL02:67;
      let v, u be Vector of L;
      assume v in Lin(I) & u in Lin(I);
      then v in {0.L} & u in {0.L} by A2,VECTSP_4:def 3;
      then v = 0.L & u = 0.L by TARSKI:def 1;
      then <; v, u ;> = 0 by ThSc6;
      hence <; v, u ;> in INT;
    end;
    P2: for n being Nat st P[n] holds P[n+1]
    proof
      let n be Nat;
      assume A0: P[n];
      thus P[n+1]
      proof
        let I be finite Subset of L;
        assume A1: card(I) = n+1 &
        for v, u being Vector of L st v in I & u in I holds <; v, u ;> in INT;
        then I <> {};
        then consider v be object such that
        A3: v in I by XBOOLE_0:def 1;
        reconsider v as Vector of L by A3;
        (I \ {v}) \/ {v} = I \/ {v} by XBOOLE_1:39
        .= I by A3,ZFMISC_1:40;
        then
        A4: Lin(I) = Lin(I \ {v}) + Lin{v} by ZMODUL02:72;
        A5: card(I \ {v}) = card(I) - card{v} by A3,CARD_2:44,ZFMISC_1:31
        .= card(I) - 1 by CARD_1:30
        .= n by A1;
        reconsider J = I \ {v} as finite Subset of L;
        B8: for x, y being Vector of L st x in J & y in J holds
        <; x, y ;> in INT
        proof
          let x, y be Vector of L;
          assume x in J & y in J;
          then x in I & y in I by XBOOLE_1:36,TARSKI:def 3;
          hence <; x, y ;> in INT by A1;
        end;
        A6X: for x being Vector of L st x in J holds <; x, v ;> in INT
        proof
          let x be Vector of L;
          assume x in J;
          then x in I & v in I by A3,XBOOLE_1:36,TARSKI:def 3;
          hence <; x, v ;> in INT by A1;
        end;
        thus for x, y being Vector of L st x in Lin(I) & y in Lin(I) holds
        <; x, y ;> in INT
        proof
          let x, y be Vector of L;
          assume A9: x in Lin(I) & y in Lin(I);
          then consider xu1, xu2 be Vector of L such that
          A10: xu1 in Lin(I \ {v}) & xu2 in Lin{v} & x = xu1 + xu2
          by A4,ZMODUL01:92;
          consider yu1, yu2 be Vector of L such that
          A11: yu1 in Lin(I \ {v}) & yu2 in Lin{v} & y = yu1 + yu2
          by A9,A4,ZMODUL01:92;
          consider ixu2 be Element of INT.Ring such that
          A12: xu2 = ixu2 * v by A10,ZMODUL06:19;
          consider iyu2 be Element of INT.Ring such that
          A13: yu2 = iyu2 * v by A11,ZMODUL06:19;
          B11: x = (1.(INT.Ring))*xu1 + ixu2*v by A10,A12;
          set i1 = 1.(INT.Ring);
          B13: <; x, y ;>
          = <; i1*xu1+ixu2*v, yu1 ;> + <; i1*xu1+ixu2*v, iyu2*v ;>
          by A11,A13,B11,ThSc2
          .= i1 * <; xu1, yu1 ;> + ixu2 * <; v, yu1 ;>
          + <; i1*xu1 + ixu2*v, iyu2*v ;> by ThSc4
          .= i1 * <; xu1, yu1 ;> + ixu2 * <; v, yu1;>
          + (i1 * <; xu1, iyu2*v ;> + ixu2 * <; v, iyu2*v ;>) by ThSc4
          .= <; xu1, yu1 ;> + ixu2 * <; v, yu1 ;>
          + <; xu1, iyu2*v ;> + ixu2 * <; v, iyu2*v ;>
          .= <; xu1,yu1 ;> + ixu2 * <; v,yu1 ;>
          + <; xu1, iyu2*v ;> + ixu2 * (iyu2 * <; v, v ;>) by ThSc3
          .= <; xu1, yu1 ;> + ixu2 * <;v,yu1;>
          + iyu2 * <; xu1, v ;> + (ixu2 * iyu2) * <; v, v ;> by ThSc3;
          B14: <; xu1, yu1 ;> in INT by A0,A5,B8,A10,A11;
          <; yu1, v ;> in INT by A11,A6X,ThIntLat1B;
          then B15: <; v, yu1 ;> in INT by defZLattice;
          B16: <; xu1, v ;> in INT by A10,A6X,ThIntLat1B;
          <; v, v ;> in INT by A3,A1;
          hence <; x, y ;> in INT by B13,B14,B15,B16,INT_1:def 2;
        end;
      end;
    end;
    X1: for n being Nat holds P[n] from NAT_1:sch 2(P1,P2);
    let I being Basis of L;
    assume
    X2: for v, u being Vector of L st v in I & u in I holds
    <; v, u ;> in INT;
    X3: I is linearly-independent &
    Lin (I) = the ModuleStr of L by VECTSP_7:def 3;
    X4: card (I) is Nat;
    let v, u be Vector of L;
    v in Lin(I) & u in Lin(I) by X3;
    hence <; v, u ;> in INT by X1,X2,X4;
  end;
