Article CARD_3, MML version 4.99.1005

:: CARD_3:attrnot 1 => CARD_3:attr 1
definition
  let a1 be Relation-like Function-like set;
  attr a1 is Cardinal-yielding means
    for b1 being set
          st b1 in proj1 a1
       holds a1 . b1 is cardinal set;
end;

:: CARD_3:dfs 1
definiens
  let a1 be Relation-like Function-like set;
To prove
     a1 is Cardinal-yielding
it is sufficient to prove
  thus for b1 being set
          st b1 in proj1 a1
       holds a1 . b1 is cardinal set;

:: CARD_3:def 1
theorem
for b1 being Relation-like Function-like set holds
      b1 is Cardinal-yielding
   iff
      for b2 being set
            st b2 in proj1 b1
         holds b1 . b2 is cardinal set;

:: CARD_3:exreg 1
registration
  cluster Relation-like Function-like Cardinal-yielding set;
end;

:: CARD_3:modenot 1
definition
  mode Cardinal-Function is Relation-like Function-like Cardinal-yielding set;
end;

:: CARD_3:funcreg 1
registration
  let a1 be Relation-like Function-like Cardinal-yielding set;
  let a2 be set;
  cluster a1 | a2 -> Relation-like Cardinal-yielding;
end;

:: CARD_3:funcreg 2
registration
  let a1 be set;
  let a2 be cardinal set;
  cluster a1 --> a2 -> Cardinal-yielding;
end;

:: CARD_3:th 3
theorem
{} is Relation-like Function-like Cardinal-yielding set;

:: CARD_3:sch 1
scheme CARD_3:sch 1
{F1 -> set,
  F2 -> cardinal set}:
ex b1 being Relation-like Function-like Cardinal-yielding set st
   proj1 b1 = F1() &
    (for b2 being set
          st b2 in F1()
       holds b1 . b2 = F2(b2))


:: CARD_3:funcnot 1 => CARD_3:func 1
definition
  let a1 be Relation-like Function-like set;
  func Card A1 -> Relation-like Function-like Cardinal-yielding set means
    proj1 it = proj1 a1 &
     (for b1 being set
           st b1 in proj1 a1
        holds it . b1 = Card (a1 . b1));
end;

:: CARD_3:def 2
theorem
for b1 being Relation-like Function-like set
for b2 being Relation-like Function-like Cardinal-yielding set holds
      b2 = Card b1
   iff
      proj1 b2 = proj1 b1 &
       (for b3 being set
             st b3 in proj1 b1
          holds b2 . b3 = Card (b1 . b3));

:: CARD_3:funcnot 2 => CARD_3:func 2
definition
  let a1 be Relation-like Function-like set;
  func disjoin A1 -> Relation-like Function-like set means
    proj1 it = proj1 a1 &
     (for b1 being set
           st b1 in proj1 a1
        holds it . b1 = [:a1 . b1,{b1}:]);
end;

:: CARD_3:def 3
theorem
for b1, b2 being Relation-like Function-like set holds
   b2 = disjoin b1
iff
   proj1 b2 = proj1 b1 &
    (for b3 being set
          st b3 in proj1 b1
       holds b2 . b3 = [:b1 . b3,{b3}:]);

:: CARD_3:funcnot 3 => CARD_3:func 3
definition
  let a1 be Relation-like Function-like set;
  func Union A1 -> set equals
    union proj2 a1;
end;

:: CARD_3:def 4
theorem
for b1 being Relation-like Function-like set holds
   Union b1 = union proj2 b1;

:: CARD_3:funcnot 4 => CARD_3:func 4
definition
  let a1 be Relation-like Function-like set;
  func product A1 -> set means
    for b1 being set holds
          b1 in it
       iff
          ex b2 being Relation-like Function-like set st
             b1 = b2 &
              proj1 b2 = proj1 a1 &
              (for b3 being set
                    st b3 in proj1 a1
                 holds b2 . b3 in a1 . b3);
end;

:: CARD_3:def 5
theorem
for b1 being Relation-like Function-like set
for b2 being set holds
      b2 = product b1
   iff
      for b3 being set holds
            b3 in b2
         iff
            ex b4 being Relation-like Function-like set st
               b3 = b4 &
                proj1 b4 = proj1 b1 &
                (for b5 being set
                      st b5 in proj1 b1
                   holds b4 . b5 in b1 . b5);

