reserve X,Y,z,s for set, L,L1,L2,A,B for List of X, x for Element of X,
  O,O1,O2,O3 for Operation of X, a,b,y for Element of X, n,m for Nat;

theorem Th24:
  L1 <> {} & L2 <> {} implies (L1 OR L2)\& O = (L1 \& O)AND(L2 \& O)
  proof assume
A1: L1 <> {} & L2 <> {};
    thus (L1 OR L2)\& O c= (L1 \& O)AND(L2 \& O)
    proof
      let z be object; assume
A2:   z in (L1 OR L2)\& O;
      now
        set c = the Element of L1;
        c in L1 by A1; then
        reconsider c as Element of X;
        c.O in {x.O: x in L1} by A1;
        hence {x.O: x in L1} <> {};
        let Y; assume Y in {x.O: x in L1}; then
        consider x such that
A3:     Y = x.O & x in L1;
        x in L1 OR L2 by A3,XBOOLE_0:def 3; then
        Y in {a.O: a in L1 OR L2} by A3;
        hence z in Y by A2,SETFAM_1:def 1;
      end; then
A4:   z in L1\&O by SETFAM_1:def 1;
      now
        set c = the Element of L2;
        c in L2 by A1; then
        reconsider c as Element of X;
        c.O in {x.O: x in L2} by A1;
        hence {x.O: x in L2} <> {};
        let Y; assume Y in {x.O: x in L2}; then
        consider x such that
A5:     Y = x.O & x in L2;
        x in L1 OR L2 by A5,XBOOLE_0:def 3; then
        Y in {a.O: a in L1 OR L2} by A5;
        hence z in Y by A2,SETFAM_1:def 1;
      end; then
      z in L2\&O by SETFAM_1:def 1;
      hence thesis by A4,XBOOLE_0:def 4;
    end;
    let z be object; assume z in (L1\&O)AND(L2\&O); then
A6: z in L1\&O & z in L2\&O by XBOOLE_0:def 4;
    now
      set c = the Element of L2;
      c in L2 by A1; then
      reconsider c as Element of X;
      c in L1 OR L2 by A1,XBOOLE_0:def 3; then
      c.O in {x.O: x in L1 OR L2};
      hence {x.O: x in L1 OR L2} <> {};
      let Y; assume Y in {x.O: x in L1 OR L2}; then
      consider x such that
A7:   Y = x.O & x in L1 OR L2;
      x in L1 or x in L2 by A7,XBOOLE_0:def 3; then
      Y in {a.O: a in L1} or Y in {b.O: b in L2} by A7;
      hence z in Y by A6,SETFAM_1:def 1;
    end;
    hence thesis by SETFAM_1:def 1;
  end;
