 reserve V for Z_Module;
 reserve W for Subspace of V;
 reserve v, u for Vector of V;
 reserve i for Element of INT.Ring;

theorem LmSumMod2:
  for V being torsion-free Z_Module, v1, v2 being Vector of V
  st v1 <> 0.V & v2 <> 0.V & Lin{v1} /\ Lin{v2} <> (0).V
  ex u being Vector of V st u <> 0.V & Lin{v1} + Lin{v2} = Lin{u}
  proof
    let V be torsion-free Z_Module, v1, v2 be Vector of V such that
    A1: v1 <> 0.V & v2 <> 0.V & Lin{v1} /\ Lin{v2} <> (0).V;
    consider x be Vector of V such that
    A2: x <> 0.V & Lin{v1} /\ Lin{v2} = Lin{x} by A1,LmSumMod1;
    A3: x in Lin{x} by ZMODUL02:65,ZFMISC_1:31;
    then x in Lin{v1} by A2,ZMODUL01:94;
    then consider i1 be Element of INT.Ring such that
    A4: x = i1*v1 by ThLin1;
    x in Lin{v2} by A2,A3,ZMODUL01:94;
    then consider i2 be Element of INT.Ring such that
    A5: x = i2*v2 by ThLin1;
    |.i1.| gcd |.i2.| = 1
    proof
      set n1 = |.i1.|;
      set n2 = |.i2.|;
      assume ASB: n1 gcd n2 <> 1;
      per cases;
      suppose n1 gcd n2 = 0;
        then n1 = 0 & n2 = 0 by INT_2:5;
        hence contradiction by ABSVALUE:2,A2,A4,ZMODUL01:1;
      end;
      suppose n1 gcd n2 <> 0;
        then n1 gcd n2 > 1 by ASB,NAT_1:25;
        then C1: i1 gcd i2 > 1 by INT_2:34;
        (i1 gcd i2) divides i1 by INT_2:def 2;
        then consider k1 be Integer such that
        C2: i1 = (i1 gcd i2)*k1 by INT_1:def 3;
        (i1 gcd i2) divides i2 by INT_2:def 2;
        then consider k2 be Integer such that
    C3: i2 = (i1 gcd i2)*k2 by INT_1:def 3;
        reconsider K1 = k1, K2 = k2 as Element of INT.Ring by INT_1:def 2;
        reconsider igi = i1 gcd i2 as Element of INT.Ring by INT_1:def 2;
