Article QC_LANG2, MML version 4.99.1005

:: QC_LANG2:th 2
theorem
for b1 being Element of QC-WFF holds
   the_argument_of 'not' b1 = b1;

:: QC_LANG2:th 3
theorem
for b1, b2, b3, b4 being Element of QC-WFF
      st b1 '&' b2 = b3 '&' b4
   holds b1 = b3 & b2 = b4;

:: QC_LANG2:th 4
theorem
for b1 being Element of QC-WFF
      st b1 is conjunctive
   holds b1 = (the_left_argument_of b1) '&' the_right_argument_of b1;

:: QC_LANG2:th 5
theorem
for b1, b2 being Element of QC-WFF holds
the_left_argument_of (b1 '&' b2) = b1 & the_right_argument_of (b1 '&' b2) = b2;

:: QC_LANG2:th 6
theorem
for b1, b2 being Element of bound_QC-variables
for b3, b4 being Element of QC-WFF
      st All(b1,b3) = All(b2,b4)
   holds b1 = b2 & b3 = b4;

:: QC_LANG2:th 7
theorem
for b1 being Element of QC-WFF
      st b1 is universal
   holds b1 = All(bound_in b1,the_scope_of b1);

:: QC_LANG2:th 8
theorem
for b1 being Element of bound_QC-variables
for b2 being Element of QC-WFF holds
   bound_in All(b1,b2) = b1 & the_scope_of All(b1,b2) = b2;

:: QC_LANG2:funcnot 1 => QC_LANG2:func 1
definition
  func FALSUM -> Element of QC-WFF equals
    'not' VERUM;
end;

:: QC_LANG2:def 1
theorem
FALSUM = 'not' VERUM;

:: QC_LANG2:funcnot 2 => QC_LANG2:func 2
definition
  let a1, a2 be Element of QC-WFF;
  func A1 => A2 -> Element of QC-WFF equals
    'not' (a1 '&' 'not' a2);
end;

:: QC_LANG2:def 2
theorem
for b1, b2 being Element of QC-WFF holds
b1 => b2 = 'not' (b1 '&' 'not' b2);

:: QC_LANG2:funcnot 3 => QC_LANG2:func 3
definition
  let a1, a2 be Element of QC-WFF;
  func A1 'or' A2 -> Element of QC-WFF equals
    'not' (('not' a1) '&' 'not' a2);
end;

:: QC_LANG2:def 3
theorem
for b1, b2 being Element of QC-WFF holds
b1 'or' b2 = 'not' (('not' b1) '&' 'not' b2);

:: QC_LANG2:funcnot 4 => QC_LANG2:func 4
definition
  let a1, a2 be Element of QC-WFF;
  func A1 <=> A2 -> Element of QC-WFF equals
    (a1 => a2) '&' (a2 => a1);
end;

:: QC_LANG2:def 4
theorem
for b1, b2 being Element of QC-WFF holds
b1 <=> b2 = (b1 => b2) '&' (b2 => b1);

:: QC_LANG2:funcnot 5 => QC_LANG2:func 5
definition
  let a1 be Element of bound_QC-variables;
  let a2 be Element of QC-WFF;
  func Ex(A1,A2) -> Element of QC-WFF equals
    'not' All(a1,'not' a2);
end;

:: QC_LANG2:def 5
theorem
for b1 being Element of bound_QC-variables
for b2 being Element of QC-WFF holds
   Ex(b1,b2) = 'not' All(b1,'not' b2);

:: QC_LANG2:th 13
theorem
FALSUM is negative & the_argument_of FALSUM = VERUM;

:: QC_LANG2:th 14
theorem
for b1, b2 being Element of QC-WFF holds
b1 'or' b2 = ('not' b1) => b2;

:: QC_LANG2:th 16
theorem
for b1, b2, b3, b4 being Element of QC-WFF
      st b1 'or' b2 = b3 'or' b4
   holds b1 = b3 & b2 = b4;

:: QC_LANG2:th 17
theorem
for b1, b2, b3, b4 being Element of QC-WFF
      st b1 => b2 = b3 => b4
   holds b1 = b3 & b2 = b4;

:: QC_LANG2:th 18
theorem
for b1, b2, b3, b4 being Element of QC-WFF
      st b1 <=> b2 = b3 <=> b4
   holds b1 = b3 & b2 = b4;

:: QC_LANG2:th 19
theorem
for b1, b2 being Element of bound_QC-variables
for b3, b4 being Element of QC-WFF
      st Ex(b1,b3) = Ex(b2,b4)
   holds b1 = b2 & b3 = b4;

