:: Some Properties of Binary Relations
:: by Waldemar Korczy\'nski
::
:: Received January 17, 1992
:: Copyright (c) 1992-2018 Association of Mizar Users
:: (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland).
:: This code can be distributed under the GNU General Public Licence
:: version 3.0 or later, or the Creative Commons Attribution-ShareAlike
:: License version 3.0 or later, subject to the binding interpretation
:: detailed in file COPYING.interpretation.
:: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these
:: licenses, or see http://www.gnu.org/licenses/gpl.html and
:: http://creativecommons.org/licenses/by-sa/3.0/.
environ
vocabularies RELAT_1, XBOOLE_0, ZFMISC_1, TARSKI, SYSREL;
notations TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, RELAT_1;
constructors TARSKI, SUBSET_1, RELAT_1, XTUPLE_0;
registrations XBOOLE_0, RELAT_1;
requirements BOOLE, SUBSET;
begin
reserve x,y,z,t for object,X,Y,Z,W for set;
reserve R,S,T for Relation;
theorem :: SYSREL:1
dom (R /\ [:X,Y:]) c= X & rng (R /\ [:X,Y:]) c= Y;
theorem :: SYSREL:2
X misses Y implies dom (R /\ [:X,Y:]) misses rng (R /\ [:X,Y:]);
theorem :: SYSREL:3
R c= [:X,Y:] implies dom R c= X & rng R c= Y;
theorem :: SYSREL:4
R c= [:X,Y:] implies R~ c= [:Y,X:];
theorem :: SYSREL:5
[:X,Y:]~ = [:Y,X:];
theorem :: SYSREL:6
(R \/ S) * T = (R * T) \/ (S * T);
theorem :: SYSREL:7
(X misses Y & R c= [:X,Y:] \/ [:Y,X:] & [x,y] in R & x in X implies
not x in Y & not y in X & y in Y) &
(X misses Y & R c= [:X,Y:] \/ [:Y,X:] & [x,y] in R & y in Y implies
not y in X & not x in Y & x in X) &
(X misses Y & R c= [:X,Y:] \/ [:Y,X:] & [x,y] in R & x in Y implies
not x in X & not y in Y & y in X) &
(X misses Y & R c= [:X,Y:] \/ [:Y,X:] & [x,y] in R & y in X implies
not x in X & not y in Y & x in Y);
theorem :: SYSREL:8
R c= [:X,Y:] implies R|Z = R /\ [:Z,Y:] & (Z|`R) = R /\ [:X,Z:];
theorem :: SYSREL:9
R c= [:X,Y:] & X = Z \/ W implies R = (R|Z) \/ (R|W);
theorem :: SYSREL:10
X misses Y & R c= [:X,Y:] \/ [:Y,X:] implies R|X c= [:X,Y:];
theorem :: SYSREL:11
R c= S implies R~ c= S~;
theorem :: SYSREL:12
id(X) * id(X) = id X;
theorem :: SYSREL:13
for x being object holds id({x}) = {[x,x]};
theorem :: SYSREL:14
id(X \/ Y) = id(X) \/ id(Y) & id(X /\ Y) = id(X) /\ id(Y) &
id(X \ Y) = id(X) \ id(Y);
theorem :: SYSREL:15
X c= Y implies id X c= id Y;
theorem :: SYSREL:16
id(X \ Y) \ id X = {};
theorem :: SYSREL:17
R c= id dom R implies R = id dom R;
theorem :: SYSREL:18
id X c= R \/ R~ implies id X c= R & id X c= R~;
theorem :: SYSREL:19
id X c= R implies id X c= R~;
:: CLOSURE RELATION
theorem :: SYSREL:20
R c= [:X,X:] implies R \ id dom R = R \ id X & R \ id rng R = R \ id X;
theorem :: SYSREL:21
(id(X) * (R \ id X) = {} implies dom (R \ id X) = dom R \ X) &
((R \ id X) * id X = {} implies rng (R \ id X) = rng R \ X);
theorem :: SYSREL:22
(R c= R * R & R * (R \ id rng R) = {} implies id rng R c= R) &
(R c= R * R & (R \ id dom R) * R = {} implies id dom R c= R);
theorem :: SYSREL:23
(R c= R * R & R * (R \ id rng R) = {} implies R /\ (id rng R) = id rng R) &
(R c= R * R & (R \ id dom R) * R = {} implies
R /\ (id dom R) = id dom R);
theorem :: SYSREL:24
(R * (R \ id X) = {} implies R * (R \ id rng R) = {}) &
((R \ id X) * R = {} implies (R \ id dom R) * R = {});
:: OPERATION CL
definition
let R;
func CL R -> Relation equals
:: SYSREL:def 1
R /\ id dom R;
end;
theorem :: SYSREL:25
for x,y being object holds [x,y] in CL R implies x in dom CL R & x = y;
theorem :: SYSREL:26
dom CL R = rng CL R;
theorem :: SYSREL:27
(x in dom CL R iff x in dom R & [x,x] in R) &
(x in rng CL R iff x in dom R & [x,x] in R) &
(x in rng CL R iff x in rng R & [x,x] in R) &
(x in dom CL R iff x in rng R & [x,x] in R);
theorem :: SYSREL:28
CL R = id dom CL R;
theorem :: SYSREL:29
(R * R = R & R * (R \ CL R) = {} & [x,y] in R & x <> y implies
x in (dom R \ dom CL R) & y in dom CL R) &
(R * R = R & (R \ CL R) * R = {} & [x,y] in R & x <> y implies
y in (rng R \ dom CL R) & x in dom CL R);
theorem :: SYSREL:30
(R * R = R & R * (R \ id dom R) = {} & [x,y] in R & x <> y implies
x in ((dom R) \ dom CL R) & y in dom CL R) &
(R * R = R & (R \ id dom R) * R = {} & [x,y] in R & x <> y implies
y in ((rng R) \ dom CL R) & x in dom CL R);
theorem :: SYSREL:31
(R * R = R & R * (R \ id dom R) = {} implies dom CL R = rng R &
rng CL R = rng R) &
(R * R = R & (R \ id dom R) * R = {} implies dom CL R = dom R &
rng CL R = dom R);
theorem :: SYSREL:32
dom CL R c= dom R & rng CL R c= rng R & rng CL R c= dom R & dom CL R c= rng R
;
theorem :: SYSREL:33
id dom CL R c= id dom R & id rng CL R c= id dom R;
theorem :: SYSREL:34
id dom CL R c= R & id rng CL R c= R;
theorem :: SYSREL:35
(id X c= R & id(X) * (R \ id X) = {} implies R|X = id X) &
(id X c= R & (R \ id X) * id X = {} implies X|`R = id X);
theorem :: SYSREL:36
(id(dom CL R) * (R \ id(dom CL R)) = {} implies R|(dom CL R) = id dom CL R &
R|(rng CL R) = id dom CL R) &
((R \ id rng CL R) * id(rng CL R) = {} implies
(dom CL R)|`R = id dom CL R &
(rng CL R)|`R = id rng CL R);
theorem :: SYSREL:37
(R * (R \ id dom R) = {} implies id(dom CL R) * (R \ id dom CL R) = {}) &
((R \ id dom R) * R = {} implies
(R \ id dom CL R) * id dom CL R = {});
theorem :: SYSREL:38
(S * R = S & R * (R \ id dom R) = {} implies S * (R \ id dom R) = {}) &
(R * S = S & (R \ id dom R) * R = {} implies (R \ id dom R) * S = {});
theorem :: SYSREL:39
(S * R = S & R * (R \ id dom R) = {} implies CL(S) c= CL(R)) &
(R * S = S & (R \ id dom R) * R = {} implies CL(S) c= CL(R));
theorem :: SYSREL:40
(S * R = S & R * (R \ id dom R) = {} & R * S = R &
S * (S \ id dom S) = {} implies CL S = CL R) &
(R * S = S & (R \ id dom R) * R = {} & S * R = R &
(S \ id dom S) * S = {} implies CL S = CL R);