Article HEYTING1, MML version 4.99.1005

:: HEYTING1:th 1
theorem
for b1, b2, b3 being non empty set
for b4 being Function-like quasi_total Relation of b1,b2
      st for b5 being Element of b1 holds
           b4 . b5 in b3
   holds b4 is Function-like quasi_total Relation of b1,b3;

:: HEYTING1:prednot 1 => HEYTING1:pred 1
definition
  let a1 be non empty set;
  let a2, a3 be Element of Fin a1;
  redefine pred A2 c= A3 means
    for b1 being Element of a1
          st b1 in a2
       holds b1 in a3;
  reflexivity;
::  for a1 being non empty set
::  for a2 being Element of Fin a1 holds
::     a2 c= a2;
end;

:: HEYTING1:dfs 1
definiens
  let a1 be non empty set;
  let a2, a3 be Element of Fin a1;
To prove
     a2 c= a3
it is sufficient to prove
  thus for b1 being Element of a1
          st b1 in a2
       holds b1 in a3;

:: HEYTING1:def 1
theorem
for b1 being non empty set
for b2, b3 being Element of Fin b1 holds
   b2 c= b3
iff
   for b4 being Element of b1
         st b4 in b2
      holds b4 in b3;

:: HEYTING1:funcnot 1 => HEYTING1:func 1
definition
  let a1 be set;
  assume a1 is not empty;
  func [A1] -> non empty set equals
    a1;
end;

:: HEYTING1:def 2
theorem
for b1 being set
      st b1 is not empty
   holds [b1] = b1;

:: HEYTING1:th 3
theorem
for b1 being set
for b2 being Element of Fin DISJOINT_PAIRS b1
      st b2 = {}
   holds mi b2 = {};

:: HEYTING1:exreg 1
registration
  let a1 be set;
  cluster non empty Element of Normal_forms_on a1;
end;

:: HEYTING1:funcnot 2 => HEYTING1:func 2
definition
  let a1 be set;
  let a2 be Element of DISJOINT_PAIRS a1;
  redefine func {a2} -> Element of Normal_forms_on a1;
end;

:: HEYTING1:funcnot 3 => HEYTING1:func 3
definition
  let a1 be set;
  let a2 be Element of the carrier of NormForm a1;
  func @ A2 -> Element of Normal_forms_on a1 equals
    a2;
end;

:: HEYTING1:def 3
theorem
for b1 being set
for b2 being Element of the carrier of NormForm b1 holds
   @ b2 = b2;

:: HEYTING1:th 7
theorem
for b1 being set
for b2 being Element of Normal_forms_on b1 holds
   mi (b2 ^ b2) = b2;

:: HEYTING1:th 8
theorem
for b1 being set
for b2 being Element of Normal_forms_on b1
for b3 being set
      st b3 c= b2
   holds b3 in Normal_forms_on b1;

:: HEYTING1:th 10
theorem
for b1 being set
for b2 being Element of the carrier of NormForm b1
for b3 being set
      st b3 c= b2
   holds b3 is Element of the carrier of NormForm b1;

:: HEYTING1:funcnot 4 => HEYTING1:func 4
definition
  let a1 be set;
  func Atom A1 -> Function-like quasi_total Relation of DISJOINT_PAIRS a1,the carrier of NormForm a1 means
    for b1 being Element of DISJOINT_PAIRS a1 holds
       it . b1 = {b1};
end;

:: HEYTING1:def 4
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of DISJOINT_PAIRS b1,the carrier of NormForm b1 holds
      b2 = Atom b1
   iff
      for b3 being Element of DISJOINT_PAIRS b1 holds
         b2 . b3 = {b3};

:: HEYTING1:th 11
theorem
for b1 being set
for b2, b3 being Element of DISJOINT_PAIRS b1
      st b2 in (Atom b1) . b3
   holds b2 = b3;

:: HEYTING1:th 12
theorem
for b1 being set
for b2 being Element of DISJOINT_PAIRS b1 holds
   b2 in (Atom b1) . b2;