:: QC_LANG2:funcnot 6 => QC_LANG2:func 6
definition
  let a1, a2 be Element of bound_QC-variables;
  let a3 be Element of QC-WFF;
  func All(A1,A2,A3) -> Element of QC-WFF equals
    All(a1,All(a2,a3));
end;

:: QC_LANG2:def 6
theorem
for b1, b2 being Element of bound_QC-variables
for b3 being Element of QC-WFF holds
   All(b1,b2,b3) = All(b1,All(b2,b3));

:: QC_LANG2:funcnot 7 => QC_LANG2:func 7
definition
  let a1, a2 be Element of bound_QC-variables;
  let a3 be Element of QC-WFF;
  func Ex(A1,A2,A3) -> Element of QC-WFF equals
    Ex(a1,Ex(a2,a3));
end;

:: QC_LANG2:def 7
theorem
for b1, b2 being Element of bound_QC-variables
for b3 being Element of QC-WFF holds
   Ex(b1,b2,b3) = Ex(b1,Ex(b2,b3));

:: QC_LANG2:th 20
theorem
for b1, b2 being Element of bound_QC-variables
for b3 being Element of QC-WFF holds
   All(b1,b2,b3) = All(b1,All(b2,b3)) & Ex(b1,b2,b3) = Ex(b1,Ex(b2,b3));

:: QC_LANG2:th 21
theorem
for b1, b2 being Element of QC-WFF
for b3, b4, b5, b6 being Element of bound_QC-variables
      st All(b3,b5,b1) = All(b4,b6,b2)
   holds b3 = b4 & b5 = b6 & b1 = b2;

:: QC_LANG2:th 22
theorem
for b1, b2, b3 being Element of bound_QC-variables
for b4, b5 being Element of QC-WFF
      st All(b1,b2,b4) = All(b3,b5)
   holds b1 = b3 & All(b2,b4) = b5;

:: QC_LANG2:th 23
theorem
for b1, b2 being Element of QC-WFF
for b3, b4, b5, b6 being Element of bound_QC-variables
      st Ex(b3,b5,b1) = Ex(b4,b6,b2)
   holds b3 = b4 & b5 = b6 & b1 = b2;

:: QC_LANG2:th 24
theorem
for b1, b2, b3 being Element of bound_QC-variables
for b4, b5 being Element of QC-WFF
      st Ex(b1,b2,b4) = Ex(b3,b5)
   holds b1 = b3 & Ex(b2,b4) = b5;

:: QC_LANG2:th 25
theorem
for b1, b2 being Element of bound_QC-variables
for b3 being Element of QC-WFF holds
   All(b1,b2,b3) is universal & bound_in All(b1,b2,b3) = b1 & the_scope_of All(b1,b2,b3) = All(b2,b3);

:: QC_LANG2:funcnot 8 => QC_LANG2:func 8
definition
  let a1, a2, a3 be Element of bound_QC-variables;
  let a4 be Element of QC-WFF;
  func All(A1,A2,A3,A4) -> Element of QC-WFF equals
    All(a1,All(a2,a3,a4));
end;

:: QC_LANG2:def 8
theorem
for b1, b2, b3 being Element of bound_QC-variables
for b4 being Element of QC-WFF holds
   All(b1,b2,b3,b4) = All(b1,All(b2,b3,b4));

:: QC_LANG2:funcnot 9 => QC_LANG2:func 9
definition
  let a1, a2, a3 be Element of bound_QC-variables;
  let a4 be Element of QC-WFF;
  func Ex(A1,A2,A3,A4) -> Element of QC-WFF equals
    Ex(a1,Ex(a2,a3,a4));
end;

:: QC_LANG2:def 9
theorem
for b1, b2, b3 being Element of bound_QC-variables
for b4 being Element of QC-WFF holds
   Ex(b1,b2,b3,b4) = Ex(b1,Ex(b2,b3,b4));

:: QC_LANG2:th 26
theorem
for b1, b2, b3 being Element of bound_QC-variables
for b4 being Element of QC-WFF holds
   All(b1,b2,b3,b4) = All(b1,All(b2,b3,b4)) &
    Ex(b1,b2,b3,b4) = Ex(b1,Ex(b2,b3,b4));

:: QC_LANG2:th 27
theorem
for b1, b2 being Element of QC-WFF
for b3, b4, b5, b6, b7, b8 being Element of bound_QC-variables
      st All(b3,b5,b7,b1) = All(b4,b6,b8,b2)
   holds b3 = b4 & b5 = b6 & b7 = b8 & b1 = b2;

:: QC_LANG2:th 28
theorem
for b1, b2, b3 being Element of bound_QC-variables
for b4, b5 being Element of QC-WFF
for b6 being Element of bound_QC-variables
      st All(b1,b2,b3,b4) = All(b6,b5)
   holds b1 = b6 & All(b2,b3,b4) = b5;

