Article INTPRO_1, MML version 4.99.1005

:: INTPRO_1:attrnot 1 => INTPRO_1:attr 1
definition
  let a1 be set;
  attr a1 is with_FALSUM means
    <*0*> in a1;
end;

:: INTPRO_1:dfs 1
definiens
  let a1 be set;
To prove
     a1 is with_FALSUM
it is sufficient to prove
  thus <*0*> in a1;

:: INTPRO_1:def 1
theorem
for b1 being set holds
      b1 is with_FALSUM
   iff
      <*0*> in b1;

:: INTPRO_1:attrnot 2 => INTPRO_1:attr 2
definition
  let a1 be set;
  attr a1 is with_int_implication means
    for b1, b2 being Relation-like Function-like FinSequence-like set
          st b1 in a1 & b2 in a1
       holds (<*1*> ^ b1) ^ b2 in a1;
end;

:: INTPRO_1:dfs 2
definiens
  let a1 be set;
To prove
     a1 is with_int_implication
it is sufficient to prove
  thus for b1, b2 being Relation-like Function-like FinSequence-like set
          st b1 in a1 & b2 in a1
       holds (<*1*> ^ b1) ^ b2 in a1;

:: INTPRO_1:def 2
theorem
for b1 being set holds
      b1 is with_int_implication
   iff
      for b2, b3 being Relation-like Function-like FinSequence-like set
            st b2 in b1 & b3 in b1
         holds (<*1*> ^ b2) ^ b3 in b1;

:: INTPRO_1:attrnot 3 => INTPRO_1:attr 3
definition
  let a1 be set;
  attr a1 is with_int_conjunction means
    for b1, b2 being Relation-like Function-like FinSequence-like set
          st b1 in a1 & b2 in a1
       holds (<*2*> ^ b1) ^ b2 in a1;
end;

:: INTPRO_1:dfs 3
definiens
  let a1 be set;
To prove
     a1 is with_int_conjunction
it is sufficient to prove
  thus for b1, b2 being Relation-like Function-like FinSequence-like set
          st b1 in a1 & b2 in a1
       holds (<*2*> ^ b1) ^ b2 in a1;

:: INTPRO_1:def 3
theorem
for b1 being set holds
      b1 is with_int_conjunction
   iff
      for b2, b3 being Relation-like Function-like FinSequence-like set
            st b2 in b1 & b3 in b1
         holds (<*2*> ^ b2) ^ b3 in b1;

:: INTPRO_1:attrnot 4 => INTPRO_1:attr 4
definition
  let a1 be set;
  attr a1 is with_int_disjunction means
    for b1, b2 being Relation-like Function-like FinSequence-like set
          st b1 in a1 & b2 in a1
       holds (<*3*> ^ b1) ^ b2 in a1;
end;

:: INTPRO_1:dfs 4
definiens
  let a1 be set;
To prove
     a1 is with_int_disjunction
it is sufficient to prove
  thus for b1, b2 being Relation-like Function-like FinSequence-like set
          st b1 in a1 & b2 in a1
       holds (<*3*> ^ b1) ^ b2 in a1;

:: INTPRO_1:def 4
theorem
for b1 being set holds
      b1 is with_int_disjunction
   iff
      for b2, b3 being Relation-like Function-like FinSequence-like set
            st b2 in b1 & b3 in b1
         holds (<*3*> ^ b2) ^ b3 in b1;

:: INTPRO_1:attrnot 5 => INTPRO_1:attr 5
definition
  let a1 be set;
  attr a1 is with_int_propositional_variables means
    for b1 being Element of NAT holds
       <*5 + (2 * b1)*> in a1;
end;

:: INTPRO_1:dfs 5
definiens
  let a1 be set;
To prove
     a1 is with_int_propositional_variables
it is sufficient to prove
  thus for b1 being Element of NAT holds
       <*5 + (2 * b1)*> in a1;

:: INTPRO_1:def 5
theorem
for b1 being set holds
      b1 is with_int_propositional_variables
   iff
      for b2 being Element of NAT holds
         <*5 + (2 * b2)*> in b1;

:: INTPRO_1:attrnot 6 => INTPRO_1:attr 6
definition
  let a1 be set;
  attr a1 is with_modal_operator means
    for b1 being Relation-like Function-like FinSequence-like set
          st b1 in a1
       holds <*6*> ^ b1 in a1;
end;

:: INTPRO_1:dfs 6
definiens
  let a1 be set;
To prove
     a1 is with_modal_operator
it is sufficient to prove
  thus for b1 being Relation-like Function-like FinSequence-like set
          st b1 in a1
       holds <*6*> ^ b1 in a1;

:: INTPRO_1:def 6
theorem
for b1 being set holds
      b1 is with_modal_operator
   iff
      for b2 being Relation-like Function-like FinSequence-like set
            st b2 in b1
         holds <*6*> ^ b2 in b1;

