Article FUNCT_3, MML version 4.99.1005
:: FUNCT_3:th 1
theorem
for b1, b2 being set
st b1 c= b2
holds id b1 = (id b2) | b1;
:: FUNCT_3:th 2
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set
st b1 c= proj1 (b2 * b3)
holds b2 .: b1 c= proj1 b3;
:: FUNCT_3:th 3
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set
st b1 c= proj1 b2 & b2 .: b1 c= proj1 b3
holds b1 c= proj1 (b2 * b3);
:: FUNCT_3:th 4
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set
st b1 c= proj2 (b2 * b3) & b3 is one-to-one
holds b3 " b1 c= proj2 b2;
:: FUNCT_3:th 5
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set
st b1 c= proj2 b3 & b3 " b1 c= proj2 b2
holds b1 c= proj2 (b2 * b3);
:: FUNCT_3:sch 1
scheme FUNCT_3:sch 1
{F1 -> set,
F2 -> set}:
ex b1 being Relation-like Function-like set st
proj1 b1 = [:F1(),F2():] &
(for b2, b3 being set
st b2 in F1() & b3 in F2()
holds P1[b2, b3, b1 .(b2,b3)])
provided
for b1, b2, b3, b4 being set
st b1 in F1() & b2 in F2() & P1[b1, b2, b3] & P1[b1, b2, b4]
holds b3 = b4
and
for b1, b2 being set
st b1 in F1() & b2 in F2()
holds ex b3 being set st
P1[b1, b2, b3];
:: FUNCT_3:sch 2
scheme FUNCT_3:sch 2
{F1 -> set,
F2 -> set,
F3 -> set}:
ex b1 being Relation-like Function-like set st
proj1 b1 = [:F1(),F2():] &
(for b2, b3 being set
st b2 in F1() & b3 in F2()
holds b1 .(b2,b3) = F3(b2, b3))
:: FUNCT_3:th 6
theorem
for b1, b2 being set
for b3, b4 being Relation-like Function-like set
st proj1 b3 = [:b1,b2:] &
proj1 b4 = [:b1,b2:] &
(for b5, b6 being set
st b5 in b1 & b6 in b2
holds b3 .(b5,b6) = b4 .(b5,b6))
holds b3 = b4;
:: FUNCT_3:funcnot 1 => FUNCT_3:func 1
definition
let a1 be Relation-like Function-like set;
func .: A1 -> Relation-like Function-like set means
proj1 it = bool proj1 a1 &
(for b1 being set
st b1 c= proj1 a1
holds it . b1 = a1 .: b1);
end;
:: FUNCT_3:def 1
theorem
for b1, b2 being Relation-like Function-like set holds
b2 = .: b1
iff
proj1 b2 = bool proj1 b1 &
(for b3 being set
st b3 c= proj1 b1
holds b2 . b3 = b1 .: b3);
:: FUNCT_3:th 8
theorem
for b1 being set
for b2 being Relation-like Function-like set
st b1 in proj1 .: b2
holds (.: b2) . b1 = b2 .: b1;
:: FUNCT_3:th 9
theorem
for b1 being Relation-like Function-like set holds
(.: b1) . {} = {};
:: FUNCT_3:th 10
theorem
for b1 being Relation-like Function-like set holds
proj2 .: b1 c= bool proj2 b1;
:: FUNCT_3:th 12
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
(.: b2) .: b1 c= bool proj2 b2;
:: FUNCT_3:th 13
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
(.: b2) " b1 c= bool proj1 b2;
:: FUNCT_3:th 14
theorem
for b1, b2 being set
for b3 being non empty set
for b4 being Function-like quasi_total Relation of b1,b3 holds
(.: b4) " b2 c= bool b1;
:: FUNCT_3:th 15
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
union ((.: b2) .: b1) c= b2 .: union b1;
:: FUNCT_3:th 16
theorem
for b1 being set
for b2 being Relation-like Function-like set
st b1 c= bool proj1 b2
holds b2 .: union b1 = union ((.: b2) .: b1);
:: FUNCT_3:th 17
theorem
for b1, b2 being set
for b3 being non empty set
for b4 being Function-like quasi_total Relation of b1,b3
st b2 c= bool b1
holds b4 .: union b2 = union ((.: b4) .: b2);
:: FUNCT_3:th 18
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
union ((.: b2) " b1) c= b2 " union b1;
:: FUNCT_3:th 19
theorem
for b1 being set
for b2 being Relation-like Function-like set
st b1 c= bool proj2 b2
holds b2 " union b1 = union ((.: b2) " b1);
:: FUNCT_3:th 20
theorem
for b1, b2 being Relation-like Function-like set holds
.: (b1 * b2) = (.: b1) * .: b2;
:: FUNCT_3:th 21
theorem
for b1 being Relation-like Function-like set holds
.: b1 is Function-like quasi_total Relation of bool proj1 b1,bool proj2 b1;
:: FUNCT_3:th 22
theorem
for b1, b2 being set
for b3 being Function-like quasi_total Relation of b1,b2
st (b2 = {} implies b1 = {})
holds .: b3 is Function-like quasi_total Relation of bool b1,bool b2;
:: FUNCT_3:funcnot 2 => FUNCT_3:func 2
definition
let a1 be set;
let a2 be non empty set;
let a3 be Function-like quasi_total Relation of a1,a2;
redefine func .: a3 -> Function-like quasi_total Relation of bool a1,bool a2;
end;
:: FUNCT_3:funcnot 3 => FUNCT_3:func 3
definition
let a1 be Relation-like Function-like set;
func " A1 -> Relation-like Function-like set means
proj1 it = bool proj2 a1 &
(for b1 being set
st b1 c= proj2 a1
holds it . b1 = a1 " b1);
end;
:: FUNCT_3:def 2
theorem
for b1, b2 being Relation-like Function-like set holds
b2 = " b1
iff
proj1 b2 = bool proj2 b1 &
(for b3 being set
st b3 c= proj2 b1
holds b2 . b3 = b1 " b3);
:: FUNCT_3:th 24
theorem
for b1 being set
for b2 being Relation-like Function-like set
st b1 in proj1 " b2
holds (" b2) . b1 = b2 " b1;
:: FUNCT_3:th 25
theorem
for b1 being Relation-like Function-like set holds
proj2 " b1 c= bool proj1 b1;
:: FUNCT_3:th 27
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
(" b2) .: b1 c= bool proj1 b2;
:: FUNCT_3:th 28
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
(" b2) " b1 c= bool proj2 b2;
:: FUNCT_3:th 29
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
union ((" b2) .: b1) c= b2 " union b1;
:: FUNCT_3:th 30
theorem
for b1 being set
for b2 being Relation-like Function-like set
st b1 c= bool proj2 b2
holds union ((" b2) .: b1) = b2 " union b1;
:: FUNCT_3:th 31
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
union ((" b2) " b1) c= b2 .: union b1;
:: FUNCT_3:th 32
theorem
for b1 being set
for b2 being Relation-like Function-like set
st b1 c= bool proj1 b2 & b2 is one-to-one
holds union ((" b2) " b1) = b2 .: union b1;
:: FUNCT_3:th 33
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
(" b2) .: b1 c= (.: b2) " b1;
:: FUNCT_3:th 34
theorem
for b1 being set
for b2 being Relation-like Function-like set
st b2 is one-to-one
holds (" b2) .: b1 = (.: b2) " b1;
:: FUNCT_3:th 35
theorem
for b1 being Relation-like Function-like set
for b2 being set
st b2 c= bool proj1 b1
holds (" b1) " b2 c= (.: b1) .: b2;
:: FUNCT_3:th 36
theorem
for b1 being Relation-like Function-like set
for b2 being set
st b1 is one-to-one
holds (.: b1) .: b2 c= (" b1) " b2;
:: FUNCT_3:th 37
theorem
for b1 being Relation-like Function-like set
for b2 being set
st b1 is one-to-one & b2 c= bool proj1 b1
holds (" b1) " b2 = (.: b1) .: b2;
:: FUNCT_3:th 38
theorem
for b1, b2 being Relation-like Function-like set
st b2 is one-to-one
holds " (b1 * b2) = (" b2) * " b1;
:: FUNCT_3:th 39
theorem
for b1 being Relation-like Function-like set holds
" b1 is Function-like quasi_total Relation of bool proj2 b1,bool proj1 b1;
:: FUNCT_3:funcnot 4 => FUNCT_3:func 4
definition
let a1, a2 be set;
func chi(A1,A2) -> Relation-like Function-like set means
proj1 it = a2 &
(for b1 being set
st b1 in a2
holds (b1 in a1 implies it . b1 = 1) & (b1 in a1 or it . b1 = {}));
end;
:: FUNCT_3:def 3
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set holds
b3 = chi(b1,b2)
iff
proj1 b3 = b2 &
(for b4 being set
st b4 in b2
holds (b4 in b1 implies b3 . b4 = 1) & (b4 in b1 or b3 . b4 = {}));
:: FUNCT_3:th 42
theorem
for b1, b2, b3 being set
st (chi(b2,b3)) . b1 = 1
holds b1 in b2;
:: FUNCT_3:th 43
theorem
for b1, b2, b3 being set
st b1 in b2 \ b3
holds (chi(b3,b2)) . b1 = {};
:: FUNCT_3:th 47
theorem
for b1, b2, b3 being set
st b1 c= b2 & b3 c= b2 & chi(b1,b2) = chi(b3,b2)
holds b1 = b3;
:: FUNCT_3:th 48
theorem
for b1, b2 being set holds
proj2 chi(b1,b2) c= {{},1};
:: FUNCT_3:th 49
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of b1,{{},1} holds
b2 = chi(b2 " {1},b1);
:: FUNCT_3:funcnot 5 => FUNCT_3:func 5
definition
let a1, a2 be set;
redefine func chi(a1,a2) -> Function-like quasi_total Relation of a2,{{},1};
end;
:: FUNCT_3:funcnot 6 => RELAT_1:func 6
notation
let a1 be set;
let a2 be Element of bool a1;
synonym incl a2 for id a1;
end;
:: FUNCT_3:funcnot 7 => FUNCT_3:func 6
definition
let a1 be set;
let a2 be Element of bool a1;
redefine func incl a2 -> Function-like quasi_total Relation of a2,a1;
end;
:: FUNCT_3:th 53
theorem
for b1 being set
for b2 being Element of bool b1 holds
incl b2 = (id b1) | b2;
:: FUNCT_3:th 56
theorem
for b1, b2 being set
for b3 being Element of bool b2
st b1 in b3
holds (incl b3) . b1 in b2;
:: FUNCT_3:funcnot 8 => FUNCT_3:func 7
definition
let a1, a2 be set;
func pr1(A1,A2) -> Relation-like Function-like set means
proj1 it = [:a1,a2:] &
(for b1, b2 being set
st b1 in a1 & b2 in a2
holds it .(b1,b2) = b1);
end;
:: FUNCT_3:def 5
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set holds
b3 = pr1(b1,b2)
iff
proj1 b3 = [:b1,b2:] &
(for b4, b5 being set
st b4 in b1 & b5 in b2
holds b3 .(b4,b5) = b4);
:: FUNCT_3:funcnot 9 => FUNCT_3:func 8
definition
let a1, a2 be set;
func pr2(A1,A2) -> Relation-like Function-like set means
proj1 it = [:a1,a2:] &
(for b1, b2 being set
st b1 in a1 & b2 in a2
holds it .(b1,b2) = b2);
end;
:: FUNCT_3:def 6
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set holds
b3 = pr2(b1,b2)
iff
proj1 b3 = [:b1,b2:] &
(for b4, b5 being set
st b4 in b1 & b5 in b2
holds b3 .(b4,b5) = b5);
:: FUNCT_3:th 59
theorem
for b1, b2 being set holds
proj2 pr1(b1,b2) c= b1;
:: FUNCT_3:th 60
theorem
for b1, b2 being set
st b1 <> {}
holds proj2 pr1(b2,b1) = b2;
:: FUNCT_3:th 61
theorem
for b1, b2 being set holds
proj2 pr2(b1,b2) c= b2;
:: FUNCT_3:th 62
theorem
for b1, b2 being set
st b1 <> {}
holds proj2 pr2(b1,b2) = b2;
:: FUNCT_3:funcnot 10 => FUNCT_3:func 9
definition
let a1, a2 be set;
redefine func pr1(a1,a2) -> Function-like quasi_total Relation of [:a1,a2:],a1;
end;
:: FUNCT_3:funcnot 11 => FUNCT_3:func 10
definition
let a1, a2 be set;
redefine func pr2(a1,a2) -> Function-like quasi_total Relation of [:a1,a2:],a2;
end;
:: FUNCT_3:funcnot 12 => FUNCT_3:func 11
definition
let a1 be set;
func delta A1 -> Relation-like Function-like set means
proj1 it = a1 &
(for b1 being set
st b1 in a1
holds it . b1 = [b1,b1]);
end;
:: FUNCT_3:def 7
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
b2 = delta b1
iff
proj1 b2 = b1 &
(for b3 being set
st b3 in b1
holds b2 . b3 = [b3,b3]);
:: FUNCT_3:th 66
theorem
for b1 being set holds
proj2 delta b1 c= [:b1,b1:];
:: FUNCT_3:funcnot 13 => FUNCT_3:func 12
definition
let a1 be set;
redefine func delta a1 -> Function-like quasi_total Relation of a1,[:a1,a1:];
end;
:: FUNCT_3:funcnot 14 => FUNCT_3:func 13
definition
let a1, a2 be Relation-like Function-like set;
func <:A1,A2:> -> Relation-like Function-like set means
proj1 it = (proj1 a1) /\ proj1 a2 &
(for b1 being set
st b1 in proj1 it
holds it . b1 = [a1 . b1,a2 . b1]);
end;
:: FUNCT_3:def 8
theorem
for b1, b2, b3 being Relation-like Function-like set holds
b3 = <:b1,b2:>
iff
proj1 b3 = (proj1 b1) /\ proj1 b2 &
(for b4 being set
st b4 in proj1 b3
holds b3 . b4 = [b1 . b4,b2 . b4]);
:: FUNCT_3:th 68
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set
st b1 in (proj1 b2) /\ proj1 b3
holds <:b2,b3:> . b1 = [b2 . b1,b3 . b1];
:: FUNCT_3:th 69
theorem
for b1, b2 being set
for b3, b4 being Relation-like Function-like set
st proj1 b3 = b2 & proj1 b4 = b2 & b1 in b2
holds <:b3,b4:> . b1 = [b3 . b1,b4 . b1];
:: FUNCT_3:th 70
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set
st proj1 b2 = b1 & proj1 b3 = b1
holds proj1 <:b2,b3:> = b1;
:: FUNCT_3:th 71
theorem
for b1, b2 being Relation-like Function-like set holds
proj2 <:b1,b2:> c= [:proj2 b1,proj2 b2:];
:: FUNCT_3:th 72
theorem
for b1, b2 being set
for b3, b4 being Relation-like Function-like set
st proj1 b3 = proj1 b4 & proj2 b3 c= b1 & proj2 b4 c= b2
holds <:b3,b4:> * pr1(b1,b2) = b3 & <:b3,b4:> * pr2(b1,b2) = b4;
:: FUNCT_3:th 73
theorem
for b1, b2 being set holds
<:pr1(b1,b2),pr2(b1,b2):> = id [:b1,b2:];
:: FUNCT_3:th 74
theorem
for b1, b2, b3, b4 being Relation-like Function-like set
st proj1 b1 = proj1 b2 & proj1 b4 = proj1 b3 & <:b1,b2:> = <:b4,b3:>
holds b1 = b4 & b2 = b3;
:: FUNCT_3:th 75
theorem
for b1, b2, b3 being Relation-like Function-like set holds
<:b3 * b1,b3 * b2:> = b3 * <:b1,b2:>;
:: FUNCT_3:th 76
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set holds
<:b2,b3:> .: b1 c= [:b2 .: b1,b3 .: b1:];
:: FUNCT_3:th 77
theorem
for b1 being set
for b2 being non empty set
for b3, b4 being Relation-like Function-like set holds
<:b3,b4:> " [:b1,b2:] = (b3 " b1) /\ (b4 " b2);
:: FUNCT_3:th 78
theorem
for b1, b2, b3 being set
for b4 being Function-like quasi_total Relation of b1,b2
for b5 being Function-like quasi_total Relation of b1,b3
st (b2 = {} implies b1 = {}) & (b3 = {} implies b1 = {})
holds <:b4,b5:> is Function-like quasi_total Relation of b1,[:b2,b3:];
:: FUNCT_3:funcnot 15 => FUNCT_3:func 14
definition
let a1 be set;
let a2, a3 be non empty set;
let a4 be Function-like quasi_total Relation of a1,a2;
let a5 be Function-like quasi_total Relation of a1,a3;
redefine func <:a4, a5:> -> Function-like quasi_total Relation of a1,[:a2,a3:];
end;
:: FUNCT_3:th 79
theorem
for b1, b2, b3 being non empty set
for b4 being Function-like quasi_total Relation of b1,b2
for b5 being Function-like quasi_total Relation of b1,b3
for b6 being Element of b1 holds
<:b4,b5:> . b6 = [b4 . b6,b5 . b6];
:: FUNCT_3:th 80
theorem
for b1, b2, b3 being set
for b4 being Function-like quasi_total Relation of b1,b2
for b5 being Function-like quasi_total Relation of b1,b3 holds
proj2 <:b4,b5:> c= [:b2,b3:];
:: FUNCT_3:th 81
theorem
for b1, b2, b3 being set
for b4 being Function-like quasi_total Relation of b1,b2
for b5 being Function-like quasi_total Relation of b1,b3
st (b2 = {} implies b1 = {}) & (b3 = {} implies b1 = {})
holds <:b4,b5:> * pr1(b2,b3) = b4 & <:b4,b5:> * pr2(b2,b3) = b5;
:: FUNCT_3:th 82
theorem
for b1 being set
for b2, b3 being non empty set
for b4 being Function-like quasi_total Relation of b1,b2
for b5 being Function-like quasi_total Relation of b1,b3 holds
<:b4,b5:> * pr1(b2,b3) = b4 & <:b4,b5:> * pr2(b2,b3) = b5;
:: FUNCT_3:th 83
theorem
for b1, b2, b3 being set
for b4, b5 being Function-like quasi_total Relation of b1,b2
for b6, b7 being Function-like quasi_total Relation of b1,b3
st (b2 = {} implies b1 = {}) & (b3 = {} implies b1 = {}) & <:b4,b6:> = <:b5,b7:>
holds b4 = b5 & b6 = b7;
:: FUNCT_3:th 84
theorem
for b1 being set
for b2, b3 being non empty set
for b4, b5 being Function-like quasi_total Relation of b1,b2
for b6, b7 being Function-like quasi_total Relation of b1,b3
st <:b4,b6:> = <:b5,b7:>
holds b4 = b5 & b6 = b7;
:: FUNCT_3:funcnot 16 => FUNCT_3:func 15
definition
let a1, a2 be Relation-like Function-like set;
func [:A1,A2:] -> Relation-like Function-like set means
proj1 it = [:proj1 a1,proj1 a2:] &
(for b1, b2 being set
st b1 in proj1 a1 & b2 in proj1 a2
holds it .(b1,b2) = [a1 . b1,a2 . b2]);
end;
:: FUNCT_3:def 9
theorem
for b1, b2, b3 being Relation-like Function-like set holds
b3 = [:b1,b2:]
iff
proj1 b3 = [:proj1 b1,proj1 b2:] &
(for b4, b5 being set
st b4 in proj1 b1 & b5 in proj1 b2
holds b3 .(b4,b5) = [b1 . b4,b2 . b5]);
:: FUNCT_3:th 86
theorem
for b1, b2 being Relation-like Function-like set
for b3, b4 being set
st [b3,b4] in [:proj1 b1,proj1 b2:]
holds [:b1,b2:] .(b3,b4) = [b1 . b3,b2 . b4];
:: FUNCT_3:th 87
theorem
for b1, b2 being Relation-like Function-like set holds
[:b1,b2:] = <:(pr1(proj1 b1,proj1 b2)) * b1,(pr2(proj1 b1,proj1 b2)) * b2:>;
:: FUNCT_3:th 88
theorem
for b1, b2 being Relation-like Function-like set holds
proj2 [:b1,b2:] = [:proj2 b1,proj2 b2:];
:: FUNCT_3:th 89
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set
st proj1 b2 = b1 & proj1 b3 = b1
holds <:b2,b3:> = (delta b1) * [:b2,b3:];
:: FUNCT_3:th 90
theorem
for b1, b2 being set holds
[:id b1,id b2:] = id [:b1,b2:];
:: FUNCT_3:th 91
theorem
for b1, b2, b3, b4 being Relation-like Function-like set holds
<:b2,b4:> * [:b1,b3:] = <:b2 * b1,b4 * b3:>;
:: FUNCT_3:th 92
theorem
for b1, b2, b3, b4 being Relation-like Function-like set holds
[:b2,b4:] * [:b1,b3:] = [:b2 * b1,b4 * b3:];
:: FUNCT_3:th 93
theorem
for b1, b2 being set
for b3, b4 being Relation-like Function-like set holds
[:b3,b4:] .: [:b1,b2:] = [:b3 .: b1,b4 .: b2:];
:: FUNCT_3:th 94
theorem
for b1, b2 being set
for b3, b4 being Relation-like Function-like set holds
[:b3,b4:] " [:b1,b2:] = [:b3 " b1,b4 " b2:];
:: FUNCT_3:th 95
theorem
for b1, b2, b3, b4 being set
for b5 being Function-like quasi_total Relation of b1,b2
for b6 being Function-like quasi_total Relation of b3,b4 holds
[:b5,b6:] is Function-like quasi_total Relation of [:b1,b3:],[:b2,b4:];
:: FUNCT_3:funcnot 17 => FUNCT_3:func 16
definition
let a1, a2, a3, a4 be set;
let a5 be Function-like quasi_total Relation of a1,a3;
let a6 be Function-like quasi_total Relation of a2,a4;
redefine func [:a5, a6:] -> Function-like quasi_total Relation of [:a1,a2:],[:a3,a4:];
end;
:: FUNCT_3:th 96
theorem
for b1, b2, b3, b4 being non empty set
for b5 being Function-like quasi_total Relation of b1,b2
for b6 being Function-like quasi_total Relation of b3,b4
for b7 being Element of b1
for b8 being Element of b3 holds
[:b5,b6:] .(b7,b8) = [b5 . b7,b6 . b8];
:: FUNCT_3:th 97
theorem
for b1, b2, b3, b4 being set
for b5 being Function-like quasi_total Relation of b1,b2
for b6 being Function-like quasi_total Relation of b3,b4
st (b2 = {} implies b1 = {}) & (b4 = {} implies b3 = {})
holds [:b5,b6:] = <:(pr1(b1,b3)) * b5,(pr2(b1,b3)) * b6:>;
:: FUNCT_3:th 98
theorem
for b1, b2 being set
for b3, b4 being non empty set
for b5 being Function-like quasi_total Relation of b1,b3
for b6 being Function-like quasi_total Relation of b2,b4 holds
[:b5,b6:] = <:(pr1(b1,b2)) * b5,(pr2(b1,b2)) * b6:>;
:: FUNCT_3:th 99
theorem
for b1, b2, b3 being set
for b4 being Function-like quasi_total Relation of b1,b2
for b5 being Function-like quasi_total Relation of b1,b3 holds
<:b4,b5:> = (delta b1) * [:b4,b5:];
:: FUNCT_3:th 100
theorem
for b1 being Relation-like Function-like set holds
(pr1(proj1 b1,proj2 b1)) .: b1 = proj1 b1;