Article HEYTING2, MML version 4.99.1005

:: HEYTING2:th 1
theorem
for b1, b2 being non empty set holds
ex b3 being Element of PFuncs(b1,b2) st
   b3 <> {};

:: HEYTING2:th 2
theorem
for b1, b2, b3, b4 being set
      st b4 in SubstitutionSet(b1,b2) & b3 in b4
   holds b3 is Relation-like Function-like finite set;

:: HEYTING2:th 3
theorem
for b1, b2 being set
for b3 being Element of PFuncs(b1,b2)
for b4 being set
      st b4 c= b3
   holds b4 in PFuncs(b1,b2);

:: HEYTING2:th 4
theorem
for b1, b2 being set holds
PFuncs(b1,b2) c= bool [:b1,b2:];

:: HEYTING2:th 5
theorem
for b1, b2 being set
      st b1 is finite & b2 is finite
   holds PFuncs(b1,b2) is finite;

:: HEYTING2:exreg 1
registration
  cluster non empty functional finite set;
end;

:: HEYTING2:th 6
theorem
for b1, b2 being set
for b3 being finite Element of PFuncs(b1,b2) holds
   {b3} in SubstitutionSet(b1,b2);

:: HEYTING2:th 7
theorem
for b1, b2 being set
for b3, b4 being Element of SubstitutionSet(b1,b2)
   st b3 ^ b4 = b3
for b5 being set
      st b5 in b3
   holds ex b6 being set st
      b6 in b4 & b6 c= b5;

:: HEYTING2:th 8
theorem
for b1, b2 being set
for b3, b4 being Element of SubstitutionSet(b1,b2)
   st mi (b3 ^ b4) = b3
for b5 being set
      st b5 in b3
   holds ex b6 being set st
      b6 in b4 & b6 c= b5;

:: HEYTING2:th 9
theorem
for b1, b2 being set
for b3, b4 being Element of SubstitutionSet(b1,b2)
      st for b5 being set
              st b5 in b3
           holds ex b6 being set st
              b6 in b4 & b6 c= b5
   holds mi (b3 ^ b4) = b3;

:: HEYTING2:funcnot 1 => HEYTING2:func 1
definition
  let a1 be set;
  let a2 be finite set;
  let a3 be Element of Fin PFuncs(a1,a2);
  func Involved A3 -> set means
    for b1 being set holds
          b1 in it
       iff
          ex b2 being Relation-like Function-like finite set st
             b2 in a3 & b1 in proj1 b2;
end;

:: HEYTING2:def 1
theorem
for b1 being set
for b2 being finite set
for b3 being Element of Fin PFuncs(b1,b2)
for b4 being set holds
      b4 = Involved b3
   iff
      for b5 being set holds
            b5 in b4
         iff
            ex b6 being Relation-like Function-like finite set st
               b6 in b3 & b5 in proj1 b6;

:: HEYTING2:th 10
theorem
for b1 being set
for b2 being finite set
for b3 being Element of Fin PFuncs(b1,b2) holds
   Involved b3 c= b1;

:: HEYTING2:th 11
theorem
for b1 being set
for b2 being finite set
for b3 being Element of Fin PFuncs(b1,b2)
      st b3 = {}
   holds Involved b3 = {};

:: HEYTING2:th 12
theorem
for b1 being set
for b2 being finite set
for b3 being Element of Fin PFuncs(b1,b2) holds
   Involved b3 is finite;

:: HEYTING2:th 13
theorem
for b1 being finite set
for b2 being Element of Fin PFuncs({},b1) holds
   Involved b2 = {};

:: HEYTING2:funcnot 2 => HEYTING2:func 2
definition
  let a1 be set;
  let a2 be finite set;
  let a3 be Element of Fin PFuncs(a1,a2);
  func - A3 -> Element of Fin PFuncs(a1,a2) equals
    {b1 where b1 is Element of PFuncs(Involved a3,a2): for b2 being Element of PFuncs(a1,a2)
          st b2 in a3
       holds not b1 tolerates b2};
end;

:: HEYTING2:def 2
theorem
for b1 being set
for b2 being finite set
for b3 being Element of Fin PFuncs(b1,b2) holds
   - b3 = {b4 where b4 is Element of PFuncs(Involved b3,b2): for b5 being Element of PFuncs(b1,b2)
         st b5 in b3
      holds not b4 tolerates b5};

:: HEYTING2:th 14
theorem
for b1 being set
for b2 being finite set
for b3 being Element of SubstitutionSet(b1,b2) holds
   b3 ^ - b3 = {};

:: HEYTING2:th 15
theorem
for b1 being set
for b2 being finite set
for b3 being Element of SubstitutionSet(b1,b2)
      st b3 = {}
   holds - b3 = {{}};

:: HEYTING2:th 16
theorem
for b1 being set
for b2 being finite set
for b3 being Element of SubstitutionSet(b1,b2)
      st b3 = {{}}
   holds - b3 = {};

:: HEYTING2:th 17
theorem
for b1 being set
for b2 being finite set
for b3 being Element of SubstitutionSet(b1,b2) holds
   mi (b3 ^ - b3) = Bottom SubstLatt(b1,b2);

