VECTSP_5

index · ← VECTSP_4 · NORMSP_0 →
:: Operations on Subspaces in Vector Space
::  by Wojciech A. Trybulec
::
:: Received July 27, 1990
:: Copyright (c) 1990-2026 Association of Mizar Users
::           (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland).
:: This code can be distributed under the GNU General Public Licence
:: version 3.0 or later, or the Creative Commons Attribution-ShareAlike
:: License version 3.0 or later, subject to the binding interpretation
:: detailed in file COPYING.interpretation.
:: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these
:: licenses, or see http://www.gnu.org/licenses/gpl.html and
:: http://creativecommons.org/licenses/by-sa/3.0/.

environ

 vocabularies RLVECT_1, ALGSTR_0, BINOP_1, VECTSP_1, LATTICES, XBOOLE_0,
      RLSUB_1, SUBSET_1, ARYTM_3, STRUCT_0, TARSKI, SUPINF_2, ARYTM_1, RLSUB_2,
      ZFMISC_1, FUNCT_1, RELAT_1, GROUP_1, FINSEQ_4, MCART_1, EQREL_1, PBOOLE;
 notations TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, BINOP_1, RELAT_1, FUNCT_1,
      STRUCT_0, ALGSTR_0, LATTICES, RELSET_1, RLVECT_1, GROUP_1, VECTSP_1,
      DOMAIN_1, VECTSP_4;
 constructors BINOP_1, REALSET1, LATTICES, VECTSP_4;
 registrations SUBSET_1, STRUCT_0, LATTICES, VECTSP_1, VECTSP_4, RELAT_1,
      XTUPLE_0;
 requirements SUBSET, BOOLE;
 definitions VECTSP_4, TARSKI, XBOOLE_0;
 equalities VECTSP_4, XBOOLE_0, RLVECT_1;
 expansions VECTSP_4, TARSKI, XBOOLE_0;
 theorems BINOP_1, FUNCT_1, LATTICES, MCART_1, ORDERS_1, RLSUB_2, TARSKI,
      VECTSP_1, VECTSP_4, ZFMISC_1, RLVECT_1, RELAT_1, VECTSP_2, XBOOLE_0,
      XBOOLE_1, STRUCT_0, XTUPLE_0;
 schemes BINOP_1, FUNCT_1, ORDERS_1, RELSET_1, CLASSES1, XFAMILY;

begin

reserve GF for add-associative right_zeroed right_complementable Abelian
  associative well-unital distributive non empty doubleLoopStr;
reserve M for Abelian add-associative right_zeroed right_complementable
  vector-distributive scalar-distributive scalar-associative scalar-unital
   non empty ModuleStr over GF;
reserve W,W1,W2,W3 for Subspace of M;
reserve u,u1,u2,v,v1,v2 for Element of M;
reserve X,Y for set, x,y,y1,y2 for object;

definition
  let GF;
  let M;
  let W1,W2;
  func W1 + W2 -> strict Subspace of M means
  :Def1:
  the carrier of it = {v + u : v in W1 & u in W2};
  existence
  proof
    reconsider V1 = the carrier of W1, V2 = the carrier of W2 as Subset of M
    by VECTSP_4:def 2;
    set VS = {v + u where u,v is Element of M: v in W1 & u in W2};
    VS c= the carrier of M
    proof
      let x be object;
      assume x in VS;
      then ex v2,v1 st x = v1 + v2 & v1 in W1 & v2 in W2;
      hence thesis;
    end;
    then reconsider VS as Subset of M;
A1: 0.M = 0.M + 0.M by RLVECT_1:4;
    0.M in W1 & 0.M in W2 by VECTSP_4:17;
    then
A2: 0.M in VS by A1;
A3: VS = {v + u where v,u: v in V1 & u in V2}
    proof
      thus VS c= {v + u where v,u: v in V1 & u in V2}
      proof
        let x be object;
        assume x in VS;
        then consider u,v such that
A4:     x = v + u and
A5:     v in W1 & u in W2;
        v in V1 & u in V2 by A5,STRUCT_0:def 5;
        hence thesis by A4;
      end;
      let x be object;
      assume x in {v + u where v,u: v in V1 & u in V2};
      then consider v,u such that
A6:   x = v + u and
A7:   v in V1 & u in V2;
      v in W1 & u in W2 by A7,STRUCT_0:def 5;
      hence thesis by A6;
    end;
    V1 is linearly-closed & V2 is linearly-closed by VECTSP_4:33;
    hence thesis by A2,A3,VECTSP_4:6,34;
  end;
  uniqueness by VECTSP_4:29;
end;

Lm1: W1 + W2 = W2 + W1
proof
  set A = {v + u : v in W1 & u in W2};
  set B = {v + u : v in W2 & u in W1};
A1: B c= A
  proof
    let x be object;
    assume x in B;
    then ex u,v st x = v + u & v in W2 & u in W1;
    hence thesis;
  end;
A2: the carrier of W1 + W2 = A by Def1;
  A c= B
  proof
    let x be object;
    assume x in A;
    then ex u,v st x = v + u & v in W1 & u in W2;
    hence thesis;
  end;
  then A = B by A1;
  hence thesis by A2,Def1;
end;

definition
  let GF;
  let M;
  let W1,W2;
  func W1 /\ W2 -> strict Subspace of M means
  :Def2:
  the carrier of it = (the carrier of W1) /\ (the carrier of W2);
  existence
  proof
    set VW2 = the carrier of W2;
    set VW1 = the carrier of W1;
    set VV = the carrier of M;
    0.M in W2 by VECTSP_4:17;
    then
A1: 0.M in VW2 by STRUCT_0:def 5;
    VW1 c= VV & VW2 c= VV by VECTSP_4:def 2;
    then VW1 /\ VW2 c= VV /\ VV by XBOOLE_1:27;
    then reconsider V1 = VW1, V2 = VW2, V3 = VW1 /\ VW2 as Subset of M by
VECTSP_4:def 2;
    V1 is linearly-closed & V2 is linearly-closed by VECTSP_4:33;
    then
A2: V3 is linearly-closed by VECTSP_4:7;
    0.M in W1 by VECTSP_4:17;
    then 0.M in VW1 by STRUCT_0:def 5;
    then VW1 /\ VW2 <> {} by A1,XBOOLE_0:def 4;
    hence thesis by A2,VECTSP_4:34;
  end;
  uniqueness by VECTSP_4:29;
  commutativity;
end;

theorem Th1:
  x in W1 + W2 iff ex v1,v2 st v1 in W1 & v2 in W2 & x = v1 + v2
proof
  thus x in W1 + W2 implies ex v1,v2 st v1 in W1 & v2 in W2 & x = v1 + v2
  proof
    assume x in W1 + W2;
    then x in the carrier of W1 + W2 by STRUCT_0:def 5;
    then x in {v + u : v in W1 & u in W2} by Def1;
    then consider v2,v1 such that
A1: x = v1 + v2 & v1 in W1 & v2 in W2;
    take v1,v2;
    thus thesis by A1;
  end;
  given v1,v2 such that
A2: v1 in W1 & v2 in W2 & x = v1 + v2;
  x in {v + u : v in W1 & u in W2} by A2;
  then x in the carrier of W1 + W2 by Def1;
  hence thesis by STRUCT_0:def 5;
end;

theorem Th2:
  v in W1 or v in W2 implies v in W1 + W2
proof
  assume
A1: v in W1 or v in W2;
  now
    per cases by A1;
    suppose
A2:   v in W1;
      v = v + 0.M & 0.M in W2 by RLVECT_1:4,VECTSP_4:17;
      hence thesis by A2,Th1;
    end;
    suppose
A3:   v in W2;
      v = 0.M + v & 0.M in W1 by RLVECT_1:4,VECTSP_4:17;
      hence thesis by A3,Th1;
    end;
  end;
  hence thesis;
end;

theorem Th3:
  x in W1 /\ W2 iff x in W1 & x in W2
proof
  x in W1 /\ W2 iff x in the carrier of W1 /\ W2 by STRUCT_0:def 5;
  then x in W1 /\ W2 iff x in (the carrier of W1) /\ (the carrier of W2) by
Def2;
  then x in W1 /\ W2 iff x in the carrier of W1 & x in the carrier of W2 by
XBOOLE_0:def 4;
  hence thesis by STRUCT_0:def 5;
end;

Lm2: the carrier of W1 c= the carrier of W1 + W2
proof
  let x be object;
  set A = {v + u : v in W1 & u in W2};
  assume x in the carrier of W1;
  then reconsider v = x as Element of W1;
  reconsider v as Element of M by VECTSP_4:10;
A1: v = v + 0.M by RLVECT_1:4;
  v in W1 & 0.M in W2 by STRUCT_0:def 5,VECTSP_4:17;
  then x in A by A1;
  hence thesis by Def1;
end;

Lm3: for W2 being strict Subspace of M holds the carrier of W1 c= the carrier
of W2 implies W1 + W2 = W2
proof
  let W2 be strict Subspace of M;
  assume
A1: the carrier of W1 c= the carrier of W2;
A2: the carrier of W1 + W2 c= the carrier of W2
  proof
    let x be object;
    assume x in the carrier of W1 + W2;
    then x in {v + u : v in W1 & u in W2} by Def1;
    then consider u,v such that
A3: x = v + u and
A4: v in W1 and
A5: u in W2;
    W1 is Subspace of W2 by A1,VECTSP_4:27;
    then v in W2 by A4,VECTSP_4:8;
    then v + u in W2 by A5,VECTSP_4:20;
    hence thesis by A3,STRUCT_0:def 5;
  end;
  W1 + W2 = W2 + W1 by Lm1;
  then the carrier of W2 c= the carrier of W1 + W2 by Lm2;
  then the carrier of W1 + W2 = the carrier of W2 by A2;
  hence thesis by VECTSP_4:29;
end;

theorem
  for W being strict Subspace of M holds W + W = W by Lm3;

theorem
  W1 + W2 = W2 + W1 by Lm1;

theorem Th6:
  W1 + (W2 + W3) = (W1 + W2) + W3
proof
  set A = {v + u : v in W1 & u in W2};
  set B = {v + u : v in W2 & u in W3};
  set C = {v + u : v in W1 + W2 & u in W3};
  set D = {v + u : v in W1 & u in W2 + W3};
A1: the carrier of W1 + (W2 + W3) = D by Def1;
A2: C c= D
  proof
    let x be object;
    assume x in C;
    then consider u,v such that
A3: x = v + u and
A4: v in W1 + W2 and
A5: u in W3;
    v in the carrier of W1 + W2 by A4,STRUCT_0:def 5;
    then v in A by Def1;
    then consider u2,u1 such that
A6: v = u1 + u2 and
A7: u1 in W1 and
A8: u2 in W2;
    u2 + u in B by A5,A8;
    then u2 + u in the carrier of W2 + W3 by Def1;
    then
A9: u2 + u in W2 + W3 by STRUCT_0:def 5;
    v + u =u1 + (u2 + u) by A6,RLVECT_1:def 3;
    hence thesis by A3,A7,A9;
  end;
  D c= C
  proof
    let x be object;
    assume x in D;
    then consider u,v such that