:: INTPRO_1:attrnot 7 => INTPRO_1:attr 7
definition
  let a1 be set;
  attr a1 is MC-closed means
    a1 c= NAT * & a1 is with_FALSUM & a1 is with_int_implication & a1 is with_int_conjunction & a1 is with_int_disjunction & a1 is with_int_propositional_variables & a1 is with_modal_operator;
end;

:: INTPRO_1:dfs 7
definiens
  let a1 be set;
To prove
     a1 is MC-closed
it is sufficient to prove
  thus a1 c= NAT * & a1 is with_FALSUM & a1 is with_int_implication & a1 is with_int_conjunction & a1 is with_int_disjunction & a1 is with_int_propositional_variables & a1 is with_modal_operator;

:: INTPRO_1:def 7
theorem
for b1 being set holds
      b1 is MC-closed
   iff
      b1 c= NAT * & b1 is with_FALSUM & b1 is with_int_implication & b1 is with_int_conjunction & b1 is with_int_disjunction & b1 is with_int_propositional_variables & b1 is with_modal_operator;

:: INTPRO_1:condreg 1
registration
  cluster MC-closed -> non empty with_FALSUM with_int_implication with_int_conjunction with_int_disjunction with_int_propositional_variables with_modal_operator (set);
end;

:: INTPRO_1:condreg 2
registration
  cluster with_FALSUM with_int_implication with_int_conjunction with_int_disjunction with_int_propositional_variables with_modal_operator -> MC-closed (Element of bool (NAT *));
end;

:: INTPRO_1:funcnot 1 => INTPRO_1:func 1
definition
  func MC-wff -> set means
    it is MC-closed &
     (for b1 being set
           st b1 is MC-closed
        holds it c= b1);
end;

:: INTPRO_1:def 8
theorem
for b1 being set holds
      b1 = MC-wff
   iff
      b1 is MC-closed &
       (for b2 being set
             st b2 is MC-closed
          holds b1 c= b2);

:: INTPRO_1:funcreg 1
registration
  cluster MC-wff -> MC-closed;
end;

:: INTPRO_1:exreg 1
registration
  cluster non empty MC-closed set;
end;

:: INTPRO_1:funcreg 2
registration
  cluster MC-wff -> functional;
end;

:: INTPRO_1:condreg 3
registration
  cluster -> FinSequence-like (Element of MC-wff);
end;

:: INTPRO_1:modenot 1
definition
  mode MC-formula is Element of MC-wff;
end;

:: INTPRO_1:funcnot 2 => INTPRO_1:func 2
definition
  func FALSUM -> Element of MC-wff equals
    <*0*>;
end;

:: INTPRO_1:def 9
theorem
FALSUM = <*0*>;

:: INTPRO_1:funcnot 3 => INTPRO_1:func 3
definition
  let a1, a2 be Element of MC-wff;
  func A1 => A2 -> Element of MC-wff equals
    (<*1*> ^ a1) ^ a2;
end;

:: INTPRO_1:def 10
theorem
for b1, b2 being Element of MC-wff holds
b1 => b2 = (<*1*> ^ b1) ^ b2;

:: INTPRO_1:funcnot 4 => INTPRO_1:func 4
definition
  let a1, a2 be Element of MC-wff;
  func A1 '&' A2 -> Element of MC-wff equals
    (<*2*> ^ a1) ^ a2;
end;

:: INTPRO_1:def 11
theorem
for b1, b2 being Element of MC-wff holds
b1 '&' b2 = (<*2*> ^ b1) ^ b2;

:: INTPRO_1:funcnot 5 => INTPRO_1:func 5
definition
  let a1, a2 be Element of MC-wff;
  func A1 'or' A2 -> Element of MC-wff equals
    (<*3*> ^ a1) ^ a2;
end;

:: INTPRO_1:def 12
theorem
for b1, b2 being Element of MC-wff holds
b1 'or' b2 = (<*3*> ^ b1) ^ b2;

:: INTPRO_1:funcnot 6 => INTPRO_1:func 6
definition
  let a1 be Element of MC-wff;
  func Nes A1 -> Element of MC-wff equals
    <*6*> ^ a1;
end;

:: INTPRO_1:def 13
theorem
for b1 being Element of MC-wff holds
   Nes b1 = <*6*> ^ b1;

:: INTPRO_1:attrnot 8 => INTPRO_1:attr 8
definition
  let a1 be Element of bool MC-wff;
  attr a1 is IPC_theory means
    for b1, b2, b3 being Element of MC-wff holds
    b1 => (b2 => b1) in a1 &
     (b1 => (b2 => b3)) => ((b1 => b2) => (b1 => b3)) in a1 &
     (b1 '&' b2) => b1 in a1 &
     (b1 '&' b2) => b2 in a1 &
     b1 => (b2 => (b1 '&' b2)) in a1 &
     b1 => (b1 'or' b2) in a1 &
     b2 => (b1 'or' b2) in a1 &
     (b1 => b3) => ((b2 => b3) => ((b1 'or' b2) => b3)) in a1 &
     FALSUM => b1 in a1 &
     (b1 in a1 & b1 => b2 in a1 implies b2 in a1);
end;