:: HEYTING1:th 13
theorem
for b1 being set
for b2 being Element of DISJOINT_PAIRS b1 holds
   (Atom b1) . b2 = (singleton DISJOINT_PAIRS b1) . b2;

:: HEYTING1:th 14
theorem
for b1 being set
for b2 being Element of Normal_forms_on b1 holds
   FinJoin(b2,Atom b1) = FinUnion(b2,singleton DISJOINT_PAIRS b1);

:: HEYTING1:th 15
theorem
for b1 being set
for b2 being Element of the carrier of NormForm b1 holds
   b2 = FinJoin(@ b2,Atom b1);

:: HEYTING1:funcnot 5 => HEYTING1:func 5
definition
  let a1 be set;
  func pair_diff A1 -> Function-like quasi_total Relation of [:[:Fin a1,Fin a1:],[:Fin a1,Fin a1:]:],[:Fin a1,Fin a1:] means
    for b1, b2 being Element of [:Fin a1,Fin a1:] holds
    it .(b1,b2) = b1 \ b2;
end;

:: HEYTING1:def 5
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of [:[:Fin b1,Fin b1:],[:Fin b1,Fin b1:]:],[:Fin b1,Fin b1:] holds
      b2 = pair_diff b1
   iff
      for b3, b4 being Element of [:Fin b1,Fin b1:] holds
      b2 .(b3,b4) = b3 \ b4;

:: HEYTING1:funcnot 6 => HEYTING1:func 6
definition
  let a1 be set;
  let a2 be Element of Fin DISJOINT_PAIRS a1;
  func - A2 -> Element of Fin DISJOINT_PAIRS a1 equals
    (DISJOINT_PAIRS a1) /\ {[{b1 . b2 where b2 is Element of DISJOINT_PAIRS a1: b1 . b2 in b2 `2 & b2 in a2},{b1 . b2 where b2 is Element of DISJOINT_PAIRS a1: b1 . b2 in b2 `1 & b2 in a2}] where b1 is Element of Funcs(DISJOINT_PAIRS a1,[a1]): for b2 being Element of DISJOINT_PAIRS a1
          st b2 in a2
       holds b1 . b2 in b2 `1 \/ (b2 `2)};
end;

:: HEYTING1:def 6
theorem
for b1 being set
for b2 being Element of Fin DISJOINT_PAIRS b1 holds
   - b2 = (DISJOINT_PAIRS b1) /\ {[{b3 . b4 where b4 is Element of DISJOINT_PAIRS b1: b3 . b4 in b4 `2 & b4 in b2},{b3 . b4 where b4 is Element of DISJOINT_PAIRS b1: b3 . b4 in b4 `1 & b4 in b2}] where b3 is Element of Funcs(DISJOINT_PAIRS b1,[b1]): for b4 being Element of DISJOINT_PAIRS b1
         st b4 in b2
      holds b3 . b4 in b4 `1 \/ (b4 `2)};

:: HEYTING1:funcnot 7 => HEYTING1:func 7
definition
  let a1 be set;
  let a2, a3 be Element of Fin DISJOINT_PAIRS a1;
  func A2 =>> A3 -> Element of Fin DISJOINT_PAIRS a1 equals
    (DISJOINT_PAIRS a1) /\ {FinPairUnion(a2,(pair_diff a1) .:(b1,incl DISJOINT_PAIRS a1)) where b1 is Element of Funcs(DISJOINT_PAIRS a1,[:Fin a1,Fin a1:]): b1 .: a2 c= a3};
end;

:: HEYTING1:def 7
theorem
for b1 being set
for b2, b3 being Element of Fin DISJOINT_PAIRS b1 holds
b2 =>> b3 = (DISJOINT_PAIRS b1) /\ {FinPairUnion(b2,(pair_diff b1) .:(b4,incl DISJOINT_PAIRS b1)) where b4 is Element of Funcs(DISJOINT_PAIRS b1,[:Fin b1,Fin b1:]): b4 .: b2 c= b3};