:: QC_LANG2:th 29
theorem
for b1, b2, b3 being Element of bound_QC-variables
for b4, b5 being Element of QC-WFF
for b6, b7 being Element of bound_QC-variables
      st All(b1,b2,b3,b4) = All(b6,b7,b5)
   holds b1 = b6 & b2 = b7 & All(b3,b4) = b5;

:: QC_LANG2:th 30
theorem
for b1, b2 being Element of QC-WFF
for b3, b4, b5, b6, b7, b8 being Element of bound_QC-variables
      st Ex(b3,b5,b7,b1) = Ex(b4,b6,b8,b2)
   holds b3 = b4 & b5 = b6 & b7 = b8 & b1 = b2;

:: QC_LANG2:th 31
theorem
for b1, b2, b3 being Element of bound_QC-variables
for b4, b5 being Element of QC-WFF
for b6 being Element of bound_QC-variables
      st Ex(b1,b2,b3,b4) = Ex(b6,b5)
   holds b1 = b6 & Ex(b2,b3,b4) = b5;

:: QC_LANG2:th 32
theorem
for b1, b2, b3 being Element of bound_QC-variables
for b4, b5 being Element of QC-WFF
for b6, b7 being Element of bound_QC-variables
      st Ex(b1,b2,b3,b4) = Ex(b6,b7,b5)
   holds b1 = b6 & b2 = b7 & Ex(b3,b4) = b5;

:: QC_LANG2:th 33
theorem
for b1, b2, b3 being Element of bound_QC-variables
for b4 being Element of QC-WFF holds
   All(b1,b2,b3,b4) is universal & bound_in All(b1,b2,b3,b4) = b1 & the_scope_of All(b1,b2,b3,b4) = All(b2,b3,b4);

:: QC_LANG2:attrnot 1 => QC_LANG2:attr 1
definition
  let a1 be Element of QC-WFF;
  attr a1 is disjunctive means
    ex b1, b2 being Element of QC-WFF st
       a1 = b1 'or' b2;
end;

:: QC_LANG2:dfs 10
definiens
  let a1 be Element of QC-WFF;
To prove
     a1 is disjunctive
it is sufficient to prove
  thus ex b1, b2 being Element of QC-WFF st
       a1 = b1 'or' b2;

:: QC_LANG2:def 10
theorem
for b1 being Element of QC-WFF holds
      b1 is disjunctive
   iff
      ex b2, b3 being Element of QC-WFF st
         b1 = b2 'or' b3;

:: QC_LANG2:attrnot 2 => QC_LANG2:attr 2
definition
  let a1 be Element of QC-WFF;
  attr a1 is conditional means
    ex b1, b2 being Element of QC-WFF st
       a1 = b1 => b2;
end;

:: QC_LANG2:dfs 11
definiens
  let a1 be Element of QC-WFF;
To prove
     a1 is conditional
it is sufficient to prove
  thus ex b1, b2 being Element of QC-WFF st
       a1 = b1 => b2;

:: QC_LANG2:def 11
theorem
for b1 being Element of QC-WFF holds
      b1 is conditional
   iff
      ex b2, b3 being Element of QC-WFF st
         b1 = b2 => b3;

:: QC_LANG2:attrnot 3 => QC_LANG2:attr 3
definition
  let a1 be Element of QC-WFF;
  attr a1 is biconditional means
    ex b1, b2 being Element of QC-WFF st
       a1 = b1 <=> b2;
end;

:: QC_LANG2:dfs 12
definiens
  let a1 be Element of QC-WFF;
To prove
     a1 is biconditional
it is sufficient to prove
  thus ex b1, b2 being Element of QC-WFF st
       a1 = b1 <=> b2;

:: QC_LANG2:def 12
theorem
for b1 being Element of QC-WFF holds
      b1 is biconditional
   iff
      ex b2, b3 being Element of QC-WFF st
         b1 = b2 <=> b3;

:: QC_LANG2:attrnot 4 => QC_LANG2:attr 4
definition
  let a1 be Element of QC-WFF;
  attr a1 is existential means
    ex b1 being Element of bound_QC-variables st
       ex b2 being Element of QC-WFF st
          a1 = Ex(b1,b2);
end;

:: QC_LANG2:dfs 13
definiens
  let a1 be Element of QC-WFF;
To prove
     a1 is existential
it is sufficient to prove
  thus ex b1 being Element of bound_QC-variables st
       ex b2 being Element of QC-WFF st
          a1 = Ex(b1,b2);

:: QC_LANG2:def 13
theorem
for b1 being Element of QC-WFF holds
      b1 is existential
   iff
      ex b2 being Element of bound_QC-variables st
         ex b3 being Element of QC-WFF st
            b1 = Ex(b2,b3);