:: INTPRO_1:dfs 14
definiens
  let a1 be Element of bool MC-wff;
To prove
     a1 is IPC_theory
it is sufficient to prove
  thus for b1, b2, b3 being Element of MC-wff holds
    b1 => (b2 => b1) in a1 &
     (b1 => (b2 => b3)) => ((b1 => b2) => (b1 => b3)) in a1 &
     (b1 '&' b2) => b1 in a1 &
     (b1 '&' b2) => b2 in a1 &
     b1 => (b2 => (b1 '&' b2)) in a1 &
     b1 => (b1 'or' b2) in a1 &
     b2 => (b1 'or' b2) in a1 &
     (b1 => b3) => ((b2 => b3) => ((b1 'or' b2) => b3)) in a1 &
     FALSUM => b1 in a1 &
     (b1 in a1 & b1 => b2 in a1 implies b2 in a1);

:: INTPRO_1:def 14
theorem
for b1 being Element of bool MC-wff holds
      b1 is IPC_theory
   iff
      for b2, b3, b4 being Element of MC-wff holds
      b2 => (b3 => b2) in b1 &
       (b2 => (b3 => b4)) => ((b2 => b3) => (b2 => b4)) in b1 &
       (b2 '&' b3) => b2 in b1 &
       (b2 '&' b3) => b3 in b1 &
       b2 => (b3 => (b2 '&' b3)) in b1 &
       b2 => (b2 'or' b3) in b1 &
       b3 => (b2 'or' b3) in b1 &
       (b2 => b4) => ((b3 => b4) => ((b2 'or' b3) => b4)) in b1 &
       FALSUM => b2 in b1 &
       (b2 in b1 & b2 => b3 in b1 implies b3 in b1);

:: INTPRO_1:funcnot 7 => INTPRO_1:func 7
definition
  let a1 be Element of bool MC-wff;
  func CnIPC A1 -> Element of bool MC-wff means
    for b1 being Element of MC-wff holds
          b1 in it
       iff
          for b2 being Element of bool MC-wff
                st b2 is IPC_theory & a1 c= b2
             holds b1 in b2;
end;

:: INTPRO_1:def 15
theorem
for b1, b2 being Element of bool MC-wff holds
   b2 = CnIPC b1
iff
   for b3 being Element of MC-wff holds
         b3 in b2
      iff
         for b4 being Element of bool MC-wff
               st b4 is IPC_theory & b1 c= b4
            holds b3 in b4;

:: INTPRO_1:funcnot 8 => INTPRO_1:func 8
definition
  func IPC-Taut -> Element of bool MC-wff equals
    CnIPC {} MC-wff;
end;

:: INTPRO_1:def 16
theorem
IPC-Taut = CnIPC {} MC-wff;

:: INTPRO_1:funcnot 9 => INTPRO_1:func 9
definition
  let a1 be Element of MC-wff;
  func neg A1 -> Element of MC-wff equals
    a1 => FALSUM;
end;

:: INTPRO_1:def 17
theorem
for b1 being Element of MC-wff holds
   neg b1 = b1 => FALSUM;

:: INTPRO_1:funcnot 10 => INTPRO_1:func 10
definition
  func IVERUM -> Element of MC-wff equals
    FALSUM => FALSUM;
end;

:: INTPRO_1:def 18
theorem
IVERUM = FALSUM => FALSUM;

:: INTPRO_1:th 1
theorem
for b1 being Element of bool MC-wff
for b2, b3 being Element of MC-wff holds
b2 => (b3 => b2) in CnIPC b1;

:: INTPRO_1:th 2
theorem
for b1 being Element of bool MC-wff
for b2, b3, b4 being Element of MC-wff holds
(b2 => (b3 => b4)) => ((b2 => b3) => (b2 => b4)) in CnIPC b1;

:: INTPRO_1:th 3
theorem
for b1 being Element of bool MC-wff
for b2, b3 being Element of MC-wff holds
(b2 '&' b3) => b2 in CnIPC b1;

:: INTPRO_1:th 4
theorem
for b1 being Element of bool MC-wff
for b2, b3 being Element of MC-wff holds
(b2 '&' b3) => b3 in CnIPC b1;

:: INTPRO_1:th 5
theorem
for b1 being Element of bool MC-wff
for b2, b3 being Element of MC-wff holds
b2 => (b3 => (b2 '&' b3)) in CnIPC b1;

:: INTPRO_1:th 6
theorem
for b1 being Element of bool MC-wff
for b2, b3 being Element of MC-wff holds
b2 => (b2 'or' b3) in CnIPC b1;

:: INTPRO_1:th 7
theorem
for b1 being Element of bool MC-wff
for b2, b3 being Element of MC-wff holds
b2 => (b3 'or' b2) in CnIPC b1;

:: INTPRO_1:th 8
theorem
for b1 being Element of bool MC-wff
for b2, b3, b4 being Element of MC-wff holds
(b2 => b3) => ((b4 => b3) => ((b2 'or' b4) => b3)) in CnIPC b1;