A10: x = v + u and
A11: v in W1 and
A12: u in W2 + W3;
    u in the carrier of W2 + W3 by A12,STRUCT_0:def 5;
    then u in B by Def1;
    then consider u2,u1 such that
A13: u = u1 + u2 and
A14: u1 in W2 and
A15: u2 in W3;
    v + u1 in A by A11,A14;
    then v + u1 in the carrier of W1 + W2 by Def1;
    then
A16: v + u1 in W1 + W2 by STRUCT_0:def 5;
    v + u = (v + u1) + u2 by A13,RLVECT_1:def 3;
    hence thesis by A10,A15,A16;
  end;
  then D = C by A2;
  hence thesis by A1,Def1;
end;

theorem Th7:
  W1 is Subspace of W1 + W2 & W2 is Subspace of W1 + W2
proof
  the carrier of W1 c= the carrier of W1 + W2 by Lm2;
  hence W1 is Subspace of W1 + W2 by VECTSP_4:27;
  the carrier of W2 c= the carrier of W2 + W1 by Lm2;
  then the carrier of W2 c= the carrier of W1 + W2 by Lm1;
  hence thesis by VECTSP_4:27;
end;

theorem Th8:
  for W2 being strict Subspace of M holds W1 is Subspace of W2 iff W1 + W2 = W2
proof
  let W2 be strict Subspace of M;
  thus W1 is Subspace of W2 implies W1 + W2 = W2
  proof
    assume W1 is Subspace of W2;
    then the carrier of W1 c= the carrier of W2 by VECTSP_4:def 2;
    hence thesis by Lm3;
  end;
  thus thesis by Th7;
end;

theorem Th9:
  for W being strict Subspace of M holds (0).M + W = W & W + (0).M = W
proof
  let W be strict Subspace of M;
  (0).M is Subspace of W by VECTSP_4:39;
  then the carrier of (0).M c= the carrier of W by VECTSP_4:def 2;
  hence (0).M + W = W by Lm3;
  hence thesis by Lm1;
end;

Lm4: for W ex W9 being strict Subspace of M st the carrier of W = the carrier
of W9
proof
  let W;
  take W9 = W + W;
  thus the carrier of W c= the carrier of W9 by Lm2;
  let x be object;
  assume x in the carrier of W9;
  then x in {v + u : v in W & u in W} by Def1;
  then ex v2,v1 st x = v1 + v2 & v1 in W & v2 in W;
  then x in W by VECTSP_4:20;
  hence thesis by STRUCT_0:def 5;
end;

Lm5: for W,W9,W1 being Subspace of M st the carrier of W = the carrier of W9
holds W1 + W = W1 + W9 & W + W1 = W9 + W1
proof
  let W,W9,W1 be Subspace of M such that
A1: the carrier of W = the carrier of W9;
A2: now
    let v;
    set W1W9 = {v1 + v2 where v2,v1: v1 in W1 & v2 in W9};
    set W1W = {v1 + v2 where v2,v1: v1 in W1 & v2 in W};
    thus v in W1 + W implies v in W1 + W9
    proof
      assume v in W1 + W;
      then v in the carrier of W1 + W by STRUCT_0:def 5;
      then v in W1W by Def1;
      then consider v2,v1 such that
A3:   v = v1 + v2 & v1 in W1 and
A4:   v2 in W;
      v2 in the carrier of W9 by A1,A4,STRUCT_0:def 5;
      then v2 in W9 by STRUCT_0:def 5;
      then v in W1W9 by A3;
      then v in the carrier of W1 + W9 by Def1;
      hence thesis by STRUCT_0:def 5;
    end;
    assume v in W1 + W9;
    then v in the carrier of W1 + W9 by STRUCT_0:def 5;
    then v in W1W9 by Def1;
    then consider v2,v1 such that
A5: v = v1 + v2 & v1 in W1 and
A6: v2 in W9;
    v2 in the carrier of W by A1,A6,STRUCT_0:def 5;
    then v2 in W by STRUCT_0:def 5;
    then v in W1W by A5;
    then v in the carrier of W1 + W by Def1;
    hence v in W1 + W by STRUCT_0:def 5;
  end;
  hence W1 + W = W1 + W9 by VECTSP_4:30;
  W1 + W = W + W1 & W1 + W9 = W9 + W1 by Lm1;
  hence thesis by A2,VECTSP_4:30;
end;

Lm6: for W being Subspace of M holds W is Subspace of (Omega).M
proof
  let W be Subspace of M;
  thus the carrier of W c= the carrier of (Omega).M by VECTSP_4:def 2;
  thus 0.W = 0.M by VECTSP_4:def 2
    .= 0.(Omega).M by VECTSP_4:def 2;
  thus thesis by VECTSP_4:def 2;
end;

theorem
  (0).M + (Omega).M = the ModuleStr of M & (Omega). M + (0).M = the
  ModuleStr of M by Th9;

theorem Th11:
  (Omega).M + W = the ModuleStr of M & W + (Omega).M = the ModuleStr of M
proof
  consider W9 being strict Subspace of M such that
A1: the carrier of W9 = the carrier of (Omega).M;
A2: the carrier of W c= the carrier of W9 by A1,VECTSP_4:def 2;
A3: W9 is Subspace of (Omega).M by Lm6;
  W + (Omega).M = W + W9 by A1,Lm5
    .= W9 by A2,Lm3
    .= the ModuleStr of M by A1,A3,VECTSP_4:31;
  hence thesis by Lm1;
end;

theorem
  for M being strict Abelian add-associative right_zeroed
right_complementable vector-distributive scalar-distributive
scalar-associative scalar-unital non empty ModuleStr over GF holds (Omega).M
  + (Omega).M = M by Th11;

theorem
  for W being strict Subspace of M holds W /\ W = W
proof
  let W be strict Subspace of M;
  the carrier of W = (the carrier of W) /\ (the carrier of W);
  hence thesis by Def2;
end;

theorem Th14:
  W1 /\ (W2 /\ W3) = (W1 /\ W2) /\ W3
proof
  set V1 = the carrier of W1;
  set V2 = the carrier of W2;
  set V3 = the carrier of W3;
  the carrier of W1 /\ (W2 /\ W3) = V1 /\ (the carrier of W2 /\ W3) by Def2
    .= V1 /\ (V2 /\ V3) by Def2
    .= (V1 /\ V2) /\ V3 by XBOOLE_1:16
    .= (the carrier of W1 /\ W2) /\ V3 by Def2;
  hence thesis by Def2;
end;

Lm7: the carrier of W1 /\ W2 c= the carrier of W1
proof
  the carrier of W1 /\ W2 = (the carrier of W1) /\ (the carrier of W2) by Def2;
  hence thesis by XBOOLE_1:17;
end;

theorem Th15:
  W1 /\ W2 is Subspace of W1 & W1 /\ W2 is Subspace of W2
proof
  the carrier of W1 /\ W2 c= the carrier of W1 by Lm7;
  hence W1 /\ W2 is Subspace of W1 by VECTSP_4:27;
  the carrier of W2 /\ W1 c= the carrier of W2 by Lm7;
  hence thesis by VECTSP_4:27;
end;

Lm8: for W,W9,W1 being Subspace of M st the carrier of W = the carrier of W9
holds W1 /\ W = W1 /\ W9 & W /\ W1 = W9 /\ W1
proof
  let W,W9,W1 be Subspace of M;
  assume the carrier of W = the carrier of W9;
  then
A1: the carrier of W1 /\ W = (the carrier of W1) /\ (the carrier of W9) by Def2
    .= the carrier of W1 /\ W9 by Def2;
  hence W1 /\ W = W1 /\ W9 by VECTSP_4:29;
  thus thesis by A1,VECTSP_4:29;
end;

theorem Th16:
  (for W1 being strict Subspace of M holds W1 is Subspace of W2
  implies W1 /\ W2 = W1) & for W1 st W1 /\ W2 = W1 holds W1 is Subspace of W2
proof
  thus for W1 being strict Subspace of M holds W1 is Subspace of W2 implies W1
  /\ W2 = W1
  proof
    let W1 be strict Subspace of M;
    assume W1 is Subspace of W2;
    then
A1: the carrier of W1 c= the carrier of W2 by VECTSP_4:def 2;
    the carrier of W1 /\ W2 = (the carrier of W1) /\ (the carrier of W2)
    by Def2;
    hence thesis by A1,VECTSP_4:29,XBOOLE_1:28;
  end;
  thus thesis by Th15;
end;

theorem
  W1 is Subspace of W2 implies W1 /\ W3 is Subspace of W2 /\ W3
proof
  set A1 = the carrier of W1;
  set A2 = the carrier of W2;
  set A3 = the carrier of W3;
  set A4 = the carrier of W1 /\ W3;
  assume W1 is Subspace of W2;
  then A1 c= A2 by VECTSP_4:def 2;
  then A1 /\ A3 c= A2 /\ A3 by XBOOLE_1:26;
  then A4 c= A2 /\ A3 by Def2;
  then A4 c= the carrier of W2 /\ W3 by Def2;
  hence thesis by VECTSP_4:27;
end;

theorem
  W1 is Subspace of W3 implies W1 /\ W2 is Subspace of W3
proof
  assume
A1: W1 is Subspace of W3;
  W1 /\ W2 is Subspace of W1 by Th15;
  hence thesis by A1,VECTSP_4:26;
end;

theorem
  W1 is Subspace of W2 & W1 is Subspace of W3 implies W1 is Subspace of
  W2 /\ W3
proof
  assume
A1: W1 is Subspace of W2 & W1 is Subspace of W3;
  now
    let v;
    assume v in W1;
    then v in W2 & v in W3 by A1,VECTSP_4:8;
    hence v in W2 /\ W3 by Th3;
  end;
  hence thesis by VECTSP_4:28;
end;

theorem Th20:
  (0).M /\ W = (0).M & W /\ (0).M = (0).M
proof
  0.M in W by VECTSP_4:17;
  then 0.M in the carrier of W by STRUCT_0:def 5;
  then {0.M} c= the carrier of W by ZFMISC_1:31;
  then
A1: {0.M} /\ (the carrier of W) = {0.M} by XBOOLE_1:28;
A2: the carrier of (0).M /\ W = (the carrier of (0).M) /\ (the carrier of W)
  by Def2
    .= {0.M} /\ (the carrier of W) by VECTSP_4:def 3;
  hence (0).M /\ W = (0).M by A1,VECTSP_4:def 3;
  thus thesis by A2,A1,VECTSP_4:def 3;
end;

theorem Th21:
  for W being strict Subspace of M holds (Omega).M /\ W = W & W /\
  (Omega).M = W
proof
  let W be strict Subspace of M;
A1: the carrier of (Omega).M /\ W = (the carrier of the ModuleStr of M) /\ (
the carrier of W) & the carrier of W c= the carrier of M by Def2,VECTSP_4:def 2
  ;
  hence (Omega).M /\ W = W by VECTSP_4:29,XBOOLE_1:28;
  thus thesis by A1,VECTSP_4:29,XBOOLE_1:28;
end;

theorem
  for M being strict Abelian add-associative right_zeroed
