Article RELAT_1, MML version 4.99.1005
:: RELAT_1:attrnot 1 => RELAT_1:attr 1
definition
let a1 be set;
attr a1 is Relation-like means
for b1 being set
st b1 in a1
holds ex b2, b3 being set st
b1 = [b2,b3];
end;
:: RELAT_1:dfs 1
definiens
let a1 be set;
To prove
a1 is Relation-like
it is sufficient to prove
thus for b1 being set
st b1 in a1
holds ex b2, b3 being set st
b1 = [b2,b3];
:: RELAT_1:def 1
theorem
for b1 being set holds
b1 is Relation-like
iff
for b2 being set
st b2 in b1
holds ex b3, b4 being set st
b2 = [b3,b4];
:: RELAT_1:exreg 1
registration
cluster empty Relation-like set;
end;
:: RELAT_1:modenot 1
definition
mode Relation is Relation-like set;
end;
:: RELAT_1:th 3
theorem
for b1 being set
for b2 being Relation-like set
st b1 c= b2
holds b1 is Relation-like;
:: RELAT_1:th 4
theorem
for b1, b2 being set holds
{[b1,b2]} is Relation-like;
:: RELAT_1:th 5
theorem
for b1, b2, b3, b4 being set holds
{[b1,b2],[b3,b4]} is Relation-like;
:: RELAT_1:th 6
theorem
for b1, b2 being set holds
[:b1,b2:] is Relation-like;
:: RELAT_1:funcreg 1
registration
let a1, a2 be set;
cluster {[a1,a2]} -> Relation-like;
end;
:: RELAT_1:funcreg 2
registration
let a1, a2 be set;
cluster [:a1,a2:] -> Relation-like;
end;
:: RELAT_1:funcreg 3
registration
let a1, a2, a3, a4 be set;
cluster {[a1,a2],[a3,a4]} -> Relation-like;
end;
:: RELAT_1:sch 1
scheme RELAT_1:sch 1
{F1 -> set,
F2 -> set}:
ex b1 being Relation-like set st
for b2, b3 being set holds
[b2,b3] in b1
iff
b2 in F1() & b3 in F2() & P1[b2, b3]
:: RELAT_1:prednot 1 => HIDDEN:pred 1
definition
let a1, a2 be set;
pred A1 = A2 means
for b1, b2 being set holds
[b1,b2] in a1
iff
[b1,b2] in a2;
symmetry;
:: for a1, a2 being set
:: st a1 = a2
:: holds a2 = a1;
reflexivity;
:: for a1 being set holds
:: a1 = a1;
end;
:: RELAT_1:dfs 2
definiens
let a1, a2 be Relation-like set;
To prove
a1 = a2
it is sufficient to prove
thus for b1, b2 being set holds
[b1,b2] in a1
iff
[b1,b2] in a2;
:: RELAT_1:def 2
theorem
for b1, b2 being Relation-like set holds
b1 = b2
iff
for b3, b4 being set holds
[b3,b4] in b1
iff
[b3,b4] in b2;
:: RELAT_1:funcreg 4
registration
let a1, a2 be Relation-like set;
cluster a1 /\ a2 -> Relation-like;
end;
:: RELAT_1:funcreg 5
registration
let a1, a2 be Relation-like set;
cluster a1 \/ a2 -> Relation-like;
end;
:: RELAT_1:funcreg 6
registration
let a1, a2 be Relation-like set;
cluster a1 \ a2 -> Relation-like;
end;
:: RELAT_1:funcreg 7
registration
let a1, a2 be Relation-like set;
cluster a1 \+\ a2 -> Relation-like;
end;
:: RELAT_1:prednot 2 => TARSKI:pred 1
definition
let a1, a2 be set;
pred A1 c= A2 means
for b1, b2 being set
st [b1,b2] in a1
holds [b1,b2] in a2;
reflexivity;
:: for a1 being set holds
:: a1 c= a1;
end;
:: RELAT_1:dfs 3
definiens
let a1 be Relation-like set;
let a2 be set;
To prove
a1 c= a2
it is sufficient to prove
thus for b1, b2 being set
st [b1,b2] in a1
holds [b1,b2] in a2;
:: RELAT_1:def 3
theorem
for b1 being Relation-like set
for b2 being set holds
b1 c= b2
iff
for b3, b4 being set
st [b3,b4] in b1
holds [b3,b4] in b2;
:: RELAT_1:th 9
theorem
for b1 being set
for b2 being Relation-like set holds
b1 /\ b2 is Relation-like set;
:: RELAT_1:th 10
theorem
for b1 being set
for b2 being Relation-like set holds
b2 \ b1 is Relation-like set;
:: RELAT_1:funcnot 1 => RELAT_1:func 1
definition
let a1 be set;
func proj1 A1 -> set means
for b1 being set holds
b1 in it
iff
ex b2 being set st
[b1,b2] in a1;
end;
:: RELAT_1:def 4
theorem
for b1, b2 being set holds
b2 = proj1 b1
iff
for b3 being set holds
b3 in b2
iff
ex b4 being set st
[b3,b4] in b1;
:: RELAT_1:funcnot 2 => RELAT_1:func 1
notation
let a1 be Relation-like set;
synonym dom a1 for proj1 a1;
end;
:: RELAT_1:th 13
theorem
for b1, b2 being Relation-like set holds
proj1 (b1 \/ b2) = (proj1 b1) \/ proj1 b2;
:: RELAT_1:th 14
theorem
for b1, b2 being Relation-like set holds
proj1 (b1 /\ b2) c= (proj1 b1) /\ proj1 b2;
:: RELAT_1:th 15
theorem
for b1, b2 being Relation-like set holds
(proj1 b1) \ proj1 b2 c= proj1 (b1 \ b2);
:: RELAT_1:funcnot 3 => RELAT_1:func 2
definition
let a1 be set;
func proj2 A1 -> set means
for b1 being set holds
b1 in it
iff
ex b2 being set st
[b2,b1] in a1;
end;
:: RELAT_1:def 5
theorem
for b1, b2 being set holds
b2 = proj2 b1
iff
for b3 being set holds
b3 in b2
iff
ex b4 being set st
[b4,b3] in b1;
:: RELAT_1:funcnot 4 => RELAT_1:func 2
notation
let a1 be Relation-like set;
synonym rng a1 for proj2 a1;
end;
:: RELAT_1:th 18
theorem
for b1 being set
for b2 being Relation-like set
st b1 in proj1 b2
holds ex b3 being set st
b3 in proj2 b2;
:: RELAT_1:th 19
theorem
for b1 being set
for b2 being Relation-like set
st b1 in proj2 b2
holds ex b3 being set st
b3 in proj1 b2;
:: RELAT_1:th 20
theorem
for b1, b2 being set
for b3 being Relation-like set
st [b1,b2] in b3
holds b1 in proj1 b3 & b2 in proj2 b3;
:: RELAT_1:th 21
theorem
for b1 being Relation-like set holds
b1 c= [:proj1 b1,proj2 b1:];
:: RELAT_1:th 22
theorem
for b1 being Relation-like set holds
b1 /\ [:proj1 b1,proj2 b1:] = b1;
:: RELAT_1:th 23
theorem
for b1, b2 being set
for b3 being Relation-like set
st b3 = {[b1,b2]}
holds proj1 b3 = {b1} & proj2 b3 = {b2};
:: RELAT_1:th 24
theorem
for b1, b2, b3, b4 being set
for b5 being Relation-like set
st b5 = {[b1,b2],[b3,b4]}
holds proj1 b5 = {b1,b3} & proj2 b5 = {b2,b4};
:: RELAT_1:th 25
theorem
for b1, b2 being Relation-like set
st b1 c= b2
holds proj1 b1 c= proj1 b2 & proj2 b1 c= proj2 b2;
:: RELAT_1:th 26
theorem
for b1, b2 being Relation-like set holds
proj2 (b1 \/ b2) = (proj2 b1) \/ proj2 b2;
:: RELAT_1:th 27
theorem
for b1, b2 being Relation-like set holds
proj2 (b1 /\ b2) c= (proj2 b1) /\ proj2 b2;
:: RELAT_1:th 28
theorem
for b1, b2 being Relation-like set holds
(proj2 b1) \ proj2 b2 c= proj2 (b1 \ b2);
:: RELAT_1:funcnot 5 => RELAT_1:func 3
definition
let a1 be Relation-like set;
func field A1 -> set equals
(proj1 a1) \/ proj2 a1;
end;
:: RELAT_1:def 6
theorem
for b1 being Relation-like set holds
field b1 = (proj1 b1) \/ proj2 b1;
:: RELAT_1:th 30
theorem
for b1, b2 being set
for b3 being Relation-like set
st [b1,b2] in b3
holds b1 in field b3 & b2 in field b3;
:: RELAT_1:th 31
theorem
for b1, b2 being Relation-like set
st b1 c= b2
holds field b1 c= field b2;
:: RELAT_1:th 32
theorem
for b1, b2 being set holds
field {[b1,b2]} = {b1,b2};
:: RELAT_1:th 33
theorem
for b1, b2 being Relation-like set holds
field (b1 \/ b2) = (field b1) \/ field b2;
:: RELAT_1:th 34
theorem
for b1, b2 being Relation-like set holds
field (b1 /\ b2) c= (field b1) /\ field b2;
:: RELAT_1:funcnot 6 => RELAT_1:func 4
definition
let a1 be Relation-like set;
func A1 ~ -> Relation-like set means
for b1, b2 being set holds
[b1,b2] in it
iff
[b2,b1] in a1;
involutiveness;
:: for a1 being Relation-like set holds
:: a1 ~ ~ = a1;
end;
:: RELAT_1:def 7
theorem
for b1, b2 being Relation-like set holds
b2 = b1 ~
iff
for b3, b4 being set holds
[b3,b4] in b2
iff
[b4,b3] in b1;
:: RELAT_1:th 37
theorem
for b1 being Relation-like set holds
proj2 b1 = proj1 (b1 ~) & proj1 b1 = proj2 (b1 ~);
:: RELAT_1:th 38
theorem
for b1 being Relation-like set holds
field b1 = field (b1 ~);
:: RELAT_1:th 39
theorem
for b1, b2 being Relation-like set holds
(b1 /\ b2) ~ = b1 ~ /\ (b2 ~);
:: RELAT_1:th 40
theorem
for b1, b2 being Relation-like set holds
(b1 \/ b2) ~ = b1 ~ \/ (b2 ~);
:: RELAT_1:th 41
theorem
for b1, b2 being Relation-like set holds
(b1 \ b2) ~ = b1 ~ \ (b2 ~);
:: RELAT_1:funcnot 7 => RELAT_1:func 5
definition
let a1, a2 be Relation-like set;
func A1 * A2 -> Relation-like set means
for b1, b2 being set holds
[b1,b2] in it
iff
ex b3 being set st
[b1,b3] in a1 & [b3,b2] in a2;
end;
:: RELAT_1:def 8
theorem
for b1, b2, b3 being Relation-like set holds
b3 = b1 * b2
iff
for b4, b5 being set holds
[b4,b5] in b3
iff
ex b6 being set st
[b4,b6] in b1 & [b6,b5] in b2;
:: RELAT_1:th 44
theorem
for b1, b2 being Relation-like set holds
proj1 (b1 * b2) c= proj1 b1;
:: RELAT_1:th 45
theorem
for b1, b2 being Relation-like set holds
proj2 (b1 * b2) c= proj2 b2;
:: RELAT_1:th 46
theorem
for b1, b2 being Relation-like set
st proj2 b1 c= proj1 b2
holds proj1 (b1 * b2) = proj1 b1;
:: RELAT_1:th 47
theorem
for b1, b2 being Relation-like set
st proj1 b1 c= proj2 b2
holds proj2 (b2 * b1) = proj2 b1;
:: RELAT_1:th 48
theorem
for b1, b2, b3 being Relation-like set
st b1 c= b2
holds b3 * b1 c= b3 * b2;
:: RELAT_1:th 49
theorem
for b1, b2, b3 being Relation-like set
st b1 c= b2
holds b1 * b3 c= b2 * b3;
:: RELAT_1:th 50
theorem
for b1, b2, b3, b4 being Relation-like set
st b1 c= b2 & b3 c= b4
holds b1 * b3 c= b2 * b4;
:: RELAT_1:th 51
theorem
for b1, b2, b3 being Relation-like set holds
b1 * (b2 \/ b3) = (b1 * b2) \/ (b1 * b3);
:: RELAT_1:th 52
theorem
for b1, b2, b3 being Relation-like set holds
b1 * (b2 /\ b3) c= (b1 * b2) /\ (b1 * b3);
:: RELAT_1:th 53
theorem
for b1, b2, b3 being Relation-like set holds
(b1 * b2) \ (b1 * b3) c= b1 * (b2 \ b3);
:: RELAT_1:th 54
theorem
for b1, b2 being Relation-like set holds
(b1 * b2) ~ = b2 ~ * (b1 ~);
:: RELAT_1:th 55
theorem
for b1, b2, b3 being Relation-like set holds
(b1 * b2) * b3 = b1 * (b2 * b3);
:: RELAT_1:condreg 1
registration
cluster empty -> Relation-like (set);
end;
:: RELAT_1:funcreg 8
registration
cluster {} -> Relation-like;
end;
:: RELAT_1:exreg 2
registration
cluster non empty Relation-like set;
end;
:: RELAT_1:funcreg 9
registration
let a1 be non empty Relation-like set;
cluster proj1 a1 -> non empty;
end;
:: RELAT_1:funcreg 10
registration
let a1 be non empty Relation-like set;
cluster proj2 a1 -> non empty;
end;
:: RELAT_1:th 56
theorem
for b1 being Relation-like set
st for b2, b3 being set holds
not [b2,b3] in b1
holds b1 = {};
:: RELAT_1:th 60
theorem
proj1 {} = {} & proj2 {} = {};
:: RELAT_1:th 62
theorem
for b1 being Relation-like set holds
{} * b1 = {} & b1 * {} = {};
:: RELAT_1:funcreg 11
registration
let a1 be empty set;
cluster proj1 a1 -> empty;
end;
:: RELAT_1:funcreg 12
registration
let a1 be empty set;
cluster proj2 a1 -> empty;
end;
:: RELAT_1:funcreg 13
registration
let a1 be empty set;
let a2 be Relation-like set;
cluster a1 * a2 -> empty Relation-like;
end;
:: RELAT_1:funcreg 14
registration
let a1 be empty set;
let a2 be Relation-like set;
cluster a2 * a1 -> empty Relation-like;
end;
:: RELAT_1:th 63
theorem
field {} = {};
:: RELAT_1:th 64
theorem
for b1 being Relation-like set
st (proj1 b1 = {} or proj2 b1 = {})
holds b1 = {};
:: RELAT_1:th 65
theorem
for b1 being Relation-like set holds
proj1 b1 = {}
iff
proj2 b1 = {};
:: RELAT_1:th 66
theorem
{} ~ = {};
:: RELAT_1:funcreg 15
registration
let a1 be empty set;
cluster a1 ~ -> empty Relation-like;
end;
:: RELAT_1:th 67
theorem
for b1, b2 being Relation-like set
st proj2 b1 misses proj1 b2
holds b1 * b2 = {};
:: RELAT_1:attrnot 2 => RELAT_1:attr 2
definition
let a1 be Relation-like set;
attr a1 is non-empty means
not {} in proj2 a1;
end;
:: RELAT_1:dfs 9
definiens
let a1 be Relation-like set;
To prove
a1 is non-empty
it is sufficient to prove
thus not {} in proj2 a1;
:: RELAT_1:def 9
theorem
for b1 being Relation-like set holds
b1 is non-empty
iff
not {} in proj2 b1;
:: RELAT_1:exreg 3
registration
cluster Relation-like non-empty set;
end;
:: RELAT_1:funcreg 16
registration
let a1 be Relation-like set;
let a2 be Relation-like non-empty set;
cluster a1 * a2 -> Relation-like non-empty;
end;
:: RELAT_1:funcnot 8 => RELAT_1:func 6
definition
let a1 be set;
func id A1 -> Relation-like set means
for b1, b2 being set holds
[b1,b2] in it
iff
b1 in a1 & b1 = b2;
end;
:: RELAT_1:def 10
theorem
for b1 being set
for b2 being Relation-like set holds
b2 = id b1
iff
for b3, b4 being set holds
[b3,b4] in b2
iff
b3 in b1 & b3 = b4;
:: RELAT_1:th 71
theorem
for b1 being set holds
proj1 id b1 = b1 & proj2 id b1 = b1;
:: RELAT_1:th 72
theorem
for b1 being set holds
(id b1) ~ = id b1;
:: RELAT_1:th 73
theorem
for b1 being set
for b2 being Relation-like set
st for b3 being set
st b3 in b1
holds [b3,b3] in b2
holds id b1 c= b2;
:: RELAT_1:th 74
theorem
for b1, b2, b3 being set
for b4 being Relation-like set holds
[b1,b2] in (id b3) * b4
iff
b1 in b3 & [b1,b2] in b4;
:: RELAT_1:th 75
theorem
for b1, b2, b3 being set
for b4 being Relation-like set holds
[b1,b2] in b4 * id b3
iff
b2 in b3 & [b1,b2] in b4;
:: RELAT_1:th 76
theorem
for b1 being set
for b2 being Relation-like set holds
b2 * id b1 c= b2 & (id b1) * b2 c= b2;
:: RELAT_1:th 77
theorem
for b1 being set
for b2 being Relation-like set
st proj1 b2 c= b1
holds (id b1) * b2 = b2;
:: RELAT_1:th 78
theorem
for b1 being Relation-like set holds
(id proj1 b1) * b1 = b1;
:: RELAT_1:th 79
theorem
for b1 being set
for b2 being Relation-like set
st proj2 b2 c= b1
holds b2 * id b1 = b2;
:: RELAT_1:th 80
theorem
for b1 being Relation-like set holds
b1 * id proj2 b1 = b1;
:: RELAT_1:th 81
theorem
id {} = {};
:: RELAT_1:th 82
theorem
for b1 being set
for b2, b3, b4 being Relation-like set
st proj1 b2 = b1 & proj2 b3 c= b1 & b3 * b2 = id proj1 b4 & b2 * b4 = id b1
holds b4 = b3;
:: RELAT_1:funcnot 9 => RELAT_1:func 7
definition
let a1 be Relation-like set;
let a2 be set;
func A1 | A2 -> Relation-like set means
for b1, b2 being set holds
[b1,b2] in it
iff
b1 in a2 & [b1,b2] in a1;
end;
:: RELAT_1:def 11
theorem
for b1 being Relation-like set
for b2 being set
for b3 being Relation-like set holds
b3 = b1 | b2
iff
for b4, b5 being set holds
[b4,b5] in b3
iff
b4 in b2 & [b4,b5] in b1;
:: RELAT_1:th 86
theorem
for b1, b2 being set
for b3 being Relation-like set holds
b1 in proj1 (b3 | b2)
iff
b1 in b2 & b1 in proj1 b3;
:: RELAT_1:th 87
theorem
for b1 being set
for b2 being Relation-like set holds
proj1 (b2 | b1) c= b1;
:: RELAT_1:th 88
theorem
for b1 being set
for b2 being Relation-like set holds
b2 | b1 c= b2;
:: RELAT_1:th 89
theorem
for b1 being set
for b2 being Relation-like set holds
proj1 (b2 | b1) c= proj1 b2;
:: RELAT_1:th 90
theorem
for b1 being set
for b2 being Relation-like set holds
proj1 (b2 | b1) = (proj1 b2) /\ b1;
:: RELAT_1:th 91
theorem
for b1 being set
for b2 being Relation-like set
st b1 c= proj1 b2
holds proj1 (b2 | b1) = b1;
:: RELAT_1:th 92
theorem
for b1 being set
for b2, b3 being Relation-like set holds
(b2 | b1) * b3 c= b2 * b3;
:: RELAT_1:th 93
theorem
for b1 being set
for b2, b3 being Relation-like set holds
b2 * (b3 | b1) c= b2 * b3;
:: RELAT_1:th 94
theorem
for b1 being set
for b2 being Relation-like set holds
b2 | b1 = (id b1) * b2;
:: RELAT_1:th 95
theorem
for b1 being set
for b2 being Relation-like set holds
b2 | b1 = {}
iff
proj1 b2 misses b1;
:: RELAT_1:th 96
theorem
for b1 being set
for b2 being Relation-like set holds
b2 | b1 = b2 /\ [:b1,proj2 b2:];
:: RELAT_1:th 97
theorem
for b1 being set
for b2 being Relation-like set
st proj1 b2 c= b1
holds b2 | b1 = b2;
:: RELAT_1:th 98
theorem
for b1 being Relation-like set holds
b1 | proj1 b1 = b1;
:: RELAT_1:th 99
theorem
for b1 being set
for b2 being Relation-like set holds
proj2 (b2 | b1) c= proj2 b2;
:: RELAT_1:th 100
theorem
for b1, b2 being set
for b3 being Relation-like set holds
(b3 | b1) | b2 = b3 | (b1 /\ b2);
:: RELAT_1:th 101
theorem
for b1 being set
for b2 being Relation-like set holds
(b2 | b1) | b1 = b2 | b1;
:: RELAT_1:th 102
theorem
for b1, b2 being set
for b3 being Relation-like set
st b1 c= b2
holds (b3 | b1) | b2 = b3 | b1;
:: RELAT_1:th 103
theorem
for b1, b2 being set
for b3 being Relation-like set
st b1 c= b2
holds (b3 | b2) | b1 = b3 | b1;
:: RELAT_1:th 104
theorem
for b1, b2 being set
for b3 being Relation-like set
st b1 c= b2
holds b3 | b1 c= b3 | b2;
:: RELAT_1:th 105
theorem
for b1 being set
for b2, b3 being Relation-like set
st b2 c= b3
holds b2 | b1 c= b3 | b1;
:: RELAT_1:th 106
theorem
for b1, b2 being set
for b3, b4 being Relation-like set
st b3 c= b4 & b1 c= b2
holds b3 | b1 c= b4 | b2;
:: RELAT_1:th 107
theorem
for b1, b2 being set
for b3 being Relation-like set holds
b3 | (b1 \/ b2) = (b3 | b1) \/ (b3 | b2);
:: RELAT_1:th 108
theorem
for b1, b2 being set
for b3 being Relation-like set holds
b3 | (b1 /\ b2) = (b3 | b1) /\ (b3 | b2);
:: RELAT_1:th 109
theorem
for b1, b2 being set
for b3 being Relation-like set holds
b3 | (b1 \ b2) = (b3 | b1) \ (b3 | b2);
:: RELAT_1:th 110
theorem
for b1 being Relation-like set holds
b1 | {} = {};
:: RELAT_1:th 111
theorem
for b1 being set holds
{} | b1 = {};
:: RELAT_1:th 112
theorem
for b1 being set
for b2, b3 being Relation-like set holds
(b2 * b3) | b1 = (b2 | b1) * b3;
:: RELAT_1:funcnot 10 => RELAT_1:func 8
definition
let a1 be set;
let a2 be Relation-like set;
func A1 | A2 -> Relation-like set means
for b1, b2 being set holds
[b1,b2] in it
iff
b2 in a1 & [b1,b2] in a2;
end;
:: RELAT_1:def 12
theorem
for b1 being set
for b2, b3 being Relation-like set holds
b3 = b1 | b2
iff
for b4, b5 being set holds
[b4,b5] in b3
iff
b5 in b1 & [b4,b5] in b2;
:: RELAT_1:th 115
theorem
for b1, b2 being set
for b3 being Relation-like set holds
b1 in proj2 (b2 | b3)
iff
b1 in b2 & b1 in proj2 b3;
:: RELAT_1:th 116
theorem
for b1 being set
for b2 being Relation-like set holds
proj2 (b1 | b2) c= b1;
:: RELAT_1:th 117
theorem
for b1 being set
for b2 being Relation-like set holds
b1 | b2 c= b2;
:: RELAT_1:th 118
theorem
for b1 being set
for b2 being Relation-like set holds
proj2 (b1 | b2) c= proj2 b2;
:: RELAT_1:th 119
theorem
for b1 being set
for b2 being Relation-like set holds
proj2 (b1 | b2) = (proj2 b2) /\ b1;
:: RELAT_1:th 120
theorem
for b1 being set
for b2 being Relation-like set
st b1 c= proj2 b2
holds proj2 (b1 | b2) = b1;
:: RELAT_1:th 121
theorem
for b1 being set
for b2, b3 being Relation-like set holds
(b1 | b2) * b3 c= b2 * b3;
:: RELAT_1:th 122
theorem
for b1 being set
for b2, b3 being Relation-like set holds
b2 * (b1 | b3) c= b2 * b3;
:: RELAT_1:th 123
theorem
for b1 being set
for b2 being Relation-like set holds
b1 | b2 = b2 * id b1;
:: RELAT_1:th 124
theorem
for b1 being set
for b2 being Relation-like set holds
b1 | b2 = b2 /\ [:proj1 b2,b1:];
:: RELAT_1:th 125
theorem
for b1 being set
for b2 being Relation-like set
st proj2 b2 c= b1
holds b1 | b2 = b2;
:: RELAT_1:th 126
theorem
for b1 being Relation-like set holds
(proj2 b1) | b1 = b1;
:: RELAT_1:th 127
theorem
for b1, b2 being set
for b3 being Relation-like set holds
b1 | (b2 | b3) = (b1 /\ b2) | b3;
:: RELAT_1:th 128
theorem
for b1 being set
for b2 being Relation-like set holds
b1 | (b1 | b2) = b1 | b2;
:: RELAT_1:th 129
theorem
for b1, b2 being set
for b3 being Relation-like set
st b1 c= b2
holds b2 | (b1 | b3) = b1 | b3;
:: RELAT_1:th 130
theorem
for b1, b2 being set
for b3 being Relation-like set
st b1 c= b2
holds b1 | (b2 | b3) = b1 | b3;
:: RELAT_1:th 131
theorem
for b1, b2 being set
for b3 being Relation-like set
st b1 c= b2
holds b1 | b3 c= b2 | b3;
:: RELAT_1:th 132
theorem
for b1 being set
for b2, b3 being Relation-like set
st b2 c= b3
holds b1 | b2 c= b1 | b3;
:: RELAT_1:th 133
theorem
for b1, b2 being set
for b3, b4 being Relation-like set
st b3 c= b4 & b1 c= b2
holds b1 | b3 c= b2 | b4;
:: RELAT_1:th 134
theorem
for b1, b2 being set
for b3 being Relation-like set holds
(b1 \/ b2) | b3 = (b1 | b3) \/ (b2 | b3);
:: RELAT_1:th 135
theorem
for b1, b2 being set
for b3 being Relation-like set holds
(b1 /\ b2) | b3 = (b1 | b3) /\ (b2 | b3);
:: RELAT_1:th 136
theorem
for b1, b2 being set
for b3 being Relation-like set holds
(b1 \ b2) | b3 = (b1 | b3) \ (b2 | b3);
:: RELAT_1:th 137
theorem
for b1 being Relation-like set holds
{} | b1 = {};
:: RELAT_1:th 138
theorem
for b1 being set holds
b1 | {} = {};
:: RELAT_1:th 139
theorem
for b1 being set
for b2, b3 being Relation-like set holds
b1 | (b2 * b3) = b2 * (b1 | b3);
:: RELAT_1:th 140
theorem
for b1, b2 being set
for b3 being Relation-like set holds
(b1 | b3) | b2 = b1 | (b3 | b2);
:: RELAT_1:funcnot 11 => RELAT_1:func 9
definition
let a1 be Relation-like set;
let a2 be set;
func A1 .: A2 -> set means
for b1 being set holds
b1 in it
iff
ex b2 being set st
[b2,b1] in a1 & b2 in a2;
end;
:: RELAT_1:def 13
theorem
for b1 being Relation-like set
for b2, b3 being set holds
b3 = b1 .: b2
iff
for b4 being set holds
b4 in b3
iff
ex b5 being set st
[b5,b4] in b1 & b5 in b2;
:: RELAT_1:th 143
theorem
for b1, b2 being set
for b3 being Relation-like set holds
b1 in b3 .: b2
iff
ex b4 being set st
b4 in proj1 b3 & [b4,b1] in b3 & b4 in b2;
:: RELAT_1:th 144
theorem
for b1 being set
for b2 being Relation-like set holds
b2 .: b1 c= proj2 b2;
:: RELAT_1:th 145
theorem
for b1 being set
for b2 being Relation-like set holds
b2 .: b1 = b2 .: ((proj1 b2) /\ b1);
:: RELAT_1:th 146
theorem
for b1 being Relation-like set holds
b1 .: proj1 b1 = proj2 b1;
:: RELAT_1:th 147
theorem
for b1 being set
for b2 being Relation-like set holds
b2 .: b1 c= b2 .: proj1 b2;
:: RELAT_1:th 148
theorem
for b1 being set
for b2 being Relation-like set holds
proj2 (b2 | b1) = b2 .: b1;
:: RELAT_1:th 149
theorem
for b1 being Relation-like set holds
b1 .: {} = {};
:: RELAT_1:th 150
theorem
for b1 being set holds
{} .: b1 = {};
:: RELAT_1:th 151
theorem
for b1 being set
for b2 being Relation-like set holds
b2 .: b1 = {}
iff
proj1 b2 misses b1;
:: RELAT_1:th 152
theorem
for b1 being set
for b2 being Relation-like set
st b1 <> {} & b1 c= proj1 b2
holds b2 .: b1 <> {};
:: RELAT_1:th 153
theorem
for b1, b2 being set
for b3 being Relation-like set holds
b3 .: (b1 \/ b2) = (b3 .: b1) \/ (b3 .: b2);
:: RELAT_1:th 154
theorem
for b1, b2 being set
for b3 being Relation-like set holds
b3 .: (b1 /\ b2) c= (b3 .: b1) /\ (b3 .: b2);
:: RELAT_1:th 155
theorem
for b1, b2 being set
for b3 being Relation-like set holds
(b3 .: b1) \ (b3 .: b2) c= b3 .: (b1 \ b2);
:: RELAT_1:th 156
theorem
for b1, b2 being set
for b3 being Relation-like set
st b1 c= b2
holds b3 .: b1 c= b3 .: b2;
:: RELAT_1:th 157
theorem
for b1 being set
for b2, b3 being Relation-like set
st b2 c= b3
holds b2 .: b1 c= b3 .: b1;
:: RELAT_1:th 158
theorem
for b1, b2 being set
for b3, b4 being Relation-like set
st b3 c= b4 & b1 c= b2
holds b3 .: b1 c= b4 .: b2;
:: RELAT_1:th 159
theorem
for b1 being set
for b2, b3 being Relation-like set holds
(b2 * b3) .: b1 = b3 .: (b2 .: b1);
:: RELAT_1:th 160
theorem
for b1, b2 being Relation-like set holds
proj2 (b1 * b2) = b2 .: proj2 b1;
:: RELAT_1:th 161
theorem
for b1, b2 being set
for b3 being Relation-like set holds
(b3 | b1) .: b2 c= b3 .: b2;
:: RELAT_1:th 162
theorem
for b1 being Relation-like set
for b2, b3 being set
st b2 c= b3
holds (b1 | b3) .: b2 = b1 .: b2;
:: RELAT_1:th 163
theorem
for b1 being set
for b2 being Relation-like set holds
(proj1 b2) /\ b1 c= b2 ~ .: (b2 .: b1);
:: RELAT_1:funcnot 12 => RELAT_1:func 10
definition
let a1 be Relation-like set;
let a2 be set;
func A1 " A2 -> set means
for b1 being set holds
b1 in it
iff
ex b2 being set st
[b1,b2] in a1 & b2 in a2;
end;
:: RELAT_1:def 14
theorem
for b1 being Relation-like set
for b2, b3 being set holds
b3 = b1 " b2
iff
for b4 being set holds
b4 in b3
iff
ex b5 being set st
[b4,b5] in b1 & b5 in b2;
:: RELAT_1:th 166
theorem
for b1, b2 being set
for b3 being Relation-like set holds
b1 in b3 " b2
iff
ex b4 being set st
b4 in proj2 b3 & [b1,b4] in b3 & b4 in b2;
:: RELAT_1:th 167
theorem
for b1 being set
for b2 being Relation-like set holds
b2 " b1 c= proj1 b2;
:: RELAT_1:th 168
theorem
for b1 being set
for b2 being Relation-like set holds
b2 " b1 = b2 " ((proj2 b2) /\ b1);
:: RELAT_1:th 169
theorem
for b1 being Relation-like set holds
b1 " proj2 b1 = proj1 b1;
:: RELAT_1:th 170
theorem
for b1 being set
for b2 being Relation-like set holds
b2 " b1 c= b2 " proj2 b2;
:: RELAT_1:th 171
theorem
for b1 being Relation-like set holds
b1 " {} = {};
:: RELAT_1:th 172
theorem
for b1 being set holds
{} " b1 = {};
:: RELAT_1:th 173
theorem
for b1 being set
for b2 being Relation-like set holds
b2 " b1 = {}
iff
proj2 b2 misses b1;
:: RELAT_1:th 174
theorem
for b1 being set
for b2 being Relation-like set
st b1 <> {} & b1 c= proj2 b2
holds b2 " b1 <> {};
:: RELAT_1:th 175
theorem
for b1, b2 being set
for b3 being Relation-like set holds
b3 " (b1 \/ b2) = (b3 " b1) \/ (b3 " b2);
:: RELAT_1:th 176
theorem
for b1, b2 being set
for b3 being Relation-like set holds
b3 " (b1 /\ b2) c= (b3 " b1) /\ (b3 " b2);
:: RELAT_1:th 177
theorem
for b1, b2 being set
for b3 being Relation-like set holds
(b3 " b1) \ (b3 " b2) c= b3 " (b1 \ b2);
:: RELAT_1:th 178
theorem
for b1, b2 being set
for b3 being Relation-like set
st b1 c= b2
holds b3 " b1 c= b3 " b2;
:: RELAT_1:th 179
theorem
for b1 being set
for b2, b3 being Relation-like set
st b2 c= b3
holds b2 " b1 c= b3 " b1;
:: RELAT_1:th 180
theorem
for b1, b2 being set
for b3, b4 being Relation-like set
st b3 c= b4 & b1 c= b2
holds b3 " b1 c= b4 " b2;
:: RELAT_1:th 181
theorem
for b1 being set
for b2, b3 being Relation-like set holds
(b2 * b3) " b1 = b2 " (b3 " b1);
:: RELAT_1:th 182
theorem
for b1, b2 being Relation-like set holds
proj1 (b1 * b2) = b1 " proj1 b2;
:: RELAT_1:th 183
theorem
for b1 being set
for b2 being Relation-like set holds
(proj2 b2) /\ b1 c= b2 ~ " (b2 " b1);
:: RELAT_1:attrnot 3 => RELAT_1:attr 3
definition
let a1 be Relation-like set;
attr a1 is empty-yielding means
proj2 a1 c= {{}};
end;
:: RELAT_1:dfs 15
definiens
let a1 be Relation-like set;
To prove
a1 is empty-yielding
it is sufficient to prove
thus proj2 a1 c= {{}};
:: RELAT_1:def 15
theorem
for b1 being Relation-like set holds
b1 is empty-yielding
iff
proj2 b1 c= {{}};
:: RELAT_1:th 184
theorem
for b1 being Relation-like set holds
b1 is empty-yielding
iff
for b2 being set
st b2 in proj2 b1
holds b2 = {};
:: RELAT_1:th 185
theorem
for b1, b2 being Relation-like set
for b3, b4 being set
st b1 | b3 = b2 | b3 & b1 | b4 = b2 | b4
holds b1 | (b3 \/ b4) = b2 | (b3 \/ b4);
:: RELAT_1:th 186
theorem
for b1 being set
for b2, b3 being Relation-like set
st proj1 b3 c= b1 & b3 c= b2
holds b3 c= b2 | b1;
:: RELAT_1:th 187
theorem
for b1 being Relation-like set
for b2 being set
st b2 misses proj1 b1
holds b1 | b2 = {};
:: RELAT_1:th 188
theorem
for b1, b2 being Relation-like set
for b3, b4 being set
st b3 c= b4 & b1 | b4 = b2 | b4
holds b1 | b3 = b2 | b3;
:: RELAT_1:th 189
theorem
for b1, b2 being Relation-like set holds
b1 | proj1 b2 = b1 | proj1 (b2 | proj1 b1);
:: RELAT_1:funcreg 17
registration
cluster {} -> empty-yielding;
end;
:: RELAT_1:exreg 4
registration
cluster Relation-like empty-yielding set;
end;
:: RELAT_1:funcreg 18
registration
let a1 be Relation-like empty-yielding set;
let a2 be set;
cluster a1 | a2 -> Relation-like empty-yielding;
end;
:: RELAT_1:th 190
theorem
for b1 being set
for b2 being Relation-like set
st b2 | b1 is not empty-yielding
holds b2 is not empty-yielding;
:: RELAT_1:funcnot 13 => RELAT_1:func 11
definition
let a1 be Relation-like set;
let a2 be set;
func Im(A1,A2) -> set equals
a1 .: {a2};
end;
:: RELAT_1:def 16
theorem
for b1 being Relation-like set
for b2 being set holds
Im(b1,b2) = b1 .: {b2};
:: RELAT_1:condreg 2
registration
let a1 be Relation-like set;
cluster -> Relation-like (Element of bool a1);
end;
:: RELAT_1:sch 2
scheme RELAT_1:sch 2
{F1 -> Relation-like set,
F2 -> Relation-like set}:
F1() = F2()
provided
for b1, b2 being set holds
[b1,b2] in F1()
iff
P1[b1, b2]
and
for b1, b2 being set holds
[b1,b2] in F2()
iff
P1[b1, b2];
:: RELAT_1:th 191
theorem
for b1 being Relation-like set
for b2 being set holds
proj1 (b1 | ((proj1 b1) \ b2)) = (proj1 b1) \ b2;
:: RELAT_1:th 192
theorem
for b1 being Relation-like set
for b2 being set holds
b1 | b2 = b1 | ((proj1 b1) /\ b2);
:: RELAT_1:th 193
theorem
for b1, b2 being set holds
proj1 [:b1,b2:] c= b1;
:: RELAT_1:th 194
theorem
for b1, b2 being set holds
proj2 [:b1,b2:] c= b2;
:: RELAT_1:th 195
theorem
for b1, b2 being set
st b1 <> {} & b2 <> {}
holds proj1 [:b1,b2:] = b1 & proj2 [:b1,b2:] = b2;
:: RELAT_1:th 196
theorem
for b1, b2 being Relation-like set
st proj1 b1 = {} & proj1 b2 = {}
holds b1 = b2;
:: RELAT_1:th 197
theorem
for b1, b2 being Relation-like set
st proj2 b1 = {} & proj2 b2 = {}
holds b1 = b2;
:: RELAT_1:th 198
theorem
for b1, b2, b3 being Relation-like set
st proj1 b1 = proj1 b2
holds proj1 (b3 * b1) = proj1 (b3 * b2);
:: RELAT_1:th 199
theorem
for b1, b2, b3 being Relation-like set
st proj2 b1 = proj2 b2
holds proj2 (b1 * b3) = proj2 (b2 * b3);