Article BVFUNC_2, MML version 4.99.1005

:: BVFUNC_2:funcnot 1 => BVFUNC_2:func 1
definition
  let a1 be set;
  redefine func PARTITIONS a1 -> partition-membered Family-Class of a1;
end;

:: BVFUNC_2:modenot 1 => BVFUNC_2:mode 1
definition
  let a1 be set;
  let a2 be non empty partition-membered Family-Class of a1;
  redefine mode Element of a2 -> a_partition of a1;
end;

:: BVFUNC_2:th 1
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being Element of b1 holds
   ex b4 being Element of bool b1 st
      b3 in b4 &
       (ex b5 being Relation-like Function-like set st
          ex b6 being Element of bool bool b1 st
             proj1 b5 = b2 &
              proj2 b5 = b6 &
              (for b7 being set
                    st b7 in b2
                 holds b5 . b7 in b7) &
              b4 = Intersect b6 &
              b4 <> {});

:: BVFUNC_2:funcnot 2 => BVFUNC_2:func 2
definition
  let a1 be non empty set;
  let a2 be Element of bool PARTITIONS a1;
  func '/\' A2 -> a_partition of a1 means
    for b1 being set holds
          b1 in it
       iff
          ex b2 being Relation-like Function-like set st
             ex b3 being Element of bool bool a1 st
                proj1 b2 = a2 &
                 proj2 b2 = b3 &
                 (for b4 being set
                       st b4 in a2
                    holds b2 . b4 in b4) &
                 b1 = Intersect b3 &
                 b1 <> {};
end;

:: BVFUNC_2:def 1
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being a_partition of b1 holds
      b3 = '/\' b2
   iff
      for b4 being set holds
            b4 in b3
         iff
            ex b5 being Relation-like Function-like set st
               ex b6 being Element of bool bool b1 st
                  proj1 b5 = b2 &
                   proj2 b5 = b6 &
                   (for b7 being set
                         st b7 in b2
                      holds b5 . b7 in b7) &
                   b4 = Intersect b6 &
                   b4 <> {};

:: BVFUNC_2:prednot 1 => BVFUNC_2:pred 1
definition
  let a1 be non empty set;
  let a2 be Element of bool PARTITIONS a1;
  let a3 be set;
  pred A3 is_upper_min_depend_of A2 means
    (for b1 being a_partition of a1
           st b1 in a2
        holds a3 is_a_dependent_set_of b1) &
     (for b1 being set
           st b1 c= a3 &
              (for b2 being a_partition of a1
                    st b2 in a2
                 holds b1 is_a_dependent_set_of b2)
        holds b1 = a3);
end;

:: BVFUNC_2:dfs 2
definiens
  let a1 be non empty set;
  let a2 be Element of bool PARTITIONS a1;
  let a3 be set;
To prove
     a3 is_upper_min_depend_of a2
it is sufficient to prove
  thus (for b1 being a_partition of a1
           st b1 in a2
        holds a3 is_a_dependent_set_of b1) &
     (for b1 being set
           st b1 c= a3 &
              (for b2 being a_partition of a1
                    st b2 in a2
                 holds b1 is_a_dependent_set_of b2)
        holds b1 = a3);

:: BVFUNC_2:def 2
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being set holds
      b3 is_upper_min_depend_of b2
   iff
      (for b4 being a_partition of b1
             st b4 in b2
          holds b3 is_a_dependent_set_of b4) &
       (for b4 being set
             st b4 c= b3 &
                (for b5 being a_partition of b1
                      st b5 in b2
                   holds b4 is_a_dependent_set_of b5)
          holds b4 = b3);

:: BVFUNC_2:th 2
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being Element of b1
      st b2 <> {}
   holds ex b4 being Element of bool b1 st
      b3 in b4 & b4 is_upper_min_depend_of b2;

:: BVFUNC_2:funcnot 3 => BVFUNC_2:func 3
definition
  let a1 be non empty set;
  let a2 be Element of bool PARTITIONS a1;
  func '\/' A2 -> a_partition of a1 means
    for b1 being set holds
          b1 in it
       iff
          b1 is_upper_min_depend_of a2
    if a2 <> {}
    otherwise it = SmallestPartition a1;
end;