:: QC_LANG2:th 38
theorem
for b1, b2, b3 being Element of bound_QC-variables
for b4 being Element of QC-WFF holds
   Ex(b1,b2,b4) is existential & Ex(b1,b2,b3,b4) is existential;

:: QC_LANG2:funcnot 10 => QC_LANG2:func 10
definition
  let a1 be Element of QC-WFF;
  func the_left_disjunct_of A1 -> Element of QC-WFF equals
    the_argument_of the_left_argument_of the_argument_of a1;
end;

:: QC_LANG2:def 14
theorem
for b1 being Element of QC-WFF holds
   the_left_disjunct_of b1 = the_argument_of the_left_argument_of the_argument_of b1;

:: QC_LANG2:funcnot 11 => QC_LANG2:func 11
definition
  let a1 be Element of QC-WFF;
  func the_right_disjunct_of A1 -> Element of QC-WFF equals
    the_argument_of the_right_argument_of the_argument_of a1;
end;

:: QC_LANG2:def 15
theorem
for b1 being Element of QC-WFF holds
   the_right_disjunct_of b1 = the_argument_of the_right_argument_of the_argument_of b1;

:: QC_LANG2:funcnot 12 => QC_LANG2:func 12
definition
  let a1 be Element of QC-WFF;
  func the_antecedent_of A1 -> Element of QC-WFF equals
    the_left_argument_of the_argument_of a1;
end;

:: QC_LANG2:def 16
theorem
for b1 being Element of QC-WFF holds
   the_antecedent_of b1 = the_left_argument_of the_argument_of b1;

:: QC_LANG2:funcnot 13 => QC_LANG2:func 11
notation
  let a1 be Element of QC-WFF;
  synonym the_consequent_of a1 for the_right_disjunct_of a1;
end;

:: QC_LANG2:funcnot 14 => QC_LANG2:func 13
definition
  let a1 be Element of QC-WFF;
  func the_left_side_of A1 -> Element of QC-WFF equals
    the_antecedent_of the_left_argument_of a1;
end;

:: QC_LANG2:def 18
theorem
for b1 being Element of QC-WFF holds
   the_left_side_of b1 = the_antecedent_of the_left_argument_of b1;

:: QC_LANG2:funcnot 15 => QC_LANG2:func 14
definition
  let a1 be Element of QC-WFF;
  func the_right_side_of A1 -> Element of QC-WFF equals
    the_right_disjunct_of the_left_argument_of a1;
end;

:: QC_LANG2:def 19
theorem
for b1 being Element of QC-WFF holds
   the_right_side_of b1 = the_right_disjunct_of the_left_argument_of b1;

:: QC_LANG2:th 45
theorem
for b1, b2 being Element of QC-WFF holds
the_left_disjunct_of (b1 'or' b2) = b1 &
 the_right_disjunct_of (b1 'or' b2) = b2 &
 the_argument_of (b1 'or' b2) = ('not' b1) '&' 'not' b2;

:: QC_LANG2:th 46
theorem
for b1, b2 being Element of QC-WFF holds
the_antecedent_of (b1 => b2) = b1 &
 the_right_disjunct_of (b1 => b2) = b2 &
 the_argument_of (b1 => b2) = b1 '&' 'not' b2;

:: QC_LANG2:th 47
theorem
for b1, b2 being Element of QC-WFF holds
the_left_side_of (b1 <=> b2) = b1 & the_right_side_of (b1 <=> b2) = b2 & the_left_argument_of (b1 <=> b2) = b1 => b2 & the_right_argument_of (b1 <=> b2) = b2 => b1;

:: QC_LANG2:th 48
theorem
for b1 being Element of bound_QC-variables
for b2 being Element of QC-WFF holds
   the_argument_of Ex(b1,b2) = All(b1,'not' b2);

:: QC_LANG2:th 49
theorem
for b1 being Element of QC-WFF
      st b1 is disjunctive
   holds b1 is conditional & b1 is negative & the_argument_of b1 is conjunctive & the_left_argument_of the_argument_of b1 is negative & the_right_argument_of the_argument_of b1 is negative;

:: QC_LANG2:th 50
theorem
for b1 being Element of QC-WFF
      st b1 is conditional
   holds b1 is negative & the_argument_of b1 is conjunctive & the_right_argument_of the_argument_of b1 is negative;

:: QC_LANG2:th 51
theorem
for b1 being Element of QC-WFF
      st b1 is biconditional
   holds b1 is conjunctive & the_left_argument_of b1 is conditional & the_right_argument_of b1 is conditional;