:: INTPRO_1:th 9
theorem
for b1 being Element of bool MC-wff
for b2 being Element of MC-wff holds
   FALSUM => b2 in CnIPC b1;

:: INTPRO_1:th 10
theorem
for b1 being Element of bool MC-wff
for b2, b3 being Element of MC-wff
      st b2 in CnIPC b1 & b2 => b3 in CnIPC b1
   holds b3 in CnIPC b1;

:: INTPRO_1:th 11
theorem
for b1, b2 being Element of bool MC-wff
      st b1 is IPC_theory & b2 c= b1
   holds CnIPC b2 c= b1;

:: INTPRO_1:th 12
theorem
for b1 being Element of bool MC-wff holds
   b1 c= CnIPC b1;

:: INTPRO_1:th 13
theorem
for b1, b2 being Element of bool MC-wff
      st b1 c= b2
   holds CnIPC b1 c= CnIPC b2;

:: INTPRO_1:th 14
theorem
for b1 being Element of bool MC-wff holds
   CnIPC CnIPC b1 = CnIPC b1;

:: INTPRO_1:funcreg 3
registration
  let a1 be Element of bool MC-wff;
  cluster CnIPC a1 -> IPC_theory;
end;

:: INTPRO_1:th 15
theorem
for b1 being Element of bool MC-wff holds
      b1 is IPC_theory
   iff
      CnIPC b1 = b1;

:: INTPRO_1:th 16
theorem
for b1 being Element of bool MC-wff
      st b1 is IPC_theory
   holds IPC-Taut c= b1;

:: INTPRO_1:funcreg 4
registration
  cluster IPC-Taut -> IPC_theory;
end;

:: INTPRO_1:th 17
theorem
for b1 being Element of MC-wff holds
   b1 => b1 in IPC-Taut;

:: INTPRO_1:th 18
theorem
for b1, b2 being Element of MC-wff
      st b1 in IPC-Taut
   holds b2 => b1 in IPC-Taut;

:: INTPRO_1:th 19
theorem
IVERUM in IPC-Taut;

:: INTPRO_1:th 20
theorem
for b1, b2 being Element of MC-wff holds
(b1 => b2) => (b1 => b1) in IPC-Taut;

:: INTPRO_1:th 21
theorem
for b1, b2 being Element of MC-wff holds
(b1 => b2) => (b2 => b2) in IPC-Taut;

:: INTPRO_1:th 22
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 => b2) => ((b3 => b1) => (b3 => b2)) in IPC-Taut;

:: INTPRO_1:th 23
theorem
for b1, b2, b3 being Element of MC-wff
      st b1 => (b2 => b3) in IPC-Taut
   holds b2 => (b1 => b3) in IPC-Taut;

:: INTPRO_1:th 24
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 => b2) => ((b2 => b3) => (b1 => b3)) in IPC-Taut;

:: INTPRO_1:th 25
theorem
for b1, b2, b3 being Element of MC-wff
      st b1 => b2 in IPC-Taut
   holds (b2 => b3) => (b1 => b3) in IPC-Taut;

:: INTPRO_1:th 26
theorem
for b1, b2, b3 being Element of MC-wff
      st b1 => b2 in IPC-Taut & b2 => b3 in IPC-Taut
   holds b1 => b3 in IPC-Taut;

:: INTPRO_1:th 27
theorem
for b1, b2, b3, b4 being Element of MC-wff holds
(b1 => (b2 => b3)) => ((b4 => b2) => (b1 => (b4 => b3))) in IPC-Taut;

:: INTPRO_1:th 28
theorem
for b1, b2, b3 being Element of MC-wff holds
((b1 => b2) => b3) => (b2 => b3) in IPC-Taut;

:: INTPRO_1:th 29
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 => (b2 => b3)) => (b2 => (b1 => b3)) in IPC-Taut;

:: INTPRO_1:th 30
theorem
for b1, b2 being Element of MC-wff holds
(b1 => (b1 => b2)) => (b1 => b2) in IPC-Taut;

:: INTPRO_1:th 31
theorem
for b1, b2 being Element of MC-wff holds
b1 => ((b1 => b2) => b2) in IPC-Taut;

:: INTPRO_1:th 32
theorem
for b1, b2, b3 being Element of MC-wff
      st b1 => (b2 => b3) in IPC-Taut & b2 in IPC-Taut
   holds b1 => b3 in IPC-Taut;

:: INTPRO_1:th 33
theorem
for b1 being Element of MC-wff holds
   b1 => (b1 '&' b1) in IPC-Taut;

:: INTPRO_1:th 34
theorem
for b1, b2 being Element of MC-wff holds
   b1 '&' b2 in IPC-Taut
iff
   b1 in IPC-Taut & b2 in IPC-Taut;

:: INTPRO_1:th 35
theorem
for b1, b2 being Element of MC-wff holds
   b1 '&' b2 in IPC-Taut
iff
   b2 '&' b1 in IPC-Taut;

:: INTPRO_1:th 36
theorem
for b1, b2, b3 being Element of MC-wff holds
((b1 '&' b2) => b3) => (b1 => (b2 => b3)) in IPC-Taut;

