:: Relations Defined on Sets
:: by Edmund Woronowicz
::
:: Received April 14, 1989
:: Copyright (c) 1990 Association of Mizar Users


definition
let X, Y be set ;
mode Relation of X,Y -> set means :Def1: :: RELSET_1:def 1
it c= [:X,Y:];
existence
ex b1 being set st b1 c= [:X,Y:]
;
end;

:: deftheorem Def1 defines Relation RELSET_1:def 1 :
for X, Y being set
for b3 being set holds
( b3 is Relation of X,Y iff b3 c= [:X,Y:] );

definition
let X, Y be set ;
:: original: Relation
redefine mode Relation of X,Y -> Subset of [:X,Y:];
coherence
for b1 being Relation of X,Y holds b1 is Subset of [:X,Y:]
by Def1;
end;

registration
let X, Y be set ;
cluster -> Relation-like Element of bool [:X,Y:];
coherence
for b1 being Subset of [:X,Y:] holds b1 is Relation-like
;
end;

theorem :: RELSET_1:1
canceled;

theorem :: RELSET_1:2
canceled;

theorem :: RELSET_1:3
canceled;

definition
let X, Y be set ;
let R be Relation of X,Y;
let Z be set ;
:: original: c=
redefine pred R c= Z means :: RELSET_1:def 2
for x being Element of X
for y being Element of Y st [x,y] in R holds
[x,y] in Z;
compatibility
( R c= Z iff for x being Element of X
for y being Element of Y st [x,y] in R holds
[x,y] in Z )
proof end;
end;

:: deftheorem defines c= RELSET_1:def 2 :
for X, Y being set
for R being Relation of X,Y
for Z being set holds
( R c= Z iff for x being Element of X
for y being Element of Y st [x,y] in R holds
[x,y] in Z );

definition
let X, Y be set ;
let P, R be Relation of X,Y;
:: original: =
redefine pred P = R means :: RELSET_1:def 3
for x being Element of X
for y being Element of Y holds
( [x,y] in P iff [x,y] in R );
compatibility
( P = R iff for x being Element of X
for y being Element of Y holds
( [x,y] in P iff [x,y] in R ) )
proof end;
end;

:: deftheorem defines = RELSET_1:def 3 :
for X, Y being set
for P, R being Relation of X,Y holds
( P = R iff for x being Element of X
for y being Element of Y holds
( [x,y] in P iff [x,y] in R ) );

theorem :: RELSET_1:4
for A, X, Y being set
for R being Relation of X,Y st A c= R holds
A is Relation of X,Y
proof end;

theorem :: RELSET_1:5
canceled;

theorem :: RELSET_1:6
for a, X, Y being set
for R being Relation of X,Y st a in R holds
ex x, y being set st
( a = [x,y] & x in X & y in Y )
proof end;

theorem :: RELSET_1:7
canceled;

theorem :: RELSET_1:8
for x, X, y, Y being set st x in X & y in Y holds
{[x,y]} is Relation of X,Y
proof end;

theorem :: RELSET_1:9
canceled;

theorem :: RELSET_1:10
canceled;

theorem :: RELSET_1:11
for X, Y being set
for R being Relation st dom R c= X & rng R c= Y holds
R is Relation of X,Y
proof end;

theorem Th12: :: RELSET_1:12
for X, Y being set
for R being Relation of X,Y holds
( dom R c= X & rng R c= Y )
proof end;

theorem :: RELSET_1:13
for X, X1, Y being set
for R being Relation of X,Y st dom R c= X1 holds
R is Relation of X1,Y
proof end;

theorem :: RELSET_1:14
for Y, Y1, X being set
for R being Relation of X,Y st rng R c= Y1 holds
R is Relation of X,Y1
proof end;

theorem :: RELSET_1:15
canceled;

theorem :: RELSET_1:16
canceled;

theorem :: RELSET_1:17
for X, X1, Y, Y1 being set
for R being Relation of X,Y st X c= X1 & Y c= Y1 holds
R is Relation of X1,Y1
proof end;

definition
let X, Y be set ;
let P, R be Relation of X,Y;
:: original: \/
redefine func P \/ R -> Relation of X,Y;
coherence
P \/ R is Relation of X,Y
proof end;
:: original: /\
redefine func P /\ R -> Relation of X,Y;
coherence
P /\ R is Relation of X,Y
proof end;
:: original: \
redefine func P \ R -> Relation of X,Y;
coherence
P \ R is Relation of X,Y
proof end;
end;