right_complementable vector-distributive scalar-distributive
scalar-associative scalar-unital non empty ModuleStr over GF holds (Omega).M
  /\ (Omega).M = M by Th21;

Lm9: the carrier of W1 /\ W2 c= the carrier of W1 + W2
proof
  the carrier of W1 /\ W2 c= the carrier of W1 & the carrier of W1 c= the
  carrier of W1 + W2 by Lm2,Lm7;
  hence thesis;
end;

theorem
  W1 /\ W2 is Subspace of W1 + W2 by Lm9,VECTSP_4:27;

Lm10: the carrier of (W1 /\ W2) + W2 = the carrier of W2
proof
  thus the carrier of (W1 /\ W2) + W2 c= the carrier of W2
  proof
    let x be object;
    assume x in the carrier of (W1 /\ W2) + W2;
    then x in {u + v where v,u: u in W1 /\ W2 & v in W2} by Def1;
    then consider v,u such that
A1: x = u + v and
A2: u in W1 /\ W2 and
A3: v in W2;
    u in W2 by A2,Th3;
    then u + v in W2 by A3,VECTSP_4:20;
    hence thesis by A1,STRUCT_0:def 5;
  end;
  let x be object;
  the carrier of W2 c= the carrier of W2 + (W1 /\ W2) by Lm2;
  then
A4: the carrier of W2 c= the carrier of (W1 /\ W2) + W2 by Lm1;
  assume x in the carrier of W2;
  hence thesis by A4;
end;

theorem
  for W2 being strict Subspace of M holds (W1 /\ W2) + W2 = W2 by Lm10,
VECTSP_4:29;

Lm11: the carrier of W1 /\ (W1 + W2) = the carrier of W1
proof
  thus the carrier of W1 /\ (W1 + W2) c= the carrier of W1
  proof
    let x be object;
    assume
A1: x in the carrier of W1 /\ (W1 + W2);
    the carrier of W1 /\ (W1 + W2) = (the carrier of W1) /\ (the carrier
    of W1 + W2) by Def2;
    hence thesis by A1,XBOOLE_0:def 4;
  end;
  let x be object;
  assume
A2: x in the carrier of W1;
  the carrier of W1 c= the carrier of M by VECTSP_4:def 2;
  then reconsider x1 = x as Element of M by A2;
A3: x1 + 0.M = x1 & 0.M in W2 by RLVECT_1:4,VECTSP_4:17;
  x in W1 by A2,STRUCT_0:def 5;
  then x in {u + v where v,u: u in W1 & v in W2} by A3;
  then x in the carrier of W1 + W2 by Def1;
  then x in (the carrier of W1) /\ (the carrier of W1 + W2) by A2,
XBOOLE_0:def 4;
  hence thesis by Def2;
end;

theorem
  for W1 being strict Subspace of M holds W1 /\ (W1 + W2) = W1 by Lm11,
VECTSP_4:29;

Lm12: the carrier of (W1 /\ W2) + (W2 /\ W3) c= the carrier of W2 /\ (W1 + W3)
proof
  let x be object;
  assume x in the carrier of (W1 /\ W2) + (W2 /\ W3);
  then x in {u + v where v,u: u in W1 /\ W2 & v in W2 /\ W3} by Def1;
  then consider v,u such that
A1: x = u + v and
A2: u in W1 /\ W2 & v in W2 /\ W3;
  u in W2 & v in W2 by A2,Th3;
  then
A3: x in W2 by A1,VECTSP_4:20;
  u in W1 & v in W3 by A2,Th3;
  then x in W1 + W3 by A1,Th1;
  then x in W2 /\ (W1 + W3) by A3,Th3;
  hence thesis by STRUCT_0:def 5;
end;

theorem
  (W1 /\ W2) + (W2 /\ W3) is Subspace of W2 /\ (W1 + W3) by Lm12,VECTSP_4:27;

Lm13: W1 is Subspace of W2 implies the carrier of W2 /\ (W1 + W3) = the
carrier of (W1 /\ W2) + (W2 /\ W3)
proof
  assume
A1: W1 is Subspace of W2;
  thus the carrier of W2 /\ (W1 + W3) c= the carrier of (W1 /\ W2) + (W2 /\ W3
  )
  proof
    let x be object;
    assume x in the carrier of W2 /\ (W1 + W3);
    then
A2: x in (the carrier of W2) /\ (the carrier of W1 + W3) by Def2;
    then x in the carrier of W1 + W3 by XBOOLE_0:def 4;
    then x in {u + v where v,u: u in W1 & v in W3} by Def1;
    then consider v1,u1 such that
A3: x = u1 + v1 and
A4: u1 in W1 and
A5: v1 in W3;
A6: u1 in W2 by A1,A4,VECTSP_4:8;
    x in the carrier of W2 by A2,XBOOLE_0:def 4;
    then u1 + v1 in W2 by A3,STRUCT_0:def 5;
    then (v1 + u1) - u1 in W2 by A6,VECTSP_4:23;
    then v1 + (u1 - u1) in W2 by RLVECT_1:def 3;
    then v1 + 0.M in W2 by VECTSP_1:19;
    then v1 in W2 by RLVECT_1:4;
    then
A7: v1 in W2 /\ W3 by A5,Th3;
    u1 in W1 /\ W2 by A4,A6,Th3;
    then x in (W1 /\ W2) + (W2 /\ W3) by A3,A7,Th1;
    hence thesis by STRUCT_0:def 5;
  end;
  thus thesis by Lm12;
end;

theorem
  W1 is Subspace of W2 implies W2 /\ (W1 + W3) = (W1 /\ W2) + (W2 /\ W3)
  by Lm13,VECTSP_4:29;

Lm14: the carrier of W2 + (W1 /\ W3) c= the carrier of (W1 + W2) /\ (W2 + W3)
proof
  let x be object;
  assume x in the carrier of W2 + (W1 /\ W3);
  then x in {u + v where v,u: u in W2 & v in W1 /\ W3} by Def1;
  then consider v,u such that
A1: x = u + v & u in W2 and
A2: v in W1 /\ W3;
  v in W3 by A2,Th3;
  then x in {u1 + u2 where u2,u1: u1 in W2 & u2 in W3} by A1;
  then
A3: x in the carrier of W2 + W3 by Def1;
  v in W1 by A2,Th3;
  then x in {v1 + v2 where v2,v1: v1 in W1 & v2 in W2} by A1;
  then x in the carrier of W1 + W2 by Def1;
  then x in (the carrier of W1 + W2) /\ (the carrier of W2 + W3) by A3,
XBOOLE_0:def 4;
  hence thesis by Def2;
end;

theorem
  W2 + (W1 /\ W3) is Subspace of (W1 + W2) /\ (W2 + W3) by Lm14,VECTSP_4:27;

Lm15: W1 is Subspace of W2 implies the carrier of W2 + (W1 /\ W3) = the
carrier of (W1 + W2) /\ (W2 + W3)
proof
  reconsider V2 = the carrier of W2 as Subset of M by VECTSP_4:def 2;
A1: V2 is linearly-closed by VECTSP_4:33;
  assume W1 is Subspace of W2;
  then
A2: the carrier of W1 c= the carrier of W2 by VECTSP_4:def 2;
  thus the carrier of W2 + (W1 /\ W3) c= the carrier of (W1 + W2) /\ (W2 + W3)
  by Lm14;
  let x be object;
  assume x in the carrier of (W1 + W2) /\ (W2 + W3);
  then x in (the carrier of W1 + W2) /\ (the carrier of W2 + W3) by Def2;
  then x in the carrier of W1 + W2 by XBOOLE_0:def 4;
  then x in {u1 + u2 where u2,u1: u1 in W1 & u2 in W2} by Def1;
  then consider u2,u1 such that
A3: x = u1 + u2 and
A4: u1 in W1 & u2 in W2;
  u1 in the carrier of W1 & u2 in the carrier of W2 by A4,STRUCT_0:def 5;
  then u1 + u2 in V2 by A2,A1;
  then
A5: u1 + u2 in W2 by STRUCT_0:def 5;
  0.M in W1 /\ W3 & (u1 + u2) + 0.M = u1 + u2 by RLVECT_1:4,VECTSP_4:17;
  then x in {u + v where v,u: u in W2 & v in W1 /\ W3} by A3,A5;
  hence thesis by Def1;
end;

theorem
  W1 is Subspace of W2 implies W2 + (W1 /\ W3) = (W1 + W2) /\ (W2 + W3)
  by Lm15,VECTSP_4:29;

theorem Th30:
  for W1 being strict Subspace of M holds W1 is Subspace of W3
  implies W1 + (W2 /\ W3) = (W1 + W2) /\ W3
proof
  let W1 be strict Subspace of M;
  assume
A1: W1 is Subspace of W3;
  hence (W1 + W2) /\ W3 = (W1 /\ W3) + (W3 /\ W2) by Lm13,VECTSP_4:29
    .= W1 + (W2 /\ W3) by A1,Th16;
end;

theorem
  for W1,W2 being strict Subspace of M holds W1 + W2 = W2 iff W1 /\ W2 = W1
proof
  let W1,W2 be strict Subspace of M;
  W1 + W2 = W2 iff W1 is Subspace of W2 by Th8;
  hence thesis by Th16;
end;

theorem
  for W2,W3 being strict Subspace of M holds W1 is Subspace of W2
  implies W1 + W3 is Subspace of W2 + W3
proof
  let W2,W3 be strict Subspace of M;
  assume
A1: W1 is Subspace of W2;
  (W1 + W3) + (W2 + W3) = (W1 + W3) + (W3 + W2) by Lm1
    .= ((W1 + W3) + W3) + W2 by Th6
    .= (W1 + (W3 + W3)) + W2 by Th6
    .= (W1 + W3) + W2 by Lm3
    .= W1 + (W3 + W2) by Th6
    .= W1 + (W2 + W3) by Lm1
    .= (W1 + W2) + W3 by Th6
    .= W2 + W3 by A1,Th8;
  hence thesis by Th8;
end;

theorem
  W1 is Subspace of W2 implies W1 is Subspace of W2 + W3
proof
  assume
A1: W1 is Subspace of W2;
  W2 is Subspace of W2 + W3 by Th7;
  hence thesis by A1,VECTSP_4:26;
end;

theorem
  W1 is Subspace of W3 & W2 is Subspace of W3 implies W1 + W2 is Subspace of W3
proof
  assume
A1: W1 is Subspace of W3 & W2 is Subspace of W3;
  now
    let v;
    assume v in W1 + W2;
    then consider v1,v2 such that
A2: v1 in W1 & v2 in W2 and
A3: v = v1 + v2 by Th1;
    v1 in W3 & v2 in W3 by A1,A2,VECTSP_4:8;
    hence v in W3 by A3,VECTSP_4:20;
  end;
  hence thesis by VECTSP_4:28;
end;

theorem
  (ex W st the carrier of W = (the carrier of W1) \/ (the carrier of W2)
  ) iff W1 is Subspace of W2 or W2 is Subspace of W1
proof
  set VW1 = the carrier of W1;
  set VW2 = the carrier of W2;
  thus (ex W st the carrier of W = (the carrier of W1) \/ (the carrier of W2))
  implies W1 is Subspace of W2 or W2 is Subspace of W1
  proof
    given W such that