:: BVFUNC_2:def 3
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being a_partition of b1 holds
   (b2 = {} or    (b3 = '\/' b2
    iff
       for b4 being set holds
             b4 in b3
          iff
             b4 is_upper_min_depend_of b2)) &
    (b2 = {} implies    (b3 = '\/' b2
    iff
       b3 = SmallestPartition b1));

:: BVFUNC_2:th 3
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being a_partition of b1
      st b3 in b2
   holds '/\' b2 is_finer_than b3;

:: BVFUNC_2:th 4
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being a_partition of b1
      st b3 in b2
   holds b3 is_finer_than '\/' b2;

:: BVFUNC_2:attrnot 1 => BVFUNC_2:attr 1
definition
  let a1 be non empty set;
  let a2 be Element of bool PARTITIONS a1;
  attr a2 is generating means
    '/\' a2 = SmallestPartition a1;
end;

:: BVFUNC_2:dfs 4
definiens
  let a1 be non empty set;
  let a2 be Element of bool PARTITIONS a1;
To prove
     a2 is generating
it is sufficient to prove
  thus '/\' a2 = SmallestPartition a1;

:: BVFUNC_2:def 4
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1 holds
      b2 is generating(b1)
   iff
      '/\' b2 = SmallestPartition b1;

:: BVFUNC_2:attrnot 2 => BVFUNC_2:attr 2
definition
  let a1 be non empty set;
  let a2 be Element of bool PARTITIONS a1;
  attr a2 is independent means
    for b1 being Relation-like Function-like set
    for b2 being Element of bool bool a1
          st proj1 b1 = a2 &
             proj2 b1 = b2 &
             (for b3 being set
                   st b3 in a2
                holds b1 . b3 in b3)
       holds Intersect b2 <> {};
end;

:: BVFUNC_2:dfs 5
definiens
  let a1 be non empty set;
  let a2 be Element of bool PARTITIONS a1;
To prove
     a2 is independent
it is sufficient to prove
  thus for b1 being Relation-like Function-like set
    for b2 being Element of bool bool a1
          st proj1 b1 = a2 &
             proj2 b1 = b2 &
             (for b3 being set
                   st b3 in a2
                holds b1 . b3 in b3)
       holds Intersect b2 <> {};

:: BVFUNC_2:def 5
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1 holds
      b2 is independent(b1)
   iff
      for b3 being Relation-like Function-like set
      for b4 being Element of bool bool b1
            st proj1 b3 = b2 &
               proj2 b3 = b4 &
               (for b5 being set
                     st b5 in b2
                  holds b3 . b5 in b5)
         holds Intersect b4 <> {};

:: BVFUNC_2:prednot 2 => BVFUNC_2:pred 2
definition
  let a1 be non empty set;
  let a2 be Element of bool PARTITIONS a1;
  pred A2 is_a_coordinate means
    a2 is independent(a1) & a2 is generating(a1);
end;

:: BVFUNC_2:dfs 6
definiens
  let a1 be non empty set;
  let a2 be Element of bool PARTITIONS a1;
To prove
     a2 is_a_coordinate
it is sufficient to prove
  thus a2 is independent(a1) & a2 is generating(a1);

:: BVFUNC_2:def 6
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1 holds
      b2 is_a_coordinate
   iff
      b2 is independent(b1) & b2 is generating(b1);

:: BVFUNC_2:funcnot 4 => BVFUNC_2:func 4
definition
  let a1 be non empty set;
  let a2 be a_partition of a1;
  redefine func {a2} -> Element of bool PARTITIONS a1;
end;

:: BVFUNC_2:funcnot 5 => BVFUNC_2:func 5
definition
  let a1 be non empty set;
  let a2 be a_partition of a1;
  let a3 be Element of bool PARTITIONS a1;
  func CompF(A2,A3) -> a_partition of a1 equals
    '/\' (a3 \ {a2});
end;

:: BVFUNC_2:def 7
theorem
for b1 being non empty set
for b2 being a_partition of b1
for b3 being Element of bool PARTITIONS b1 holds
   CompF(b2,b3) = '/\' (b3 \ {b2});

:: BVFUNC_2:prednot 3 => BVFUNC_2:pred 3
definition
  let a1 be non empty set;
  let a2 be Element of Funcs(a1,BOOLEAN);
  let a3 be Element of bool PARTITIONS a1;
  let a4 be a_partition of a1;
  pred A2 is_independent_of A4,A3 means
    a2 is_dependent_of CompF(a4,a3);