:: QC_LANG2:th 52
theorem
for b1 being Element of QC-WFF
      st b1 is existential
   holds b1 is negative & the_argument_of b1 is universal & the_scope_of the_argument_of b1 is negative;

:: QC_LANG2:th 53
theorem
for b1 being Element of QC-WFF
      st b1 is disjunctive
   holds b1 = (the_left_disjunct_of b1) 'or' the_right_disjunct_of b1;

:: QC_LANG2:th 54
theorem
for b1 being Element of QC-WFF
      st b1 is conditional
   holds b1 = (the_antecedent_of b1) => the_right_disjunct_of b1;

:: QC_LANG2:th 55
theorem
for b1 being Element of QC-WFF
      st b1 is biconditional
   holds b1 = (the_left_side_of b1) <=> the_right_side_of b1;

:: QC_LANG2:th 56
theorem
for b1 being Element of QC-WFF
      st b1 is existential
   holds b1 = Ex(bound_in the_argument_of b1,the_argument_of the_scope_of the_argument_of b1);

:: QC_LANG2:prednot 1 => QC_LANG2:pred 1
definition
  let a1, a2 be Element of QC-WFF;
  pred A1 is_immediate_constituent_of A2 means
    (a2 <> 'not' a1 &
     (for b1 being Element of QC-WFF holds
        a2 <> a1 '&' b1 & a2 <> b1 '&' a1)) implies ex b1 being Element of bound_QC-variables st
       a2 = All(b1,a1);
end;

:: QC_LANG2:dfs 19
definiens
  let a1, a2 be Element of QC-WFF;
To prove
     a1 is_immediate_constituent_of a2
it is sufficient to prove
  thus (a2 <> 'not' a1 &
     (for b1 being Element of QC-WFF holds
        a2 <> a1 '&' b1 & a2 <> b1 '&' a1)) implies ex b1 being Element of bound_QC-variables st
       a2 = All(b1,a1);

:: QC_LANG2:def 20
theorem
for b1, b2 being Element of QC-WFF holds
   b1 is_immediate_constituent_of b2
iff
   (b2 <> 'not' b1 &
    (for b3 being Element of QC-WFF holds
       b2 <> b1 '&' b3 & b2 <> b3 '&' b1) implies ex b3 being Element of bound_QC-variables st
      b2 = All(b3,b1));

:: QC_LANG2:th 58
theorem
for b1 being Element of QC-WFF holds
   not b1 is_immediate_constituent_of VERUM;

:: QC_LANG2:th 59
theorem
for b1 being Element of QC-WFF
for b2 being Element of NAT
for b3 being Element of b2 -ary_QC-pred_symbols
for b4 being QC-variable_list of b2 holds
   not b1 is_immediate_constituent_of b3 ! b4;

:: QC_LANG2:th 60
theorem
for b1, b2 being Element of QC-WFF holds
   b1 is_immediate_constituent_of 'not' b2
iff
   b1 = b2;

:: QC_LANG2:th 61
theorem
for b1 being Element of QC-WFF holds
      b1 is_immediate_constituent_of FALSUM
   iff
      b1 = VERUM;

:: QC_LANG2:th 62
theorem
for b1, b2, b3 being Element of QC-WFF holds
   b1 is_immediate_constituent_of b2 '&' b3
iff
   (b1 = b2 or b1 = b3);

:: QC_LANG2:th 63
theorem
for b1, b2 being Element of QC-WFF
for b3 being Element of bound_QC-variables holds
      b1 is_immediate_constituent_of All(b3,b2)
   iff
      b1 = b2;

:: QC_LANG2:th 64
theorem
for b1, b2 being Element of QC-WFF
      st b1 is atomic
   holds not b2 is_immediate_constituent_of b1;

:: QC_LANG2:th 65
theorem
for b1, b2 being Element of QC-WFF
      st b1 is negative
   holds    b2 is_immediate_constituent_of b1
   iff
      b2 = the_argument_of b1;

:: QC_LANG2:th 66
theorem
for b1, b2 being Element of QC-WFF
      st b1 is conjunctive
   holds    b2 is_immediate_constituent_of b1
   iff
      (b2 = the_left_argument_of b1 or b2 = the_right_argument_of b1);

:: QC_LANG2:th 67
theorem
for b1, b2 being Element of QC-WFF
      st b1 is universal
   holds    b2 is_immediate_constituent_of b1
   iff
      b2 = the_scope_of b1;