:: INTPRO_1:th 37
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 => (b2 => b3)) => ((b1 '&' b2) => b3) in IPC-Taut;

:: INTPRO_1:th 38
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 => b2) => ((b1 => b3) => (b1 => (b2 '&' b3))) in IPC-Taut;

:: INTPRO_1:th 39
theorem
for b1, b2 being Element of MC-wff holds
((b1 => b2) '&' b1) => b2 in IPC-Taut;

:: INTPRO_1:th 40
theorem
for b1, b2, b3 being Element of MC-wff holds
(((b1 => b2) '&' b1) '&' b3) => b2 in IPC-Taut;

:: INTPRO_1:th 41
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 => b2) => ((b3 '&' b1) => b2) in IPC-Taut;

:: INTPRO_1:th 42
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 => b2) => ((b1 '&' b3) => b2) in IPC-Taut;

:: INTPRO_1:th 43
theorem
for b1, b2, b3 being Element of MC-wff holds
((b1 '&' b2) => b3) => ((b1 '&' b2) => (b3 '&' b2)) in IPC-Taut;

:: INTPRO_1:th 44
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 => b2) => ((b1 '&' b3) => (b2 '&' b3)) in IPC-Taut;

:: INTPRO_1:th 45
theorem
for b1, b2, b3 being Element of MC-wff holds
((b1 => b2) '&' (b1 '&' b3)) => (b2 '&' b3) in IPC-Taut;

:: INTPRO_1:th 46
theorem
for b1, b2 being Element of MC-wff holds
(b1 '&' b2) => (b2 '&' b1) in IPC-Taut;

:: INTPRO_1:th 47
theorem
for b1, b2, b3 being Element of MC-wff holds
((b1 => b2) '&' (b1 '&' b3)) => (b3 '&' b2) in IPC-Taut;

:: INTPRO_1:th 48
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 => b2) => ((b1 '&' b3) => (b3 '&' b2)) in IPC-Taut;

:: INTPRO_1:th 49
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 => b2) => ((b3 '&' b1) => (b3 '&' b2)) in IPC-Taut;

:: INTPRO_1:th 50
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 '&' (b2 '&' b3)) => (b1 '&' (b3 '&' b2)) in IPC-Taut;

:: INTPRO_1:th 51
theorem
for b1, b2, b3 being Element of MC-wff holds
((b1 => b2) '&' (b1 => b3)) => (b1 => (b2 '&' b3)) in IPC-Taut;

:: INTPRO_1:th 52
theorem
for b1, b2, b3 being Element of MC-wff holds
((b1 '&' b2) '&' b3) => (b1 '&' (b2 '&' b3)) in IPC-Taut;

:: INTPRO_1:th 53
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 '&' (b2 '&' b3)) => ((b1 '&' b2) '&' b3) in IPC-Taut;

:: INTPRO_1:th 54
theorem
for b1 being Element of MC-wff holds
   (b1 'or' b1) => b1 in IPC-Taut;

:: INTPRO_1:th 55
theorem
for b1, b2 being Element of MC-wff
      st (b1 in IPC-Taut or b2 in IPC-Taut)
   holds b1 'or' b2 in IPC-Taut;

:: INTPRO_1:th 56
theorem
for b1, b2 being Element of MC-wff holds
(b1 'or' b2) => (b2 'or' b1) in IPC-Taut;

:: INTPRO_1:th 57
theorem
for b1, b2 being Element of MC-wff holds
   b1 'or' b2 in IPC-Taut
iff
   b2 'or' b1 in IPC-Taut;

:: INTPRO_1:th 58
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 => b2) => (b1 => (b2 'or' b3)) in IPC-Taut;

:: INTPRO_1:th 59
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 => b2) => (b1 => (b3 'or' b2)) in IPC-Taut;

:: INTPRO_1:th 60
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 => b2) => ((b1 'or' b3) => (b2 'or' b3)) in IPC-Taut;

:: INTPRO_1:th 61
theorem
for b1, b2, b3 being Element of MC-wff
      st b1 => b2 in IPC-Taut
   holds (b1 'or' b3) => (b2 'or' b3) in IPC-Taut;

:: INTPRO_1:th 62
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 => b2) => ((b3 'or' b1) => (b3 'or' b2)) in IPC-Taut;

:: INTPRO_1:th 63
theorem
for b1, b2, b3 being Element of MC-wff
      st b1 => b2 in IPC-Taut
   holds (b3 'or' b1) => (b3 'or' b2) in IPC-Taut;

:: INTPRO_1:th 64
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 'or' (b2 'or' b3)) => (b2 'or' (b1 'or' b3)) in IPC-Taut;

:: INTPRO_1:th 65
theorem
for b1, b2, b3 being Element of MC-wff holds
(b1 'or' (b2 'or' b3)) => ((b1 'or' b2) 'or' b3) in IPC-Taut;

:: INTPRO_1:th 66
theorem
for b1, b2, b3 being Element of MC-wff holds
((b1 'or' b2) 'or' b3) => (b1 'or' (b2 'or' b3)) in IPC-Taut;