end;

:: BVFUNC_2:dfs 8
definiens
  let a1 be non empty set;
  let a2 be Element of Funcs(a1,BOOLEAN);
  let a3 be Element of bool PARTITIONS a1;
  let a4 be a_partition of a1;
To prove
     a2 is_independent_of a4,a3
it is sufficient to prove
  thus a2 is_dependent_of CompF(a4,a3);

:: BVFUNC_2:def 8
theorem
for b1 being non empty set
for b2 being Element of Funcs(b1,BOOLEAN)
for b3 being Element of bool PARTITIONS b1
for b4 being a_partition of b1 holds
      b2 is_independent_of b4,b3
   iff
      b2 is_dependent_of CompF(b4,b3);

:: BVFUNC_2:funcnot 6 => BVFUNC_2:func 6
definition
  let a1 be non empty set;
  let a2 be Element of Funcs(a1,BOOLEAN);
  let a3 be Element of bool PARTITIONS a1;
  let a4 be a_partition of a1;
  func All(A2,A4,A3) -> Element of Funcs(a1,BOOLEAN) equals
    B_INF(a2,CompF(a4,a3));
end;

:: BVFUNC_2:def 9
theorem
for b1 being non empty set
for b2 being Element of Funcs(b1,BOOLEAN)
for b3 being Element of bool PARTITIONS b1
for b4 being a_partition of b1 holds
   All(b2,b4,b3) = B_INF(b2,CompF(b4,b3));

:: BVFUNC_2:funcnot 7 => BVFUNC_2:func 7
definition
  let a1 be non empty set;
  let a2 be Element of Funcs(a1,BOOLEAN);
  let a3 be Element of bool PARTITIONS a1;
  let a4 be a_partition of a1;
  func Ex(A2,A4,A3) -> Element of Funcs(a1,BOOLEAN) equals
    B_SUP(a2,CompF(a4,a3));
end;

:: BVFUNC_2:def 10
theorem
for b1 being non empty set
for b2 being Element of Funcs(b1,BOOLEAN)
for b3 being Element of bool PARTITIONS b1
for b4 being a_partition of b1 holds
   Ex(b2,b4,b3) = B_SUP(b2,CompF(b4,b3));

:: BVFUNC_2:th 5
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being Element of Funcs(b1,BOOLEAN)
for b4 being a_partition of b1 holds
   All(b3,b4,b2) is_dependent_of CompF(b4,b2);

:: BVFUNC_2:th 6
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being Element of Funcs(b1,BOOLEAN)
for b4 being a_partition of b1 holds
   Ex(b3,b4,b2) is_dependent_of CompF(b4,b2);

:: BVFUNC_2:th 7
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being Element of Funcs(b1,BOOLEAN)
for b4 being a_partition of b1 holds
   All(I_el b1,b4,b2) = I_el b1;

:: BVFUNC_2:th 8
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being Element of Funcs(b1,BOOLEAN)
for b4 being a_partition of b1 holds
   Ex(I_el b1,b4,b2) = I_el b1;

:: BVFUNC_2:th 9
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being Element of Funcs(b1,BOOLEAN)
for b4 being a_partition of b1 holds
   All(O_el b1,b4,b2) = O_el b1;

:: BVFUNC_2:th 10
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being Element of Funcs(b1,BOOLEAN)
for b4 being a_partition of b1 holds
   Ex(O_el b1,b4,b2) = O_el b1;

:: BVFUNC_2:th 11
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being Element of Funcs(b1,BOOLEAN)
for b4 being a_partition of b1 holds
   All(b3,b4,b2) '<' b3;

:: BVFUNC_2:th 12
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being Element of Funcs(b1,BOOLEAN)
for b4 being a_partition of b1 holds
   b3 '<' Ex(b3,b4,b2);

:: BVFUNC_2:th 14
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1 holds
   (All(b3,b5,b2)) 'or' All(b4,b5,b2) '<' All(b3 'or' b4,b5,b2);

:: BVFUNC_2:th 15
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1 holds
   All(b3 'imp' b4,b5,b2) '<' (All(b3,b5,b2)) 'imp' All(b4,b5,b2);

