reserve X for TopSpace;
reserve X for non empty TopSpace;
reserve X1, X2, X3 for non empty SubSpace of X;
reserve X1, X2, X3 for non empty SubSpace of X;

theorem Th26:
  (X1 meets X2 implies X1 meet X2 = X2 meet X1) & ((X1 meets X2 &
(X1 meet X2) meets X3 or X2 meets X3 & X1 meets (X2 meet X3)) implies (X1 meet
  X2) meet X3 = X1 meet (X2 meet X3))
proof
  thus X1 meets X2 implies X1 meet X2 = X2 meet X1
  proof
    assume
A1: X1 meets X2;
    then
    the carrier of X1 meet X2 =(the carrier of X2) /\ (the carrier of X1)
    by Def4
      .= the carrier of X2 meet X1 by A1,Def4;
    hence thesis by Th5;
  end;
  now
A2: now
      assume that
A3:   X1 meets X2 and
A4:   (X1 meet X2) meets X3;
      (the carrier of X1 meet X2) meets (the carrier of X3) by A4;
      then (the carrier of X1 meet X2) /\ (the carrier of X3) <> {} by
XBOOLE_0:def 7;
      then
      ((the carrier of X1) /\ (the carrier of X2)) /\ (the carrier of X3)
      <> {} by A3,Def4;
      then
A5:   (the carrier of X1) /\ ((the carrier of X2) /\ (the carrier of X3))
      <> {} by XBOOLE_1:16;
      then (the carrier of X2) /\ (the carrier of X3) <> {};
      then
A6:   (the carrier of X2) meets (the carrier of X3) by XBOOLE_0:def 7;
      then X2 meets X3;
      then
      (the carrier of X1) /\ (the carrier of X2 meet X3) <> {} by A5,Def4;
      then (the carrier of X1) meets (the carrier of X2 meet X3) by
XBOOLE_0:def 7;
      hence X1 meets X2 & (X1 meet X2) meets X3 & X2 meets X3 & X1 meets (X2
      meet X3) by A3,A4,A6;
    end;
    assume
A7: X1 meets X2 & (X1 meet X2) meets X3 or X2 meets X3 & X1 meets (X2 meet X3);
A8: now
      assume that
A9:   X2 meets X3 and
A10:  X1 meets (X2 meet X3);
      (the carrier of X1) meets (the carrier of X2 meet X3) by A10;
      then (the carrier of X1) /\ (the carrier of X2 meet X3) <> {} by
XBOOLE_0:def 7;
      then
      (the carrier of X1) /\ ((the carrier of X2) /\ (the carrier of X3))
      <> {} by A9,Def4;
      then
A11:  ((the carrier of X1) /\ (the carrier of X2)) /\ (the carrier of X3)
      <> {} by XBOOLE_1:16;
      then (the carrier of X1) /\ (the carrier of X2) <> {};
      then
A12:  (the carrier of X1) meets (the carrier of X2) by XBOOLE_0:def 7;
      then X1 meets X2;
      then
      (the carrier of X1 meet X2) /\ (the carrier of X3) <> {} by A11,Def4;
      then (the carrier of X1 meet X2) meets (the carrier of X3) by
XBOOLE_0:def 7;
      hence X1 meets X2 & (X1 meet X2) meets X3 & X2 meets X3 & X1 meets (X2
      meet X3) by A9,A10,A12;
    end;
    then the carrier of (X1 meet X2) meet X3 = (the carrier of X1 meet X2) /\
    (the carrier of X3) by A7,Def4
      .= ((the carrier of X1) /\ (the carrier of X2)) /\ (the carrier of X3)
    by A7,A8,Def4
      .= (the carrier of X1) /\ ((the carrier of X2) /\ (the carrier of X3))
    by XBOOLE_1:16
      .= (the carrier of X1) /\ (the carrier of X2 meet X3) by A7,A2,Def4
      .= the carrier of X1 meet (X2 meet X3) by A7,A2,Def4;
    hence (X1 meet X2) meet X3 = X1 meet (X2 meet X3) by Th5;
  end;
  hence thesis;
end;
