reserve C1, C2 for Coherence_Space;

theorem
  'not' (C1 "/\" C2) = 'not' C1 "\/" 'not' C2
proof
  set C = C1 "/\" C2;
  thus 'not' (C1 "/\" C2) c= 'not' C1 "\/" 'not' C2
  proof
    let x be object;
     reconsider xx=x as set by TARSKI:1;
A1: union C = (union C1) U+ union C2 by Th85;
    assume
A2: x in 'not' (C1 "/\" C2);
    then xx c= union C by Th65;
    then consider x1,x2 being set such that
A3: x = x1 U+ x2 and
A4: x1 c= union C1 and
A5: x2 c= union C2 by A1,Th79;
    now
      reconsider b = {} as Element of C2 by COH_SP:1;
      let a be Element of C1;
      a U+ b in C;
      then consider z being set such that
A6:   xx /\ (a U+ b) c= {z} by A2,Th65;
      (x1 /\ a)U+(x2 /\ b) c= {z} by A3,A6,Th82;
      then
      [:x1 /\ a,{1}:] c= [:x1 /\ a,{1}:] \/ [:x2 /\ b,{2}:] & [:x1 /\ a,{
      1}:] \/ [:x2 /\ b,{2}:] c= {z} by Th73,XBOOLE_1:7;
      then
A7:   [:x1 /\ a,{1}:] c= {z};
      now
        thus x1 /\ a = {} implies x1 /\ a c= {0};
        assume x1 /\ a <> {};
        then reconsider A = x1 /\ a as non empty set;
        set z1 = the Element of A;
        reconsider zz = z1 as set;
        take zz;
        thus x1 /\ a c= {zz}
        proof
          let y be object;
A8:       1 in {1} by TARSKI:def 1;
          assume y in x1 /\ a;
          then [y,1] in [:x1 /\ a,{1}:] by A8,ZFMISC_1:87;
          then
A9:       [y,1] = z by A7,TARSKI:def 1;
          [z1,1] in [:x1 /\ a,{1}:] by A8,ZFMISC_1:87;
          then [z1,1] = z by A7,TARSKI:def 1;
          then y = z1 by A9,XTUPLE_0:1;
          hence thesis by TARSKI:def 1;
        end;
      end;
      hence ex z being set st x1 /\ a c= {z};
    end;
    then reconsider x1 as Element of 'not' C1 by A4,Th65;
    now
      reconsider a = {} as Element of C1 by COH_SP:1;
      let b be Element of C2;
      a U+ b in C;
      then consider z being set such that
A10:  xx /\ (a U+ b) c= {z} by A2,Th65;
      (x1 /\ a)U+(x2 /\ b) c= {z} by A3,A10,Th82;
      then
      [:x2 /\ b,{2}:] c= [:x1 /\ a,{1}:] \/ [:x2 /\ b,{2}:] & [:x1 /\ a,{
      1}:] \/ [:x2 /\ b,{2}:] c= {z} by Th73,XBOOLE_1:7;
      then
A11:  [:x2 /\ b,{2}:] c= {z};
      now
        thus x2 /\ b = {} implies x2 /\ b c= {0};
        assume x2 /\ b <> {};
        then reconsider A = x2 /\ b as non empty set;
        set z1 = the Element of A;
        reconsider zz = z1 as set;
        take zz;
        thus x2 /\ b c= {zz}
        proof
          let y be object;
A12:      2 in {2} by TARSKI:def 1;
          assume y in x2 /\ b;
          then [y,2] in [:x2 /\ b,{2}:] by A12,ZFMISC_1:87;
          then
A13:      [y,2] = z by A11,TARSKI:def 1;
          [z1,2] in [:x2 /\ b,{2}:] by A12,ZFMISC_1:87;
          then [z1,2] = z by A11,TARSKI:def 1;
          then y = z1 by A13,XTUPLE_0:1;
          hence thesis by TARSKI:def 1;
        end;
      end;
      hence ex z being set st x2 /\ b c= {z};
    end;
    then reconsider x2 as Element of 'not' C2 by A5,Th65;
    now
      thus x1 in 'not' C1 & x2 in 'not' C2;
      assume x1 <> {} & x2 <> {};
      then reconsider x1, x2 as non empty set;
      set y1 = the Element of x1,y2 = the Element of x2;
      union 'not' C2 = union C2 by Th66;
      then y2 in union C2 by TARSKI:def 4;
      then
A14:  {y2} in C2 by COH_SP:4;
      union 'not' C1 = union C1 by Th66;
      then y1 in union C1 by TARSKI:def 4;
      then {y1} in C1 by COH_SP:4;
      then {y1} U+ {y2} in C by A14;
      then consider z being set such that
A15:  xx /\ ({y1} U+ {y2}) c= {z} by A2,Th65;
A16:  (x1 /\ {y1})U+(x2 /\ {y2}) c= {z} by A3,A15,Th82;
      y2 in {y2} by TARSKI:def 1;
      then y2 in x2 /\ {y2} by XBOOLE_0:def 4;
      then [y2,2] in (x1 /\ {y1})U+(x2 /\ {y2}) by Th77;
      then
A17:  [y2,2] = z by A16,TARSKI:def 1;
      y1 in {y1} by TARSKI:def 1;
      then y1 in x1 /\ {y1} by XBOOLE_0:def 4;
      then [y1,1] in (x1 /\ {y1})U+(x2 /\ {y2}) by Th76;
      then [y1,1] = z by A16,TARSKI:def 1;
      hence contradiction by A17,XTUPLE_0:1;
    end;
    hence thesis by A3,Th86;
  end;
  let x be object;
     reconsider xx=x as set by TARSKI:1;
  assume x in 'not' C1 "\/" 'not' C2;
  then consider
  x1 being Element of 'not' C1, x2 being Element of 'not' C2 such
  that
A18: x = x1 U+ x2 and
A19: x1 = {} or x2 = {} by Th87;
A20: for a being Element of C ex z being set st xx /\ a c= {z}
  proof
    let a be Element of C;
    consider a1 being Element of C1, a2 being Element of C2 such that
A21: a = a1 U+ a2 by Th83;
A22: xx /\ a = (x1/\a1)U+(x2/\a2) by A18,A21,Th82;
    consider z2 being set such that
A23: x2/\a2 c= {z2} by Th65;
    consider z1 being set such that
A24: x1/\a1 c= {z1} by Th65;
    x1 = {} or x1 <> {};
    then consider z being set such that
A25: z = [z2,2] & x1 = {} or z = [z1,1] & x1 <> {};
    take z;
    let y be object;
    assume
A26: y in xx/\a;
    then
A27: y = [y`1,y`2] by A22,Th75;
A28: y`2 = 1 & y`1 in x1/\a1 or y`2 = 2 & y`1 in x2/\ a2 by A22,A26,Th75;
    per cases by A25;
    suppose
A29:  z = [z2,2] & x1 = {};
      then y`1 = z2 by A23,A28,TARSKI:def 1;
      hence thesis by A27,A28,A29,TARSKI:def 1;
    end;
    suppose
A30:  z = [z1,1] & x1 <> {};
      then y`1 = z1 by A19,A24,A28,TARSKI:def 1;
      hence thesis by A19,A27,A28,A30,TARSKI:def 1;
    end;
  end;
  x2 c= union 'not' C2 by ZFMISC_1:74;
  then
A31: x2 c= union C2 by Th66;
  x1 c= union 'not' C1 by ZFMISC_1:74;
  then x1 c= union C1 by Th66;
  then xx c= (union C1)U+union C2 by A18,A31,Th78;
  then xx c= union C by Th85;
  hence thesis by A20;
end;
