 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 LmSumMod3:
  for V being torsion-free Z_Module, W being finite-rank free Subspace of V,
  v, u being Vector of V
  st v <> 0.V & u <> 0.V &
  W /\ Lin{v} = (0).V & (W + Lin{u}) /\ Lin{v} <> (0).V &
  Lin{u} /\ Lin{v} = (0).V
  holds ex w1, w2 being Vector of V
  st w1 <> 0.V & w2 <> 0.V &
  (W + Lin{u}) + Lin{v} = (W + Lin{w1}) + Lin{w2} &
  W /\ Lin{w1} <> (0).V & (W + Lin{w1}) /\ Lin{w2} = (0).V &
  u in Lin{w1} + Lin{w2} & v in Lin{w1} + Lin{w2} &
  w1 in Lin{u} + Lin{v} & w2 in Lin{u} + Lin{v}
  proof
    let V be torsion-free Z_Module, W be finite-rank free Subspace of V,
    v, u be Vector of V such that
    A1: v <> 0.V & u <> 0.V and
    A2: W /\ Lin{v} = (0).V and
    A3: (W + Lin{u}) /\ Lin{v} <> (0).V & Lin{u} /\ Lin{v} = (0).V;
    consider x be Vector of V such that
    A4: x in (W + Lin{u}) /\ Lin{v} & x <> 0.V by A3,ZMODUL04:24;
    x in W + Lin{u} by A4,ZMODUL01:94;
    then consider x1, x2 be Vector of V such that
    A6: x1 in W & x2 in Lin{u} & x = x1 + x2 by ZMODUL01:92;
    A7: x in Lin{v} by A4,ZMODUL01:94;
    consider iv be Element of INT.Ring such that
    A9: x = iv * v by A7,ThLin1;
    A10: iv <> 0 by A4,A9,ZMODUL01:1;
    consider iu2 be Element of INT.Ring such that
    A11: x2 = iu2 * u by A6,ThLin1;
    consider iiv, iiu2 be Integer such that
    A13: iv = (iv gcd iu2)*iiv & iu2 = (iv gcd iu2)*iiu2 &
    iiv,iiu2 are_coprime by A10,INT_2:23;
    reconsider iiv, iiu2 as Element of INT.Ring by INT_1:def 2;
    consider Jv, Ju2 being Element of INT.Ring such that
    A14: iiv*Jv + iiu2*Ju2 = 1 by A13,LmGCD;
    reconsider jv = Jv, ju2 = Ju2 as Element of INT.Ring;
    a14: iiv*jv + iiu2*ju2 = 1.INT.Ring by A14;
    A15: x - x2 = x1 + (x2 - x2) by RLVECT_1:def 3,A6
    .= x1 + 0.V by RLVECT_1:15
    .= x1;
    set w1 = iiv*v - iiu2*u;
    set w2 = jv*u + ju2*v;
    A16: w1 <> 0.V
    proof
      assume w1 = 0.V;
      then B1: iiv*v = iiu2*u by RLVECT_1:21;
      B2: iiv*v in Lin{v} by ZMODUL01:37,ThLin2;
      iiv*v in Lin{u} by B1,ZMODUL01:37,ThLin2;
      then B3: iiv*v in Lin{u} /\ Lin{v} by B2,ZMODUL01:94;
      iiv <> 0.INT.Ring by A13,A4,A9,ZMODUL01:1;
      hence contradiction by A3,B3,ZMODUL02:66,A1,ZMODUL01:def 7;
    end;
    reconsider igu = iv gcd iu2 as Element of INT.Ring by INT_1:def 2;
    a13: iv = igu*iiv & iu2 = igu*iiu2 by A13;
    AX1: igu*w1 in W
    proof
      igu*w1 = igu*(iiv*v) - igu*(iiu2*u) by ZMODUL01:8
      .= (igu*iiv)*v - igu*(iiu2*u) by VECTSP_1:def 16
      .= iv*v - iu2*u by a13,VECTSP_1:def 16;
      hence igu*w1 in W by A15,A6,A9,A11;
    end;
    AX2: (iv gcd iu2) <> 0.INT.Ring by A10,INT_2:5;
    A17: W /\ Lin{w1} <> (0).V
    proof
      igu*w1 in Lin{w1} by ZMODUL01:37,ThLin2;
      then igu*w1 in W /\ Lin{w1} by AX1,ZMODUL01:94;
      hence thesis by ZMODUL02:66,A16,AX2,ZMODUL01:def 7;
    end;
    A18: u = iiv*w2 - ju2*w1
    proof
      thus iiv*w2 - ju2*w1 = iiv*(jv*u) + iiv*(ju2*v) - ju2*(iiv*v - iiu2*u)
      by VECTSP_1:def 14
      .= (iiv*jv)*u + iiv*(ju2*v) - ju2*(iiv*v - iiu2*u) by VECTSP_1:def 16
      .= (iiv*jv)*u + (iiv*ju2)*v - ju2*(iiv*v - iiu2*u) by VECTSP_1:def 16
      .= (iiv*ju2)*v + (iiv*jv)*u - (ju2*(iiv*v) - ju2*(iiu2*u))
      by ZMODUL01:8
      .= ((iiv*ju2)*v + (iiv*jv)*u - ju2*(iiv*v)) + ju2*(iiu2*u)
      by RLVECT_1:29
      .= ((iiv*jv)*u + (iiv*ju2)*v - ju2*(iiv*v)) + (ju2*iiu2)*u
      by VECTSP_1:def 16
      .= ((iiv*jv)*u + ((iiv*ju2)*v - ju2*(iiv*v))) + (ju2*iiu2)*u
      by RLVECT_1:28
      .= ((iiv*jv)*u + ((iiv*ju2)*v - (ju2*iiv)*v)) + (ju2*iiu2)*u
      by VECTSP_1:def 16
      .= ((iiv*jv)*u + 0.V) + (ju2*iiu2)*u by RLVECT_1:15
      .= (iiv*jv + iiu2*ju2)*u by VECTSP_1:def 15
      .= u by a14;
    end;
    A19: v = jv*w1 + iiu2*w2
    proof
      thus jv*w1 + iiu2*w2 = jv*(iiv*v) - jv*(iiu2*u) + iiu2*(jv*u + ju2*v)
      by ZMODUL01:8
      .= (jv*iiv)*v - jv*(iiu2*u) + iiu2*(jv*u + ju2*v) by VECTSP_1:def 16
      .= (jv*iiv)*v + iiu2*(jv*u + ju2*v) - jv*(iiu2*u)
      by RLVECT_1:def 3
      .= (jv*iiv)*v + (iiu2*(jv*u + ju2*v) - jv*(iiu2*u)) by RLVECT_1:def 3
      .= (jv*iiv)*v + (iiu2*(ju2*v + jv*u) - (jv*iiu2)*u) by VECTSP_1:def 16
      .= (jv*iiv)*v + (iiu2*(ju2*v) + iiu2*(jv*u) - (jv*iiu2)*u)
      by VECTSP_1:def 14
      .= (iiv*jv)*v + (iiu2*(ju2*v) + (iiu2*(jv*u) - (jv*iiu2)*u))
      by RLVECT_1:28
      .= (iiv*jv)*v + (iiu2*(ju2*v) + ((iiu2*jv)*u - (iiu2*jv)*u))
      by VECTSP_1:def 16
      .= (iiv*jv)*v + (iiu2*(ju2*v) + 0.V) by RLVECT_1:15
      .= (iiv*jv)*v + (iiu2*ju2)*v by VECTSP_1:def 16
      .= (iiv*jv + iiu2*ju2)*v by VECTSP_1:def 15
      .= v by a14;
    end;
    A20: u in Lin{w1} + Lin{w2}
    proof
      ju2*w1 in Lin{w1} by ZMODUL01:37,ThLin2;
      then B1: -ju2*w1 in Lin{w1} by ZMODUL01:38;
      iiv*w2 in Lin{w2} by ZMODUL01:37,ThLin2;
      hence thesis by A18,B1,ZMODUL01:92;
    end;
    A21: v in Lin{w1} + Lin{w2}
    proof
      B1: jv*w1 in Lin{w1} by ZMODUL01:37,ThLin2;
      iiu2*w2 in Lin{w2} by ZMODUL01:37,ThLin2;
      hence thesis by A19,B1,ZMODUL01:92;
    end;
    A22: w1 in Lin{u} + Lin{v}
    proof
      iiu2*u in Lin{u} by ZMODUL01:37,ThLin2;
      then B1: -iiu2*u in Lin{u} by ZMODUL01:38;
      iiv*v in Lin{v} by ZMODUL01:37,ThLin2;
      hence thesis by B1,ZMODUL01:92;
    end;
    A23: w2 in Lin{u} + Lin{v}
    proof
      B1: jv*u in Lin{u} by ZMODUL01:37,ThLin2;
      ju2*v in Lin{v} by ZMODUL01:37,ThLin2;
      hence thesis by B1,ZMODUL01:92;
    end;
    A24: for x being object holds
    x in (W + Lin{u}) + Lin{v} implies x in (W + Lin{w1}) + Lin{w2}
    proof
      let x be object;
      assume x in (W + Lin{u}) + Lin{v};
      then consider xx, x3 be Vector of V such that
      B1: xx in W + Lin{u} & x3 in Lin{v} & x = xx + x3 by ZMODUL01:92;
      consider x1, x2 be Vector of V such that
      B2: x1 in W & x2 in Lin{u} & xx = x1 + x2 by B1,ZMODUL01:92;
      consider ix2 be Element of INT.Ring such that
      B3: x2 = ix2*u by B2,ThLin1;
      consider ix3 be Element of INT.Ring such that
      B4: x3 = ix3*v by B1,ThLin1;
      B5: x2 in Lin{w1} + Lin{w2} by A20,B3,ZMODUL01:37;
      x3 in Lin{w1} + Lin{w2} by A21,B4,ZMODUL01:37;
      then x2 + x3 in Lin{w1} + Lin{w2} by B5,ZMODUL01:36;
      then x1 + (x2 + x3) in W + (Lin{w1} + Lin{w2}) by B2,ZMODUL01:92;
      then xx + x3 in W + (Lin{w1} + Lin{w2}) by B2,RLVECT_1:def 3;
      hence x in (W + Lin{w1}) + Lin{w2} by B1,ZMODUL01:96;
    end;
    for x being object holds
    x in (W + Lin{w1}) + Lin{w2} implies x in (W + Lin{u}) + Lin{v}
    proof
      let x be object;
      assume x in (W + Lin{w1}) + Lin{w2};
      then consider xx, x3 be Vector of V such that
      B1: xx in (W + Lin{w1}) & x3 in Lin{w2} & x = xx + x3 by ZMODUL01:92;
      consider x1, x2 be Vector of V such that
      B2: x1 in W & x2 in Lin{w1} & xx = x1 + x2 by B1,ZMODUL01:92;
      consider ix2 be Element of INT.Ring such that
      B3: x2 = ix2*w1 by B2,ThLin1;
      consider ix3 be Element of INT.Ring such that
      B4: x3 = ix3*w2 by B1,ThLin1;
      B5: x2 in Lin{u} + Lin{v} by A22,B3,ZMODUL01:37;
      x3 in Lin{u} + Lin{v} by A23,B4,ZMODUL01:37;
      then x2 + x3 in Lin{u} + Lin{v} by B5,ZMODUL01:36;
      then x1 + (x2 + x3) in W + (Lin{u} + Lin{v}) by B2,ZMODUL01:92;
      then xx + x3 in W + (Lin{u} + Lin{v}) by B2,RLVECT_1:def 3;
      hence x in (W + Lin{u}) + Lin{v} by B1,ZMODUL01:96;
    end;
    then for x being Vector of V holds
    x in (W + Lin{u}) + Lin{v} iff x in (W + Lin{w1}) + Lin{w2} by A24;
    then A25: (W + Lin{u}) + Lin{v} = (W + Lin{w1}) + Lin{w2} by ZMODUL01:46;
    A26: w2 <> 0.V
    proof
      assume B0: w2 = 0.V;
      then B1: ju2*v = -jv*u by RLVECT_1:6;
      B2: ju2*v in Lin{v} by ZMODUL01:37,ThLin2;
      jv*u in Lin{u} by ZMODUL01:37,ThLin2;
      then ju2*v in Lin{u} by B1,ZMODUL01:38;
      then B3: ju2*v in Lin{u} /\ Lin{v} by B2,ZMODUL01:94;
      ju2 <> 0.INT.Ring
      proof
        assume C1: ju2 = 0.INT.Ring;
        then jv*u + 0.V = 0.V by B0,ZMODUL01:1;
        then jv = 0.INT.Ring by A1,ZMODUL01:def 7;
        hence contradiction by A14,C1;
      end;
      hence contradiction by A3,B3,ZMODUL02:66,A1,ZMODUL01:def 7;
    end;
    (W + Lin{w1}) /\ Lin{w2} = (0).V
    proof
      assume (W + Lin{w1}) /\ Lin{w2} <> (0).V;
      then consider wx be Vector of V such that
      B2: wx in (W + Lin{w1}) /\ Lin{w2} & wx <> 0.V by ZMODUL04:24;
      wx in W + Lin{w1} by B2,ZMODUL01:94;
      then consider wx1, wx2 be Vector of V such that
      B3: wx1 in W & wx2 in Lin{w1} & wx = wx1 + wx2 by ZMODUL01:92;
      consider iwx1 be Element of INT.Ring such that
      B4: wx2 = iwx1 * w1 by B3,ThLin1;
      reconsider igu = iv gcd iu2 as Element of INT.Ring by INT_1:def 2;
      B5: igu*wx in W
      proof
        C1: igu*wx = igu*wx1 + igu*wx2 by VECTSP_1:def 14,B3
        .= igu*wx1 + (igu*iwx1)*w1 by VECTSP_1:def 16,B4
        .= igu*wx1 + iwx1 * (igu*w1) by VECTSP_1:def 16;
        C2: igu*wx1 in W by B3,ZMODUL01:37;
        iwx1 * (igu*w1) in W by AX1,ZMODUL01:37;
        hence thesis by C1,C2,ZMODUL01:36;
      end;
      wx in Lin{w2} by B2,ZMODUL01:94;
      then consider iwx2 be Element of INT.Ring such that
      B6: wx = iwx2*w2 by ThLin1;
      B7: iwx2 <> 0 by B2,B6,ZMODUL01:1;
      ex wiu1, wiu2 being Vector of V
      st iu2*w2 = wiu1 + wiu2 & wiu1 in W & wiu2 = igu*v
      proof
        C1: iu2*w2 = iu2*(jv*u) + iu2*(ju2*v) by VECTSP_1:def 14
        .= (iu2*jv)*u + iu2*(ju2*v) by VECTSP_1:def 16
        .= (jv*iu2)*u + (iu2*ju2)*v by VECTSP_1:def 16
        .= jv*(iu2*u) + (iu2*ju2)*v by VECTSP_1:def 16;
        reconsider wiviu = iv*v - iu2*u as Vector of W by A15,A6,A9,A11;
        C2: wiviu in W;
        reconsider wiviu as Vector of V;
        iv*v - wiviu = (iv*v - iv*v) + iu2*u by RLVECT_1:29
        .= 0.V + iu2*u by RLVECT_1:15
        .= iu2*u;
        then C3: iu2*w2 = jv*(iv*v) - jv*wiviu + (iu2*ju2)*v by ZMODUL01:8,C1
        .= jv*(iv*v) + (iu2*ju2)*v - jv*wiviu by RLVECT_1:def 3
        .= (jv*iv)*v + (iu2*ju2)*v - jv*wiviu by VECTSP_1:def 16
        .= (jv*iv + iu2*ju2)*v - jv*wiviu by VECTSP_1:def 15
        .= (igu*(iiv*jv + iiu2*ju2))*v - jv*wiviu by A13
        .= (-jv*wiviu) + igu*v by A14;
        C4: jv*wiviu in W by C2,ZMODUL01:37;
        take -jv*wiviu, igu*v;
        thus thesis by C3,C4,ZMODUL01:38;
      end;
      then consider wiu1, wiu2 be Vector of V such that
      B8: iu2*w2 = wiu1 + wiu2 & wiu1 in W & wiu2 = igu*v;
      B9: iu2*wx = (iu2*iwx2)*w2 by VECTSP_1:def 16,B6
      .= iwx2*(iu2*w2) by VECTSP_1:def 16
      .= iwx2*wiu1 + iwx2*(igu*v) by VECTSP_1:def 14,B8
      .= iwx2*wiu1 + (iwx2*igu)*v by VECTSP_1:def 16;
      iu2*wx = iiu2*(igu*wx) by VECTSP_1:def 16,a13;
      then B10: iu2*wx in W by B5,ZMODUL01:37;
      iwx2*wiu1 in W by B8,ZMODUL01:37;
      then B11: iu2*wx - iwx2*wiu1 in W by B10,ZMODUL01:39;
      B12: iu2*wx - iwx2*wiu1 = iwx2*wiu1 - iwx2*wiu1 + (iwx2*igu)*v
      by RLVECT_1:def 3,B9
      .= 0.V + (iwx2*igu)*v by RLVECT_1:15
      .= (iwx2*igu)*v;
      (iwx2*igu)*v in Lin{v} by ZMODUL01:37,ThLin2;
      then (iwx2*igu)*v in W /\ Lin{v} by B12,ZMODUL01:94,B11;
      hence contradiction by A2,ZMODUL02:66,A1,ZMODUL01:def 7,AX2,B7;
    end;
    hence thesis by A16,A17,A20,A21,A22,A23,A25,A26;
  end;