:: BVFUNC_2:th 17
theorem
for b1 being non empty set
for b2, b3 being Element of Funcs(b1,BOOLEAN)
for b4 being Element of bool PARTITIONS b1
for b5 being a_partition of b1 holds
   Ex(b2 '&' b3,b5,b4) '<' (Ex(b2,b5,b4)) '&' Ex(b3,b5,b4);

:: BVFUNC_2:th 18
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1 holds
   (Ex(b3,b5,b2)) 'xor' Ex(b4,b5,b2) '<' Ex(b3 'xor' b4,b5,b2);

:: BVFUNC_2:th 19
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1 holds
   (Ex(b3,b5,b2)) 'imp' Ex(b4,b5,b2) '<' Ex(b3 'imp' b4,b5,b2);

:: BVFUNC_2:th 20
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being Element of Funcs(b1,BOOLEAN)
for b4 being a_partition of b1 holds
   'not' All(b3,b4,b2) = Ex('not' b3,b4,b2);

:: BVFUNC_2:th 21
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3 being Element of Funcs(b1,BOOLEAN)
for b4 being a_partition of b1 holds
   'not' Ex(b3,b4,b2) = All('not' b3,b4,b2);

:: BVFUNC_2:th 22
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds All(b3 'imp' b4,b5,b2) = b3 'imp' All(b4,b5,b2);

:: BVFUNC_2:th 23
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds All(b4 'imp' b3,b5,b2) = (Ex(b4,b5,b2)) 'imp' b3;

:: BVFUNC_2:th 24
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds All(b3 'or' b4,b5,b2) = b3 'or' All(b4,b5,b2);

:: BVFUNC_2:th 25
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds All(b4 'or' b3,b5,b2) = (All(b4,b5,b2)) 'or' b3;

:: BVFUNC_2:th 26
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds All(b4 'or' b3,b5,b2) '<' (Ex(b4,b5,b2)) 'or' b3;

:: BVFUNC_2:th 27
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds All(b3 '&' b4,b5,b2) = b3 '&' All(b4,b5,b2);

:: BVFUNC_2:th 28
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds All(b4 '&' b3,b5,b2) = (All(b4,b5,b2)) '&' b3;

:: BVFUNC_2:th 29
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1 holds
   All(b3 '&' b4,b5,b2) '<' (Ex(b3,b5,b2)) '&' b4;

:: BVFUNC_2:th 30
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds All(b3 'xor' b4,b5,b2) '<' b3 'xor' All(b4,b5,b2);

:: BVFUNC_2:th 31
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds All(b4 'xor' b3,b5,b2) '<' (All(b4,b5,b2)) 'xor' b3;

:: BVFUNC_2:th 32
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds All(b3 'eqv' b4,b5,b2) '<' b3 'eqv' All(b4,b5,b2);

:: BVFUNC_2:th 33
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds All(b4 'eqv' b3,b5,b2) '<' (All(b4,b5,b2)) 'eqv' b3;

:: BVFUNC_2:th 34
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds Ex(b3 'or' b4,b5,b2) = b3 'or' Ex(b4,b5,b2);

:: BVFUNC_2:th 35
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds Ex(b4 'or' b3,b5,b2) = (Ex(b4,b5,b2)) 'or' b3;

:: BVFUNC_2:th 36
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds Ex(b3 '&' b4,b5,b2) = b3 '&' Ex(b4,b5,b2);

:: BVFUNC_2:th 37
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds Ex(b4 '&' b3,b5,b2) = (Ex(b4,b5,b2)) '&' b3;

:: BVFUNC_2:th 38
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1 holds
   b3 'imp' Ex(b4,b5,b2) '<' Ex(b3 'imp' b4,b5,b2);

:: BVFUNC_2:th 39
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1 holds
   (Ex(b3,b5,b2)) 'imp' b4 '<' Ex(b3 'imp' b4,b5,b2);

:: BVFUNC_2:th 40
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds b3 'xor' Ex(b4,b5,b2) '<' Ex(b3 'xor' b4,b5,b2);

:: BVFUNC_2:th 41
theorem
for b1 being non empty set
for b2 being Element of bool PARTITIONS b1
for b3, b4 being Element of Funcs(b1,BOOLEAN)
for b5 being a_partition of b1
      st b3 is_independent_of b5,b2
   holds (Ex(b4,b5,b2)) 'xor' b3 '<' Ex(b4 'xor' b3,b5,b2);