definition
let X, Y be set ;
let R be Relation of X,Y;
:: original: dom
redefine func dom R -> Subset of X;
coherence
dom R is Subset of X
by Th12;
:: original: rng
redefine func rng R -> Subset of Y;
coherence
rng R is Subset of Y
by Th12;
end;

theorem :: RELSET_1:18
canceled;

theorem :: RELSET_1:19
for X, Y being set
for R being Relation of X,Y holds field R c= X \/ Y
proof end;

theorem :: RELSET_1:20
canceled;

theorem :: RELSET_1:21
canceled;

theorem :: RELSET_1:22
for Y, X being set
for R being Relation of X,Y holds
( ( for x being set st x in X holds
ex y being set st [x,y] in R ) iff dom R = X )
proof end;

theorem :: RELSET_1:23
for X, Y being set
for R being Relation of X,Y holds
( ( for y being set st y in Y holds
ex x being set st [x,y] in R ) iff rng R = Y )
proof end;

definition
let X, Y be set ;
let R be Relation of X,Y;
:: original: ~
redefine func R ~ -> Relation of Y,X;
coherence
R ~ is Relation of Y,X
proof end;
end;

definition
let X, Y1, Y2, Z be set ;
let P be Relation of X,Y1;
let R be Relation of Y2,Z;
:: original: *
redefine func P * R -> Relation of X,Z;
coherence
P * R is Relation of X,Z
proof end;
end;

theorem :: RELSET_1:24
for X, Y being set
for R being Relation of X,Y holds
( dom (R ~ ) = rng R & rng (R ~ ) = dom R )
proof end;

theorem Th25: :: RELSET_1:25
for X, Y being set holds {} is Relation of X,Y
proof end;

registration
let A be empty set ;
let B be set ;
cluster -> empty Relation of A,B;
coherence
for b1 being Relation of A,B holds b1 is empty
proof end;
cluster -> empty Relation of B,A;
coherence
for b1 being Relation of B,A holds b1 is empty
proof end;
end;

theorem :: RELSET_1:26
canceled;

theorem :: RELSET_1:27
canceled;

theorem Th28: :: RELSET_1:28
for X being set holds id X c= [:X,X:]
proof end;

theorem :: RELSET_1:29
for X being set holds id X is Relation of X,X
proof end;

theorem Th30: :: RELSET_1:30
for X, Y, A being set
for R being Relation of X,Y st id A c= R holds
( A c= dom R & A c= rng R )
proof end;

theorem :: RELSET_1:31
for Y, X being set
for R being Relation of X,Y st id X c= R holds
( X = dom R & X c= rng R )
proof end;

theorem :: RELSET_1:32
for X, Y being set
for R being Relation of X,Y st id Y c= R holds
( Y c= dom R & Y = rng R )
proof end;

definition
let X, Y be set ;
let R be Relation of X,Y;
let A be set ;
:: original: |
redefine func R | A -> Relation of X,Y;
coherence
R | A is Relation of X,Y
proof end;
end;

definition
let X, Y, B be set ;
let R be Relation of X,Y;
:: original: |
redefine func B | R -> Relation of X,Y;
coherence
B | R is Relation of X,Y
proof end;
end;

theorem :: RELSET_1:33
for X, X1, Y being set
for R being Relation of X,Y holds R | X1 is Relation of X1,Y
proof end;

theorem :: RELSET_1:34
for Y, X, X1 being set
for R being Relation of X,Y st X c= X1 holds
R | X1 = R
proof end;

theorem :: RELSET_1:35
for Y, Y1, X being set
for R being Relation of X,Y holds Y1 | R is Relation of X,Y1
proof end;

theorem :: RELSET_1:36
for X, Y, Y1 being set
for R being Relation of X,Y st Y c= Y1 holds
Y1 | R = R
proof end;

definition
let X, Y be set ;
let R be Relation of X,Y;
let A be set ;
:: original: .:
redefine func R .: A -> Subset of Y;
coherence
R .: A is Subset of Y
proof end;
:: original: "
redefine func R " A -> Subset of X;
coherence
R " A is Subset of X
proof end;
end;

theorem :: RELSET_1:37
canceled;