:: INTPRO_1:attrnot 9 => INTPRO_1:attr 9
definition
  let a1 be Element of bool MC-wff;
  attr a1 is CPC_theory means
    for b1, b2, b3 being Element of MC-wff holds
    b1 => (b2 => b1) in a1 &
     (b1 => (b2 => b3)) => ((b1 => b2) => (b1 => b3)) in a1 &
     (b1 '&' b2) => b1 in a1 &
     (b1 '&' b2) => b2 in a1 &
     b1 => (b2 => (b1 '&' b2)) in a1 &
     b1 => (b1 'or' b2) in a1 &
     b2 => (b1 'or' b2) in a1 &
     (b1 => b3) => ((b2 => b3) => ((b1 'or' b2) => b3)) in a1 &
     FALSUM => b1 in a1 &
     b1 'or' (b1 => FALSUM) in a1 &
     (b1 in a1 & b1 => b2 in a1 implies b2 in a1);
end;

:: INTPRO_1:dfs 19
definiens
  let a1 be Element of bool MC-wff;
To prove
     a1 is CPC_theory
it is sufficient to prove
  thus for b1, b2, b3 being Element of MC-wff holds
    b1 => (b2 => b1) in a1 &
     (b1 => (b2 => b3)) => ((b1 => b2) => (b1 => b3)) in a1 &
     (b1 '&' b2) => b1 in a1 &
     (b1 '&' b2) => b2 in a1 &
     b1 => (b2 => (b1 '&' b2)) in a1 &
     b1 => (b1 'or' b2) in a1 &
     b2 => (b1 'or' b2) in a1 &
     (b1 => b3) => ((b2 => b3) => ((b1 'or' b2) => b3)) in a1 &
     FALSUM => b1 in a1 &
     b1 'or' (b1 => FALSUM) in a1 &
     (b1 in a1 & b1 => b2 in a1 implies b2 in a1);

:: INTPRO_1:def 19
theorem
for b1 being Element of bool MC-wff holds
      b1 is CPC_theory
   iff
      for b2, b3, b4 being Element of MC-wff holds
      b2 => (b3 => b2) in b1 &
       (b2 => (b3 => b4)) => ((b2 => b3) => (b2 => b4)) in b1 &
       (b2 '&' b3) => b2 in b1 &
       (b2 '&' b3) => b3 in b1 &
       b2 => (b3 => (b2 '&' b3)) in b1 &
       b2 => (b2 'or' b3) in b1 &
       b3 => (b2 'or' b3) in b1 &
       (b2 => b4) => ((b3 => b4) => ((b2 'or' b3) => b4)) in b1 &
       FALSUM => b2 in b1 &
       b2 'or' (b2 => FALSUM) in b1 &
       (b2 in b1 & b2 => b3 in b1 implies b3 in b1);

:: INTPRO_1:th 67
theorem
for b1 being Element of bool MC-wff
      st b1 is CPC_theory
   holds b1 is IPC_theory;

:: INTPRO_1:funcnot 11 => INTPRO_1:func 11
definition
  let a1 be Element of bool MC-wff;
  func CnCPC A1 -> Element of bool MC-wff means
    for b1 being Element of MC-wff holds
          b1 in it
       iff
          for b2 being Element of bool MC-wff
                st b2 is CPC_theory & a1 c= b2
             holds b1 in b2;
end;

:: INTPRO_1:def 20
theorem
for b1, b2 being Element of bool MC-wff holds
   b2 = CnCPC b1
iff
   for b3 being Element of MC-wff holds
         b3 in b2
      iff
         for b4 being Element of bool MC-wff
               st b4 is CPC_theory & b1 c= b4
            holds b3 in b4;

:: INTPRO_1:funcnot 12 => INTPRO_1:func 12
definition
  func CPC-Taut -> Element of bool MC-wff equals
    CnCPC {} MC-wff;
end;

:: INTPRO_1:def 21
theorem
CPC-Taut = CnCPC {} MC-wff;

:: INTPRO_1:th 68
theorem
for b1 being Element of bool MC-wff holds
   CnIPC b1 c= CnCPC b1;

:: INTPRO_1:th 69
theorem
for b1 being Element of bool MC-wff
for b2, b3, b4 being Element of MC-wff holds
b2 => (b3 => b2) in CnCPC b1 &
 (b2 => (b3 => b4)) => ((b2 => b3) => (b2 => b4)) in CnCPC b1 &
 (b2 '&' b3) => b2 in CnCPC b1 &
 (b2 '&' b3) => b3 in CnCPC b1 &
 b2 => (b3 => (b2 '&' b3)) in CnCPC b1 &
 b2 => (b2 'or' b3) in CnCPC b1 &
 b3 => (b2 'or' b3) in CnCPC b1 &
 (b2 => b4) => ((b3 => b4) => ((b2 'or' b3) => b4)) in CnCPC b1 &
 FALSUM => b2 in CnCPC b1 &
 b2 'or' (b2 => FALSUM) in CnCPC b1;