:: HEYTING1:th 16
theorem
for b1 being set
for b2 being Element of Fin DISJOINT_PAIRS b1
for b3 being Element of DISJOINT_PAIRS b1
      st b3 in - b2
   holds ex b4 being Element of Funcs(DISJOINT_PAIRS b1,[b1]) st
      (for b5 being Element of DISJOINT_PAIRS b1
             st b5 in b2
          holds b4 . b5 in b5 `1 \/ (b5 `2)) &
       b3 = [{b4 . b5 where b5 is Element of DISJOINT_PAIRS b1: b4 . b5 in b5 `2 & b5 in b2},{b4 . b5 where b5 is Element of DISJOINT_PAIRS b1: b4 . b5 in b5 `1 & b5 in b2}];

:: HEYTING1:th 17
theorem
for b1 being set holds
   [{},{}] is Element of DISJOINT_PAIRS b1;

:: HEYTING1:th 18
theorem
for b1 being set
for b2 being Element of Normal_forms_on b1
      st b2 = {}
   holds - b2 = {[{},{}]};

:: HEYTING1:th 19
theorem
for b1 being set
for b2, b3 being Element of Normal_forms_on b1
      st b2 = {} & b3 = {}
   holds b2 =>> b3 = {[{},{}]};

:: HEYTING1:th 20
theorem
for b1 being Element of DISJOINT_PAIRS {} holds
   b1 = [{},{}];

:: HEYTING1:th 21
theorem
DISJOINT_PAIRS {} = {[{},{}]};

:: HEYTING1:th 22
theorem
for b1 being set holds
   {[{},{}]} is Element of Normal_forms_on b1;

:: HEYTING1:th 23
theorem
for b1 being set
for b2, b3 being Element of Fin DISJOINT_PAIRS b1
for b4 being Element of DISJOINT_PAIRS b1
      st b4 in b2 =>> b3
   holds ex b5 being Element of Funcs(DISJOINT_PAIRS b1,[:Fin b1,Fin b1:]) st
      b5 .: b2 c= b3 &
       b4 = FinPairUnion(b2,(pair_diff b1) .:(b5,incl DISJOINT_PAIRS b1));

:: HEYTING1:th 24
theorem
for b1 being set
for b2 being Element of DISJOINT_PAIRS b1
for b3 being Element of Normal_forms_on b1
      st b3 ^ {b2} = {}
   holds ex b4 being Element of DISJOINT_PAIRS b1 st
      b4 in - b3 & b4 c= b2;

:: HEYTING1:th 25
theorem
for b1 being set
for b2 being Element of DISJOINT_PAIRS b1
for b3, b4 being Element of the carrier of NormForm b1
      st (for b5 being Element of DISJOINT_PAIRS b1
               st b5 in b3
            holds b5 \/ b2 in DISJOINT_PAIRS b1) &
         (for b5 being Element of DISJOINT_PAIRS b1
               st b5 in b3
            holds ex b6 being Element of DISJOINT_PAIRS b1 st
               b6 in b4 & b6 c= b5 \/ b2)
   holds ex b5 being Element of DISJOINT_PAIRS b1 st
      b5 in (@ b3) =>> @ b4 & b5 c= b2;

:: HEYTING1:th 26
theorem
for b1 being set
for b2 being Element of Normal_forms_on b1 holds
   b2 ^ - b2 = {};

:: HEYTING1:funcnot 8 => HEYTING1:func 8
definition
  let a1 be set;
  func pseudo_compl A1 -> Function-like quasi_total Relation of the carrier of NormForm a1,the carrier of NormForm a1 means
    for b1 being Element of the carrier of NormForm a1 holds
       it . b1 = mi - @ b1;
end;

:: HEYTING1:def 8
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of the carrier of NormForm b1,the carrier of NormForm b1 holds
      b2 = pseudo_compl b1
   iff
      for b3 being Element of the carrier of NormForm b1 holds
         b2 . b3 = mi - @ b3;