A1: the carrier of W = (the carrier of W1) \/ (the carrier of W2);
    set VW = the carrier of W;
    assume that
A2: not W1 is Subspace of W2 and
A3: not W2 is Subspace of W1;
    not VW2 c= VW1 by A3,VECTSP_4:27;
    then consider y being object such that
A4: y in VW2 and
A5: not y in VW1;
    reconsider y as Element of VW2 by A4;
    reconsider y as Element of M by VECTSP_4:10;
    reconsider A1 = VW as Subset of M by VECTSP_4:def 2;
A6: A1 is linearly-closed by VECTSP_4:33;
    not VW1 c= VW2 by A2,VECTSP_4:27;
    then consider x being object such that
A7: x in VW1 and
A8: not x in VW2;
    reconsider x as Element of VW1 by A7;
    reconsider x as Element of M by VECTSP_4:10;
A9: now
      reconsider A2 = VW2 as Subset of M by VECTSP_4:def 2;
A10:  A2 is linearly-closed by VECTSP_4:33;
      assume x + y in VW2;
      then (x + y) - y in VW2 by A10,VECTSP_4:3;
      then x + (y - y) in VW2 by RLVECT_1:def 3;
      then x + 0.M in VW2 by VECTSP_1:19;
      hence contradiction by A8,RLVECT_1:4;
    end;
A11: now
      reconsider A2 = VW1 as Subset of M by VECTSP_4:def 2;
A12:  A2 is linearly-closed by VECTSP_4:33;
      assume x + y in VW1;
      then (y + x) - x in VW1 by A12,VECTSP_4:3;
      then y + (x - x) in VW1 by RLVECT_1:def 3;
      then y + 0.M in VW1 by VECTSP_1:19;
      hence contradiction by A5,RLVECT_1:4;
    end;
    x in VW & y in VW by A1,XBOOLE_0:def 3;
    then x + y in VW by A6;
    hence thesis by A1,A11,A9,XBOOLE_0:def 3;
  end;
A13: now
    assume W1 is Subspace of W2;
    then VW1 c= VW2 by VECTSP_4:def 2;
    then VW1 \/ VW2 = VW2 by XBOOLE_1:12;
    hence thesis;
  end;
A14: now
    assume W2 is Subspace of W1;
    then VW2 c= VW1 by VECTSP_4:def 2;
    then VW1 \/ VW2 = VW1 by XBOOLE_1:12;
    hence thesis;
  end;
  assume W1 is Subspace of W2 or W2 is Subspace of W1;
  hence thesis by A13,A14;
end;

definition
  let GF;
  let M;
  func Subspaces(M) -> set means
  :Def3:
  for x being object
    holds x in it iff ex W being strict Subspace of M st W = x;
  existence
  proof
    defpred R[object, object] means
     ex W being strict Subspace of M st $2 = W & $1 = the carrier of W;
    defpred P[object] means
    ex W being strict Subspace of M st $1 = the carrier of W;
    consider B being set such that
A1: for x being set holds x in B iff x in bool the carrier of M & P[x] from
    XFAMILY:sch 1;
A2: for x,y1,y2 being object st R[x,y1] & R[x,y2] holds y1 = y2
       by VECTSP_4:29;
    consider f being Function such that
A3: for x,y being object holds [x,y] in f iff x in B & R[x,y]
     from FUNCT_1:sch 1(A2);
    for x being object holds x in B iff ex y being object st [x,y] in f
    proof
      let x be object;
      thus x in B implies ex y being object st [x,y] in f
      proof
        assume
A4:     x in B;
        then consider W being strict Subspace of M such that
A5:     x = the carrier of W by A1;
        take W;
        thus thesis by A3,A4,A5;
      end;
      thus thesis by A3;
    end;
    then
A6: B = dom f by XTUPLE_0:def 12;
    for y holds y in rng f iff ex W being strict Subspace of M st y = W
    proof
      let y;
      thus y in rng f implies ex W being strict Subspace of M st y = W
      proof
        assume y in rng f;
        then consider x being object such that
A7:     x in dom f & y = f.x by FUNCT_1:def 3;
        [x,y] in f by A7,FUNCT_1:def 2;
        then ex W being strict Subspace of M st y = W & x = the carrier of W
        by A3;
        hence thesis;
      end;
      given W being strict Subspace of M such that
A8:   y = W;
      reconsider W = y as Subspace of M by A8;
      reconsider x = the carrier of W as set;
A9:   y is set by TARSKI:1;
      the carrier of W c= the carrier of M by VECTSP_4:def 2;
      then
A10:  x in dom f by A1,A6,A8;
      then [x,y] in f by A3,A6,A8;
      then y = f.x by A10,FUNCT_1:def 2,A9;
      hence thesis by A10,FUNCT_1:def 3;
    end;
    hence thesis;
  end;
  uniqueness
  proof
    let D1,D2 be set;
    assume
A11: for x holds x in D1 iff ex W being strict Subspace of M st x= W;
    assume
A12: for x holds x in D2 iff ex W being strict Subspace of M st x = W;
    now
      let x be object;
      thus x in D1 implies x in D2
      proof
        assume x in D1;
        then ex W being strict Subspace of M st x= W by A11;
        hence thesis by A12;
      end;
      assume x in D2;
      then ex W being strict Subspace of M st x= W by A12;
      hence x in D1 by A11;
    end;
    hence thesis by TARSKI:2;
  end;
end;

registration
  let GF;
  let M;
  cluster Subspaces(M) -> non empty;
  coherence
  proof
    set W = the strict Subspace of M;
    W in Subspaces(M) by Def3;
    hence thesis;
  end;
end;

theorem
  for M being strict Abelian add-associative right_zeroed
  right_complementable vector-distributive scalar-distributive
  scalar-associative scalar-unital non empty ModuleStr over GF holds M in
  Subspaces(M)
proof
  let M be strict Abelian add-associative right_zeroed right_complementable
  vector-distributive scalar-distributive scalar-associative scalar-unital
   non empty ModuleStr over GF;
  ex W9 being strict Subspace of M st the carrier of (Omega).M = the
  carrier of W9;
  hence thesis by Def3;
end;

definition
  let GF;
  let M;
  let W1,W2;
  pred M is_the_direct_sum_of W1,W2 means

  the ModuleStr of M = W1 + W2 & W1 /\ W2 = (0).M;
end;

Lm16: W1 + W2 = the ModuleStr of M iff for v being Element of M ex v1,v2 being
Element of M st v1 in W1 & v2 in W2 & v = v1 + v2
proof
  thus W1 + W2 = the ModuleStr of M implies for v being Element of M ex v1,v2
  being Element of M st v1 in W1 & v2 in W2 & v = v1 + v2
  by RLVECT_1:1,Th1;
  assume
A1: for v being Element of M ex v1,v2 being Element of M st v1 in W1 &
  v2 in W2 & v = v1 + v2;
  now
    thus W1 + W2 is Subspace of (Omega).M by Lm6;
    let u be Element of M;
    ex v1,v2 being Element of M st v1 in W1 & v2 in W2 & u = v1 + v2 by A1;
    hence u in W1 + W2 by Th1;
  end;
  hence thesis by VECTSP_4:32;
end;

reserve F for Field;
reserve V for VectSp of F;
reserve W for Subspace of V;

definition
  let F,V,W;
  mode Linear_Compl of W -> Subspace of V means
    :Def5:
    V is_the_direct_sum_of it,W;
  existence
  proof
    defpred P[set,set] means ex W1,W2 being strict Subspace of V st $1 = W1 &
    $2 = W2 & W1 is Subspace of W2;
    defpred P[set] means
     ex W1 being strict Subspace of V st $1 = W1 & W /\ W1 = (0).V;
    consider X such that
A1: for x being set holds x in X iff x in Subspaces(V) & P[x]
      from XFAMILY:sch 1;
    W /\ (0).V = (0).V & (0).V in Subspaces(V) by Def3,Th20;
    then reconsider X as non empty set by A1;
    consider R being Relation of X such that
A2: for x,y being Element of X holds [x,y] in R iff P[x,y] from
    RELSET_1:sch 2;
    defpred Z[set, set] means [$1,$2] in R;
A3: now
      let x,y be Element of X;
      assume ( Z[x,y])& Z[y,x];
      then ( ex W1,W2 being strict Subspace of V st x = W1 & y = W2 & W1 is
Subspace of W2 )& ex W3,W4 being strict Subspace of V st y = W3 & x = W4 & W3
      is Subspace of W4 by A2;
      hence x = y by VECTSP_4:25;
    end;
A4: for Y st Y c= X & (for x,y being Element of X st x in Y & y in Y
holds Z[x,y] or Z[y,x]) ex y being Element of X st for x being Element of X st
    x in Y holds Z[x,y]
    proof
      let Y;
      assume that
A5:   Y c= X and
A6:   for x,y being Element of X st x in Y & y in Y holds [x,y] in R
      or [y,x] in R;
      now
        per cases;
        suppose
A7:       Y = {};
          set y = the Element of X;
          take y9 = y;
          let x be Element of X;
          assume x in Y;
          hence [x,y9] in R by A7;
        end;
        suppose
A8:       Y <> {};
          defpred P[object,object] means
        ex W1 being strict Subspace of V st $1 = W1
          & $2 = the carrier of W1;
A9:       for x being object st x in Y ex y being object st P[x,y]
          proof
            let x be object;
            assume x in Y;
            then consider W1 being strict Subspace of V such that
A10:        x = W1 and
            W /\ W1 = (0).V by A1,A5;
            reconsider y = the carrier of W1 as set;
            take y;
            take W1;
            thus thesis by A10;
          end;
          consider f being Function such that
A11:      dom f = Y and
A12:      for x being object st x in Y holds P[x, f.x]
from CLASSES1:sch 1(A9);
          set Z = union(rng f);
          now
            let x be object;
            assume x in Z;
            then consider Y9 being set such that
A13:        x in Y9 and
A14:        Y9 in rng f by TARSKI:def 4;
            consider y being object such that
A15:        y in dom f and
A16:        f.y = Y9 by A14,FUNCT_1:def 3;
            consider W1 being strict Subspace of V such that
            y = W1 and
A17:        f.y = the carrier of W1 by A11,A12,A15;
            the carrier of W1 c= the carrier of V by VECTSP_4:def 2;
            hence x in the carrier of V by A13,A16,A17;
          end;
          then reconsider Z as Subset of V by TARSKI:def 3;
A18:      Z is linearly-closed
          proof
            thus for v1,v2 being Element of V st v1 in Z & v2 in Z holds v1 +
            v2 in Z
            proof
              let v1,v2 be Element of V;
              assume that
A19:          v1 in Z and
A20:          v2 in Z;
              consider Y1 being set such that
A21:          v1 in Y1 and
A22:          Y1 in rng f by A19,TARSKI:def 4;
              consider y1 being object such that
A23:          y1 in dom f and
A24:          f.y1 = Y1 by A22,FUNCT_1:def 3;
              consider Y2 being set such that
A25:          v2 in Y2 and
A26:          Y2 in rng f by A20,TARSKI:def 4;
              consider y2 being object such that