:: QC_LANG2:prednot 2 => QC_LANG2:pred 2
definition
  let a1, a2 be Element of QC-WFF;
  pred A1 is_subformula_of A2 means
    ex b1 being Element of NAT st
       ex b2 being Relation-like Function-like FinSequence-like set st
          1 <= b1 &
           len b2 = b1 &
           b2 . 1 = a1 &
           b2 . b1 = a2 &
           (for b3 being Element of NAT
                 st 1 <= b3 & b3 < b1
              holds ex b4, b5 being Element of QC-WFF st
                 b2 . b3 = b4 & b2 . (b3 + 1) = b5 & b4 is_immediate_constituent_of b5);
  reflexivity;
::  for a1 being Element of QC-WFF holds
::     a1 is_subformula_of a1;
end;

:: QC_LANG2:dfs 20
definiens
  let a1, a2 be Element of QC-WFF;
To prove
     a1 is_subformula_of a2
it is sufficient to prove
  thus ex b1 being Element of NAT st
       ex b2 being Relation-like Function-like FinSequence-like set st
          1 <= b1 &
           len b2 = b1 &
           b2 . 1 = a1 &
           b2 . b1 = a2 &
           (for b3 being Element of NAT
                 st 1 <= b3 & b3 < b1
              holds ex b4, b5 being Element of QC-WFF st
                 b2 . b3 = b4 & b2 . (b3 + 1) = b5 & b4 is_immediate_constituent_of b5);

:: QC_LANG2:def 21
theorem
for b1, b2 being Element of QC-WFF holds
   b1 is_subformula_of b2
iff
   ex b3 being Element of NAT st
      ex b4 being Relation-like Function-like FinSequence-like set st
         1 <= b3 &
          len b4 = b3 &
          b4 . 1 = b1 &
          b4 . b3 = b2 &
          (for b5 being Element of NAT
                st 1 <= b5 & b5 < b3
             holds ex b6, b7 being Element of QC-WFF st
                b4 . b5 = b6 & b4 . (b5 + 1) = b7 & b6 is_immediate_constituent_of b7);

:: QC_LANG2:prednot 3 => QC_LANG2:pred 3
definition
  let a1, a2 be Element of QC-WFF;
  pred A1 is_proper_subformula_of A2 means
    a1 is_subformula_of a2 & a1 <> a2;
  irreflexivity;
::  for a1 being Element of QC-WFF holds
::     not a1 is_proper_subformula_of a1;
end;

:: QC_LANG2:dfs 21
definiens
  let a1, a2 be Element of QC-WFF;
To prove
     a1 is_proper_subformula_of a2
it is sufficient to prove
  thus a1 is_subformula_of a2 & a1 <> a2;

:: QC_LANG2:def 22
theorem
for b1, b2 being Element of QC-WFF holds
   b1 is_proper_subformula_of b2
iff
   b1 is_subformula_of b2 & b1 <> b2;

:: QC_LANG2:th 71
theorem
for b1, b2 being Element of QC-WFF
      st b1 is_immediate_constituent_of b2
   holds len @ b1 < len @ b2;

:: QC_LANG2:th 72
theorem
for b1, b2 being Element of QC-WFF
      st b1 is_immediate_constituent_of b2
   holds b1 is_subformula_of b2;

:: QC_LANG2:th 73
theorem
for b1, b2 being Element of QC-WFF
      st b1 is_immediate_constituent_of b2
   holds b1 is_proper_subformula_of b2;

:: QC_LANG2:th 74
theorem
for b1, b2 being Element of QC-WFF
      st b1 is_proper_subformula_of b2
   holds len @ b1 < len @ b2;

:: QC_LANG2:th 75
theorem
for b1, b2 being Element of QC-WFF
      st b1 is_proper_subformula_of b2
   holds ex b3 being Element of QC-WFF st
      b3 is_immediate_constituent_of b2;

:: QC_LANG2:th 76
theorem
for b1, b2, b3 being Element of QC-WFF
      st b1 is_proper_subformula_of b2 & b2 is_proper_subformula_of b3
   holds b1 is_proper_subformula_of b3;

:: QC_LANG2:th 77
theorem
for b1, b2, b3 being Element of QC-WFF
      st b1 is_subformula_of b2 & b2 is_subformula_of b3
   holds b1 is_subformula_of b3;

:: QC_LANG2:th 78
theorem
for b1, b2 being Element of QC-WFF
      st b1 is_subformula_of b2 & b2 is_subformula_of b1
   holds b1 = b2;

:: QC_LANG2:th 79
theorem
for b1, b2 being Element of QC-WFF
      st b1 is_proper_subformula_of b2
   holds not b2 is_subformula_of b1;

:: QC_LANG2:th 80
theorem
for b1, b2 being Element of QC-WFF
      st b1 is_proper_subformula_of b2
   holds not b2 is_proper_subformula_of b1;

:: QC_LANG2:th 81
theorem
for b1, b2 being Element of QC-WFF
      st b1 is_subformula_of b2
   holds not b2 is_immediate_constituent_of b1;