:: HEYTING1:funcnot 9 => HEYTING1:func 9
definition
  let a1 be set;
  func StrongImpl A1 -> Function-like quasi_total Relation of [:the carrier of NormForm a1,the carrier of NormForm a1:],the carrier of NormForm a1 means
    for b1, b2 being Element of the carrier of NormForm a1 holds
    it .(b1,b2) = mi ((@ b1) =>> @ b2);
end;

:: HEYTING1:def 9
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of [:the carrier of NormForm b1,the carrier of NormForm b1:],the carrier of NormForm b1 holds
      b2 = StrongImpl b1
   iff
      for b3, b4 being Element of the carrier of NormForm b1 holds
      b2 .(b3,b4) = mi ((@ b3) =>> @ b4);

:: HEYTING1:funcnot 10 => HEYTING1:func 10
definition
  let a1 be set;
  let a2 be Element of the carrier of NormForm a1;
  func SUB A2 -> Element of Fin the carrier of NormForm a1 equals
    bool a2;
end;

:: HEYTING1:def 10
theorem
for b1 being set
for b2 being Element of the carrier of NormForm b1 holds
   SUB b2 = bool b2;

:: HEYTING1:funcnot 11 => HEYTING1:func 11
definition
  let a1 be set;
  let a2 be Element of the carrier of NormForm a1;
  func diff A2 -> Function-like quasi_total Relation of the carrier of NormForm a1,the carrier of NormForm a1 means
    for b1 being Element of the carrier of NormForm a1 holds
       it . b1 = a2 \ b1;
end;

:: HEYTING1:def 11
theorem
for b1 being set
for b2 being Element of the carrier of NormForm b1
for b3 being Function-like quasi_total Relation of the carrier of NormForm b1,the carrier of NormForm b1 holds
      b3 = diff b2
   iff
      for b4 being Element of the carrier of NormForm b1 holds
         b3 . b4 = b2 \ b4;

:: HEYTING1:th 27
theorem
for b1 being set
for b2, b3 being Element of the carrier of NormForm b1 holds
(diff b2) . b3 [= b2;

:: HEYTING1:th 28
theorem
for b1 being set
for b2 being Element of the carrier of NormForm b1 holds
   b2 "/\" ((pseudo_compl b1) . b2) = Bottom NormForm b1;

:: HEYTING1:th 29
theorem
for b1 being set
for b2, b3 being Element of the carrier of NormForm b1 holds
b2 "/\" ((StrongImpl b1) .(b2,b3)) [= b3;

:: HEYTING1:th 30
theorem
for b1 being set
for b2 being Element of DISJOINT_PAIRS b1
for b3 being Element of the carrier of NormForm b1
      st (@ b3) ^ {b2} = {}
   holds (Atom b1) . b2 [= (pseudo_compl b1) . b3;

:: HEYTING1:th 31
theorem
for b1 being set
for b2 being Element of DISJOINT_PAIRS b1
for b3, b4 being Element of the carrier of NormForm b1
      st (for b5 being Element of DISJOINT_PAIRS b1
               st b5 in b3
            holds b5 \/ b2 in DISJOINT_PAIRS b1) &
         b3 "/\" ((Atom b1) . b2) [= b4
   holds (Atom b1) . b2 [= (StrongImpl b1) .(b3,b4);

:: HEYTING1:funcreg 1
registration
  let a1 be set;
  cluster NormForm a1 -> strict implicative;
end;

:: HEYTING1:th 33
theorem
for b1 being set
for b2, b3 being Element of the carrier of NormForm b1 holds
b2 => b3 = FinJoin(SUB b2,(the L_meet of NormForm b1) .:(pseudo_compl b1,(StrongImpl b1) [:](diff b2,b3)));

:: HEYTING1:th 34
theorem
for b1 being set holds
   Top NormForm b1 = {[{},{}]};