A27:          y2 in dom f and
A28:          f.y2 = Y2 by A26,FUNCT_1:def 3;
              consider W1 being strict Subspace of V such that
A29:          y1 = W1 and
A30:          f.y1 = the carrier of W1 by A11,A12,A23;
              consider W2 being strict Subspace of V such that
A31:          y2 = W2 and
A32:          f.y2 = the carrier of W2 by A11,A12,A27;
              reconsider y1,y2 as Element of X by A5,A11,A23,A27;
              now
                per cases by A6,A11,A23,A27;
                suppose
                  [y1,y2] in R;
                  then ex W3,W4 being strict Subspace of V st y1 = W3 & y2 =
                  W4 & W3 is Subspace of W4 by A2;
                  then the carrier of W1 c= the carrier of W2 by A29,A31,
VECTSP_4:def 2;
                  then
A33:              v1 in W2 by A21,A24,A30,STRUCT_0:def 5;
                  v2 in W2 by A25,A28,A32,STRUCT_0:def 5;
                  then v1 + v2 in W2 by A33,VECTSP_4:20;
                  then
A34:              v1 + v2 in the carrier of W2 by STRUCT_0:def 5;
                  f.y2 in rng f by A27,FUNCT_1:def 3;
                  hence thesis by A32,A34,TARSKI:def 4;
                end;
                suppose
                  [y2,y1] in R;
                  then ex W3,W4 being strict Subspace of V st y2 = W3 & y1 =
                  W4 & W3 is Subspace of W4 by A2;
                  then the carrier of W2 c= the carrier of W1 by A29,A31,
VECTSP_4:def 2;
                  then
A35:              v2 in W1 by A25,A28,A32,STRUCT_0:def 5;
                  v1 in W1 by A21,A24,A30,STRUCT_0:def 5;
                  then v1 + v2 in W1 by A35,VECTSP_4:20;
                  then
A36:              v1 + v2 in the carrier of W1 by STRUCT_0:def 5;
                  f.y1 in rng f by A23,FUNCT_1:def 3;
                  hence thesis by A30,A36,TARSKI:def 4;
                end;
              end;
              hence thesis;
            end;
            let a be Element of F, v1 be Element of V;
            assume v1 in Z;
            then consider Y1 being set such that
A37:        v1 in Y1 and
A38:        Y1 in rng f by TARSKI:def 4;
            consider y1 being object such that
A39:        y1 in dom f and
A40:        f.y1 = Y1 by A38,FUNCT_1:def 3;
            consider W1 being strict Subspace of V such that
            y1 = W1 and
A41:        f.y1 = the carrier of W1 by A11,A12,A39;
            v1 in W1 by A37,A40,A41,STRUCT_0:def 5;
            then a * v1 in W1 by VECTSP_4:21;
            then
A42:        a * v1 in the carrier of W1 by STRUCT_0:def 5;
            f.y1 in rng f by A39,FUNCT_1:def 3;
            hence thesis by A41,A42,TARSKI:def 4;
          end;
          set z = the Element of rng f;
A43:      rng f <> {} by A8,A11,RELAT_1:42;
          then consider z1 being object such that
A44:      z1 in dom f and
A45:      f.z1 = z by FUNCT_1:def 3;
          ex W3 being strict Subspace of V st z1 = W3 & f.z1 = the carrier
          of W3 by A11,A12,A44;
          then Z <> {} by A43,A45,ORDERS_1:6;
          then consider E being strict Subspace of V such that
A46:      Z = the carrier of E by A18,VECTSP_4:34;
          now
            let u be Element of V;
            thus u in W /\ E implies u in (0).V
            proof
              assume
A47:          u in W /\ E;
              then
A48:          u in W by Th3;
              u in E by A47,Th3;
              then u in Z by A46,STRUCT_0:def 5;
              then consider Y1 being set such that
A49:          u in Y1 and
A50:          Y1 in rng f by TARSKI:def 4;
              consider y1 being object such that
A51:          y1 in dom f and
A52:          f.y1 = Y1 by A50,FUNCT_1:def 3;
A53:          ex W2 being strict Subspace of V st y1 = W2 & W /\ W2 =
              (0).V by A1,A5,A11,A51;
              consider W1 being strict Subspace of V such that
A54:          y1 = W1 and
A55:          f.y1 = the carrier of W1 by A11,A12,A51;
              u in W1 by A49,A52,A55,STRUCT_0:def 5;
              hence thesis by A54,A48,A53,Th3;
            end;
            assume u in (0).V;
            then u in the carrier of (0).V by STRUCT_0:def 5;
            then u in {0.V} by VECTSP_4:def 3;
            then u = 0.V by TARSKI:def 1;
            hence u in W /\ E by VECTSP_4:17;
          end;
          then
A56:      W /\ E = (0).V by VECTSP_4:30;
          E in Subspaces(V) by Def3;
          then reconsider y9 = E as Element of X by A1,A56;
          take y = y9;
          let x be Element of X;
          assume
A57:      x in Y;
          then consider W1 being strict Subspace of V such that
A58:      x = W1 and
A59:      f.x = the carrier of W1 by A12;
          now
            let u be Element of V;
            assume u in W1;
            then
A60:        u in the carrier of W1 by STRUCT_0:def 5;
            the carrier of W1 in rng f by A11,A57,A59,FUNCT_1:def 3;
            then u in Z by A60,TARSKI:def 4;
            hence u in E by A46,STRUCT_0:def 5;
          end;
          then W1 is Subspace of E by VECTSP_4:28;
          hence [x,y] in R by A2,A58;
        end;
      end;
      hence thesis;
    end;
A61: now
      let x,y,z be Element of X;
      assume that
A62:  Z[x,y] and
A63:  Z[y,z];
      consider W1,W2 being strict Subspace of V such that
A64:  x = W1 and
A65:  y = W2 & W1 is Subspace of W2 by A2,A62;
      consider W3,W4 being strict Subspace of V such that
A66:  y = W3 and
A67:  z = W4 and
A68:  W3 is Subspace of W4 by A2,A63;
      W1 is Subspace of W4 by A65,A66,A68,VECTSP_4:26;
      hence Z[x,z] by A2,A64,A67;
    end;
A69: now
      let x be Element of X;
      consider W1 being strict Subspace of V such that
A70:  x = W1 and
      W /\ W1 = (0).V by A1;
      W1 is Subspace of W1 by VECTSP_4:24;
      hence Z[x,x] by A2,A70;
    end;
    consider x being Element of X such that
A71: for y being Element of X st x <> y holds not Z[x,y] from
    ORDERS_1:sch 1 (A69,A3,A61,A4);
    consider L being strict Subspace of V such that
A72: x = L and
A73: W /\ L = (0).V by A1;
    take L;
    thus the ModuleStr of V = L + W
    proof
      assume not thesis;
      then consider v being Element of V such that
A74:  for v1,v2 being Element of V holds not v1 in L or not v2 in W
      or v <> v1 + v2 by Lm16;
      v = 0.V + v & 0.V in W by RLVECT_1:4,VECTSP_4:17;
      then
A75:  not v in L by A74;
      set A = the set of all a * v where a is Element of F ;
A76:  1_F * v in A;
      now
        let x be object;
        assume x in A;
        then ex a being Element of F st x = a * v;
        hence x in the carrier of V;
      end;
      then reconsider A as Subset of V by TARSKI:def 3;
      A is linearly-closed
      proof
        thus for v1,v2 being Element of V st v1 in A & v2 in A holds v1 + v2
        in A
        proof
          let v1,v2 be Element of V;
          assume v1 in A;
          then consider a1 being Element of F such that
A77:      v1 = a1 * v;
          assume v2 in A;
          then consider a2 being Element of F such that
A78:      v2 = a2 * v;
          v1 + v2 = (a1 + a2) * v by A77,A78,VECTSP_1:def 15;
          hence thesis;
        end;
        let a be Element of F, v1 be Element of V;
        assume v1 in A;
        then consider a1 being Element of F such that
A79:    v1 = a1 * v;
        a * v1 = (a * a1) * v by A79,VECTSP_1:def 16;
        hence thesis;
      end;
      then consider Z being strict Subspace of V such that
A80:  the carrier of Z = A by A76,VECTSP_4:34;
A81:  not v in L + W by A74,Th1;
      now
        let u be Element of V;
        thus u in Z /\ (W + L) implies u in (0).V
        proof
          assume
A82:      u in Z /\ (W + L);
          then u in Z by Th3;
          then u in A by A80,STRUCT_0:def 5;
          then consider a being Element of F such that
A83:      u = a * v;
          now
            u in W + L by A82,Th3;
            then a" * (a * v) in W + L by A83,VECTSP_4:21;
            then