:: QC_LANG2:th 82
theorem
for b1, b2 being Element of QC-WFF
      st b1 is_proper_subformula_of b2
   holds not b2 is_immediate_constituent_of b1;

:: QC_LANG2:th 83
theorem
for b1, b2, b3 being Element of QC-WFF
      st ((b1 is_proper_subformula_of b2 implies not b2 is_subformula_of b3) & (b1 is_subformula_of b2 implies not b2 is_proper_subformula_of b3) & (b1 is_subformula_of b2 implies not b2 is_immediate_constituent_of b3) & (b1 is_immediate_constituent_of b2 implies not b2 is_subformula_of b3) & (b1 is_proper_subformula_of b2 implies not b2 is_immediate_constituent_of b3) implies b1 is_immediate_constituent_of b2 & b2 is_proper_subformula_of b3)
   holds b1 is_proper_subformula_of b3;

:: QC_LANG2:th 84
theorem
for b1 being Element of QC-WFF holds
   not b1 is_proper_subformula_of VERUM;

:: QC_LANG2:th 85
theorem
for b1 being Element of QC-WFF
for b2 being Element of NAT
for b3 being Element of b2 -ary_QC-pred_symbols
for b4 being QC-variable_list of b2 holds
   not b1 is_proper_subformula_of b3 ! b4;

:: QC_LANG2:th 86
theorem
for b1, b2 being Element of QC-WFF holds
   b1 is_subformula_of b2
iff
   b1 is_proper_subformula_of 'not' b2;

:: QC_LANG2:th 87
theorem
for b1, b2 being Element of QC-WFF
      st 'not' b1 is_subformula_of b2
   holds b1 is_proper_subformula_of b2;

:: QC_LANG2:th 88
theorem
for b1 being Element of QC-WFF holds
      b1 is_proper_subformula_of FALSUM
   iff
      b1 is_subformula_of VERUM;

:: QC_LANG2:th 89
theorem
for b1, b2, b3 being Element of QC-WFF holds
   (b1 is_subformula_of b2 or b1 is_subformula_of b3)
iff
   b1 is_proper_subformula_of b2 '&' b3;

:: QC_LANG2:th 90
theorem
for b1, b2, b3 being Element of QC-WFF
      st b1 '&' b2 is_subformula_of b3
   holds b1 is_proper_subformula_of b3 & b2 is_proper_subformula_of b3;

:: QC_LANG2:th 91
theorem
for b1, b2 being Element of QC-WFF
for b3 being Element of bound_QC-variables holds
      b1 is_subformula_of b2
   iff
      b1 is_proper_subformula_of All(b3,b2);

:: QC_LANG2:th 92
theorem
for b1, b2 being Element of QC-WFF
for b3 being Element of bound_QC-variables
      st All(b3,b1) is_subformula_of b2
   holds b1 is_proper_subformula_of b2;

:: QC_LANG2:th 93
theorem
for b1, b2 being Element of QC-WFF holds
b1 '&' 'not' b2 is_proper_subformula_of b1 => b2 & b1 is_proper_subformula_of b1 => b2 & 'not' b2 is_proper_subformula_of b1 => b2 & b2 is_proper_subformula_of b1 => b2;

:: QC_LANG2:th 94
theorem
for b1, b2 being Element of QC-WFF holds
('not' b1) '&' 'not' b2 is_proper_subformula_of b1 'or' b2 &
 'not' b1 is_proper_subformula_of b1 'or' b2 &
 'not' b2 is_proper_subformula_of b1 'or' b2 &
 b1 is_proper_subformula_of b1 'or' b2 &
 b2 is_proper_subformula_of b1 'or' b2;

:: QC_LANG2:th 95
theorem
for b1, b2 being Element of QC-WFF
      st b1 is atomic
   holds not b2 is_proper_subformula_of b1;

:: QC_LANG2:th 96
theorem
for b1 being Element of QC-WFF
      st b1 is negative
   holds the_argument_of b1 is_proper_subformula_of b1;

:: QC_LANG2:th 97
theorem
for b1 being Element of QC-WFF
      st b1 is conjunctive
   holds the_left_argument_of b1 is_proper_subformula_of b1 & the_right_argument_of b1 is_proper_subformula_of b1;

:: QC_LANG2:th 98
theorem
for b1 being Element of QC-WFF
      st b1 is universal
   holds the_scope_of b1 is_proper_subformula_of b1;

:: QC_LANG2:th 99
theorem
for b1 being Element of QC-WFF holds
      b1 is_subformula_of VERUM
   iff
      b1 = VERUM;