:: HEYTING2:th 18
theorem
for b1 being non empty set
for b2 being non empty finite set
for b3 being Element of SubstitutionSet(b1,b2)
      st b3 = {}
   holds mi - b3 = Top SubstLatt(b1,b2);

:: HEYTING2:th 19
theorem
for b1 being set
for b2 being finite set
for b3 being Element of SubstitutionSet(b1,b2)
for b4 being Element of PFuncs(b1,b2)
for b5 being Element of SubstitutionSet(b1,b2)
      st b5 = {b4} & b3 ^ b5 = {}
   holds ex b6 being finite set st
      b6 in - b3 & b6 c= b4;

:: HEYTING2:funcnot 3 => HEYTING2:func 3
definition
  let a1 be set;
  let a2 be finite set;
  let a3, a4 be Element of Fin PFuncs(a1,a2);
  func A3 =>> A4 -> Element of Fin PFuncs(a1,a2) equals
    (PFuncs(a1,a2)) /\ {union {(b1 . b2) \ b2 where b2 is Element of PFuncs(a1,a2): b2 in a3} where b1 is Element of PFuncs(a3,a4): proj1 b1 = a3};
end;

:: HEYTING2:def 3
theorem
for b1 being set
for b2 being finite set
for b3, b4 being Element of Fin PFuncs(b1,b2) holds
b3 =>> b4 = (PFuncs(b1,b2)) /\ {union {(b5 . b6) \ b6 where b6 is Element of PFuncs(b1,b2): b6 in b3} where b5 is Element of PFuncs(b3,b4): proj1 b5 = b3};

:: HEYTING2:th 20
theorem
for b1 being set
for b2 being finite set
for b3, b4 being Element of Fin PFuncs(b1,b2)
for b5 being set
      st b5 in b3 =>> b4
   holds ex b6 being Function-like Relation of b3,b4 st
      b5 = union {(b6 . b7) \ b7 where b7 is Element of PFuncs(b1,b2): b7 in b3} &
       dom b6 = b3;

:: HEYTING2:th 21
theorem
for b1 being set
for b2 being finite set
for b3 being Element of Fin PFuncs(b1,b2)
      st b3 = {}
   holds b3 =>> b3 = {{}};

:: HEYTING2:th 22
theorem
for b1 being set
for b2 being finite set
for b3 being Element of the carrier of SubstLatt(b1,b2)
for b4 being set
      st b4 c= b3
   holds b4 is Element of the carrier of SubstLatt(b1,b2);

:: HEYTING2:funcnot 4 => HEYTING2:func 4
definition
  let a1 be set;
  let a2 be finite set;
  func pseudo_compl(A1,A2) -> Function-like quasi_total Relation of the carrier of SubstLatt(a1,a2),the carrier of SubstLatt(a1,a2) means
    for b1 being Element of the carrier of SubstLatt(a1,a2)
    for b2 being Element of SubstitutionSet(a1,a2)
          st b2 = b1
       holds it . b1 = mi - b2;
end;

:: HEYTING2:def 4
theorem
for b1 being set
for b2 being finite set
for b3 being Function-like quasi_total Relation of the carrier of SubstLatt(b1,b2),the carrier of SubstLatt(b1,b2) holds
      b3 = pseudo_compl(b1,b2)
   iff
      for b4 being Element of the carrier of SubstLatt(b1,b2)
      for b5 being Element of SubstitutionSet(b1,b2)
            st b5 = b4
         holds b3 . b4 = mi - b5;

:: HEYTING2:funcnot 5 => HEYTING2:func 5
definition
  let a1 be set;
  let a2 be finite set;
  func StrongImpl(A1,A2) -> Function-like quasi_total Relation of [:the carrier of SubstLatt(a1,a2),the carrier of SubstLatt(a1,a2):],the carrier of SubstLatt(a1,a2) means
    for b1, b2 being Element of the carrier of SubstLatt(a1,a2)
    for b3, b4 being Element of SubstitutionSet(a1,a2)
          st b3 = b1 & b4 = b2
       holds it .(b1,b2) = mi (b3 =>> b4);
end;

:: HEYTING2:def 5
theorem
for b1 being set
for b2 being finite set
for b3 being Function-like quasi_total Relation of [:the carrier of SubstLatt(b1,b2),the carrier of SubstLatt(b1,b2):],the carrier of SubstLatt(b1,b2) holds
      b3 = StrongImpl(b1,b2)
   iff
      for b4, b5 being Element of the carrier of SubstLatt(b1,b2)
      for b6, b7 being Element of SubstitutionSet(b1,b2)
            st b6 = b4 & b7 = b5
         holds b3 .(b4,b5) = mi (b6 =>> b7);

:: HEYTING2:funcnot 6 => HEYTING2:func 6
definition
  let a1 be set;
  let a2 be finite set;
  let a3 be Element of the carrier of SubstLatt(a1,a2);
  func SUB A3 -> Element of Fin the carrier of SubstLatt(a1,a2) equals
    bool a3;
end;