:: CARD_3:th 8
theorem
for b1 being Relation-like Function-like Cardinal-yielding set holds
   Card b1 = b1;

:: CARD_3:th 9
theorem
Card {} = {};

:: CARD_3:th 10
theorem
for b1, b2 being set holds
Card (b1 --> b2) = b1 --> Card b2;

:: CARD_3:th 11
theorem
disjoin {} = {};

:: CARD_3:th 12
theorem
for b1, b2 being set holds
disjoin ({b1} --> b2) = {b1} --> [:b2,{b1}:];

:: CARD_3:th 13
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set
      st b1 in proj1 b3 & b2 in proj1 b3 & b1 <> b2
   holds (disjoin b3) . b1 misses (disjoin b3) . b2;

:: CARD_3:th 15
theorem
for b1, b2 being set holds
Union (b1 --> b2) c= b2;

:: CARD_3:th 16
theorem
for b1, b2 being set
      st b1 <> {}
   holds Union (b1 --> b2) = b2;

:: CARD_3:th 17
theorem
for b1, b2 being set holds
Union ({b1} --> b2) = b2;

:: CARD_3:th 18
theorem
for b1, b2 being Relation-like Function-like set holds
   b1 in product b2
iff
   proj1 b1 = proj1 b2 &
    (for b3 being set
          st b3 in proj1 b2
       holds b1 . b3 in b2 . b3);

:: CARD_3:th 19
theorem
product {} = {{}};

:: CARD_3:th 20
theorem
for b1, b2 being set holds
Funcs(b1,b2) = product (b1 --> b2);

:: CARD_3:funcnot 5 => CARD_3:func 5
definition
  let a1, a2 be set;
  func pi(A2,A1) -> set means
    for b1 being set holds
          b1 in it
       iff
          ex b2 being Relation-like Function-like set st
             b2 in a2 & b1 = b2 . a1;
end;

:: CARD_3:def 6
theorem
for b1, b2, b3 being set holds
   b3 = pi(b2,b1)
iff
   for b4 being set holds
         b4 in b3
      iff
         ex b5 being Relation-like Function-like set st
            b5 in b2 & b4 = b5 . b1;

:: CARD_3:th 22
theorem
for b1 being set
for b2 being Relation-like Function-like set
      st b1 in proj1 b2 & product b2 <> {}
   holds pi(product b2,b1) = b2 . b1;

:: CARD_3:th 24
theorem
for b1 being set holds
   pi({},b1) = {};

:: CARD_3:th 25
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
   pi({b2},b1) = {b2 . b1};

:: CARD_3:th 26
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set holds
pi({b2,b3},b1) = {b2 . b1,b3 . b1};

:: CARD_3:th 27
theorem
for b1, b2, b3 being set holds
pi(b1 \/ b2,b3) = (pi(b1,b3)) \/ pi(b2,b3);

:: CARD_3:th 28
theorem
for b1, b2, b3 being set holds
pi(b1 /\ b2,b3) c= (pi(b1,b3)) /\ pi(b2,b3);

:: CARD_3:th 29
theorem
for b1, b2, b3 being set holds
(pi(b1,b2)) \ pi(b3,b2) c= pi(b1 \ b3,b2);

:: CARD_3:th 30
theorem
for b1, b2, b3 being set holds
(pi(b1,b2)) \+\ pi(b3,b2) c= pi(b1 \+\ b3,b2);

:: CARD_3:th 31
theorem
for b1, b2 being set holds
Card pi(b1,b2) c= Card b1;

:: CARD_3:th 32
theorem
for b1 being set
for b2 being Relation-like Function-like set
      st b1 in Union disjoin b2
   holds ex b3, b4 being set st
      b1 = [b3,b4];

