The Mizar article:

Algebra of Normal Forms Is a Heyting Algebra

by
Andrzej Trybulec

Received January 3, 1991

Copyright (c) 1991 Association of Mizar Users

MML identifier: HEYTING1
[ MML identifier index ]


environ

 vocabulary FUNCT_1, RELAT_1, FINSUB_1, FUNCT_3, NORMFORM, BOOLE, QC_LANG1,
      FINSEQ_1, LATTICES, FINSET_1, SETWISEO, LATTICE2, BINOP_1, FUNCT_2,
      ARYTM_1, MCART_1, TARSKI, FDIFF_1, FUNCOP_1, FILTER_0, ZF_LANG, HEYTING1;
 notation TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, STRUCT_0, RELAT_1, FUNCT_1,
      FUNCT_2, FUNCT_3, MCART_1, BINOP_1, FUNCOP_1, FINSET_1, FINSUB_1,
      DOMAIN_1, LATTICES, LATTICE2, FRAENKEL, SETWISEO, NORMFORM, FILTER_0;
 constructors FUNCT_3, FUNCOP_1, FINSET_1, DOMAIN_1, LATTICE2, FRAENKEL,
      SETWISEO, NORMFORM, FILTER_0, MEMBERED, XBOOLE_0;
 clusters FINSUB_1, FINSET_1, STRUCT_0, NORMFORM, RELSET_1, SUBSET_1, MEMBERED,
      ZFMISC_1, XBOOLE_0;
 requirements SUBSET, BOOLE;
 definitions TARSKI, FILTER_0, XBOOLE_0;
 theorems LATTICES, LATTICE2, FUNCOP_1, NORMFORM, TARSKI, FUNCT_2, DOMAIN_1,
      FINSUB_1, FINSET_1, BINOP_1, FUNCT_1, FUNCT_3, FRAENKEL, MCART_1,
      SETWISEO, FILTER_0, ZFMISC_1, RELAT_1, XBOOLE_0, XBOOLE_1;
 schemes FRAENKEL, FUNCT_2, BINOP_1;

begin
:: Preliminaries

theorem Th1:
  for A,B,C being non empty set, f being Function of A,B st
        for x being Element of A holds f.x in C
       holds f is Function of A,C
   proof let A,B,C be non empty set, f be Function of A,B;
A1: dom f = A by FUNCT_2:def 1;
    assume
     for x being Element of A holds f.x in C;
     then for x be set holds x in A implies f.x in C;
    hence f is Function of A,C by A1,FUNCT_2:5;
   end;

reserve A for non empty set,
        a for Element of A;

definition let A; let B,C be Element of Fin A;
  redefine pred B c= C means
     for a st a in B holds a in C;
 compatibility
  proof thus B c= C implies for a st a in B holds a in C;
   assume
A1: for a st a in B holds a in C;
   let x be set; assume
A2: x in B;
    then x is Element of A by SETWISEO:14;
   hence thesis by A1,A2;
  end;
end;

definition let A be non empty set; let B be non empty Subset of A;
  redefine func incl B -> Function of B,A;
  coherence;
end;

reserve A for set;

definition let A;
 assume
A1: A is non empty;
 func [A] -> non empty set equals
:Def2:  A;
 correctness by A1;
end;

reserve B,C for Element of Fin DISJOINT_PAIRS A,
        x for Element of [:Fin A, Fin A:],
        a,b,c,d,s,t,s',t',t1,t2,s1,s2 for Element of DISJOINT_PAIRS A,
        u,v,w for Element of NormForm A;

canceled;

theorem Th3:
  B = {} implies mi B = {}
   proof mi B c= B by NORMFORM:64; hence thesis by XBOOLE_1:3; end;

Lm1:
now let A,a;
  reconsider B = { a } as Element of Fin DISJOINT_PAIRS A;
     now let c,b such that
A1:   c in B & b in B and c c= b;
       c = a & b = a by A1,TARSKI:def 1;
    hence c = b;
   end;
 hence { a } is Element of Normal_forms_on A by NORMFORM:53;
end;

definition let A;
 cluster non empty Element of Normal_forms_on A;
  existence
   proof consider a;
       {a} is Element of Normal_forms_on A by Lm1;
    hence thesis;
   end;
end;

definition let A,a;
  redefine func { a } -> Element of Normal_forms_on A;
  coherence by Lm1;
end;

definition let A; let u be Element of NormForm A;
  func @u -> Element of Normal_forms_on A equals :Def3:
    u;
  coherence by NORMFORM:def 14;
end;

Lm2: mi (@u ^ @v) = (the L_meet of NormForm A).(u,v)
  proof
     @u = u & @v = v by Def3;
   hence mi (@u ^ @v) = (the L_meet of NormForm A).(u,v)
     by NORMFORM:def 14;
  end;

Lm3: mi (@u \/ @v) = (the L_join of NormForm A).(u,v)
  proof
     @u = u & @v = v by Def3;
   hence mi (@u \/ @v) = (the L_join of NormForm A).(u,v)
     by NORMFORM:def 14;
  end;

reserve K,L for Element of Normal_forms_on A;

canceled 3;

theorem Th7:mi (K^K) = K
 proof thus mi (K^K) = mi K by NORMFORM:79 .= K by NORMFORM:66; end;

theorem Th8:
  for X being set st X c= K holds X in Normal_forms_on A
  proof let X be set;
   assume
A1:  X c= K;
      K c= DISJOINT_PAIRS A & K is finite by FINSUB_1:def 5;
    then X c= DISJOINT_PAIRS A & X is finite by A1,FINSET_1:13,XBOOLE_1:1;
    then reconsider B = X as Element of Fin DISJOINT_PAIRS A by FINSUB_1:def 5;
      for a,b st a in B & b in B & a c= b holds a = b by A1,NORMFORM:52;
   hence X in Normal_forms_on A by NORMFORM:53;
  end;

canceled;

theorem Th10:
  for X being set st X c= u holds
      X is Element of NormForm A
 proof let X be set;
A1: u = @u by Def3;
  assume X c= u;
   then X in Normal_forms_on A by A1,Th8;
  hence X is Element of NormForm A by NORMFORM:def 14;
 end;

definition let A;
 func Atom(A) -> Function of DISJOINT_PAIRS A, the carrier of NormForm A
  means
:Def4: it.a = { a };
 existence
  proof
A1: the carrier of NormForm A = Normal_forms_on A by NORMFORM:def 14;
    set f = singleton DISJOINT_PAIRS A;
A2: now let x be set;
     assume x in DISJOINT_PAIRS A;
      then reconsider a = x as Element of DISJOINT_PAIRS A;
     f.a = { a } by SETWISEO:67;
     hence f.x in the carrier of NormForm A by A1;
    end;
      dom f = DISJOINT_PAIRS A by FUNCT_2:def 1;
    then reconsider f as Function of DISJOINT_PAIRS A, the carrier of NormForm
A
                                                             by A2,FUNCT_2:5;
   take f; thus thesis by SETWISEO:67;
  end;
 uniqueness
  proof let IT1,IT2 be
    Function of DISJOINT_PAIRS A, the carrier of NormForm A such that
A3: (for a holds IT1.a = { a }) & for a holds IT2.a = { a };
      now let a;
        IT1.a = { a } & IT2.a = { a } by A3;
     hence IT1.a = IT2.a;
    end;
   hence thesis by FUNCT_2:113;
  end;
end;

theorem Th11:
  c in Atom(A).a implies c = a
   proof Atom(A).a = { a } by Def4;
    hence thesis by TARSKI:def 1;
   end;

theorem Th12:
  a in Atom(A).a
   proof Atom(A).a = { a } by Def4; hence thesis by TARSKI:def 1; end;

