Article ZF_COLLA, MML version 4.99.1005

:: ZF_COLLA:funcnot 1 => ZF_COLLA:func 1
definition
  let a1 be non empty set;
  let a2 be ordinal set;
  func Collapse(A1,A2) -> set means
    ex b1 being Relation-like Function-like T-Sequence-like set st
       it = {b2 where b2 is Element of a1: for b3 being Element of a1
              st b3 in b2
           holds ex b4 being ordinal set st
              b4 in proj1 b1 & b3 in union {b1 . b4}} &
        proj1 b1 = a2 &
        (for b2 being ordinal set
              st b2 in a2
           holds b1 . b2 = {b3 where b3 is Element of a1: for b4 being Element of a1
                 st b4 in b3
              holds ex b5 being ordinal set st
                 b5 in proj1 (b1 | b2) &
                  b4 in union {(b1 | b2) . b5}});
end;

:: ZF_COLLA:def 1
theorem
for b1 being non empty set
for b2 being ordinal set
for b3 being set holds
      b3 = Collapse(b1,b2)
   iff
      ex b4 being Relation-like Function-like T-Sequence-like set st
         b3 = {b5 where b5 is Element of b1: for b6 being Element of b1
                st b6 in b5
             holds ex b7 being ordinal set st
                b7 in proj1 b4 & b6 in union {b4 . b7}} &
          proj1 b4 = b2 &
          (for b5 being ordinal set
                st b5 in b2
             holds b4 . b5 = {b6 where b6 is Element of b1: for b7 being Element of b1
                   st b7 in b6
                holds ex b8 being ordinal set st
                   b8 in proj1 (b4 | b5) &
                    b7 in union {(b4 | b5) . b8}});

:: ZF_COLLA:th 1
theorem
for b1 being non empty set
for b2 being ordinal set holds
   Collapse(b1,b2) = {b3 where b3 is Element of b1: for b4 being Element of b1
         st b4 in b3
      holds ex b5 being ordinal set st
         b5 in b2 & b4 in Collapse(b1,b5)};

:: ZF_COLLA:th 2
theorem
for b1 being non empty set
for b2 being Element of b1 holds
      for b3 being Element of b1 holds
         not b3 in b2
   iff
      b2 in Collapse(b1,{});

:: ZF_COLLA:th 3
theorem
for b1 being non empty set
for b2 being ordinal set
for b3 being Element of b1 holds
      b3 /\ b1 c= Collapse(b1,b2)
   iff
      b3 in Collapse(b1,succ b2);

:: ZF_COLLA:th 4
theorem
for b1 being non empty set
for b2, b3 being ordinal set
      st b2 c= b3
   holds Collapse(b1,b2) c= Collapse(b1,b3);

:: ZF_COLLA:th 5
theorem
for b1 being non empty set
for b2 being Element of b1 holds
   ex b3 being ordinal set st
      b2 in Collapse(b1,b3);

:: ZF_COLLA:th 6
theorem
for b1 being non empty set
for b2 being ordinal set
for b3, b4 being Element of b1
      st b3 in b4 & b4 in Collapse(b1,b2)
   holds b3 in Collapse(b1,b2) &
    (ex b5 being ordinal set st
       b5 in b2 & b3 in Collapse(b1,b5));

:: ZF_COLLA:th 7
theorem
for b1 being non empty set
for b2 being ordinal set holds
   Collapse(b1,b2) c= b1;

:: ZF_COLLA:th 8
theorem
for b1 being non empty set holds
   ex b2 being ordinal set st
      b1 = Collapse(b1,b2);

:: ZF_COLLA:th 9
theorem
for b1 being non empty set holds
   ex b2 being Relation-like Function-like set st
      proj1 b2 = b1 &
       (for b3 being Element of b1 holds
          b2 . b3 = b2 .: b3);

:: ZF_COLLA:prednot 1 => ZF_COLLA:pred 1
definition
  let a1 be Relation-like Function-like set;
  let a2, a3 be set;
  pred A1 is_epsilon-isomorphism_of A2,A3 means
    proj1 a1 = a2 &
     proj2 a1 = a3 &
     a1 is one-to-one &
     (for b1, b2 being set
           st b1 in a2 & b2 in a2
        holds    ex b3 being set st
              b3 = b2 & b1 in b3
        iff
           ex b3 being set st
              a1 . b2 = b3 & a1 . b1 in b3);
end;

:: ZF_COLLA:dfs 2
definiens
  let a1 be Relation-like Function-like set;
  let a2, a3 be set;
To prove
     a1 is_epsilon-isomorphism_of a2,a3
it is sufficient to prove
  thus proj1 a1 = a2 &
     proj2 a1 = a3 &
     a1 is one-to-one &
     (for b1, b2 being set
           st b1 in a2 & b2 in a2
        holds    ex b3 being set st
              b3 = b2 & b1 in b3
        iff
           ex b3 being set st
              a1 . b2 = b3 & a1 . b1 in b3);

:: ZF_COLLA:def 2
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set holds
   b1 is_epsilon-isomorphism_of b2,b3
iff
   proj1 b1 = b2 &
    proj2 b1 = b3 &
    b1 is one-to-one &
    (for b4, b5 being set
          st b4 in b2 & b5 in b2
       holds    ex b6 being set st
             b6 = b5 & b4 in b6
       iff
          ex b6 being set st
             b1 . b5 = b6 & b1 . b4 in b6);

:: ZF_COLLA:prednot 2 => ZF_COLLA:pred 2
definition
  let a1, a2 be set;
  pred A1,A2 are_epsilon-isomorphic means
    ex b1 being Relation-like Function-like set st
       b1 is_epsilon-isomorphism_of a1,a2;
end;

:: ZF_COLLA:dfs 3
definiens
  let a1, a2 be set;
To prove
     a1,a2 are_epsilon-isomorphic
it is sufficient to prove
  thus ex b1 being Relation-like Function-like set st
       b1 is_epsilon-isomorphism_of a1,a2;

:: ZF_COLLA:def 3
theorem
for b1, b2 being set holds
   b1,b2 are_epsilon-isomorphic
iff
   ex b3 being Relation-like Function-like set st
      b3 is_epsilon-isomorphism_of b1,b2;

:: ZF_COLLA:th 12
theorem
for b1 being non empty set
for b2 being Relation-like Function-like set
      st proj1 b2 = b1 &
         (for b3 being Element of b1 holds
            b2 . b3 = b2 .: b3)
   holds proj2 b2 is epsilon-transitive;

:: ZF_COLLA:th 13
theorem
for b1 being non empty set
   st b1 |= the_axiom_of_extensionality
for b2, b3 being Element of b1
      st for b4 being Element of b1 holds
              b4 in b2
           iff
              b4 in b3
   holds b2 = b3;

:: ZF_COLLA:th 14
theorem
for b1 being non empty set
      st b1 |= the_axiom_of_extensionality
   holds ex b2 being set st
      b2 is epsilon-transitive & b1,b2 are_epsilon-isomorphic;