:: INTPRO_1:th 70
theorem
for b1 being Element of bool MC-wff
for b2, b3 being Element of MC-wff
      st b2 in CnCPC b1 & b2 => b3 in CnCPC b1
   holds b3 in CnCPC b1;

:: INTPRO_1:th 71
theorem
for b1, b2 being Element of bool MC-wff
      st b1 is CPC_theory & b2 c= b1
   holds CnCPC b2 c= b1;

:: INTPRO_1:th 72
theorem
for b1 being Element of bool MC-wff holds
   b1 c= CnCPC b1;

:: INTPRO_1:th 73
theorem
for b1, b2 being Element of bool MC-wff
      st b1 c= b2
   holds CnCPC b1 c= CnCPC b2;

:: INTPRO_1:th 74
theorem
for b1 being Element of bool MC-wff holds
   CnCPC CnCPC b1 = CnCPC b1;

:: INTPRO_1:funcreg 5
registration
  let a1 be Element of bool MC-wff;
  cluster CnCPC a1 -> CPC_theory;
end;

:: INTPRO_1:th 75
theorem
for b1 being Element of bool MC-wff holds
      b1 is CPC_theory
   iff
      CnCPC b1 = b1;

:: INTPRO_1:th 76
theorem
for b1 being Element of bool MC-wff
      st b1 is CPC_theory
   holds CPC-Taut c= b1;

:: INTPRO_1:funcreg 6
registration
  cluster CPC-Taut -> CPC_theory;
end;

:: INTPRO_1:th 77
theorem
IPC-Taut c= CPC-Taut;

:: INTPRO_1:attrnot 10 => INTPRO_1:attr 10
definition
  let a1 be Element of bool MC-wff;
  attr a1 is S4_theory means
    for b1, b2, b3 being Element of MC-wff holds
    b1 => (b2 => b1) in a1 &
     (b1 => (b2 => b3)) => ((b1 => b2) => (b1 => b3)) in a1 &
     (b1 '&' b2) => b1 in a1 &
     (b1 '&' b2) => b2 in a1 &
     b1 => (b2 => (b1 '&' b2)) in a1 &
     b1 => (b1 'or' b2) in a1 &
     b2 => (b1 'or' b2) in a1 &
     (b1 => b3) => ((b2 => b3) => ((b1 'or' b2) => b3)) in a1 &
     FALSUM => b1 in a1 &
     b1 'or' (b1 => FALSUM) in a1 &
     (Nes (b1 => b2)) => ((Nes b1) => Nes b2) in a1 &
     (Nes b1) => b1 in a1 &
     (Nes b1) => Nes Nes b1 in a1 &
     (b1 in a1 & b1 => b2 in a1 implies b2 in a1) &
     (b1 in a1 implies Nes b1 in a1);
end;

:: INTPRO_1:dfs 22
definiens
  let a1 be Element of bool MC-wff;
To prove
     a1 is S4_theory
it is sufficient to prove
  thus for b1, b2, b3 being Element of MC-wff holds
    b1 => (b2 => b1) in a1 &
     (b1 => (b2 => b3)) => ((b1 => b2) => (b1 => b3)) in a1 &
     (b1 '&' b2) => b1 in a1 &
     (b1 '&' b2) => b2 in a1 &
     b1 => (b2 => (b1 '&' b2)) in a1 &
     b1 => (b1 'or' b2) in a1 &
     b2 => (b1 'or' b2) in a1 &
     (b1 => b3) => ((b2 => b3) => ((b1 'or' b2) => b3)) in a1 &
     FALSUM => b1 in a1 &
     b1 'or' (b1 => FALSUM) in a1 &
     (Nes (b1 => b2)) => ((Nes b1) => Nes b2) in a1 &
     (Nes b1) => b1 in a1 &
     (Nes b1) => Nes Nes b1 in a1 &
     (b1 in a1 & b1 => b2 in a1 implies b2 in a1) &
     (b1 in a1 implies Nes b1 in a1);

:: INTPRO_1:def 22
theorem
for b1 being Element of bool MC-wff holds
      b1 is S4_theory
   iff
      for b2, b3, b4 being Element of MC-wff holds
      b2 => (b3 => b2) in b1 &
       (b2 => (b3 => b4)) => ((b2 => b3) => (b2 => b4)) in b1 &
       (b2 '&' b3) => b2 in b1 &
       (b2 '&' b3) => b3 in b1 &
       b2 => (b3 => (b2 '&' b3)) in b1 &
       b2 => (b2 'or' b3) in b1 &
       b3 => (b2 'or' b3) in b1 &
       (b2 => b4) => ((b3 => b4) => ((b2 'or' b3) => b4)) in b1 &
       FALSUM => b2 in b1 &
       b2 'or' (b2 => FALSUM) in b1 &
       (Nes (b2 => b3)) => ((Nes b2) => Nes b3) in b1 &
       (Nes b2) => b2 in b1 &
       (Nes b2) => Nes Nes b2 in b1 &
       (b2 in b1 & b2 => b3 in b1 implies b3 in b1) &
       (b2 in b1 implies Nes b2 in b1);