:: HEYTING2:def 6
theorem
for b1 being set
for b2 being finite set
for b3 being Element of the carrier of SubstLatt(b1,b2) holds
   SUB b3 = bool b3;

:: HEYTING2:funcnot 7 => HEYTING2:func 7
definition
  let a1 be set;
  let a2 be finite set;
  let a3 be Element of the carrier of SubstLatt(a1,a2);
  func diff A3 -> Function-like quasi_total Relation of the carrier of SubstLatt(a1,a2),the carrier of SubstLatt(a1,a2) means
    for b1 being Element of the carrier of SubstLatt(a1,a2) holds
       it . b1 = a3 \ b1;
end;

:: HEYTING2:def 7
theorem
for b1 being set
for b2 being finite set
for b3 being Element of the carrier of SubstLatt(b1,b2)
for b4 being Function-like quasi_total Relation of the carrier of SubstLatt(b1,b2),the carrier of SubstLatt(b1,b2) holds
      b4 = diff b3
   iff
      for b5 being Element of the carrier of SubstLatt(b1,b2) holds
         b4 . b5 = b3 \ b5;

:: HEYTING2:funcnot 8 => HEYTING2:func 8
definition
  let a1 be set;
  let a2 be finite set;
  func Atom(A1,A2) -> Function-like quasi_total Relation of PFuncs(a1,a2),the carrier of SubstLatt(a1,a2) means
    for b1 being Element of PFuncs(a1,a2) holds
       it . b1 = mi {.b1.};
end;

:: HEYTING2:def 8
theorem
for b1 being set
for b2 being finite set
for b3 being Function-like quasi_total Relation of PFuncs(b1,b2),the carrier of SubstLatt(b1,b2) holds
      b3 = Atom(b1,b2)
   iff
      for b4 being Element of PFuncs(b1,b2) holds
         b3 . b4 = mi {.b4.};

:: HEYTING2:th 23
theorem
for b1 being set
for b2 being finite set
for b3 being Element of SubstitutionSet(b1,b2) holds
   FinJoin(b3,Atom(b1,b2)) = FinUnion(b3,singleton PFuncs(b1,b2));

:: HEYTING2:th 24
theorem
for b1 being set
for b2 being finite set
for b3 being Element of SubstitutionSet(b1,b2) holds
   b3 = FinJoin(b3,Atom(b1,b2));

:: HEYTING2:th 25
theorem
for b1 being set
for b2 being finite set
for b3, b4 being Element of the carrier of SubstLatt(b1,b2) holds
(diff b3) . b4 [= b3;

:: HEYTING2:th 26
theorem
for b1 being set
for b2 being finite set
for b3 being Element of PFuncs(b1,b2)
   st b3 is finite
for b4 being set
      st b4 in (Atom(b1,b2)) . b3
   holds b4 = b3;

:: HEYTING2:th 27
theorem
for b1 being set
for b2 being finite set
for b3 being Element of the carrier of SubstLatt(b1,b2)
for b4, b5 being Element of SubstitutionSet(b1,b2)
for b6 being Element of PFuncs(b1,b2)
      st b4 = {b6} & b5 = b3 & b5 ^ b4 = {}
   holds (Atom(b1,b2)) . b6 [= (pseudo_compl(b1,b2)) . b3;

:: HEYTING2:th 28
theorem
for b1 being set
for b2 being finite set
for b3 being finite Element of PFuncs(b1,b2) holds
   b3 in (Atom(b1,b2)) . b3;

:: HEYTING2:th 29
theorem
for b1 being set
for b2 being finite set
for b3 being Element of PFuncs(b1,b2)
for b4, b5 being Element of SubstitutionSet(b1,b2)
      st for b6 being set
              st b6 in b4
           holds ex b7 being set st
              b7 in b5 & b7 c= b6 \/ b3
   holds ex b6 being set st
      b6 in b4 =>> b5 & b6 c= b3;

:: HEYTING2:th 30
theorem
for b1 being set
for b2 being finite set
for b3, b4 being Element of the carrier of SubstLatt(b1,b2)
for b5 being finite Element of PFuncs(b1,b2)
      st (for b6 being Element of PFuncs(b1,b2)
               st b6 in b3
            holds b6 tolerates b5) &
         b3 "/\" ((Atom(b1,b2)) . b5) [= b4
   holds (Atom(b1,b2)) . b5 [= (StrongImpl(b1,b2)) .(b3,b4);

:: HEYTING2:th 31
theorem
for b1 being set
for b2 being finite set
for b3 being Element of the carrier of SubstLatt(b1,b2) holds
   b3 "/\" ((pseudo_compl(b1,b2)) . b3) = Bottom SubstLatt(b1,b2);

:: HEYTING2:th 32
theorem
for b1 being set
for b2 being finite set
for b3, b4 being Element of the carrier of SubstLatt(b1,b2) holds
b3 "/\" ((StrongImpl(b1,b2)) .(b3,b4)) [= b4;

:: HEYTING2:funcreg 1
registration
  let a1 be set;
  let a2 be finite set;
  cluster SubstLatt(a1,a2) -> strict implicative;
end;

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