theorem
    Atom(A).a = singleton DISJOINT_PAIRS A .a
  proof
    thus (singleton DISJOINT_PAIRS A).a = {a} by SETWISEO:67
                  .= Atom A.a by Def4;
  end;

theorem Th14:
  FinJoin(K, Atom(A)) = FinUnion(K, singleton DISJOINT_PAIRS A)
  proof
A1: the L_join of NormForm A is commutative by LATTICE2:27;
A2: the L_join of NormForm A is associative by LATTICE2:29;
A3: the L_join of NormForm A is idempotent by LATTICE2:26;
A4: the L_join of NormForm A has_a_unity by LATTICE2:67;
    deffunc F(Element of Fin DISJOINT_PAIRS A) = mi $1;
    consider g
      being Function of Fin DISJOINT_PAIRS A, Normal_forms_on A
    such that
A5:    g.B = F(B) from LambdaD;
      the carrier of NormForm A = Normal_forms_on A by NORMFORM:def 14;
    then reconsider g as
       Function of Fin DISJOINT_PAIRS A,the carrier of NormForm A;
A6:  mi {}.DISJOINT_PAIRS A c= {}.DISJOINT_PAIRS A & {}.DISJOINT_PAIRS A = {}
                                        by NORMFORM:64;
A7:  g.{}.DISJOINT_PAIRS A = mi {}.DISJOINT_PAIRS A by A5
               .= {} by A6,XBOOLE_1:3
               .= Bottom NormForm A by NORMFORM:86
               .= the_unity_wrt the L_join of NormForm A by A4,LATTICE2:28;
A8:  now let x,y be Element of Fin DISJOINT_PAIRS A;
A9:  @(g.x) = g.x by Def3 .= mi x by A5;
A10:  @(g.y) = g.y by Def3 .= mi y by A5;
      thus g.(x \/ y) = mi (x \/ y) by A5
               .= mi (mi x \/ y) by NORMFORM:68
               .= mi (mi x \/ mi y) by NORMFORM:69
               .= (the L_join of NormForm A).(g.x,g.y) by A9,A10,Lm3;
     end;
A11:      now let a;
        thus (g*singleton DISJOINT_PAIRS A).a
                   = g.(singleton DISJOINT_PAIRS A .a) by FUNCT_2:21
                  .= g.{a} by SETWISEO:67
                  .= mi { a } by A5
                  .= { a } by NORMFORM:66
                  .= Atom A.a by Def4;
      end;
A12:  mi (FinUnion(K,singleton DISJOINT_PAIRS A))
            c= FinUnion(K,singleton DISJOINT_PAIRS A) by NORMFORM:64;
A13:  FinUnion(K,singleton DISJOINT_PAIRS A)
            c= mi (FinUnion(K,singleton DISJOINT_PAIRS A))
     proof let a;
      assume
A14:     a in FinUnion(K,singleton DISJOINT_PAIRS A);
       then consider b such that
A15:      b in K and
A16:      a in (singleton DISJOINT_PAIRS A).b by SETWISEO:70;
A17:    a = b by A16,SETWISEO:68;
         now let s;
        assume that
A18:      s in FinUnion(K,singleton DISJOINT_PAIRS A) and
A19:      s c= a;
         consider t such that
A20:       t in K and
A21:       s in (singleton DISJOINT_PAIRS A).t by A18,SETWISEO:70;
           s = t by A21,SETWISEO:68;
        hence s = a by A15,A17,A19,A20,NORMFORM:52;
       end;
      hence a in
 mi (FinUnion(K,singleton DISJOINT_PAIRS A)) by A14,NORMFORM:61;
     end;
   thus FinJoin(K, Atom A) = (the L_join of NormForm A) $$(K,Atom A)
                                                          by LATTICE2:def 3
         .= (the L_join of NormForm A) $$(K,g*singleton DISJOINT_PAIRS A) by
A11,FUNCT_2:113
         .= g.(FinUnion(K,singleton DISJOINT_PAIRS A))
                                       by A1,A2,A3,A4,A7,A8,SETWISEO:65
         .= mi (FinUnion(K,singleton DISJOINT_PAIRS A)) by A5
         .= FinUnion(K,singleton DISJOINT_PAIRS A) by A12,A13,XBOOLE_0:def 10;
  end;

theorem Th15:
  u = FinJoin(@u, Atom(A))
  proof
   thus u = @u by Def3
         .= FinUnion(@u, singleton DISJOINT_PAIRS A) by SETWISEO:71
         .= FinJoin(@u, Atom(A)) by Th14;
  end;