c2:     i1 = igi*K1 & i2 = igi*K2 by C2,C3; then
        C4: igi*(K1*v1) = (igi*K2)*v2 by VECTSP_1:def 16,A4,A5
        .= igi*(K2*v2) by VECTSP_1:def 16;
        C5: K1*v1 = K2*v2 by ZMODUL01:10,C1,C4;
        C6: K1*v1 in Lin{v1} by ZMODUL01:37,ThLin2;
        K2*v2 in Lin{v2} by ZMODUL01:37,ThLin2;
        then consider ikv be Element of INT.Ring such that
        C8: K1*v1 = ikv*x by ThLin1,A2,C5,C6,ZMODUL01:94;
        x = igi*(K1*v1) by VECTSP_1:def 16,A4,c2
        .= (igi*ikv)*x by VECTSP_1:def 16,C8;
        then C9: 0.V = (igi*ikv)*x - x by RLVECT_1:15
        .= (igi*ikv)*x - 1.INT.Ring*x
        .= (igi*ikv - 1.INT.Ring)*x by ZMODUL01:9;
        igi*ikv - 1.INT.Ring <> 0.INT.Ring by C1,INT_1:9;
        hence contradiction by A2,C9,ZMODUL01:def 7;
      end;
    end;
    then i1 gcd i2 = 1 by INT_2:34;
    then consider j1, j2 be Element of INT.Ring such that
    A7: i1*j1 + i2*j2 = 1 by LmGCD,INT_2:def 3;
    reconsider J1 = j1, J2 = j2 as Element of INT.Ring;
    a7: i1*J1 + i2*J2 = 1.INT.Ring by A7;
    reconsider u = J1*v2 + J2*v1 as Vector of V;
    A8: u in Lin{u} by ZMODUL02:65,ZFMISC_1:31;
    B1: i1*u = i1*(J1*v2) + i1*(J2*v1) by VECTSP_1:def 14
    .= i1*(J1*v2) + (i1*J2)*v1 by VECTSP_1:def 16
    .= i1*(J1*v2) + J2*(i1*v1) by VECTSP_1:def 16
    .= (i1*J1)*v2 + J2*(i2*v2) by VECTSP_1:def 16,A4,A5
    .= (i1*J1)*v2 + (i2*J2)*v2 by VECTSP_1:def 16
    .= (i1*J1 + i2*J2)*v2 by VECTSP_1:def 15
    .= v2 by a7;
    B3: i2*u = i2*(J1*v2) + i2*(J2*v1) by VECTSP_1:def 14
    .= (i2*J1)*v2 + i2*(J2*v1) by VECTSP_1:def 16
    .= J1*(i2*v2) + i2*(J2*v1) by VECTSP_1:def 16
    .= J1*(i2*v2) + (i2*J2)*v1 by VECTSP_1:def 16
    .= (i1*J1)*v1 + (i2*J2)*v1 by VECTSP_1:def 16,A4,A5
    .= (i1*J1 + i2*J2)*v1 by VECTSP_1:def 15
    .= v1 by a7;
    Lin{v1} + Lin{v2} = Lin{u}
    proof
      B5: for vx being Vector of V st vx in Lin{v1} holds vx in Lin{u}
      proof
        let vx be Vector of V such that
        C1: vx in Lin{v1};
        consider ivx1 be Element of INT.Ring such that
        C2: vx = ivx1*v1 by C1,ThLin1;
        vx = (ivx1*i2)*u by VECTSP_1:def 16,B3,C2;
        hence thesis by A8,ZMODUL01:37;
      end;
      B6: for vx being Vector of V st vx in Lin{v2} holds vx in Lin{u}
      proof
        let vx be Vector of V such that
        C1: vx in Lin{v2};
        consider ivx2 be Element of INT.Ring such that
        C2: vx = ivx2*v2 by C1,ThLin1;
        vx = (ivx2*i1)*u by VECTSP_1:def 16,B1,C2;
        hence thesis by A8,ZMODUL01:37;
      end;
      for vx being Vector of V holds vx in Lin{v1}+Lin{v2} iff vx in Lin{u}
      proof
        let vx be Vector of V;
        hereby
          assume vx in Lin{v1}+Lin{v2};
          then consider vx1, vx2 be Vector of V such that
          C2: vx1 in Lin{v1} & vx2 in Lin{v2} & vx = vx1 + vx2 by ZMODUL01:92;
          C3: vx1 in Lin{u} by B5,C2;
          vx2 in Lin{u} by B6,C2;
          hence vx in Lin{u} by C2,C3,ZMODUL01:36;
        end;
        assume vx in Lin{u};
        then consider ivx be Element of INT.Ring such that
        C2: vx = ivx*u by ThLin1;
        C3: vx = ivx*(J1*v2) + ivx*(J2*v1) by VECTSP_1:def 14,C2
        .= (ivx*J1)*v2 + ivx*(J2*v1) by VECTSP_1:def 16
        .= (ivx*J1)*v2 + (ivx*J2)*v1 by VECTSP_1:def 16;
        v1 in Lin{v1} by ZMODUL02:65,ZFMISC_1:31;
        then C4: (ivx*J2)*v1 in Lin{v1} by ZMODUL01:37;
        v2 in Lin{v2} by ZMODUL02:65,ZFMISC_1:31;
        then (ivx*J1)*v2 in Lin{v2} by ZMODUL01:37;
        hence vx in Lin{v1}+Lin{v2} by C3,C4,ZMODUL01:92;
      end;
      hence thesis by ZMODUL01:46;
    end;
    hence thesis by A1,B3,ZMODUL01:1;
  end;