:: CARD_3:th 33
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
      b1 in Union disjoin b2
   iff
      b1 `2 in proj1 b2 & b1 `1 in b2 . (b1 `2) & b1 = [b1 `1,b1 `2];

:: CARD_3:th 34
theorem
for b1, b2 being Relation-like Function-like set
      st b1 c= b2
   holds disjoin b1 c= disjoin b2;

:: CARD_3:th 35
theorem
for b1, b2 being Relation-like Function-like set
      st b1 c= b2
   holds Union b1 c= Union b2;

:: CARD_3:th 36
theorem
for b1, b2 being set holds
Union disjoin (b1 --> b2) = [:b2,b1:];

:: CARD_3:th 37
theorem
for b1 being Relation-like Function-like set holds
      product b1 = {}
   iff
      {} in proj2 b1;

:: CARD_3:th 38
theorem
for b1, b2 being Relation-like Function-like set
      st proj1 b1 = proj1 b2 &
         (for b3 being set
               st b3 in proj1 b1
            holds b1 . b3 c= b2 . b3)
   holds product b1 c= product b2;

:: CARD_3:th 39
theorem
for b1 being Relation-like Function-like Cardinal-yielding set
for b2 being set
      st b2 in proj1 b1
   holds Card (b1 . b2) = b1 . b2;

:: CARD_3:th 40
theorem
for b1 being Relation-like Function-like Cardinal-yielding set
for b2 being set
      st b2 in proj1 b1
   holds Card ((disjoin b1) . b2) = b1 . b2;

:: CARD_3:funcnot 6 => CARD_3:func 6
definition
  let a1 be Relation-like Function-like Cardinal-yielding set;
  func Sum A1 -> cardinal set equals
    Card Union disjoin a1;
end;

:: CARD_3:def 7
theorem
for b1 being Relation-like Function-like Cardinal-yielding set holds
   Sum b1 = Card Union disjoin b1;

:: CARD_3:funcnot 7 => CARD_3:func 7
definition
  let a1 be Relation-like Function-like Cardinal-yielding set;
  func Product A1 -> cardinal set equals
    Card product a1;
end;

:: CARD_3:def 8
theorem
for b1 being Relation-like Function-like Cardinal-yielding set holds
   Product b1 = Card product b1;

:: CARD_3:th 43
theorem
for b1, b2 being Relation-like Function-like Cardinal-yielding set
      st proj1 b1 = proj1 b2 &
         (for b3 being set
               st b3 in proj1 b1
            holds b1 . b3 c= b2 . b3)
   holds Sum b1 c= Sum b2;

:: CARD_3:th 44
theorem
for b1 being Relation-like Function-like Cardinal-yielding set holds
      {} in proj2 b1
   iff
      Product b1 = 0;

:: CARD_3:th 45
theorem
for b1, b2 being Relation-like Function-like Cardinal-yielding set
      st proj1 b1 = proj1 b2 &
         (for b3 being set
               st b3 in proj1 b1
            holds b1 . b3 c= b2 . b3)
   holds Product b1 c= Product b2;

:: CARD_3:th 46
theorem
for b1, b2 being Relation-like Function-like Cardinal-yielding set
      st b1 c= b2
   holds Sum b1 c= Sum b2;

:: CARD_3:th 47
theorem
for b1, b2 being Relation-like Function-like Cardinal-yielding set
      st b1 c= b2 & not 0 in proj2 b2
   holds Product b1 c= Product b2;

:: CARD_3:th 48
theorem
for b1 being cardinal set holds
   Sum ({} --> b1) = 0;

:: CARD_3:th 49
theorem
for b1 being cardinal set holds
   Product ({} --> b1) = 1;

:: CARD_3:th 50
theorem
for b1 being cardinal set
for b2 being set holds
   Sum ({b2} --> b1) = b1;

:: CARD_3:th 51
theorem
for b1 being cardinal set
for b2 being set holds
   Product ({b2} --> b1) = b1;

:: CARD_3:th 52
theorem
for b1, b2 being cardinal set holds
Sum (b1 --> b2) = b1 *` b2;

:: CARD_3:th 53
theorem
for b1, b2 being cardinal set holds
Product (b1 --> b2) = exp(b2,b1);

:: CARD_3:th 54
theorem
for b1 being Relation-like Function-like set holds
   Card Union b1 c= Sum Card b1;

:: CARD_3:th 55
theorem
for b1 being Relation-like Function-like Cardinal-yielding set holds
   Card Union b1 c= Sum b1;

:: CARD_3:th 56
theorem
for b1, b2 being Relation-like Function-like Cardinal-yielding set
      st proj1 b1 = proj1 b2 &
         (for b3 being set
               st b3 in proj1 b1
            holds b1 . b3 in b2 . b3)
   holds Sum b1 in Product b2;

:: CARD_3:sch 2
scheme CARD_3:sch 2
{F1 -> finite set}:
ex b1 being set st
   b1 in F1() &
    (for b2 being set
          st b2 in F1() & b2 <> b1
       holds not (P1[b2, b1]))
provided
   F1() <> {}
and
   for b1, b2 being set
         st P1[b1, b2] & P1[b2, b1]
      holds b1 = b2
and
   for b1, b2, b3 being set
         st P1[b1, b2] & P1[b2, b3]
      holds P1[b1, b3];


:: CARD_3:sch 3
scheme CARD_3:sch 3
{F1 -> finite set}:
ex b1 being set st
   b1 in F1() &
    (for b2 being set
          st b2 in F1()
       holds P1[b1, b2])
provided
   F1() <> {}
and
   for b1, b2 being set
         st not (P1[b1, b2])
      holds P1[b2, b1]
and
   for b1, b2, b3 being set
         st P1[b1, b2] & P1[b2, b3]
      holds P1[b1, b3];


:: CARD_3:sch 4
scheme CARD_3:sch 4
{F1 -> set,
  F2 -> set}:
ex b1 being Relation-like Function-like set st
   proj1 b1 = F1() &
    (for b2 being set
       st b2 in F1()
    for b3 being set holds
          b3 in b1 . b2
       iff
          b3 in F2(b2) & P1[b2, b3])


:: CARD_3:th 57
theorem
for b1 being Element of NAT holds
   Rank b1 is finite;

:: CARD_3:th 58
theorem
for b1 being set
      st b1 is finite
   holds Card b1 in Card omega;

:: CARD_3:th 59
theorem
for b1, b2 being ordinal set
      st Card b1 in Card b2
   holds b1 in b2;

:: CARD_3:th 60
theorem
for b1 being ordinal set
for b2 being cardinal set
      st Card b1 in b2
   holds b1 in b2;

:: CARD_3:th 61
theorem
for b1 being set
      st b1 is c=-linear
   holds ex b2 being set st
      b2 c= b1 &
       union b2 = union b1 &
       (for b3 being set
             st b3 c= b2 & b3 <> {}
          holds ex b4 being set st
             b4 in b3 &
              (for b5 being set
                    st b5 in b3
                 holds b4 c= b5));

:: CARD_3:th 62
theorem
for b1 being cardinal set
for b2 being set
      st (for b3 being set
               st b3 in b2
            holds Card b3 in b1) &
         b2 is c=-linear
   holds Card union b2 c= b1;

:: CARD_3:funcreg 3
registration
  let a1 be Relation-like Function-like set;
  cluster product a1 -> functional;
end;

:: CARD_3:condreg 1
registration
  let a1 be set;
  let a2 be with_non-empty_elements set;
  cluster Function-like quasi_total -> non-empty (Relation of a1,a2);
end;

:: CARD_3:funcreg 4
registration
  let a1 be Relation-like non-empty Function-like set;
  cluster product a1 -> non empty;
end;

:: CARD_3:th 63
theorem
for b1, b2, b3, b4 being set
      st b1 <> b2
   holds product ((b1,b2)-->({b3},{b4})) = {(b1,b2)-->(b3,b4)};

:: CARD_3:th 64
theorem
for b1 being set
for b2 being Relation-like Function-like set
      st b1 in product b2
   holds b1 is Relation-like Function-like set;

:: CARD_3:funcnot 8 => CARD_3:func 8
definition
  let a1 be Relation-like Function-like set;
  func sproduct A1 -> set means
    for b1 being set holds
          b1 in it
       iff
          ex b2 being Relation-like Function-like set st
             b1 = b2 &
              proj1 b2 c= proj1 a1 &
              (for b3 being set
                    st b3 in proj1 b2
                 holds b2 . b3 in a1 . b3);
end;

:: CARD_3:def 9
theorem
for b1 being Relation-like Function-like set
for b2 being set holds
      b2 = sproduct b1
   iff
      for b3 being set holds
            b3 in b2
         iff
            ex b4 being Relation-like Function-like set st
               b3 = b4 &
                proj1 b4 c= proj1 b1 &
                (for b5 being set
                      st b5 in proj1 b4
                   holds b4 . b5 in b1 . b5);

:: CARD_3:funcreg 5
registration
  let a1 be Relation-like Function-like set;
  cluster sproduct a1 -> non empty functional;
end;

:: CARD_3:th 65
theorem
for b1, b2 being Relation-like Function-like set
      st b1 in sproduct b2
   holds proj1 b1 c= proj1 b2 &
    (for b3 being set
          st b3 in proj1 b1
       holds b1 . b3 in b2 . b3);

:: CARD_3:th 66
theorem
for b1 being Relation-like Function-like set holds
   {} in sproduct b1;

:: CARD_3:th 67
theorem
for b1 being Relation-like Function-like set holds
   product b1 c= sproduct b1;

:: CARD_3:th 68
theorem
for b1 being set
for b2 being Relation-like Function-like set
      st b1 in sproduct b2
   holds b1 is Function-like Relation of proj1 b2,union proj2 b2;

:: CARD_3:th 69
theorem
for b1, b2, b3 being Relation-like Function-like set
      st b1 in product b2 & b3 in sproduct b2
   holds b1 +* b3 in product b2;

:: CARD_3:th 70
theorem
for b1, b2 being Relation-like Function-like set
      st product b1 <> {}
   holds    b2 in sproduct b1
   iff
      ex b3 being Relation-like Function-like set st
         b3 in product b1 & b2 c= b3;

:: CARD_3:th 71
theorem
for b1 being Relation-like Function-like set holds
   sproduct b1 c= PFuncs(proj1 b1,union proj2 b1);

:: CARD_3:th 72
theorem
for b1, b2 being Relation-like Function-like set
      st b1 c= b2
   holds sproduct b1 c= sproduct b2;

:: CARD_3:th 73
theorem
sproduct {} = {{}};

:: CARD_3:th 74
theorem
for b1, b2 being set holds
PFuncs(b1,b2) = sproduct (b1 --> b2);

:: CARD_3:th 75
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of b1,b2 holds
   sproduct b3 = sproduct (b3 | {b4 where b4 is Element of b1: b3 . b4 <> {}});

:: CARD_3:th 76
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set
      st b1 in proj1 b3 & b2 in b3 . b1
   holds b1 .--> b2 in sproduct b3;

:: CARD_3:th 77
theorem
for b1 being Relation-like Function-like set holds
      sproduct b1 = {{}}
   iff
      for b2 being set
            st b2 in proj1 b1
         holds b1 . b2 = {};

:: CARD_3:th 78
theorem
for b1 being Relation-like Function-like set
for b2 being set
      st b2 c= sproduct b1 &
         (for b3, b4 being Relation-like Function-like set
               st b3 in b2 & b4 in b2
            holds b3 tolerates b4)
   holds union b2 in sproduct b1;

:: CARD_3:th 79
theorem
for b1, b2, b3 being Relation-like Function-like set
      st b1 tolerates b2 & b1 in sproduct b3 & b2 in sproduct b3
   holds b1 \/ b2 in sproduct b3;

:: CARD_3:th 80
theorem
for b1, b2, b3 being Relation-like Function-like set
      st b1 c= b2 & b2 in sproduct b3
   holds b1 in sproduct b3;

:: CARD_3:th 81
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set
      st b1 in sproduct b2
   holds b1 | b3 in sproduct b2;

:: CARD_3:th 82
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set
      st b1 in sproduct b2
   holds b1 | b3 in sproduct (b2 | b3);

:: CARD_3:th 83
theorem
for b1, b2, b3 being Relation-like Function-like set
      st b1 in sproduct (b2 +* b3)
   holds ex b4, b5 being Relation-like Function-like set st
      b4 in sproduct b2 & b5 in sproduct b3 & b1 = b4 +* b5;

:: CARD_3:th 84
theorem
for b1, b2, b3, b4 being Relation-like Function-like set
      st proj1 b1 misses (proj1 b3) \ proj1 b4 & b3 in sproduct b2 & b4 in sproduct b1
   holds b3 +* b4 in sproduct (b2 +* b1);

:: CARD_3:th 85
theorem
for b1, b2, b3, b4 being Relation-like Function-like set
      st proj1 b3 misses (proj1 b1) \ proj1 b4 & b3 in sproduct b2 & b4 in sproduct b1
   holds b3 +* b4 in sproduct (b2 +* b1);

:: CARD_3:th 86
theorem
for b1, b2, b3 being Relation-like Function-like set
      st b1 in sproduct b2 & b3 in sproduct b2
   holds b1 +* b3 in sproduct b2;

:: CARD_3:th 87
theorem
for b1 being Relation-like Function-like set
for b2, b3, b4, b5 being set
      st b2 in proj1 b1 & b4 in b1 . b2 & b3 in proj1 b1 & b5 in b1 . b3
   holds (b2,b3)-->(b4,b5) in sproduct b1;

:: CARD_3:attrnot 2 => CARD_3:attr 2
definition
  let a1 be set;
  attr a1 is with_common_domain means
    for b1, b2 being Relation-like Function-like set
          st b1 in a1 & b2 in a1
       holds proj1 b1 = proj1 b2;
end;

:: CARD_3:dfs 10
definiens
  let a1 be set;
To prove
     a1 is with_common_domain
it is sufficient to prove
  thus for b1, b2 being Relation-like Function-like set
          st b1 in a1 & b2 in a1
       holds proj1 b1 = proj1 b2;

:: CARD_3:def 10
theorem
for b1 being set holds
      b1 is with_common_domain
   iff
      for b2, b3 being Relation-like Function-like set
            st b2 in b1 & b3 in b1
         holds proj1 b2 = proj1 b3;

:: CARD_3:exreg 2
registration
  cluster non empty functional with_common_domain set;
end;

:: CARD_3:th 88
theorem
{{}} is functional with_common_domain set;

:: CARD_3:funcnot 9 => CARD_3:func 9
definition
  let a1 be functional with_common_domain set;
  func DOM A1 -> set means
    for b1 being Relation-like Function-like set
          st b1 in a1
       holds it = proj1 b1
    if a1 <> {}
    otherwise it = {};
end;

:: CARD_3:def 12
theorem
for b1 being functional with_common_domain set
for b2 being set holds
   (b1 = {} or    (b2 = DOM b1
    iff
       for b3 being Relation-like Function-like set
             st b3 in b1
          holds b2 = proj1 b3)) &
    (b1 = {} implies    (b2 = DOM b1
    iff
       b2 = {}));

:: CARD_3:th 89
theorem
for b1 being functional with_common_domain set
      st b1 = {{}}
   holds DOM b1 = {};

:: CARD_3:funcnot 10 => CARD_3:func 10
definition
  let a1 be functional set;
  func product" A1 -> Relation-like Function-like set means
    (for b1 being set holds
           b1 in proj1 it
        iff
           for b2 being Relation-like Function-like set
                 st b2 in a1
              holds b1 in proj1 b2) &
     (for b1 being set
           st b1 in proj1 it
        holds it . b1 = pi(a1,b1))
    if a1 is not empty
    otherwise it = {};
end;

:: CARD_3:def 13
theorem
for b1 being functional set
for b2 being Relation-like Function-like set holds
   (b1 is empty or    (b2 = product" b1
    iff
       (for b3 being set holds
              b3 in proj1 b2
           iff
              for b4 being Relation-like Function-like set
                    st b4 in b1
                 holds b3 in proj1 b4) &
        (for b3 being set
              st b3 in proj1 b2
           holds b2 . b3 = pi(b1,b3)))) &
    (b1 is empty implies    (b2 = product" b1
    iff
       b2 = {}));

:: CARD_3:th 90
theorem
for b1 being non empty functional set holds
   proj1 product" b1 = meet {proj1 b2 where b2 is Element of b1: TRUE};

:: CARD_3:th 91
theorem
for b1 being non empty functional set
for b2 being set
      st b2 in proj1 product" b1
   holds (product" b1) . b2 = {b3 . b2 where b3 is Element of b1: TRUE};

:: CARD_3:attrnot 3 => CARD_3:attr 3
definition
  let a1 be set;
  attr a1 is product-like means
    ex b1 being Relation-like Function-like set st
       a1 = product b1;
end;

:: CARD_3:dfs 13
definiens
  let a1 be set;
To prove
     a1 is product-like
it is sufficient to prove
  thus ex b1 being Relation-like Function-like set st
       a1 = product b1;

:: CARD_3:def 14
theorem
for b1 being set holds
      b1 is product-like
   iff
      ex b2 being Relation-like Function-like set st
         b1 = product b2;

:: CARD_3:funcreg 6
registration
  let a1 be Relation-like Function-like set;
  cluster product a1 -> product-like;
end;

:: CARD_3:condreg 2
registration
  cluster product-like -> functional with_common_domain (set);
end;

:: CARD_3:exreg 3
registration
  cluster non empty product-like set;
end;

:: CARD_3:th 92
theorem
for b1 being functional with_common_domain set holds
   proj1 product" b1 = DOM b1;

:: CARD_3:th 93
theorem
for b1 being functional set
for b2 being set
      st b2 in proj1 product" b1
   holds (product" b1) . b2 = pi(b1,b2);

:: CARD_3:th 94
theorem
for b1 being functional with_common_domain set holds
   b1 c= product product" b1;

:: CARD_3:th 95
theorem
for b1 being non empty product-like set holds
   b1 = product product" b1;