Lm4: u [= v implies for x st x in u ex b st b in v & b c= x
 proof
A1: u = @u & v = @v by Def3;
  assume
   u [= v;
then A2: v = u "\/" v by LATTICES:def 3
    .= (the L_join of NormForm A).(u,v) by LATTICES:def 1
    .= mi (@u \/ @v) by Lm3;
  let x;
  assume
A3: x in u;
   then reconsider c = x as Element of DISJOINT_PAIRS A by A1,SETWISEO:14;
     c in u \/ v by A3,XBOOLE_0:def 2;
   then consider b such that
A4:  b c= c & b in mi (@u \/ @v) by A1,NORMFORM:65;
  take b;
  thus b in v & b c= x by A2,A4;
 end;

Lm5: (for a st a in u ex b st b in v & b c= a) implies u [= v
 proof assume
A1: for a st a in u ex b st b in v & b c= a;
A2: u = @u & v = @v by Def3;
A3: mi(@u \/ @v) c= @v
    proof let a;
     assume
A4:    a in mi(@u \/ @v);
      then a in u \/ v by A2,NORMFORM:58;
      then a in u or a in v by XBOOLE_0:def 2;
      then consider b such that
A5:    b in v and
A6:    b c= a by A1;
        b in u \/ v by A5,XBOOLE_0:def 2;
     hence a in @v by A2,A4,A5,A6,NORMFORM:60;
    end;
A7: @v c= mi(@u \/ @v)
    proof let a;
     assume
A8:    a in @v;
then A9:   a in @u \/ @v by XBOOLE_0:def 2;
A10:   a in mi @v by A8,NORMFORM:66;
        now let b;
       assume that
A11:     b in u \/ v and
A12:     b c= a;
          b in u or b in v by A11,XBOOLE_0:def 2;
        then consider c such that
A13:      c in v and
A14:      c c= b by A1;
          c c= a by A12,A14,NORMFORM:5;
        then c = a by A2,A10,A13,NORMFORM:60;
       hence b = a by A12,A14,NORMFORM:4;
      end;
     hence a in mi(@u \/ @v) by A2,A9,NORMFORM:61;
    end;
     u "\/" v = (the L_join of NormForm A).(u,v) by LATTICES:def 1
         .= mi (@u \/ @v) by Lm3
         .= v by A2,A3,A7,XBOOLE_0:def 10;
  hence u [= v by LATTICES:def 3;
 end;

reserve f,f' for (Element of Funcs(DISJOINT_PAIRS A, [:Fin A,Fin A:])),
        g,h for Element of Funcs(DISJOINT_PAIRS A, [A]);

definition let A be set;
  func pair_diff A -> BinOp of [:Fin A,Fin A:] means :Def5:
 for a,b being Element of [:Fin A, Fin A:] holds it.(a,b) = a \ b;
 existence
  proof
    deffunc F(Element of [:Fin A,Fin A:], Element of [:Fin A,Fin A:])
    = $1 \ $2;
    thus ex f being BinOp of [:Fin A,Fin A:] st
     for a,b being Element of [:Fin A, Fin A:] holds f.(a,b) = F(a,b)
     from BinOpLambda;
  end;
 correctness
  proof let IT,IT' be BinOp of [:Fin A,Fin A:] such that
A1:  (for a,b being Element of [:Fin A, Fin A:] holds IT.(a,b) = a \ b) &
    (for a,b being Element of [:Fin A, Fin A:] holds IT'.(a,b) = a \ b);
     now let a,b be Element of [:Fin A, Fin A:];
       IT.(a,b) = a \ b & IT'.(a,b) = a \ b by A1;
    hence IT.(a,b) = IT'.(a,b);
   end;
   hence thesis by BINOP_1:2;
  end;
end;

definition let A,B;
  func -B -> Element of Fin DISJOINT_PAIRS A equals
:Def6:  DISJOINT_PAIRS A /\
    { [{ g.t1 : g.t1 in t1`2 & t1 in B }, { g.t2 : g.t2 in t2`1 & t2 in B }] :
        s in B implies g.s in s`1 \/ s`2 };
 coherence
  proof
   deffunc _F(Element of Funcs(DISJOINT_PAIRS A, [A])) =
    [{ $1.s1 : $1.s1 in s1`2 & s1 in B }, { $1.s2 : $1.s2 in s2`1 & s2 in B }];
   set N = { _F(g) : s in B implies g.s in s`1 \/ s`2 };
   set N' = { _F(g) : g.:B c= union { s`1 \/ s`2 : s in B } };
   set M = DISJOINT_PAIRS A /\ N;
defpred P[Function] means s in B implies $1.s in s`1 \/ s`2;
defpred Q[Function] means $1.:B c= union { s`1 \/ s`2 : s in B };
A1:  for g holds P[g] implies Q[g]
    proof let g such that
A2:    for s holds s in B implies g.s in s`1 \/ s`2;
     let x be set;
     assume x in g.:B;
      then consider y being set such that
A3:    y in dom(g) and
A4:    y in B and
A5:    x = g.y by FUNCT_1:def 12;
      reconsider y as Element of DISJOINT_PAIRS A by A3,FUNCT_2:def 1;
A6:   g.y in y`1 \/ y`2 by A2,A4;
        y`1 \/ y`2 in { s`1 \/ s`2 : s in B } by A4;
     hence x in union { s`1 \/ s`2 : s in B } by A5,A6,TARSKI:def 4;
    end;
A7: { _F(g) where g is Element of Funcs(DISJOINT_PAIRS A, [A]):P[g] }
     c= { _F(g) where g is Element of Funcs(DISJOINT_PAIRS A, [A]):Q[g] }
   from Fraenkel5'(A1);
A8: B is finite;
    deffunc G(set)=$1`1 \/ $1`2;
A9: { G(s) : s in B } is finite from FraenkelFin(A8);
      now let X be set;
     assume X in { s`1 \/ s`2 : s in B };
      then ex s st X = s`1 \/ s`2 & s in B;
     hence X is finite;
    end;
then A10:  union { s`1 \/ s`2 : s in B } is finite by A9,FINSET_1:25;
A11:  now let g,h;
     defpred P1[set] means g.$1 in $1`1;
     defpred P2[set] means g.$1 in $1`2;
     defpred Q1[set] means h.$1 in $1`1;
     defpred Q2[set] means h.$1 in $1`2;
     assume
A12:    g|B = h|B;
then A13:    for s st s in B holds P2[s] iff Q2[s] by FRAENKEL:3;
A14:   { g.s1 where s1 is Element of DISJOINT_PAIRS A:
         P2[s1] & s1 in B } =
       { h.t1 where t1 is Element of DISJOINT_PAIRS A:
         Q2[t1] & t1 in B } from RelevantArgs(A12,A13);
A15:   for s st s in B holds P1[s] iff Q1[s] by A12,FRAENKEL:3;
       { g.s2 where s2 is Element of DISJOINT_PAIRS A:
       P1[s2] & s2 in B } =
       { h.t2 where t2 is Element of DISJOINT_PAIRS A:
       Q1[t2] & t2 in B } from RelevantArgs(A12,A15);
     hence _F(g) = _F(h) by A14;
   end;
A16: M c= DISJOINT_PAIRS A by XBOOLE_1:17;
A17: M c= N by XBOOLE_1:17;
      N' is finite from ImFin(A8,A10,A11);
    then N is finite by A7,FINSET_1:13;
    then M is finite by A17,FINSET_1:13;
    hence M is Element of Fin DISJOINT_PAIRS A by A16,FINSUB_1:def 5;
  end;
  correctness;
 let C;
  func B =>> C -> Element of Fin DISJOINT_PAIRS A equals
:Def7:
   DISJOINT_PAIRS A /\
   { FinPairUnion(B,pair_diff A.:(f,incl DISJOINT_PAIRS A)) : f.:B c= C };
  coherence
    proof
      set N =
       { FinPairUnion(B,pair_diff A.:(f,incl DISJOINT_PAIRS A)): f.:B c= C };
      set IT = DISJOINT_PAIRS A /\ N;
  A18: IT c= DISJOINT_PAIRS A by XBOOLE_1:17;
  A19: IT c= N by XBOOLE_1:17;
  A20:  B is finite;
  A21:  C is finite;
      deffunc F(Element of Funcs(DISJOINT_PAIRS A, [:Fin A,Fin A:]))
      = FinPairUnion(B,pair_diff A.:($1,incl DISJOINT_PAIRS A));
  A22:  now let f,f';
      assume f|B = f'|B;
        then pair_diff A.:(f,incl DISJOINT_PAIRS A)|B =
            pair_diff A.:(f',incl DISJOINT_PAIRS A)|B by FUNCOP_1:29;
      hence F(f)=F(f') by NORMFORM:41;
      end;
      { F(f): f.:B c= C } is finite from ImFin(A20,A21,A22);
      then IT is finite by A19,FINSET_1:13;
    hence IT is Element of Fin DISJOINT_PAIRS A by A18,FINSUB_1:def 5;
    end;
  correctness;
end;

theorem Th16:
  c in -B implies
   ex g st (for s st s in B holds g.s in s`1 \/ s`2) &
    c = [{ g.t1 : g.t1 in t1`2 & t1 in B }, { g.t2 : g.t2 in t2`1 & t2 in B }]
  proof assume c in -B;
    then c in DISJOINT_PAIRS A /\
    { [{ g.t1 : g.t1 in t1`2 & t1 in B }, { g.t2 : g.t2 in t2`1 & t2 in B }] :
        s in B implies g.s in s`1 \/ s`2 } by Def6;
    then c in
    { [{ g.t1 : g.t1 in t1`2 & t1 in B }, { g.t2 : g.t2 in t2`1 & t2 in B }] :
        s in B implies g.s in s`1 \/ s`2 } by XBOOLE_0:def 3;
    then ex g st
        c = [{ g.t1 : g.t1 in t1`2 & t1 in B }, { g.t2 : g.t2 in t2`1 & t2 in
 B }]
        & for s st s in B holds g.s in s`1 \/ s`2;
   hence thesis;
  end;

theorem Th17:
  [{},{}] is Element of DISJOINT_PAIRS A
 proof
  A1: [{},{}] = [{}.A,{}.A];
     [{},{}]`1 = {} by MCART_1:7;
   then [{},{}]`1 misses [{},{}]`2 by XBOOLE_1:65;
  hence thesis by A1,NORMFORM:49;
 end;

theorem Th18:
  for K st K = {} holds -K = {[{},{}]}
 proof let K;
A1:    [{},{}] is Element of DISJOINT_PAIRS A by Th17;
  assume
A2: K = {};
A3: { [{ g.t1 : g.t1 in t1`2 & t1 in K }, { g.t2 : g.t2 in t2`1 & t2 in K }] :
        s in K implies g.s in s`1 \/ s`2 } = {[{},{}]}
   proof
    thus
       { [{ g.t1 : g.t1 in t1`2 & t1 in K }, { g.t2 : g.t2 in t2`1 & t2 in K }]
:
        s in K implies g.s in s`1 \/ s`2 } c= {[{},{}]}
     proof let x be set; assume x in
     { [{ g.t1 : g.t1 in t1`2 & t1 in K }, { g.t2 : g.t2 in t2`1 & t2 in K }] :
        s in K implies g.s in s`1 \/ s`2 };
       then consider g such that
A4:    x = [{ g.t1 : g.t1 in t1`2 & t1 in K }, { g.t2 : g.t2 in t2`1 & t2 in
 K }]
       and s in K implies g.s in s`1 \/ s`2;
A5:    x`1 = { g.t1 : g.t1 in t1`2 & t1 in K } &
       x`2 = { g.t2 : g.t2 in t2`1 & t2 in K } by A4,MCART_1:7;
A6:    now consider y being Element of x`1;
        assume x`1 <> {};
         then y in x`1;
         then ex t1 st y = g.t1 & g.t1 in t1`2 & t1 in K by A5;
        hence contradiction by A2;
       end;
         now consider y being Element of x`2;
        assume x`2 <> {};
         then y in x`2;
         then ex t1 st y = g.t1 & g.t1 in t1`1 & t1 in K by A5;
        hence contradiction by A2;
       end;
       then x = [{},{}] by A4,A6,MCART_1:8;
      hence x in {[{},{}]} by TARSKI:def 1;
     end;
    thus {[{},{}]} c=
    { [{ g.t1 : g.t1 in t1`2 & t1 in K }, { g.t2 : g.t2 in t2`1 & t2 in K }] :
        s in K implies g.s in s`1 \/ s`2 }
     proof let x be set;
      assume x in {[{},{}]};
then A7:    x = [{},{}] by TARSKI:def 1;
       consider g being Element of Funcs(DISJOINT_PAIRS A, [A]);
A8:    now consider y being Element of { g.t1 : g.t1 in t1`2 & t1 in K };
        assume { g.t1 : g.t1 in t1`2 & t1 in K } <> {};
         then y in { g.t1 : g.t1 in t1`2 & t1 in K };
         then ex t1 st y = g.t1 & g.t1 in t1`2 & t1 in K;
        hence contradiction by A2;
       end;
A9:       now consider y being Element of { g.t2 : g.t2 in t2`1 & t2 in K };
        assume { g.t2 : g.t2 in t2`1 & t2 in K } <> {};
         then y in { g.t2 : g.t2 in t2`1 & t2 in K };
         then ex t1 st y = g.t1 & g.t1 in t1`1 & t1 in K;
        hence contradiction by A2;
       end;
         s in K implies g.s in s`1 \/ s`2 by A2;
      hence x in
       { [{ h.t1 : h.t1 in t1`2 & t1 in K }, { h.t2 : h.t2 in t2`1 & t2 in
 K }] :
         s in K implies h.s in s`1 \/ s`2 } by A7,A8,A9;
     end;
   end;
  thus -K = DISJOINT_PAIRS A /\
    { [{ g.t1 : g.t1 in t1`2 & t1 in K }, { g.t2 : g.t2 in t2`1 & t2 in K }] :
        s in K implies g.s in s`1 \/ s`2 } by Def6
   .= {[{},{}]} by A1,A3,ZFMISC_1:52;
 end;

theorem Th19:
  for K,L st K = {} & L = {} holds K =>> L = {[{},{}]}
 proof let K,L;
A1:    [{},{}] is Element of DISJOINT_PAIRS A by Th17;
  assume
A2: K = {} & L = {};
then A3: K = {}.DISJOINT_PAIRS A;
A4: FinPairUnion A is commutative & FinPairUnion A is associative &
    FinPairUnion A has_a_unity by NORMFORM:37;
A5: {} = {}.A;
A6:  now let f;
     thus FinPairUnion(K,pair_diff A.:(f,incl DISJOINT_PAIRS A))
        = FinPairUnion A $$(K,pair_diff A.:(f,incl DISJOINT_PAIRS A))
                                                          by NORMFORM:def 7
       .= the_unity_wrt FinPairUnion A by A3,A4,SETWISEO:40
       .= [{},{}] by A5,NORMFORM:38;
    end;
A7:{ FinPairUnion(K,pair_diff A.:(f,incl DISJOINT_PAIRS A)) : f.:K c= L }
     = {[{},{}]}
   proof
    thus { FinPairUnion(K,pair_diff A.:(f,incl DISJOINT_PAIRS A)) : f.:K c= L
}
       c= {[{},{}]}
    proof let x be set;
     assume
        x in
 { FinPairUnion(K,pair_diff A.:(f,incl DISJOINT_PAIRS A)) : f.:K c= L };
      then ex f st x = FinPairUnion(K,pair_diff A.:(f,incl DISJOINT_PAIRS A))
                 & f.:K c= L;
      then x = [{},{}] by A6;
     hence x in {[{},{}]} by TARSKI:def 1;
    end;
    thus {[{},{}]}
       c= { FinPairUnion(K,pair_diff A.:(f,incl DISJOINT_PAIRS A)) : f.:
K c= L }
    proof let x be set; consider f';
     assume x in {[{},{}]}; then x = [{},{}] by TARSKI:def 1;
then A8:   x = FinPairUnion(K,pair_diff A.:(f',incl DISJOINT_PAIRS A)) by A6;
        f'.:K c= L by A2,RELAT_1:149;
     hence
        x in { FinPairUnion(K,pair_diff A.:(f,incl DISJOINT_PAIRS A)) : f.:
K c= L }
       by A8;
     end;
   end;
  thus K =>> L = DISJOINT_PAIRS A /\
   { FinPairUnion(K,pair_diff A.:(f,incl DISJOINT_PAIRS A)) : f.:K c= L }
                                                                 by Def7
      .= {[{},{}]} by A1,A7,ZFMISC_1:52;
 end;

theorem Th20:
  for a being Element of DISJOINT_PAIRS {} holds a = [{},{}]
 proof let a be Element of DISJOINT_PAIRS {};
   consider x,y being Element of Fin {} such that
A1:   a = [x,y] by DOMAIN_1:9;
     x = {} & y = {} by FINSUB_1:28,TARSKI:def 1;
  hence a = [{},{}] by A1;
 end;

theorem Th21:
  DISJOINT_PAIRS {} = {[{},{}]}
 proof
  thus DISJOINT_PAIRS {} c= {[{},{}]}
   proof let x be set;
    assume x in DISJOINT_PAIRS {};
     then x = [{},{}] by Th20;
    hence x in {[{},{}]} by TARSKI:def 1;
   end;
  thus {[{},{}]} c= DISJOINT_PAIRS {}
   proof let x be set;
    assume x in {[{},{}]};
     then x = [{},{}] by TARSKI:def 1;
     then x is Element of DISJOINT_PAIRS {} by Th17;
    hence x in DISJOINT_PAIRS {};
   end;
 end;

Lm6:Fin DISJOINT_PAIRS {} = { {}, {[{},{}]}}
 proof
  thus Fin DISJOINT_PAIRS {} = bool DISJOINT_PAIRS {} by Th21,FINSUB_1:27
      .= { {}, {[{},{}]}} by Th21,ZFMISC_1:30;
 end;

theorem Th22:
  {[{},{}]} is Element of Normal_forms_on A
  proof [{},{}] is Element of DISJOINT_PAIRS A by Th17;
   then {[{},{}]} is finite & {[{},{}]} c= DISJOINT_PAIRS A by ZFMISC_1:37;
   then reconsider B = {[{},{}]} as Element of Fin DISJOINT_PAIRS A by FINSUB_1
:def 5;
      now let a,b be Element of DISJOINT_PAIRS A;
     assume a in B & b in B & a c= b;
      then a = [{},{}] & b = [{},{}] by TARSKI:def 1;
     hence a = b;
    end;
   hence thesis by NORMFORM:53;
  end;

theorem Th23:
  c in B =>> C implies
     ex f st f.:B c= C &
      c = FinPairUnion(B,pair_diff A.:(f,incl DISJOINT_PAIRS A))
   proof assume c in B =>> C;
     then c in DISJOINT_PAIRS A /\
      { FinPairUnion(B,pair_diff A.:(f,incl DISJOINT_PAIRS A)) : f.:B c= C }
                                                     by Def7;
     then c in
      { FinPairUnion(B,pair_diff A.:(f,incl DISJOINT_PAIRS A)) : f.:B c= C }
                                                     by XBOOLE_0:def 3;
     then ex f st
      c = FinPairUnion(B,pair_diff A.:(f,incl DISJOINT_PAIRS A)) & f.:B c= C;
    hence thesis;
   end;

theorem Th24:
  K ^ { a } = {} implies ex b st b in -K & b c= a
 proof assume
A1: K ^ { a } = {};
    now per cases;
   suppose A is non empty;
then A2:  A = [A] by Def2;
defpred P[set,set] means $2 in $1`1 /\ a`2 \/ $1`2 /\ a`1;
A3:  now let s such that
A4:     s in K;
      a in { a } by TARSKI:def 1;
        then not s \/ a in DISJOINT_PAIRS A by A1,A4,NORMFORM:56;
       then consider x being Element of [A] such that
A5:     x in s`1 & x in a`2 or x in a`1 & x in s`2 by A2,NORMFORM:47;
      take x;
         x in s`1 /\ a`2 or x in s`2 /\ a`1 by A5,XBOOLE_0:def 3;
      hence P[s,x] by XBOOLE_0:def 2;
     end;
     consider g such that
A6:   s in K implies
     P[s,g.s] from FuncsChoice(A3);
A7:  now let s;
      assume s in K;
       then g.s in s`1 /\ a`2 \/ s`2 /\ a`1 by A6;
       then g.s in s`1 /\ a`2 or g.s in s`2 /\ a`1 by XBOOLE_0:def 2;
       then g.s in s`1 & g.s in a`2 or g.s in s`2 & g.s in a`1 by XBOOLE_0:def
3;
      hence g.s in s`1 \/ s`2 by XBOOLE_0:def 2;
     end;
     set c1 = { g.t1 : g.t1 in t1`2 & t1 in K },
         c2 = { g.t2 : g.t2 in t2`1 & t2 in K };
A8:  c1 c= a`1
      proof let x be set;
       assume x in c1;
        then consider t such that
  A9:     x = g.t & g.t in t`2 and
  A10:     t in K;
          g.t in t`1 /\ a`2 \/ t`2 /\ a`1 by A6,A10;
        then g.t in t`1 /\ a`2 or g.t in t`2 /\ a`1 by XBOOLE_0:def 2;
        then g.t in t`1 & g.t in a`2 or g.t in t`2 & g.t in a`1 by XBOOLE_0:def
3;
       hence x in a`1 by A9,NORMFORM:46;
      end;
A11:  c2 c= a`2
      proof
       let x be set;
       assume x in c2;
        then consider t such that
    A12:   x = g.t & g.t in t`1 and
    A13:   t in K;
          g.t in t`1 /\ a`2 \/ t`2 /\ a`1 by A6,A13;
        then g.t in t`1 /\ a`2 or g.t in t`2 /\ a`1 by XBOOLE_0:def 2;
        then g.t in t`1 & g.t in a`2 or g.t in t`2 & g.t in a`1 by XBOOLE_0:def
3;
       hence x in a`2 by A12,NORMFORM:46;
      end;
     then reconsider c = [c1,c2] as Element of DISJOINT_PAIRS A
       by A8,NORMFORM:50;
    take c;
       c in { [{ h.t1 : h.t1 in t1`2 & t1 in K }, { h.t2 : h.t2 in t2`1 & t2 in
 K }] :
           s in K implies h.s in s`1 \/ s`2 } by A7;
     then c in DISJOINT_PAIRS A /\
      { [{ h.t1 : h.t1 in t1`2 & t1 in K }, { h.t2 : h.t2 in t2`1 & t2 in
 K }] :
        s in K implies h.s in s`1 \/ s`2 } by XBOOLE_0:def 3;
    hence c in -K by Def6;
       c`1 = c1 & c`2 = c2 by MCART_1:7;
    hence c c= a by A8,A11,NORMFORM:def 1;
   suppose A14: not A is non empty;
then A15:  a = [{},{}] by Th20;
   take b=a;
    reconsider Z = {[{},{}]} as Element of Normal_forms_on {} by Th22;
A16: mi (Z^Z) c= Z^Z by NORMFORM:64;
      mi (Z^Z) <> {} by Th7;
    then K <> {[{},{}]} by A1,A14,A15,A16,XBOOLE_1:3;
    then K = {} by A14,Lm6,TARSKI:def 2;
    then -K = {[{},{}]} by Th18;
   hence b in -K by A15,TARSKI:def 1;
   thus b c= a;
  end;
  hence thesis;
 end;

Lm7: now let A,K,b,f;
      thus (pair_diff A.:(f,incl DISJOINT_PAIRS A)).b
           = pair_diff A.(f.b,(incl DISJOINT_PAIRS A).b) by FUNCOP_1:48
          .= pair_diff A.(f.b,b) by FUNCT_3:55
          .= f.b \ b by Def5;
     end;

theorem Th25:
  (for b st b in u holds b \/ a in DISJOINT_PAIRS A) &
    (for c st c in u ex b st b in v & b c= c \/ a)
     implies ex b st b in @u =>> @v & b c= a
    proof assume that
        for b st b in u holds b \/ a in DISJOINT_PAIRS A and
A1:   for b st b in u ex c st c in v & c c= b \/ a;
A2:   u = @u & v = @v by Def3;
      defpred P[Element of DISJOINT_PAIRS A,Element of [:Fin A, Fin A:]]
      means $2 in @v & $2 c= $1 \/ a;
A3:   now let b; assume b in @u;
        then consider c such that
A4:       c in v & c c= b \/ a by A1,A2;
        reconsider c as Element of [:Fin A, Fin A:];
        take x = c;
        thus P[b,x] by A4,Def3;
      end;
      consider f' such that
A5:    b in @u implies P[b,f'.b] from FuncsChoice(A3);
         b in u implies f'.b in v by A2,A5;
then A6:    f'.:(@u) c= v by A2,SETWISEO:15;
      set d = FinPairUnion(@u,pair_diff A.:(f',incl DISJOINT_PAIRS A));
A7:      now let s;
A8:     (pair_diff A.:(f',incl DISJOINT_PAIRS A)).s = f'.s \ s by Lm7;
       assume s in u;
        then f'.s c= a \/ s by A2,A5;
       hence (pair_diff A.:
(f',incl DISJOINT_PAIRS A)).s c= a by A8,NORMFORM:31;
      end;
   then d c= a by A2,NORMFORM:40;
      then reconsider d as Element of DISJOINT_PAIRS A by NORMFORM:45;
     take d;
        d in { FinPairUnion(@u,pair_diff A.:(f,incl DISJOINT_PAIRS A)) :
         f.:@u c= v } by A6;
      then d in DISJOINT_PAIRS A /\ { FinPairUnion(@u,pair_diff A.:
        (f,incl DISJOINT_PAIRS A)) : f.:@u c= v } by XBOOLE_0:def 3;
     hence d in @u =>> @v by A2,Def7;
     thus thesis by A2,A7,NORMFORM:40;
    end;

Lm8: a in K ^ (K =>> @u) implies ex b st b in u & b c= a
 proof assume a in K ^ (K =>> @u); then consider b,c such that
A1: b in K and
A2: c in K =>> @u and
A3: a = b \/ c by NORMFORM:55;
A4: u = @u by Def3;
   then consider f such that
A5: f.:K c= u and
A6: c = FinPairUnion(K,pair_diff A.:(f,incl DISJOINT_PAIRS A)) by A2,Th23;
A7:(pair_diff A.:(f,incl DISJOINT_PAIRS A)).b = f.b \ b by Lm7;
A8:   f.b in f.:K by A1,FUNCT_2:43;
then reconsider d = f.b as Element of DISJOINT_PAIRS A by A4,A5,SETWISEO:14;
  take d;
  thus d in u by A5,A8;
     d \ b c= c by A1,A6,A7,NORMFORM:35;
  hence d c= a by A3,NORMFORM:30;
 end;

theorem Th26:
  K ^ -K = {}
 proof
  assume
A1: K ^ -K <> {}; consider x being Element of K ^ -K;
  reconsider a = x as Element of DISJOINT_PAIRS A by A1,SETWISEO:14;
  consider b,c such that
A2: b in K and
A3: c in -K and
A4: a = b \/ c by A1,NORMFORM:55;
A5: a`1 = b`1 \/ c`1 & a`2 = b`2 \/ c`2 by A4,NORMFORM:10;
  consider g such that
A6: s in K implies g.s in s`1 \/ s`2 and
A7: c = [{ g.t1 : g.t1 in t1`2 & t1 in K }, { g.t2 : g.t2 in t2`1 & t2 in K }]
                                                   by A3,Th16;
A8: g.b in b`1 \/ b`2 by A2,A6;
     now per cases by A8,XBOOLE_0:def 2;
    case
A9:  g.b in b`1;
     hence g.b in a`1 by A5,XBOOLE_0:def 2;
        g.b in { g.t2 : g.t2 in t2`1 & t2 in K } by A2,A9;
      then g.b in c`2 by A7,MCART_1:7;
     hence g.b in a`2 by A5,XBOOLE_0:def 2;
    case
A10:  g.b in b`2;
     hence g.b in a`2 by A5,XBOOLE_0:def 2;
        g.b in { g.t1 : g.t1 in t1`2 & t1 in K } by A2,A10;
      then g.b in c`1 by A7,MCART_1:7;
     hence g.b in a`1 by A5,XBOOLE_0:def 2;
   end;
   then a`1 /\ a`2 <> {} by XBOOLE_0:def 3;
   then a`1 meets a`2 by XBOOLE_0:def 7;
  hence contradiction by NORMFORM:44;
 end;

definition let A;
  func pseudo_compl(A) -> UnOp of the carrier of NormForm A means
:Def8: it.u = mi(-@u);
  existence
   proof
     deffunc F(Element of NormForm A) = mi(-@$1);
     consider IT being
        Function of the carrier of NormForm A, Normal_forms_on A
     such that
A1:    IT.u = F(u) from LambdaD;
       the carrier of NormForm A = Normal_forms_on A by NORMFORM:def 14;
     then reconsider IT as UnOp of the carrier of NormForm A;
    take IT; let u;
    thus IT.u = mi(-@u) by A1;
   end;
  correctness
   proof
    let IT,IT' be UnOp of the carrier of NormForm A;
    assume that
A2:  IT.u = mi (-@u) and
A3:  IT'.u = mi (-@u);
       now let u;
      thus IT.u = mi (-@u) by A2 .= IT'.u by A3;
     end;
    hence IT = IT' by FUNCT_2:113;
   end;
  func StrongImpl(A) -> BinOp of the carrier of NormForm A means
:Def9: it.(u,v) = mi (@u =>> @v);
  existence
   proof
     deffunc F(Element of NormForm A,
     Element of NormForm A) = mi (@$1 =>> @$2);
     consider IT being
       Function of
          [:(the carrier of NormForm A), the carrier of NormForm A:],
                   Normal_forms_on A
      such that
A4:    IT.[u,v] = F(u,v) from Lambda2D;
      the carrier of NormForm A = Normal_forms_on A by NORMFORM:def 14;
    then reconsider IT as BinOp of the carrier of NormForm A;
    take IT; let u,v;
    thus IT.(u,v) = IT.[u,v] by BINOP_1:def 1 .= mi (@u =>> @v) by A4;
   end;
  correctness
   proof let IT,IT' be BinOp of the carrier of NormForm A;
    assume that
A5:  IT.(u,v) = mi (@u =>> @v) and
A6:  IT'.(u,v) = mi (@u =>> @v);
       now let u,v;
      thus IT.(u,v) = mi (@u =>> @v) by A5 .= IT'.(u,v) by A6;
     end;
    hence IT = IT' by BINOP_1:2;
   end;
 let u;
  func SUB u -> Element of Fin the carrier of NormForm A equals
:Def10:  bool u;
  coherence
   proof u = @u by Def3;
     then u is finite by FINSUB_1:30;
then A7:   bool u is finite by FINSET_1:24;
       bool u c= the carrier of NormForm A
      proof let x be set;
       assume x in bool u;
        then x is Element of NormForm A by Th10;
       hence thesis;
      end;
    hence thesis by A7,FINSUB_1:def 5;
   end;
  correctness;
  func diff(u) -> UnOp of the carrier of NormForm A means
:Def11: it.v = u \ v;
  existence
   proof
     deffunc F(Element of NormForm A) = @u \ @$1;
     consider IT being
       Function of the carrier of NormForm A, Fin DISJOINT_PAIRS A
      such that
A8:   IT.v = F(v) from LambdaD;
       now let v be Element of NormForm A;
         @u \ @v c= @u by XBOOLE_1:36;
       then @u \ @v in Normal_forms_on A by Th8;
       then IT.v in Normal_forms_on A by A8;
      hence IT.v in the carrier of NormForm A by NORMFORM:def 14;
     end;
     then reconsider IT as UnOp of the carrier of NormForm A by Th1;
    take IT; let v;
       v = @v & u = @u by Def3;
    hence IT.v = u \ v by A8;
   end;
  correctness
   proof
    let IT,IT' be UnOp of the carrier of NormForm A;
    assume that
A9:  IT.v = u \ v and
A10:  IT'.v = u \ v;
       now let v be Element of NormForm A;
      thus IT.v = u \ v by A9
               .= IT'.v by A10;
     end;
    hence IT = IT' by FUNCT_2:113;
   end;
end;

deffunc J(set) = the L_join of NormForm $1;
deffunc M(set) = the L_meet of NormForm $1;

Lm9:  for u,v st v in SUB u holds v "\/" (diff u).v = u
   proof let u,v;
    assume v in SUB u;
then A1:   v in bool u by Def10;
A2:  u = @u & v = @v by Def3;
then A3:  @u \ @v = (diff u).v by Def11 .= @((diff u).v) by Def3;
    thus v "\/" (diff u).v = J(A).(v, (diff u).v) by LATTICES:def 1
           .= mi ( @v \/ (@u \ @v)) by A3,Lm3
           .= mi (@u) by A1,A2,XBOOLE_1:45
           .= u by A2,NORMFORM:66;
   end;

theorem Th27:
  (diff u).v [= u
   proof (diff u).v = u \ v by Def11;
     then (diff u).v c= u by XBOOLE_1:36;
     then for a st a in (diff u).v ex b st b in u & b c= a;
    hence thesis by Lm5;
   end;

Lm10: ex v st v in SUB u & @v ^ { a } = {} &
     for b st b in (diff u).v holds b \/ a in DISJOINT_PAIRS A
     proof
       deffunc F(set)=$1;
       defpred P[Element of DISJOINT_PAIRS A] means
       not $1 \/ a in DISJOINT_PAIRS A;
       set M = { F(s) : F(s) in u & P[s]};
A1:    M c= u from FrSet_1;
       then reconsider v = M as Element of NormForm A by Th10;
A2:    M = @v by Def3;
      take v;
         v in bool u by A1;
      hence v in SUB u by Def10;
      deffunc F1(Element of DISJOINT_PAIRS A) = $1 \/ a;
      defpred P1[set] means $1 in u;
      defpred P2[Element of DISJOINT_PAIRS A] means P1[$1] & P[$1];
      defpred Q[set] means not contradiction;
A3:   { F1(s): P1[s] & not F1(s) in
      DISJOINT_PAIRS A } misses DISJOINT_PAIRS A from FrSet_2;
      { F1(t) where t is Element of DISJOINT_PAIRS A :
       t in {s where s is Element of DISJOINT_PAIRS A: P2[s]} & Q[t]} =
       { F1(s) where s is Element of DISJOINT_PAIRS A: P2[s] & Q[s] }
         from Gen3'; then
A4:    { F1(t) : t in {s : P2[s]} & Q[t]} =
       { F1(s1) : P2[s1] & Q[s1] };
A5: { F1(t) : t in {s : P2[s]} & Q[t]} = { F1(t1) : t1 in {s1 : P2[s1]}}
 proof
  thus { F1(t) : t in {s : P2[s]} & Q[t]} c= { F1(t1) : t1 in {s1 : P2[s1]}}
   proof
    let x be set; assume x in { F1(t) : t in {s : P2[s]} & Q[t]}; then
    consider t such that
A6:  x=F1(t) & t in {s : P2[s]} & Q[t];
    thus x in { F1(t1) : t1 in {s1 : P2[s1]}} by A6;
   end;
  let x be set; assume x in { F1(t) : t in {s : P2[s]}}; then
  consider t such that
A7:  x=F1(t) & t in {s : P2[s]};
  thus x in { F1(t1) : t1 in {s1 : P2[s1]} & Q[t1]} by A7;
 end;
A8: { F1(s1) : P2[s1] & Q[s1] } = { F1(s2) : P2[s2]}
 proof
   thus { F1(s1) : P2[s1] & Q[s1] } c= { F1(s2) : P2[s2]}
    proof
      let x be set; assume x in { F1(s1) : P2[s1] & Q[s1] };
      then consider s1 such that
A9:    x=F1(s1) & P2[s1] & Q[s1];
      thus x in { F1(s2) : P2[s2]} by A9;
    end;
   let x be set; assume x in { F1(s1) : P2[s1] };
   then consider s1 such that
A10: x=F1(s1) & P2[s1];
   thus x in { F1(s2) : P2[s2] & Q[s2]} by A10;
 end;
    { F1(t) : t in {s : P2[s]} } = { F1(s1) : P2[s1] & Q[s1] } by A4,A5; then
A11: { F1(t) : t in M } = { F1(s1) : P2[s1] } by A8;
deffunc G(Element of DISJOINT_PAIRS A, Element of DISJOINT_PAIRS A)=$1 \/ $2;
defpred D[set,set] means $1 in M & $2 in { a };
defpred E[set,set] means $2 = a & $1 in M;
A12:    D[s,t] iff E[s,t] by TARSKI:def 1;
A13:    { G(s,t): D[s,t] } = { G(s',t'): E[s',t'] } from Fraenkel6''(A12);
defpred F[set,set] means $1 in M;
{ G(s,t) where t is Element of DISJOINT_PAIRS A
                 : t = a & F[s,t] } = { G(s',a): F[s',a]} from FrEqua2;
      hence @v ^ { a } = DISJOINT_PAIRS A /\ { s \/ a: s in M }
         by A2,A13,NORMFORM:def 11
       .= {} by A3,A11,XBOOLE_0:def 7;
      let b;
      assume b in (diff u).v;
       then b in u \ v by Def11;
       then b in u & not b in M by XBOOLE_0:def 4;
      hence b \/ a in DISJOINT_PAIRS A;
     end;

theorem Th28:
  u "/\" pseudo_compl(A).u = Bottom NormForm A
    proof
      reconsider zero = {} as Element of Normal_forms_on A by NORMFORM:51;
A1:   @(pseudo_compl(A).u) = pseudo_compl(A).u by Def3
           .= mi(-@u) by Def8;
     thus u "/\" pseudo_compl(A).u = M(A).(u, pseudo_compl(A).u) by LATTICES:
def 2
           .= mi(@u ^ mi(-@u)) by A1,Lm2
           .= mi(@u ^ -@u) by NORMFORM:75
           .= mi(zero) by Th26
           .= {} by Th3
           .= Bottom NormForm A by NORMFORM:86;
    end;

theorem Th29:
  u "/\" StrongImpl(A).(u, v) [= v
   proof
       now let a;
A1:    @(StrongImpl(A).(u, v)) = StrongImpl(A).(u, v) by Def3
                 .= mi(@u =>> @v) by Def9;
A2:    u "/\" StrongImpl(A).(u, v)
           = M(A).(u, StrongImpl(A).(u, v)) by LATTICES:def 2
          .= mi(@u ^ mi(@u =>> @v)) by A1,Lm2
          .= mi(@u ^ (@u =>> @v)) by NORMFORM:75;
      assume a in u "/\" StrongImpl(A).(u, v);
       then a in @u ^ (@u =>> @v) by A2,NORMFORM:58;
      hence ex b st b in v & b c= a by Lm8;
     end;
    hence thesis by Lm5;
   end;

theorem Th30:
  @u ^ { a } = {} implies Atom(A).a [= pseudo_compl(A).u
   proof assume
A1:  @u ^ { a } = {};
       now let c;
      assume c in Atom(A).a; then c = a by Th11;
       then consider b such that
A2:     b in -@u and
A3:     b c= c by A1,Th24;
       consider d such that
A4:     d c= b and
A5:     d in mi(-@u) by A2,NORMFORM:65;
      take e = d;
       thus e in pseudo_compl(A).u by A5,Def8;
       thus e c= c by A3,A4,NORMFORM:5;
     end;
    hence Atom(A).a [= pseudo_compl(A).u by Lm5;
   end;

theorem Th31:
  (for b st b in u holds b \/ a in DISJOINT_PAIRS A ) & u "/\" Atom(A).a [= w
      implies Atom(A).a [= StrongImpl(A).(u, w)
  proof assume that
A1: for b st b in u holds b \/ a in DISJOINT_PAIRS A and
A2: u "/\" Atom(A).a [= w;
A3:  now let c;
     assume
A4:    c in u;
then A5:   c in @u by Def3;
        a in Atom(A).a by Th12;
then A6:   a in @(Atom(A).a) by Def3;
A7:   c \/ a is Element of DISJOINT_PAIRS A by A1,A4;
      then c \/ a in @u ^ @(Atom(A).a) by A5,A6,NORMFORM:56;
      then consider b such that
A8:    b c= c \/ a and
A9:    b in mi(@u ^ @(Atom(A).a)) by A7,NORMFORM:65;
        b in M(A).(u, Atom(A).a) by A9,Lm2;
      then b in u "/\" Atom(A).a by LATTICES:def 2;
      then consider d such that
A10:    d in w and
A11:    d c= b by A2,Lm4;
     take e = d;
     thus e in w by A10;
     thus e c= c \/ a by A8,A11,NORMFORM:5;
    end;
      now let c;
     assume c in Atom(A).a;
      then c = a by Th11;
      then consider b such that
A12:    b in @u =>> @w and
A13:    b c= c by A1,A3,Th25;
      consider d such that
A14:    d c= b and
A15:    d in mi(@u =>> @w) by A12,NORMFORM:65;
     take e = d;
     thus e in (StrongImpl(A).(u, w)) by A15,Def9;
     thus e c= c by A13,A14,NORMFORM:5;
    end;
   hence Atom(A).a [= StrongImpl(A).(u, w) by Lm5;
  end;

Lm11:
  now let A,u,v;
    deffunc IMPL(Element of NormForm A,
              Element of NormForm A)
       = FinJoin(SUB $1,M(A).:
(pseudo_compl(A), StrongImpl(A)[:](diff $1, $2)));
    set Psi = M(A).:(pseudo_compl(A), StrongImpl(A)[:](diff u, v));
A1:  now let w;
      set u2 = (diff u).w,
          pc = pseudo_compl(A).w,
          si = StrongImpl(A).(u2, v);
     assume w in SUB u;
then A2:     w "\/" u2 = u by Lm9;
A3:    w "/\" (pc "/\" si) = (w "/\" pc) "/\" si by LATTICES:def 7
       .= Bottom NormForm A "/\" si by Th28
       .= Bottom NormForm A by LATTICES:40;
A4:    u2 "/\" si [= v by Th29;
        M(A)[;](u, Psi).w = M(A).(u, Psi.w) by FUNCOP_1:66
       .= u "/\" Psi.w by LATTICES:def 2
       .= u "/\" M(A).(pc, StrongImpl(A)[:](diff u, v).w) by FUNCOP_1:48
       .= u "/\" (pc "/\" StrongImpl(A)[:](diff u, v).w) by LATTICES:def 2
       .= u "/\" (pc "/\" si) by FUNCOP_1:60
       .= (w "/\" (pc "/\" si)) "\/" (u2 "/\" (pc "/\"si))
                 by A2,LATTICES:def 11
       .= u2 "/\" (si "/\" pc) by A3,LATTICES:39
       .= (u2 "/\" si) "/\" pc by LATTICES:def 7;
      then M(A)[;](u, Psi).w [= u2 "/\" si by LATTICES:23;
     hence M(A)[;](u, Psi).w [= v by A4,LATTICES:25;
    end;
      u "/\" IMPL(u,v) = FinJoin(SUB u, M(A)[;](u, Psi)) by LATTICE2:83;
   hence u "/\" IMPL(u,v) [= v by A1,LATTICE2:70;
   let w;
A5: v = FinJoin(@v, Atom(A)) by Th15;
then A6: u "/\" v = FinJoin(@v, M(A)[;](u, Atom(A))) by LATTICE2:83;
   assume
A7:  u "/\" v [= w;
      now let a;
     assume a in @v;
      then M(A)[;](u, Atom(A)).a [= w by A6,A7,LATTICE2:46;
      then M(A).(u, Atom(A).a) [= w by FUNCOP_1:66;
then A8:    u "/\" Atom(A).a [= w by LATTICES:def 2;
      consider v such that
A9:   v in SUB u and
A10:   @v ^ { a } = {} and
A11:   for b st b in (diff u).v holds b \/ a in DISJOINT_PAIRS A by Lm10;
        (diff u).v [= u by Th27;
      then (diff u).v "/\" Atom(A).a [= u "/\" Atom(A).a by LATTICES:27;
then A12:   (diff u).v "/\" Atom(A).a [= w by A8,LATTICES:25;
      set pf = pseudo_compl(A),
          sf = StrongImpl(A)[:](diff u, w);
A13:   Atom(A).a [= pf.v by A10,Th30;
        Atom(A).a [= StrongImpl(A).((diff u).v, w) by A11,A12,Th31;
then A14:   Atom(A).a [= sf.v by FUNCOP_1:60;
        pf.v "/\" sf.v = M(A).(pf.v, sf.v) by LATTICES:def 2
        .= M(A).:(pf, sf).v by FUNCOP_1:48;
      then Atom(A).a [= M(A).:(pf, sf).v by A13,A14,FILTER_0:7;
     hence Atom(A).a [= IMPL(u,w) by A9,LATTICE2:44;
    end;
   hence v [= IMPL(u,w) by A5,LATTICE2:70;
  end;

Lm12:  NormForm A is implicative
 proof let p,q be Element of NormForm A;
  take r = FinJoin(SUB p,M(A).:(pseudo_compl(A), StrongImpl(A)[:](diff p, q)));
  thus p "/\" r [= q &
     for r1 being Element of NormForm A st
      p "/\" r1 [= q holds r1 [= r by Lm11;
 end;

definition let A;
  cluster NormForm A -> implicative;
  coherence by Lm12;
end;

canceled;

theorem Th33:
 u => v = FinJoin(SUB u,
   (the L_meet of NormForm A).:(pseudo_compl(A), StrongImpl(A)[:](diff u, v)))
proof
  deffunc IMPL(Element of NormForm A,
            Element of NormForm A)
       = FinJoin(SUB $1,M(A).:
(pseudo_compl(A), StrongImpl(A)[:](diff $1, $2)));
    u "/\" IMPL(u,v) [= v & for w st u "/\" w [= v holds w [= IMPL(u,v) by Lm11
;
 hence thesis by FILTER_0:def 8;
end;

theorem
   Top NormForm A = {[{},{}]}
 proof
   set sd = StrongImpl(A)[:](diff Bottom NormForm A, Bottom NormForm A);
   set F=M(A).:(pseudo_compl(A), sd);
A1: Bottom NormForm A = {} by NORMFORM:86;
then A2: SUB Bottom NormForm A = { Bottom NormForm A } by Def10,ZFMISC_1:1;
A3: @(Bottom NormForm A) = {} by A1,Def3;
A4: J(A) is commutative & J(A) is associative by LATTICE2:27,29;
A5: (diff Bottom NormForm A).Bottom NormForm A = {} \ {} by A1,Def11
         .= Bottom NormForm A by NORMFORM:86;
   reconsider O = {[{},{}]} as Element of Normal_forms_on A by Th22;
A6: @(pseudo_compl(A).Bottom NormForm A) = pseudo_compl(A).Bottom
NormForm A by Def3
           .= mi(-@Bottom NormForm A) by Def8
           .= mi O by A3,Th18
           .= O by NORMFORM:66;
A7: @(sd.Bottom NormForm A) = sd.Bottom NormForm A by Def3
           .= StrongImpl(A).(Bottom NormForm A, Bottom
NormForm A) by A5,FUNCOP_1:60
           .= mi(@Bottom NormForm A =>> @Bottom NormForm A) by Def9
           .= mi O by A3,Th19
           .= O by NORMFORM:66;
  thus Top NormForm A = (Bottom NormForm A) => Bottom NormForm A by FILTER_0:38
    .= FinJoin(SUB Bottom NormForm A,F) by Th33
    .= J(A)$$(SUB Bottom NormForm A,F) by LATTICE2:def 3
    .= F.Bottom NormForm A by A2,A4,SETWISEO:26
    .= M(A).(pseudo_compl(A).Bottom NormForm A, sd.Bottom NormForm A)
            by FUNCOP_1:48
    .= mi (O^O) by A6,A7,Lm2
    .= {[{},{}]} by Th7;
 end;

Back to top