theorem Th38: :: RELSET_1:38
for X, Y being set
for R being Relation of X,Y holds
( R .: X = rng R & R " Y = dom R )
proof end;

theorem :: RELSET_1:39
for Y, X being set
for R being Relation of X,Y holds
( R .: (R " Y) = rng R & R " (R .: X) = dom R )
proof end;

scheme :: RELSET_1:sch 1
RelOnSetEx{ F1() -> set , F2() -> set , P1[ set , set ] } :
ex R being Relation of F1(),F2() st
for x, y being set holds
( [x,y] in R iff ( x in F1() & y in F2() & P1[x,y] ) )
proof end;

definition
let X be set ;
mode Relation of X is Relation of X,X;
end;

registration
let D be non empty set ;
cluster id D -> non empty ;
coherence
not id D is empty
proof end;
end;

theorem :: RELSET_1:40
canceled;

theorem :: RELSET_1:41
canceled;

theorem :: RELSET_1:42
canceled;

theorem :: RELSET_1:43
canceled;

theorem :: RELSET_1:44
canceled;

theorem :: RELSET_1:45
canceled;

theorem :: RELSET_1:46
canceled;

theorem :: RELSET_1:47
for D, E being non empty set
for R being Relation of D,E
for x being Element of D holds
( x in dom R iff ex y being Element of E st [x,y] in R )
proof end;

theorem :: RELSET_1:48
for E, D being non empty set
for R being Relation of D,E
for y being set holds
( y in rng R iff ex x being Element of D st [x,y] in R )
proof end;

theorem :: RELSET_1:49
for D, E being non empty set
for R being Relation of D,E st dom R <> {} holds
ex y being Element of E st y in rng R
proof end;

theorem :: RELSET_1:50
for E, D being non empty set
for R being Relation of D,E st rng R <> {} holds
ex x being Element of D st x in dom R
proof end;

theorem :: RELSET_1:51
for D, E, F being non empty set
for P being Relation of D,E
for R being Relation of E,F
for x, z being set holds
( [x,z] in P * R iff ex y being Element of E st
( [x,y] in P & [y,z] in R ) )
proof end;

theorem :: RELSET_1:52
for E, D1, D being non empty set
for R being Relation of D,E
for y being Element of E holds
( y in R .: D1 iff ex x being Element of D st
( [x,y] in R & x in D1 ) )
proof end;

theorem :: RELSET_1:53
for D, D2, E being non empty set
for R being Relation of D,E
for x being Element of D holds
( x in R " D2 iff ex y being Element of E st
( [x,y] in R & y in D2 ) )
proof end;

scheme :: RELSET_1:sch 2
RelOnDomEx{ F1() -> non empty set , F2() -> non empty set , P1[ set , set ] } :
ex R being Relation of F1(),F2() st
for x being Element of F1()
for y being Element of F2() holds
( [x,y] in R iff P1[x,y] )
proof end;

scheme :: RELSET_1:sch 3
Sch3{ F1() -> set , F2() -> Subset of F1(), F3( set ) -> set } :
ex R being Relation of F2() st
for i being Element of F1() st i in F2() holds
Im R,i = F3(i)
provided
A1: for i being Element of F1() st i in F2() holds
F3(i) c= F2()
proof end;

theorem :: RELSET_1:54
for N being set
for R, S being Relation of N st ( for i being set st i in N holds
Im R,i = Im S,i ) holds
R = S
proof end;

scheme :: RELSET_1:sch 4
Sch4{ F1() -> set , F2() -> set , P1[ set , set ], F3() -> Relation of F1(),F2(), F4() -> Relation of F1(),F2() } :
F3() = F4()
provided
A1: for p being Element of F1()
for q being Element of F2() holds
( [p,q] in F3() iff P1[p,q] ) and
A2: for p being Element of F1()
for q being Element of F2() holds
( [p,q] in F4() iff P1[p,q] )
proof end;

registration
let X, Y, Z be set ;
let f be Relation of [:X,Y:],Z;
cluster dom f -> Relation-like ;
coherence
dom f is Relation-like
;
end;

registration
let X, Y, Z be set ;
let f be Relation of X,[:Y,Z:];
cluster rng f -> Relation-like ;
coherence
rng f is Relation-like
;
end;

theorem :: RELSET_1:55
for Y, A, X being set
for P being Relation of X,Y st A misses X holds
P | A = {}
proof end;

registration
let R be non empty Relation;
let Y be non empty Subset of (dom R);
cluster R | Y -> non empty ;
coherence
not R | Y is empty
proof end;
end;

registration
let R be non empty Relation;
let Y be non empty Subset of (dom R);
cluster R .: Y -> non empty ;
coherence
not R .: Y is empty
proof end;
end;

registration
let X, Y be set ;
cluster empty Relation of X,Y;
existence
ex b1 being Relation of X,Y st b1 is empty
proof end;
end;