:: QC_LANG2:th 100
theorem
for b1 being Element of QC-WFF
for b2 being Element of NAT
for b3 being Element of b2 -ary_QC-pred_symbols
for b4 being QC-variable_list of b2 holds
      b1 is_subformula_of b3 ! b4
   iff
      b1 = b3 ! b4;

:: QC_LANG2:th 101
theorem
for b1 being Element of QC-WFF holds
      b1 is_subformula_of FALSUM
   iff
      (b1 = FALSUM or b1 = VERUM);

:: QC_LANG2:funcnot 16 => QC_LANG2:func 15
definition
  let a1 be Element of QC-WFF;
  func Subformulae A1 -> set means
    for b1 being set holds
          b1 in it
       iff
          ex b2 being Element of QC-WFF st
             b2 = b1 & b2 is_subformula_of a1;
end;

:: QC_LANG2:def 23
theorem
for b1 being Element of QC-WFF
for b2 being set holds
      b2 = Subformulae b1
   iff
      for b3 being set holds
            b3 in b2
         iff
            ex b4 being Element of QC-WFF st
               b4 = b3 & b4 is_subformula_of b1;

:: QC_LANG2:th 103
theorem
for b1, b2 being Element of QC-WFF
      st b1 in Subformulae b2
   holds b1 is_subformula_of b2;

:: QC_LANG2:th 104
theorem
for b1, b2 being Element of QC-WFF
      st b1 is_subformula_of b2
   holds Subformulae b1 c= Subformulae b2;

:: QC_LANG2:th 105
theorem
for b1, b2 being Element of QC-WFF
      st b1 in Subformulae b2
   holds Subformulae b1 c= Subformulae b2;

:: QC_LANG2:th 107
theorem
Subformulae VERUM = {VERUM};

:: QC_LANG2:th 108
theorem
for b1 being Element of NAT
for b2 being Element of b1 -ary_QC-pred_symbols
for b3 being QC-variable_list of b1 holds
   Subformulae (b2 ! b3) = {b2 ! b3};

:: QC_LANG2:th 109
theorem
Subformulae FALSUM = {VERUM,FALSUM};

:: QC_LANG2:th 110
theorem
for b1 being Element of QC-WFF holds
   Subformulae 'not' b1 = (Subformulae b1) \/ {'not' b1};

:: QC_LANG2:th 111
theorem
for b1, b2 being Element of QC-WFF holds
Subformulae (b1 '&' b2) = ((Subformulae b1) \/ Subformulae b2) \/ {b1 '&' b2};

:: QC_LANG2:th 112
theorem
for b1 being Element of QC-WFF
for b2 being Element of bound_QC-variables holds
   Subformulae All(b2,b1) = (Subformulae b1) \/ {All(b2,b1)};

:: QC_LANG2:th 113
theorem
for b1, b2 being Element of QC-WFF holds
Subformulae (b1 => b2) = ((Subformulae b1) \/ Subformulae b2) \/ {'not' b2,b1 '&' 'not' b2,b1 => b2};

:: QC_LANG2:th 114
theorem
for b1, b2 being Element of QC-WFF holds
Subformulae (b1 'or' b2) = ((Subformulae b1) \/ Subformulae b2) \/ {'not' b2,'not' b1,('not' b1) '&' 'not' b2,b1 'or' b2};

:: QC_LANG2:th 115
theorem
for b1, b2 being Element of QC-WFF holds
Subformulae (b1 <=> b2) = ((Subformulae b1) \/ Subformulae b2) \/ {'not' b2,b1 '&' 'not' b2,b1 => b2,'not' b1,b2 '&' 'not' b1,b2 => b1,b1 <=> b2};

:: QC_LANG2:th 116
theorem
for b1 being Element of QC-WFF holds
      (b1 = VERUM or b1 is atomic)
   iff
      Subformulae b1 = {b1};

:: QC_LANG2:th 117
theorem
for b1 being Element of QC-WFF
      st b1 is negative
   holds Subformulae b1 = (Subformulae the_argument_of b1) \/ {b1};

:: QC_LANG2:th 118
theorem
for b1 being Element of QC-WFF
      st b1 is conjunctive
   holds Subformulae b1 = ((Subformulae the_left_argument_of b1) \/ Subformulae the_right_argument_of b1) \/ {b1};

:: QC_LANG2:th 119
theorem
for b1 being Element of QC-WFF
      st b1 is universal
   holds Subformulae b1 = (Subformulae the_scope_of b1) \/ {b1};

:: QC_LANG2:th 120
theorem
for b1, b2, b3 being Element of QC-WFF
      st (not b1 is_immediate_constituent_of b2 & not b1 is_proper_subformula_of b2 implies b1 is_subformula_of b2) &
         b2 in Subformulae b3
   holds b1 in Subformulae b3;