A84:        (a" * a) * v in W + L by VECTSP_1:def 16;
            assume a <> 0.F;
            then 1_F * v in W + L by A84,VECTSP_1:def 10;
            then 1_F * v in L + W by Lm1;
            hence contradiction by A81;
          end;
          then u = 0.V by A83,VECTSP_1:14;
          hence thesis by VECTSP_4:17;
        end;
        assume u in (0).V;
        then u in the carrier of (0).V by STRUCT_0:def 5;
        then u in {0.V} by VECTSP_4:def 3;
        then u = 0.V by TARSKI:def 1;
        hence u in Z /\ (W + L) by VECTSP_4:17;
      end;
      then
A85:  Z /\ (W + L) = (0).V by VECTSP_4:30;
      now
        let u be Element of V;
        thus u in (Z + L) /\ W implies u in (0).V
        proof
          assume
A86:      u in (Z + L) /\ W;
          then u in Z + L by Th3;
          then consider v1,v2 being Element of V such that
A87:      v1 in Z and
A88:      v2 in L and
A89:      u = v1 + v2 by Th1;
A90:      u in W by A86,Th3;
          then
A91:      u in W + L by Th2;
          v1 = u - v2 & v2 in W + L by A88,A89,Th2,VECTSP_2:2;
          then v1 in W + L by A91,VECTSP_4:23;
          then v1 in Z /\ (W + L) by A87,Th3;
          then v1 in the carrier of (0).V by A85,STRUCT_0:def 5;
          then v1 in {0.V} by VECTSP_4:def 3;
          then v1 = 0.V by TARSKI:def 1;
          then v2 = u by A89,RLVECT_1:4;
          hence thesis by A73,A88,A90,Th3;
        end;
        assume u in (0).V;
        then u in the carrier of (0).V by STRUCT_0:def 5;
        then u in {0.V} by VECTSP_4:def 3;
        then u = 0.V by TARSKI:def 1;
        hence u in (Z + L) /\ W by VECTSP_4:17;
      end;
      then
A92:  W /\ (Z + L) = (0).V by VECTSP_4:30;
      (Z + L) in Subspaces(V) by Def3;
      then reconsider x1 = Z + L as Element of X by A1,A92;
      L is Subspace of Z + L by Th7;
      then
A93:  [x,x1] in R by A2,A72;
      v in A by A76;
      then v in Z by A80,STRUCT_0:def 5;
      then Z + L <> L by A75,Th2;
      hence contradiction by A71,A72,A93;
    end;
    thus thesis by A73;
  end;
end;

Lm17: for W1,W2 be Subspace of M holds M is_the_direct_sum_of W1,W2 implies M
is_the_direct_sum_of W2,W1
by Lm1;

reserve W,W1,W2 for Subspace of V;

theorem
  V is_the_direct_sum_of W1,W2 implies W2 is Linear_Compl of W1
by Lm17,Def5;

theorem Th38:
  for L being Linear_Compl of W holds V is_the_direct_sum_of L,W &
  V is_the_direct_sum_of W,L
by Def5,Lm17;

theorem Th39:
  for L being Linear_Compl of W holds W + L = the ModuleStr of V &
  L + W = the ModuleStr of V
proof
  let L be Linear_Compl of W;
  V is_the_direct_sum_of W,L by Th38;
  hence W + L = the ModuleStr of V;
  hence thesis by Lm1;
end;

theorem Th40:
  for L being Linear_Compl of W holds W /\ L = (0).V & L /\ W = (0).V
proof
  let L be Linear_Compl of W;
A1: V is_the_direct_sum_of W,L by Th38;
  hence W /\ L = (0).V;
  thus thesis by A1;
end;

reserve W1,W2 for Subspace of M;

theorem
  M is_the_direct_sum_of W1,W2 implies M is_the_direct_sum_of W2,W1 by Lm17;

theorem Th42:
  M is_the_direct_sum_of (0).M,(Omega).M & M is_the_direct_sum_of
  (Omega). M,(0).M
by Th9,Th20;

reserve W for Subspace of V;

theorem
  for L being Linear_Compl of W holds W is Linear_Compl of L
proof
  let L be Linear_Compl of W;
  V is_the_direct_sum_of L,W by Def5;
  then V is_the_direct_sum_of W,L by Lm17;
  hence thesis by Def5;
end;

theorem
  (0).V is Linear_Compl of (Omega).V & (Omega).V is Linear_Compl of (0). V
by Th42,Def5;

reserve W1,W2 for Subspace of M;
reserve u,u1,u2,v for Element of M;
reserve C1 for Coset of W1;
reserve C2 for Coset of W2;

theorem Th45:
  C1 meets C2 implies C1 /\ C2 is Coset of W1 /\ W2
proof
  set v = the Element of C1 /\ C2;
  set C = C1 /\ C2;
  assume
A1: C1 /\ C2 <> {};
  then reconsider v as Element of M by TARSKI:def 3;
  v in C2 by A1,XBOOLE_0:def 4;
  then
A2: C2 = v + W2 by VECTSP_4:77;
  v in C1 by A1,XBOOLE_0:def 4;
  then
A3: C1 = v + W1 by VECTSP_4:77;
  C is Coset of W1 /\ W2
  proof
    take v;
    thus C c= v + W1 /\ W2
    proof
      let x be object;
      assume
A4:   x in C;
      then x in C1 by XBOOLE_0:def 4;
      then consider u1 such that
A5:   u1 in W1 and
A6:   x = v + u1 by A3,VECTSP_4:42;
      x in C2 by A4,XBOOLE_0:def 4;
      then consider u2 such that
A7:   u2 in W2 and
A8:   x = v + u2 by A2,VECTSP_4:42;
      u1 = u2 by A6,A8,RLVECT_1:8;
      then u1 in W1 /\ W2 by A5,A7,Th3;
      hence thesis by A6;
    end;
    let x be object;
    assume x in v + (W1 /\ W2);
    then consider u such that
A9: u in W1 /\ W2 and
A10: x = v + u by VECTSP_4:42;
    u in W2 by A9,Th3;
    then
A11: x in {v + u2 : u2 in W2} by A10;
    u in W1 by A9,Th3;
    then x in {v + u1 : u1 in W1} by A10;
    hence thesis by A3,A2,A11,XBOOLE_0:def 4;
  end;
  hence thesis;
end;

theorem Th46:
  M is_the_direct_sum_of W1,W2 iff for C1 being Coset of W1, C2
  being Coset of W2 ex v being Element of M st C1 /\ C2 = {v}
proof
  set VW1 = the carrier of W1;
  set VW2 = the carrier of W2;
A1: W1 + W2 is Subspace of (Omega).M by Lm6;
  thus M is_the_direct_sum_of W1,W2 implies for C1 being Coset of W1, C2 being
  Coset of W2 ex v being Element of M st C1 /\ C2 = {v}
  proof
    assume
A2: M is_the_direct_sum_of W1,W2;
    then
A3: the ModuleStr of M = W1 + W2;
    let C1 be Coset of W1, C2 be Coset of W2;
    consider v1 being Element of M such that
A4: C1 = v1 + W1 by VECTSP_4:def 6;
    v1 in (Omega).M by RLVECT_1:1;
    then consider v11,v12 being Element of M such that
A5: v11 in W1 and
A6: v12 in W2 and
A7: v1 = v11 + v12 by A3,Th1;
    consider v2 being Element of M such that
A8: C2 = v2 + W2 by VECTSP_4:def 6;
    v2 in (Omega).M by RLVECT_1:1;
    then consider v21,v22 being Element of M such that
A9: v21 in W1 and
A10: v22 in W2 and
A11: v2 = v21 + v22 by A3,Th1;
    take v = v12 + v21;
    {v} = C1 /\ C2
    proof
      thus
A12:  {v} c= C1 /\ C2
      proof
        let x be object;
        assume x in {v};
        then
A13:    x = v by TARSKI:def 1;
        v21 = v2 - v22 by A11,VECTSP_2:2;
        then v21 in C2 by A8,A10,VECTSP_4:62;
        then C2 = v21 + W2 by VECTSP_4:77;
        then
A14:    x in C2 by A6,A13;
        v12 = v1 - v11 by A7,VECTSP_2:2;
        then v12 in C1 by A4,A5,VECTSP_4:62;
        then C1 = v12 + W1 by VECTSP_4:77;
        then x in C1 by A9,A13;
        hence thesis by A14,XBOOLE_0:def 4;
      end;
      let x be object;
      assume
A15:  x in C1 /\ C2;
      then C1 meets C2;
      then reconsider C = C1 /\ C2 as Coset of W1 /\ W2 by Th45;
A16:  v in {v} by TARSKI:def 1;
      W1 /\ W2 = (0).M by A2;
      then ex u being Element of M st C = {u} by VECTSP_4:72;
      hence thesis by A12,A15,A16,TARSKI:def 1;
    end;
    hence thesis;
  end;
  assume
A17: for C1 being Coset of W1, C2 being Coset of W2 ex v being Element
  of M st C1 /\ C2 = {v};
A18: VW2 is Coset of W2 by VECTSP_4:73;
A19: the carrier of M c= the carrier of W1 + W2
  proof
    let x be object;
    assume x in the carrier of M;
    then reconsider u = x as Element of M;
    consider C1 being Coset of W1 such that
A20: u in C1 by VECTSP_4:68;
    consider v being Element of M such that
A21: C1 /\ VW2 = {v} by A18,A17;
A22: v in {v} by TARSKI:def 1;
    then v in C1 by A21,XBOOLE_0:def 4;
    then consider v1 being Element of M such that
A23: v1 in W1 and
A24: u - v1 = v by A20,VECTSP_4:79;
    v in VW2 by A21,A22,XBOOLE_0:def 4;
    then
A25: v in W2 by STRUCT_0:def 5;
    u = v1 + v by A24,VECTSP_2:2;
    then x in W1 + W2 by A25,A23,Th1;
    hence thesis by STRUCT_0:def 5;
  end;
  VW1 is Coset of W1 by VECTSP_4:73;
  then consider v being Element of M such that
A26: VW1 /\ VW2 = {v} by A18,A17;
  the carrier of W1 + W2 c= the carrier of M by VECTSP_4:def 2;
  then the carrier of M = the carrier of W1 + W2 by A19;
  hence the ModuleStr of M = W1 + W2 by A1,VECTSP_4:31;
  0.M in W2 by VECTSP_4:17;
  then
A27: 0.M in VW2 by STRUCT_0:def 5;
  0.M in W1 by VECTSP_4:17;
  then 0.M in VW1 by STRUCT_0:def 5;
  then
A28: 0.M in {v} by A26,A27,XBOOLE_0:def 4;
  the carrier of (0).M = {0.M} by VECTSP_4:def 3
    .= VW1 /\ VW2 by A26,A28,TARSKI:def 1
    .= the carrier of W1 /\ W2 by Def2;
  hence thesis by VECTSP_4:29;
end;

theorem
  for M being strict Abelian add-associative right_zeroed
  right_complementable vector-distributive scalar-distributive
  scalar-associative scalar-unital
   non empty ModuleStr over GF, W1,W2 being
  Subspace of M holds W1 + W2 = M iff for v being Element of M ex v1,v2 being
  Element of M st v1 in W1 & v2 in W2 & v = v1 + v2 by Lm16;

theorem Th48:
  for v,v1,v2,u1,u2 being Element of M holds M
is_the_direct_sum_of W1,W2 & v = v1 + v2 & v = u1 + u2 & v1 in W1 & u1 in W1 &
  v2 in W2 & u2 in W2 implies v1 = u1 & v2 = u2
proof
  let v,v1,v2,u1,u2 be Element of M;
  reconsider C2 = v1 + W2 as Coset of W2 by VECTSP_4:def 6;
  reconsider C1 = the carrier of W1 as Coset of W1 by VECTSP_4:73;
A1: v1 in C2 by VECTSP_4:44;
  assume M is_the_direct_sum_of W1,W2;
  then consider u being Element of M such that
A2: C1 /\ C2 = {u} by Th46;
  assume that
A3: v = v1 + v2 & v = u1 + u2 and
A4: v1 in W1 and
A5: u1 in W1 and
A6: v2 in W2 & u2 in W2;
A7: v2 - u2 in W2 by A6,VECTSP_4:23;
  v1 in C1 by A4,STRUCT_0:def 5;
  then v1 in C1 /\ C2 by A1,XBOOLE_0:def 4;
  then
A8: v1 = u by A2,TARSKI:def 1;
A9: u1 in C1 by A5,STRUCT_0:def 5;
  u1 = (v1 + v2) - u2 by A3,VECTSP_2:2
    .= v1 + (v2 - u2) by RLVECT_1:def 3;
  then u1 in C2 by A7;
  then
A10: u1 in C1 /\ C2 by A9,XBOOLE_0:def 4;
  hence v1 = u1 by A2,A8,TARSKI:def 1;
  u1 = u by A10,A2,TARSKI:def 1;
  hence thesis by A3,A8,RLVECT_1:8;
end;

theorem
  M = W1 + W2 & (ex v st for v1,v2,u1,u2 being Element of M st v = v1 +
v2 & v = u1 + u2 & v1 in W1 & u1 in W1 & v2 in W2 & u2 in W2 holds v1 = u1 & v2
  = u2) implies M is_the_direct_sum_of W1,W2
proof
  assume
A1: M = W1 + W2;
  the carrier of (0).M = {0.M} & (0).M is Subspace of W1 /\ W2 by VECTSP_4:39
,def 3;
  then
A2: {0.M} c= the carrier of W1 /\ W2 by VECTSP_4:def 2;
  given v such that
A3: for v1,v2,u1,u2 being Element of M st v = v1 + v2 & v = u1 + u2 & v1
  in W1 & u1 in W1 & v2 in W2 & u2 in W2 holds v1 = u1 & v2 = u2;
  assume not thesis;
  then W1 /\ W2 <> (0).M by A1;
  then the carrier of W1 /\ W2 <> {0.M} by VECTSP_4:def 3;
  then {0.M} c< the carrier of W1 /\ W2 by A2;
  then consider x being object such that
A4: x in the carrier of W1 /\ W2 and
A5: not x in {0.M} by XBOOLE_0:6;
A6: x in W1 /\ W2 by A4,STRUCT_0:def 5;
  then x in M by VECTSP_4:9;
  then reconsider u = x as Element of M by STRUCT_0:def 5;
  consider v1,v2 being Element of M such that
A7: v1 in W1 and
A8: v2 in W2 and
A9: v = v1 + v2 by A1,Lm16;
A10: v = v1 + v2 + 0.M by A9,RLVECT_1:4
    .= (v1 + v2) + (u - u) by VECTSP_1:19
    .= ((v1 + v2) + u) - u by RLVECT_1:def 3
    .= ((v1 + u) + v2) - u by RLVECT_1:def 3
    .= (v1 + u) + (v2 - u) by RLVECT_1:def 3;
  x in W2 by A6,Th3;
  then
A11: v2 - u in W2 by A8,VECTSP_4:23;
  x in W1 by A6,Th3;
  then v1 + u in W1 by A7,VECTSP_4:20;
  then v2 - u = v2 by A3,A7,A8,A9,A10,A11;
  then v2 + (- u) = v2 + 0.M by RLVECT_1:4;
  then - u = 0.M by RLVECT_1:8;
  then
A12: u = - 0.M by RLVECT_1:17;
  x <> 0.M by A5,TARSKI:def 1;
  hence thesis by A12,RLVECT_1:12;
end;

reserve t1,t2 for Element of [:the carrier of M, the carrier of M:];

definition
  let GF,M,v,W1,W2;
  assume
A1: M is_the_direct_sum_of W1,W2;
  func v |-- (W1,W2) -> Element of [:the carrier of M,the carrier of M:] means
  :Def6:
  v = it`1 + it`2 & it`1 in W1 & it`2 in W2;
  existence
  proof
    W1 + W2 = the ModuleStr of M by A1;
    then consider v1,v2 being Element of M such that
A2: v1 in W1 & v2 in W2 & v = v1 + v2 by Lm16;
    take [v1,v2];
    thus thesis by A2;
  end;
  uniqueness
  proof
    let t1,t2;
    assume v = t1`1 + t1`2 & t1`1 in W1 & t1`2 in W2 & v = t2`1 + t2`2 & t2`1
    in W1 & t2`2 in W2;
    then
A3: t1`1 = t2`1 & t1`2 = t2`2 by A1,Th48;
    t1 = [t1`1,t1`2] by MCART_1:21;
    hence thesis by A3,MCART_1:21;
  end;
end;

theorem Th50:
  M is_the_direct_sum_of W1,W2 implies (v |-- (W1,W2))`1 = (v |-- (W2,W1))`2
proof
  assume
A1: M is_the_direct_sum_of W1,W2;
  then
A2: (v |-- (W1,W2))`2 in W2 by Def6;
A3: M is_the_direct_sum_of W2,W1 by A1,Lm17;
  then
A4: v = (v |-- (W2,W1))`2 + (v |-- (W2,W1))`1 & (v |-- (W2,W1))`1 in W2 by Def6
;
A5: (v |-- (W2,W1))`2 in W1 by A3,Def6;
  v = (v |-- (W1,W2))`1 + (v |-- (W1,W2))`2 & (v |-- (W1,W2))`1 in W1 by A1
,Def6;
  hence thesis by A1,A2,A4,A5,Th48;
end;

theorem Th51:
  M is_the_direct_sum_of W1,W2 implies (v |-- (W1,W2))`2 = (v |-- (W2,W1))`1
proof
  assume
A1: M is_the_direct_sum_of W1,W2;
  then
A2: (v |-- (W1,W2))`2 in W2 by Def6;
A3: M is_the_direct_sum_of W2,W1 by A1,Lm17;
  then
A4: v = (v |-- (W2,W1))`2 + (v |-- (W2,W1))`1 & (v |-- (W2,W1))`1 in W2 by Def6
;
A5: (v |-- (W2,W1))`2 in W1 by A3,Def6;
  v = (v |-- (W1,W2))`1 + (v |-- (W1,W2))`2 & (v |-- (W1,W2))`1 in W1 by A1
,Def6;
  hence thesis by A1,A2,A4,A5,Th48;
end;

reserve W for Subspace of V;

theorem
  for L being Linear_Compl of W, v being Element of V, t being Element
  of [:the carrier of V,the carrier of V:] holds t`1 + t`2 = v & t`1 in W & t`2
  in L implies t = v |-- (W,L)
proof
  let L be Linear_Compl of W;
  let v be Element of V;
  let t be Element of [:the carrier of V,the carrier of V:];
  V is_the_direct_sum_of W,L by Th38;
  hence thesis by Def6;
end;

theorem
  for L being Linear_Compl of W, v being Element of V holds (v |-- (W,L)
  )`1 + (v |-- (W,L))`2 = v
proof
  let L be Linear_Compl of W;
  let v be Element of V;
  V is_the_direct_sum_of W,L by Th38;
  hence thesis by Def6;
end;

theorem
  for L being Linear_Compl of W, v being Element of V holds (v |-- (W,L)
  )`1 in W & (v |-- (W,L))`2 in L
proof
  let L be Linear_Compl of W;
  let v be Element of V;
  V is_the_direct_sum_of W,L by Th38;
  hence thesis by Def6;
end;

theorem
  for L being Linear_Compl of W, v being Element of V holds (v |-- (W,L)
  )`1 = (v |-- (L,W))`2
by Th38,Th50;

theorem
  for L being Linear_Compl of W, v being Element of V holds (v |-- (W,L)
  )`2 = (v |-- (L,W))`1
by Th38,Th51;

reserve A1,A2,B for Element of Subspaces(M),
  W1,W2 for Subspace of M;

definition
  let GF;
  let M;
  func SubJoin M -> BinOp of Subspaces M means
  :Def7:
  for A1,A2,W1,W2 st A1 = W1 & A2 = W2 holds it.(A1,A2) = W1 + W2;
  existence
  proof
    defpred P[set,set,set] means for W1,W2 st $1 = W1 & $2 = W2 holds $3 = W1
    + W2;
A1: for A1,A2 ex B st P[A1,A2,B]
    proof
      let A1,A2;
      consider W1 being strict Subspace of M such that
A2:   W1 = A1 by Def3;
      consider W2 being strict Subspace of M such that
A3:   W2 = A2 by Def3;
      reconsider C = W1 + W2 as Element of Subspaces M by Def3;
      take C;
      thus thesis by A2,A3;
    end;
    thus ex o being BinOp of Subspaces M st for A1,A2 holds P[A1,A2,o.(A1,A2)]
    from BINOP_1:sch 3(A1);
  end;
  uniqueness
  proof
    let o1,o2 be BinOp of Subspaces M;
    assume
A4: for A1,A2,W1,W2 st A1 = W1 & A2 = W2 holds o1.(A1,A2) = W1 + W2;
    assume
A5: for A1,A2,W1,W2 st A1 = W1 & A2 = W2 holds o2.(A1,A2) = W1 + W2;
    now
      let x,y be set;
      assume that
A6:   x in Subspaces M and
A7:   y in Subspaces M;
      reconsider A = x, B = y as Element of Subspaces M by A6,A7;
      consider W1 being strict Subspace of M such that
A8:   W1 = x by A6,Def3;
      consider W2 being strict Subspace of M such that
A9:   W2 = y by A7,Def3;
      o1.(A,B) = W1 + W2 by A4,A8,A9;
      hence o1.(x,y) = o2.(x,y) by A5,A8,A9;
    end;
    hence thesis by BINOP_1:1;
  end;
end;

definition
  let GF;
  let M;
  func SubMeet M -> BinOp of Subspaces M means
  :Def8:
  for A1,A2,W1,W2 st A1 = W1 & A2 = W2 holds it.(A1,A2) = W1 /\ W2;
  existence
  proof
    defpred P[set,set,set] means for W1,W2 st $1 = W1 & $2 = W2 holds $3 = W1
    /\ W2;
A1: for A1,A2 ex B st P[A1,A2,B]
    proof
      let A1,A2;
      consider W1 being strict Subspace of M such that
A2:   W1 = A1 by Def3;
      consider W2 being strict Subspace of M such that
A3:   W2 = A2 by Def3;
      reconsider C = W1 /\ W2 as Element of Subspaces M by Def3;
      take C;
      thus thesis by A2,A3;
    end;
    thus ex o being BinOp of Subspaces M st for A1,A2 holds P[A1,A2,o.(A1,A2)]
    from BINOP_1:sch 3(A1);
  end;
  uniqueness
  proof
    let o1,o2 be BinOp of Subspaces M;
    assume
A4: for A1,A2,W1,W2 st A1 = W1 & A2 = W2 holds o1.(A1,A2) = W1 /\ W2;
    assume
A5: for A1,A2,W1,W2 st A1 = W1 & A2 = W2 holds o2.(A1,A2) = W1 /\ W2;
    now
      let x,y be set;
      assume that
A6:   x in Subspaces M and
A7:   y in Subspaces M;
      reconsider A = x, B = y as Element of Subspaces M by A6,A7;
      consider W1 being strict Subspace of M such that
A8:   W1 = x by A6,Def3;
      consider W2 being strict Subspace of M such that
A9:   W2 = y by A7,Def3;
      o1.(A,B) = W1 /\ W2 by A4,A8,A9;
      hence o1.(x,y) = o2.(x,y) by A5,A8,A9;
    end;
    hence thesis by BINOP_1:1;
  end;
end;

theorem Th57:
  LattStr (# Subspaces(M), SubJoin(M), SubMeet(M) #) is Lattice
proof
  set S = LattStr (# Subspaces(M), SubJoin(M), SubMeet(M) #);
A1: for A,B being Element of S holds A "/\" B = B "/\" A
  proof
    let A,B be Element of S;
    consider W1 being strict Subspace of M such that
A2: W1 = A by Def3;
    consider W2 being strict Subspace of M such that
A3: W2 = B by Def3;
    thus A "/\" B = SubMeet(M).(A,B) by LATTICES:def 2
      .= W1 /\ W2 by A2,A3,Def8
      .= SubMeet(M).(B,A) by A2,A3,Def8
      .= B "/\" A by LATTICES:def 2;
  end;
A4: for A,B being Element of S holds (A "/\" B) "\/" B = B
  proof
    let A,B be Element of S;
    consider W1 being strict Subspace of M such that
A5: W1 = A by Def3;
    consider W2 being strict Subspace of M such that
A6: W2 = B by Def3;
    reconsider AB = W1 /\ W2 as Element of S by Def3;
    thus (A "/\" B) "\/" B = SubJoin(M).(A "/\" B,B) by LATTICES:def 1
      .= SubJoin(M).(SubMeet(M).(A,B),B) by LATTICES:def 2
      .= SubJoin(M).(AB,B) by A5,A6,Def8
      .= (W1 /\ W2) + W2 by A6,Def7
      .= B by A6,Lm10,VECTSP_4:29;
  end;
A7: for A,B,C being Element of S holds A "/\" (B "/\" C) = (A "/\" B) "/\" C
  proof
    let A,B,C be Element of S;
    consider W1 being strict Subspace of M such that
A8: W1 = A by Def3;
    consider W2 being strict Subspace of M such that
A9: W2 = B by Def3;
    consider W3 being strict Subspace of M such that
A10: W3 = C by Def3;
    reconsider AB = W1 /\ W2, BC = W2 /\ W3 as Element of S by Def3;
    thus A "/\" (B "/\" C) = SubMeet(M).(A,B "/\" C) by LATTICES:def 2
      .= SubMeet(M).(A,SubMeet(M).(B,C)) by LATTICES:def 2
      .= SubMeet(M).(A,BC) by A9,A10,Def8
      .= W1 /\ (W2 /\ W3) by A8,Def8
      .= (W1 /\ W2) /\ W3 by Th14
      .= SubMeet(M).(AB,C) by A10,Def8
      .= SubMeet(M).(SubMeet(M).(A,B),C) by A8,A9,Def8
      .= SubMeet(M).(A "/\" B,C) by LATTICES:def 2
      .= (A "/\" B) "/\" C by LATTICES:def 2;
  end;
A11: for A,B,C being Element of S holds A "\/" (B "\/" C) = (A "\/" B) "\/" C
  proof
    let A,B,C be Element of S;
    consider W1 being strict Subspace of M such that
A12: W1 = A by Def3;
    consider W2 being strict Subspace of M such that
A13: W2 = B by Def3;
    consider W3 being strict Subspace of M such that
A14: W3 = C by Def3;
    reconsider AB = W1 + W2, BC = W2 + W3 as Element of S by Def3;
    thus A "\/" (B "\/" C) = SubJoin(M).(A,B "\/" C) by LATTICES:def 1
      .= SubJoin(M).(A,SubJoin(M).(B,C)) by LATTICES:def 1
      .= SubJoin(M).(A,BC) by A13,A14,Def7
      .= W1 + (W2 + W3) by A12,Def7
      .= (W1 + W2) + W3 by Th6
      .= SubJoin(M).(AB,C) by A14,Def7
      .= SubJoin(M).(SubJoin(M).(A,B),C) by A12,A13,Def7
      .= SubJoin(M).(A "\/" B,C) by LATTICES:def 1
      .= (A "\/" B) "\/" C by LATTICES:def 1;
  end;
A15: for A,B being Element of S holds A "/\" (A "\/" B) = A
  proof
    let A,B be Element of S;
    consider W1 being strict Subspace of M such that
A16: W1 = A by Def3;
    consider W2 being strict Subspace of M such that
A17: W2 = B by Def3;
    reconsider AB = W1 + W2 as Element of S by Def3;
    thus A "/\" (A "\/" B) = SubMeet(M).(A,A "\/" B) by LATTICES:def 2
      .= SubMeet(M).(A,SubJoin(M).(A,B)) by LATTICES:def 1
      .= SubMeet(M).(A,AB) by A16,A17,Def7
      .= W1 /\ (W1 + W2) by A16,Def8
      .= A by A16,Lm11,VECTSP_4:29;
  end;
  for A,B being Element of S holds A "\/" B = B "\/" A
  proof
    let A,B be Element of S;
    consider W1 being strict Subspace of M such that
A18: W1 = A by Def3;
    consider W2 being strict Subspace of M such that
A19: W2 = B by Def3;
    thus A "\/" B = SubJoin(M).(A,B) by LATTICES:def 1
      .= W1 + W2 by A18,A19,Def7
      .= W2 + W1 by Lm1
      .= SubJoin(M).(B,A) by A18,A19,Def7
      .= B "\/" A by LATTICES:def 1;
  end;
  then S is join-commutative join-associative meet-absorbing meet-commutative
  meet-associative join-absorbing by A11,A4,A1,A7,A15,LATTICES:def 4,def 5
,def 6,def 7,def 8,def 9;
  hence thesis;
end;

theorem Th58:
  LattStr (# Subspaces(M), SubJoin(M), SubMeet(M) #) is 0_Lattice
proof
  set S = LattStr (# Subspaces(M), SubJoin(M), SubMeet(M) #);
  ex C being Element of S st for A being Element of S holds C "/\" A = C &
  A "/\" C = C
  proof
    reconsider C = (0).M as Element of S by Def3;
    take C;
    let A be Element of S;
    consider W being strict Subspace of M such that
A1: W = A by Def3;
    thus C "/\" A = SubMeet(M).(C,A) by LATTICES:def 2
      .= (0).M /\ W by A1,Def8
      .= C by Th20;
    thus A "/\" C = SubMeet(M).(A,C) by LATTICES:def 2
      .= W /\ (0).M by A1,Def8
      .= C by Th20;
  end;
  hence thesis by Th57,LATTICES:def 13;
end;

theorem Th59:
  LattStr (# Subspaces(M), SubJoin(M), SubMeet(M) #) is 1_Lattice
proof
  set S = LattStr (# Subspaces(M), SubJoin(M), SubMeet(M) #);
  ex C being Element of S st for A being Element of S holds C "\/" A = C &
  A "\/" C = C
  proof
    consider W9 being strict Subspace of M such that
A1: the carrier of W9 = the carrier of (Omega).M;
    reconsider C = W9 as Element of S by Def3;
    take C;
    let A be Element of S;
    consider W being strict Subspace of M such that
A2: W = A by Def3;
A3: C is Subspace of (Omega).M by Lm6;
    thus C "\/" A = SubJoin(M).(C,A) by LATTICES:def 1
      .= W9 + W by A2,Def7
      .= (Omega).M + W by A1,Lm5
      .= the ModuleStr of M by Th11
      .= C by A1,A3,VECTSP_4:31;
    thus A "\/" C = SubJoin(M).(A,C) by LATTICES:def 1
      .= W + W9 by A2,Def7
      .= W + (Omega).M by A1,Lm5
      .= the ModuleStr of M by Th11
      .= C by A1,A3,VECTSP_4:31;
  end;
  hence thesis by Th57,LATTICES:def 14;
end;

theorem Th60:
  LattStr (# Subspaces(M), SubJoin(M), SubMeet(M) #) is 01_Lattice
proof
  LattStr (# Subspaces(M), SubJoin(M), SubMeet(M) #) is lower-bounded
  upper-bounded Lattice by Th58,Th59;
  hence thesis;
end;

theorem
  LattStr (# Subspaces(M), SubJoin(M), SubMeet(M) #) is M_Lattice
proof
  set S = LattStr (# Subspaces(M), SubJoin(M), SubMeet(M) #);
  for A,B,C being Element of S st A [= C holds A "\/" (B "/\" C) = (A "\/"
  B) "/\" C
  proof
    let A,B,C be Element of S;
    assume
A1: A [= C;
    consider W1 being strict Subspace of M such that
A2: W1 = A by Def3;
    consider W3 being strict Subspace of M such that
A3: W3 = C by Def3;
    W1 + W3 = SubJoin(M).(A,C) by A2,A3,Def7
      .= A "\/" C by LATTICES:def 1
      .= W3 by A1,A3,LATTICES:def 3;
    then
A4: W1 is Subspace of W3 by Th8;
    consider W2 being strict Subspace of M such that
A5: W2 = B by Def3;
    reconsider AB = W1 + W2 as Element of S by Def3;
    reconsider BC = W2 /\ W3 as Element of S by Def3;
    thus A "\/" (B "/\" C) = SubJoin(M).(A,B "/\" C) by LATTICES:def 1
      .= SubJoin(M).(A,SubMeet(M).(B,C)) by LATTICES:def 2
      .= SubJoin(M).(A,BC) by A5,A3,Def8
      .= W1 + (W2 /\ W3) by A2,Def7
      .= (W1 + W2) /\ W3 by A4,Th30
      .= SubMeet(M).(AB,C) by A3,Def8
      .= SubMeet(M).(SubJoin(M).(A,B),C) by A2,A5,Def7
      .= SubMeet(M).(A "\/" B,C) by LATTICES:def 1
      .= (A "\/" B) "/\" C by LATTICES:def 2;
  end;
  hence thesis by Th57,LATTICES:def 12;
end;

theorem
  for F being Field, V being VectSp of F holds LattStr (# Subspaces(V),
    SubJoin(V), SubMeet(V) #) is C_Lattice
proof
  let F be Field, V be VectSp of F;
  reconsider S = LattStr (# Subspaces(V), SubJoin(V), SubMeet(V) #) as
  01_Lattice by Th60;
  reconsider S0 = S as 0_Lattice;
  reconsider S1 = S as 1_Lattice;
  consider W9 being strict Subspace of V such that
A1: the carrier of W9 = the carrier of (Omega).V;
  reconsider I = W9 as Element of S by Def3;
  reconsider I1 = I as Element of S1;
  reconsider Z = (0).V as Element of S by Def3;
  reconsider Z0 = Z as Element of S0;
  now
    let A be Element of S0;
    consider W being strict Subspace of V such that
A2: W = A by Def3;
    thus A "/\" Z0 = SubMeet(V).(A,Z0) by LATTICES:def 2
      .= W /\ (0).V by A2,Def8
      .= Z0 by Th20;
  end;
  then
A3: Bottom S = Z by RLSUB_2:64;
  now
    let A be Element of S1;
    consider W being strict Subspace of V such that
A4: W = A by Def3;
A5: W9 is Subspace of (Omega).V by Lm6;
    thus A "\/" I1 = SubJoin(V).(A,I1) by LATTICES:def 1
      .= W + W9 by A4,Def7
      .= W + (Omega).V by A1,Lm5
      .= the ModuleStr of V by Th11
      .= W9 by A1,A5,VECTSP_4:31;
  end;
  then
A6: Top S = I by RLSUB_2:65;
  now
A7: I is Subspace of (Omega).V by Lm6;
    let A be Element of S;
    consider W being strict Subspace of V such that
A8: W = A by Def3;
    set L = the Linear_Compl of W;
    consider W99 being strict Subspace of V such that
A9: the carrier of W99 = the carrier of L by Lm4;
    reconsider B9 = W99 as Element of S by Def3;
    take B = B9;
A10: B "/\" A = SubMeet(V).(B,A) by LATTICES:def 2
      .= W99 /\ W by A8,Def8
      .= L /\ W by A9,Lm8
      .= Bottom S by A3,Th40;
    B "\/" A = SubJoin(V).(B,A) by LATTICES:def 1
      .= W99 + W by A8,Def7
      .= L + W by A9,Lm5
      .= the ModuleStr of V by Th39
      .= Top S by A1,A6,A7,VECTSP_4:31;
    hence B is_a_complement_of A by A10,LATTICES:def 18;
  end;
  hence thesis by LATTICES:def 19;
end;