:: INTPRO_1:th 78
theorem
for b1 being Element of bool MC-wff
      st b1 is S4_theory
   holds b1 is CPC_theory;

:: INTPRO_1:th 79
theorem
for b1 being Element of bool MC-wff
      st b1 is S4_theory
   holds b1 is IPC_theory;

:: INTPRO_1:funcnot 13 => INTPRO_1:func 13
definition
  let a1 be Element of bool MC-wff;
  func CnS4 A1 -> Element of bool MC-wff means
    for b1 being Element of MC-wff holds
          b1 in it
       iff
          for b2 being Element of bool MC-wff
                st b2 is S4_theory & a1 c= b2
             holds b1 in b2;
end;

:: INTPRO_1:def 23
theorem
for b1, b2 being Element of bool MC-wff holds
   b2 = CnS4 b1
iff
   for b3 being Element of MC-wff holds
         b3 in b2
      iff
         for b4 being Element of bool MC-wff
               st b4 is S4_theory & b1 c= b4
            holds b3 in b4;

:: INTPRO_1:funcnot 14 => INTPRO_1:func 14
definition
  func S4-Taut -> Element of bool MC-wff equals
    CnS4 {} MC-wff;
end;

:: INTPRO_1:def 24
theorem
S4-Taut = CnS4 {} MC-wff;

:: INTPRO_1:th 80
theorem
for b1 being Element of bool MC-wff holds
   CnCPC b1 c= CnS4 b1;

:: INTPRO_1:th 81
theorem
for b1 being Element of bool MC-wff holds
   CnIPC b1 c= CnS4 b1;

:: INTPRO_1:th 82
theorem
for b1 being Element of bool MC-wff
for b2, b3, b4 being Element of MC-wff holds
b2 => (b3 => b2) in CnS4 b1 &
 (b2 => (b3 => b4)) => ((b2 => b3) => (b2 => b4)) in CnS4 b1 &
 (b2 '&' b3) => b2 in CnS4 b1 &
 (b2 '&' b3) => b3 in CnS4 b1 &
 b2 => (b3 => (b2 '&' b3)) in CnS4 b1 &
 b2 => (b2 'or' b3) in CnS4 b1 &
 b3 => (b2 'or' b3) in CnS4 b1 &
 (b2 => b4) => ((b3 => b4) => ((b2 'or' b3) => b4)) in CnS4 b1 &
 FALSUM => b2 in CnS4 b1 &
 b2 'or' (b2 => FALSUM) in CnS4 b1;

:: INTPRO_1:th 83
theorem
for b1 being Element of bool MC-wff
for b2, b3 being Element of MC-wff
      st b2 in CnS4 b1 & b2 => b3 in CnS4 b1
   holds b3 in CnS4 b1;

:: INTPRO_1:th 84
theorem
for b1 being Element of bool MC-wff
for b2, b3 being Element of MC-wff holds
(Nes (b2 => b3)) => ((Nes b2) => Nes b3) in CnS4 b1;

:: INTPRO_1:th 85
theorem
for b1 being Element of bool MC-wff
for b2 being Element of MC-wff holds
   (Nes b2) => b2 in CnS4 b1;

:: INTPRO_1:th 86
theorem
for b1 being Element of bool MC-wff
for b2 being Element of MC-wff holds
   (Nes b2) => Nes Nes b2 in CnS4 b1;

:: INTPRO_1:th 87
theorem
for b1 being Element of bool MC-wff
for b2 being Element of MC-wff
      st b2 in CnS4 b1
   holds Nes b2 in CnS4 b1;

:: INTPRO_1:th 88
theorem
for b1, b2 being Element of bool MC-wff
      st b1 is S4_theory & b2 c= b1
   holds CnS4 b2 c= b1;

:: INTPRO_1:th 89
theorem
for b1 being Element of bool MC-wff holds
   b1 c= CnS4 b1;

:: INTPRO_1:th 90
theorem
for b1, b2 being Element of bool MC-wff
      st b1 c= b2
   holds CnS4 b1 c= CnS4 b2;

:: INTPRO_1:th 91
theorem
for b1 being Element of bool MC-wff holds
   CnS4 CnS4 b1 = CnS4 b1;

:: INTPRO_1:funcreg 7
registration
  let a1 be Element of bool MC-wff;
  cluster CnS4 a1 -> S4_theory;
end;

:: INTPRO_1:th 92
theorem
for b1 being Element of bool MC-wff holds
      b1 is S4_theory
   iff
      CnS4 b1 = b1;

:: INTPRO_1:th 93
theorem
for b1 being Element of bool MC-wff
      st b1 is S4_theory
   holds S4-Taut c= b1;

:: INTPRO_1:funcreg 8
registration
  cluster S4-Taut -> S4_theory;
end;

:: INTPRO_1:th 94
theorem
CPC-Taut c= S4-Taut;

:: INTPRO_1:th 95
theorem
IPC-Taut c= S4-Taut;