:: FUNCT_1 semantic presentation

definition
let c1 be set ;
attr a1 is Function-like means :Def1: :: FUNCT_1:def 1
for b1, b2, b3 being set st [b1,b2] in a1 & [b1,b3] in a1 holds
b2 = b3;
end;

:: deftheorem Def1 defines Function-like FUNCT_1:def 1 :
for b1 being set holds
( b1 is Function-like iff for b2, b3, b4 being set st [b2,b3] in b1 & [b2,b4] in b1 holds
b3 = b4 );

registration
cluster Relation-like Function-like set ;
existence
ex b1 being set st
( b1 is Relation-like & b1 is Function-like )
proof end;
end;

definition
mode Function is Relation-like Function-like set ;
end;

registration
cluster empty -> Function-like set ;
coherence
for b1 being set st b1 is empty holds
b1 is Function-like
proof end;
end;

theorem Th1: :: FUNCT_1:1
canceled;

theorem Th2: :: FUNCT_1:2
for b1 being set st ( for b2 being set st b2 in b1 holds
ex b3, b4 being set st [b3,b4] = b2 ) & ( for b2, b3, b4 being set st [b2,b3] in b1 & [b2,b4] in b1 holds
b3 = b4 ) holds
b1 is Function by Def1, RELAT_1:def 1;

scheme :: FUNCT_1:sch 1
s1{ F1() -> set , P1[ set , set ] } :
ex b1 being Function st
for b2, b3 being set holds
( [b2,b3] in b1 iff ( b2 in F1() & P1[b2,b3] ) )
provided
E2: for b1, b2, b3 being set st P1[b1,b2] & P1[b1,b3] holds
b2 = b3
proof end;

definition
let c1 be Function;
let c2 be set ;
canceled;
canceled;
func c1 . c2 -> set means :Def4: :: FUNCT_1:def 4
[a2,a3] in a1 if a2 in dom a1
otherwise a3 = {} ;
existence
( ( c2 in dom c1 implies ex b1 being set st [c2,b1] in c1 ) & ( not c2 in dom c1 implies ex b1 being set st b1 = {} ) )
by RELAT_1:def 4;
uniqueness
for b1, b2 being set holds
( ( c2 in dom c1 & [c2,b1] in c1 & [c2,b2] in c1 implies b1 = b2 ) & ( not c2 in dom c1 & b1 = {} & b2 = {} implies b1 = b2 ) )
by Def1;
consistency
for b1 being set holds verum
;
end;

:: deftheorem Def2 FUNCT_1:def 2 :
canceled;

:: deftheorem Def3 FUNCT_1:def 3 :
canceled;

:: deftheorem Def4 defines . FUNCT_1:def 4 :
for b1 being Function
for b2, b3 being set holds
( ( b2 in dom b1 implies ( b3 = b1 . b2 iff [b2,b3] in b1 ) ) & ( not b2 in dom b1 implies ( b3 = b1 . b2 iff b3 = {} ) ) );

theorem Th3: :: FUNCT_1:3
canceled;

theorem Th4: :: FUNCT_1:4
canceled;

theorem Th5: :: FUNCT_1:5
canceled;

theorem Th6: :: FUNCT_1:6
canceled;

theorem Th7: :: FUNCT_1:7
canceled;

theorem Th8: :: FUNCT_1:8
for b1, b2 being set
for b3 being Function holds
( [b1,b2] in b3 iff ( b1 in dom b3 & b2 = b3 . b1 ) )
proof end;

theorem Th9: :: FUNCT_1:9
for b1, b2 being Function st dom b1 = dom b2 & ( for b3 being set st b3 in dom b1 holds
b1 . b3 = b2 . b3 ) holds
b1 = b2
proof end;

definition
let c1 be Function;
redefine func rng c1 -> set means :Def5: :: FUNCT_1:def 5
for b1 being set holds
( b1 in a2 iff ex b2 being set st
( b2 in dom a1 & b1 = a1 . b2 ) );
compatibility
for b1 being set holds
( b1 = rng c1 iff for b2 being set holds
( b2 in b1 iff ex b3 being set st
( b3 in dom c1 & b2 = c1 . b3 ) ) )
proof end;
end;

:: deftheorem Def5 defines rng FUNCT_1:def 5 :
for b1 being Function
for b2 being set holds
( b2 = rng b1 iff for b3 being set holds
( b3 in b2 iff ex b4 being set st
( b4 in dom b1 & b3 = b1 . b4 ) ) );

theorem Th10: :: FUNCT_1:10
canceled;

theorem Th11: :: FUNCT_1:11
canceled;

theorem Th12: :: FUNCT_1:12
for b1 being set
for b2 being Function st b1 in dom b2 holds
b2 . b1 in rng b2 by Def5;

theorem Th13: :: FUNCT_1:13
canceled;

theorem Th14: :: FUNCT_1:14
for b1 being set
for b2 being Function st dom b2 = {b1} holds
rng b2 = {(b2 . b1)}
proof end;

scheme :: FUNCT_1:sch 2
s2{ F1() -> set , P1[ set , set ] } :
ex b1 being Function st
( dom b1 = F1() & ( for b2 being set st b2 in F1() holds
P1[b2,b1 . b2] ) )
provided
E7: for b1, b2, b3 being set st b1 in F1() & P1[b1,b2] & P1[b1,b3] holds
b2 = b3 and
E8: for b1 being set st b1 in F1() holds
ex b2 being set st P1[b1,b2]
proof end;

scheme :: FUNCT_1:sch 3
s3{ F1() -> set , F2( set ) -> set } :
ex b1 being Function st
( dom b1 = F1() & ( for b2 being set st b2 in F1() holds
b1 . b2 = F2(b2) ) )
proof end;

theorem Th15: :: FUNCT_1:15
for b1 being set st b1 <> {} holds
for b2 being set ex b3 being Function st
( dom b3 = b1 & rng b3 = {b2} )
proof end;

theorem Th16: :: FUNCT_1:16
for b1 being set st ( for b2, b3 being Function st dom b2 = b1 & dom b3 = b1 holds
b2 = b3 ) holds
b1 = {}
proof end;

theorem Th17: :: FUNCT_1:17
for b1 being set
for b2, b3 being Function st dom b2 = dom b3 & rng b2 = {b1} & rng b3 = {b1} holds
b2 = b3
proof end;

theorem Th18: :: FUNCT_1:18
for b1, b2 being set st ( b1 <> {} or b2 = {} ) holds
ex b3 being Function st
( b2 = dom b3 & rng b3 c= b1 )
proof end;

theorem Th19: :: FUNCT_1:19
for b1 being set
for b2 being Function st ( for b3 being set st b3 in b1 holds
ex b4 being set st
( b4 in dom b2 & b3 = b2 . b4 ) ) holds
b1 c= rng b2
proof end;

notation
let c1, c2 be Function;
synonym c2 * c1 for c1 * c2;
end;

registration
let c1, c2 be Function;
cluster a2 * a1 -> Function-like ;
coherence
c2 * c1 is Function-like
proof end;
end;

theorem Th20: :: FUNCT_1:20
for b1, b2, b3 being Function st ( for b4 being set holds
( b4 in dom b3 iff ( b4 in dom b1 & b1 . b4 in dom b2 ) ) ) & ( for b4 being set st b4 in dom b3 holds
b3 . b4 = b2 . (b1 . b4) ) holds
b3 = b2 * b1
proof end;

theorem Th21: :: FUNCT_1:21
for b1 being set
for b2, b3 being Function holds
( b1 in dom (b2 * b3) iff ( b1 in dom b3 & b3 . b1 in dom b2 ) )
proof end;

theorem Th22: :: FUNCT_1:22
for b1 being set
for b2, b3 being Function st b1 in dom (b2 * b3) holds
(b2 * b3) . b1 = b2 . (b3 . b1)
proof end;

theorem Th23: :: FUNCT_1:23
for b1 being set
for b2, b3 being Function st b1 in dom b2 holds
(b3 * b2) . b1 = b3 . (b2 . b1)
proof end;

theorem Th24: :: FUNCT_1:24
canceled;

theorem Th25: :: FUNCT_1:25
for b1 being set
for b2, b3 being Function st b1 in rng (b2 * b3) holds
b1 in rng b2
proof end;

theorem Th26: :: FUNCT_1:26
canceled;

theorem Th27: :: FUNCT_1:27
for b1, b2 being Function st dom (b1 * b2) = dom b2 holds
rng b2 c= dom b1
proof end;

theorem Th28: :: FUNCT_1:28
canceled;

theorem Th29: :: FUNCT_1:29
canceled;

theorem Th30: :: FUNCT_1:30
canceled;

theorem Th31: :: FUNCT_1:31
canceled;

theorem Th32: :: FUNCT_1:32
canceled;

theorem Th33: :: FUNCT_1:33
for b1 being set
for b2 being Function st rng b2 c= b1 & ( for b3, b4 being Function st dom b3 = b1 & dom b4 = b1 & b3 * b2 = b4 * b2 holds
b3 = b4 ) holds
b1 = rng b2
proof end;

registration
let c1 be set ;
cluster id a1 -> Function-like ;
coherence
id c1 is Function-like
proof end;
end;

theorem Th34: :: FUNCT_1:34
for b1 being set
for b2 being Function holds
( b2 = id b1 iff ( dom b2 = b1 & ( for b3 being set st b3 in b1 holds
b2 . b3 = b3 ) ) )
proof end;

theorem Th35: :: FUNCT_1:35
for b1, b2 being set st b2 in b1 holds
(id b1) . b2 = b2 by Th34;

theorem Th36: :: FUNCT_1:36
canceled;

theorem Th37: :: FUNCT_1:37
for b1 being set
for b2 being Function holds dom (b2 * (id b1)) = (dom b2) /\ b1
proof end;

theorem Th38: :: FUNCT_1:38
for b1, b2 being set
for b3 being Function st b2 in (dom b3) /\ b1 holds
b3 . b2 = (b3 * (id b1)) . b2
proof end;

theorem Th39: :: FUNCT_1:39
canceled;

theorem Th40: :: FUNCT_1:40
for b1, b2 being set
for b3 being Function holds
( b2 in dom ((id b1) * b3) iff ( b2 in dom b3 & b3 . b2 in b1 ) )
proof end;

theorem Th41: :: FUNCT_1:41
canceled;

theorem Th42: :: FUNCT_1:42
for b1 being Function holds
( b1 * (id (dom b1)) = b1 & (id (rng b1)) * b1 = b1 ) by RELAT_1:77, RELAT_1:79;

theorem Th43: :: FUNCT_1:43
for b1, b2 being set holds (id b1) * (id b2) = id (b1 /\ b2)
proof end;

theorem Th44: :: FUNCT_1:44
for b1, b2 being Function st rng b1 = dom b2 & b2 * b1 = b1 holds
b2 = id (dom b2)
proof end;

definition
let c1 be Function;
canceled;
canceled;
attr a1 is one-to-one means :Def8: :: FUNCT_1:def 8
for b1, b2 being set st b1 in dom a1 & b2 in dom a1 & a1 . b1 = a1 . b2 holds
b1 = b2;
end;

:: deftheorem Def6 FUNCT_1:def 6 :
canceled;

:: deftheorem Def7 FUNCT_1:def 7 :
canceled;

:: deftheorem Def8 defines one-to-one FUNCT_1:def 8 :
for b1 being Function holds
( b1 is one-to-one iff for b2, b3 being set st b2 in dom b1 & b3 in dom b1 & b1 . b2 = b1 . b3 holds
b2 = b3 );

theorem Th45: :: FUNCT_1:45
canceled;

theorem Th46: :: FUNCT_1:46
for b1, b2 being Function st b1 is one-to-one & b2 is one-to-one holds
b2 * b1 is one-to-one
proof end;

theorem Th47: :: FUNCT_1:47
for b1, b2 being Function st b1 * b2 is one-to-one & rng b2 c= dom b1 holds
b2 is one-to-one
proof end;

theorem Th48: :: FUNCT_1:48
for b1, b2 being Function st b1 * b2 is one-to-one & rng b2 = dom b1 holds
( b2 is one-to-one & b1 is one-to-one )
proof end;

theorem Th49: :: FUNCT_1:49
for b1 being Function holds
( b1 is one-to-one iff for b2, b3 being Function st rng b2 c= dom b1 & rng b3 c= dom b1 & dom b2 = dom b3 & b1 * b2 = b1 * b3 holds
b2 = b3 )
proof end;

theorem Th50: :: FUNCT_1:50
for b1 being set
for b2, b3 being Function st dom b2 = b1 & dom b3 = b1 & rng b3 c= b1 & b2 is one-to-one & b2 * b3 = b2 holds
b3 = id b1
proof end;

theorem Th51: :: FUNCT_1:51
for b1, b2 being Function st rng (b1 * b2) = rng b1 & b1 is one-to-one holds
dom b1 c= rng b2
proof end;

theorem Th52: :: FUNCT_1:52
for b1 being set holds id b1 is one-to-one
proof end;

theorem Th53: :: FUNCT_1:53
for b1 being Function st ex b2 being Function st b2 * b1 = id (dom b1) holds
b1 is one-to-one
proof end;

registration
cluster empty set ;
existence
ex b1 being Function st b1 is empty
proof end;
end;

registration
cluster empty -> one-to-one set ;
coherence
for b1 being Function st b1 is empty holds
b1 is one-to-one
proof end;
end;

registration
cluster one-to-one set ;
existence
ex b1 being Function st b1 is one-to-one
proof end;
end;

registration
let c1 be one-to-one Function;
cluster a1 ~ -> Function-like ;
coherence
c1 ~ is Function-like
proof end;
end;

definition
let c1 be Function;
assume E18: c1 is one-to-one ;
func c1 " -> Function equals :Def9: :: FUNCT_1:def 9
a1 ~ ;
coherence
c1 ~ is Function
proof end;
end;

:: deftheorem Def9 defines " FUNCT_1:def 9 :
for b1 being Function st b1 is one-to-one holds
b1 " = b1 ~ ;

theorem Th54: :: FUNCT_1:54
for b1 being Function st b1 is one-to-one holds
for b2 being Function holds
( b2 = b1 " iff ( dom b2 = rng b1 & ( for b3, b4 being set holds
( b3 in rng b1 & b4 = b2 . b3 iff ( b4 in dom b1 & b3 = b1 . b4 ) ) ) ) )
proof end;

theorem Th55: :: FUNCT_1:55
for b1 being Function st b1 is one-to-one holds
( rng b1 = dom (b1 " ) & dom b1 = rng (b1 " ) )
proof end;

theorem Th56: :: FUNCT_1:56
for b1 being set
for b2 being Function st b2 is one-to-one & b1 in dom b2 holds
( b1 = (b2 " ) . (b2 . b1) & b1 = ((b2 " ) * b2) . b1 )
proof end;

theorem Th57: :: FUNCT_1:57
for b1 being set
for b2 being Function st b2 is one-to-one & b1 in rng b2 holds
( b1 = b2 . ((b2 " ) . b1) & b1 = (b2 * (b2 " )) . b1 )
proof end;

theorem Th58: :: FUNCT_1:58
for b1 being Function st b1 is one-to-one holds
( dom ((b1 " ) * b1) = dom b1 & rng ((b1 " ) * b1) = dom b1 )
proof end;

theorem Th59: :: FUNCT_1:59
for b1 being Function st b1 is one-to-one holds
( dom (b1 * (b1 " )) = rng b1 & rng (b1 * (b1 " )) = rng b1 )
proof end;

theorem Th60: :: FUNCT_1:60
for b1, b2 being Function st b1 is one-to-one & dom b1 = rng b2 & rng b1 = dom b2 & ( for b3, b4 being set st b3 in dom b1 & b4 in dom b2 holds
( b1 . b3 = b4 iff b2 . b4 = b3 ) ) holds
b2 = b1 "
proof end;

theorem Th61: :: FUNCT_1:61
for b1 being Function st b1 is one-to-one holds
( (b1 " ) * b1 = id (dom b1) & b1 * (b1 " ) = id (rng b1) )
proof end;

theorem Th62: :: FUNCT_1:62
for b1 being Function st b1 is one-to-one holds
b1 " is one-to-one
proof end;

Lemma27: for b1 being set
for b2, b3, b4 being Function st rng b2 = b1 & b3 * b2 = id (dom b4) & b4 * b3 = id b1 holds
b4 = b2
proof end;

theorem Th63: :: FUNCT_1:63
for b1, b2 being Function st b1 is one-to-one & rng b1 = dom b2 & b2 * b1 = id (dom b1) holds
b2 = b1 "
proof end;

theorem Th64: :: FUNCT_1:64
for b1, b2 being Function st b1 is one-to-one & rng b2 = dom b1 & b1 * b2 = id (rng b1) holds
b2 = b1 "
proof end;

theorem Th65: :: FUNCT_1:65
for b1 being Function st b1 is one-to-one holds
(b1 " ) " = b1
proof end;

theorem Th66: :: FUNCT_1:66
for b1, b2 being Function st b1 is one-to-one & b2 is one-to-one holds
(b2 * b1) " = (b1 " ) * (b2 " )
proof end;

theorem Th67: :: FUNCT_1:67
for b1 being set holds (id b1) " = id b1
proof end;

registration
let c1 be Function;
let c2 be set ;
cluster a1 | a2 -> Function-like ;
coherence
c1 | c2 is Function-like
proof end;
end;

theorem Th68: :: FUNCT_1:68
for b1 being set
for b2, b3 being Function holds
( b2 = b3 | b1 iff ( dom b2 = (dom b3) /\ b1 & ( for b4 being set st b4 in dom b2 holds
b2 . b4 = b3 . b4 ) ) )
proof end;

theorem Th69: :: FUNCT_1:69
canceled;

theorem Th70: :: FUNCT_1:70
for b1, b2 being set
for b3 being Function st b2 in dom (b3 | b1) holds
(b3 | b1) . b2 = b3 . b2 by Th68;

theorem Th71: :: FUNCT_1:71
for b1, b2 being set
for b3 being Function st b2 in (dom b3) /\ b1 holds
(b3 | b1) . b2 = b3 . b2
proof end;

Lemma30: for b1, b2 being set
for b3 being Function holds
( b2 in dom (b3 | b1) iff ( b2 in dom b3 & b2 in b1 ) )
proof end;

theorem Th72: :: FUNCT_1:72
for b1, b2 being set
for b3 being Function st b2 in b1 holds
(b3 | b1) . b2 = b3 . b2
proof end;

theorem Th73: :: FUNCT_1:73
for b1, b2 being set
for b3 being Function st b2 in dom b3 & b2 in b1 holds
b3 . b2 in rng (b3 | b1)
proof end;

theorem Th74: :: FUNCT_1:74
canceled;

theorem Th75: :: FUNCT_1:75
canceled;

theorem Th76: :: FUNCT_1:76
for b1 being set
for b2 being Function holds
( dom (b2 | b1) c= dom b2 & rng (b2 | b1) c= rng b2 ) by RELAT_1:89, RELAT_1:99;

theorem Th77: :: FUNCT_1:77
canceled;

theorem Th78: :: FUNCT_1:78
canceled;

theorem Th79: :: FUNCT_1:79
canceled;

theorem Th80: :: FUNCT_1:80
canceled;

theorem Th81: :: FUNCT_1:81
canceled;

theorem Th82: :: FUNCT_1:82
for b1, b2 being set
for b3 being Function st b1 c= b2 holds
( (b3 | b1) | b2 = b3 | b1 & (b3 | b2) | b1 = b3 | b1 ) by RELAT_1:102, RELAT_1:103;

theorem Th83: :: FUNCT_1:83
canceled;

theorem Th84: :: FUNCT_1:84
for b1 being set
for b2 being Function st b2 is one-to-one holds
b2 | b1 is one-to-one
proof end;

registration
let c1 be set ;
let c2 be Function;
cluster a1 | a2 -> Function-like ;
coherence
c1 | c2 is Function-like
proof end;
end;

theorem Th85: :: FUNCT_1:85
for b1 being set
for b2, b3 being Function holds
( b2 = b1 | b3 iff ( ( for b4 being set holds
( b4 in dom b2 iff ( b4 in dom b3 & b3 . b4 in b1 ) ) ) & ( for b4 being set st b4 in dom b2 holds
b2 . b4 = b3 . b4 ) ) )
proof end;

theorem Th86: :: FUNCT_1:86
for b1, b2 being set
for b3 being Function holds
( b2 in dom (b1 | b3) iff ( b2 in dom b3 & b3 . b2 in b1 ) ) by Th85;

theorem Th87: :: FUNCT_1:87
for b1, b2 being set
for b3 being Function st b2 in dom (b1 | b3) holds
(b1 | b3) . b2 = b3 . b2 by Th85;

theorem Th88: :: FUNCT_1:88
canceled;

theorem Th89: :: FUNCT_1:89
for b1 being set
for b2 being Function holds
( dom (b1 | b2) c= dom b2 & rng (b1 | b2) c= rng b2 )
proof end;

theorem Th90: :: FUNCT_1:90
canceled;

theorem Th91: :: FUNCT_1:91
canceled;

theorem Th92: :: FUNCT_1:92
canceled;

theorem Th93: :: FUNCT_1:93
canceled;

theorem Th94: :: FUNCT_1:94
canceled;

theorem Th95: :: FUNCT_1:95
canceled;

theorem Th96: :: FUNCT_1:96
canceled;

theorem Th97: :: FUNCT_1:97
for b1, b2 being set
for b3 being Function st b1 c= b2 holds
( b2 | (b1 | b3) = b1 | b3 & b1 | (b2 | b3) = b1 | b3 ) by RELAT_1:129, RELAT_1:130;

theorem Th98: :: FUNCT_1:98
canceled;

theorem Th99: :: FUNCT_1:99
for b1 being set
for b2 being Function st b2 is one-to-one holds
b1 | b2 is one-to-one
proof end;

definition
let c1 be Function;
let c2 be set ;
canceled;
canceled;
redefine func c1 .: c2 -> set means :Def12: :: FUNCT_1:def 12
for b1 being set holds
( b1 in a3 iff ex b2 being set st
( b2 in dom a1 & b2 in a2 & b1 = a1 . b2 ) );
compatibility
for b1 being set holds
( b1 = c1 .: c2 iff for b2 being set holds
( b2 in b1 iff ex b3 being set st
( b3 in dom c1 & b3 in c2 & b2 = c1 . b3 ) ) )
proof end;
end;

:: deftheorem Def10 FUNCT_1:def 10 :
canceled;

:: deftheorem Def11 FUNCT_1:def 11 :
canceled;

:: deftheorem Def12 defines .: FUNCT_1:def 12 :
for b1 being Function
for b2 being set
for b3 being set holds
( b3 = b1 .: b2 iff for b4 being set holds
( b4 in b3 iff ex b5 being set st
( b5 in dom b1 & b5 in b2 & b4 = b1 . b5 ) ) );

theorem Th100: :: FUNCT_1:100
canceled;

theorem Th101: :: FUNCT_1:101
canceled;

theorem Th102: :: FUNCT_1:102
canceled;

theorem Th103: :: FUNCT_1:103
canceled;

theorem Th104: :: FUNCT_1:104
canceled;

theorem Th105: :: FUNCT_1:105
canceled;

theorem Th106: :: FUNCT_1:106
canceled;

theorem Th107: :: FUNCT_1:107
canceled;

theorem Th108: :: FUNCT_1:108
canceled;

theorem Th109: :: FUNCT_1:109
canceled;

theorem Th110: :: FUNCT_1:110
canceled;

theorem Th111: :: FUNCT_1:111
canceled;

theorem Th112: :: FUNCT_1:112
canceled;

theorem Th113: :: FUNCT_1:113
canceled;

theorem Th114: :: FUNCT_1:114
canceled;

theorem Th115: :: FUNCT_1:115
canceled;

theorem Th116: :: FUNCT_1:116
canceled;

theorem Th117: :: FUNCT_1:117
for b1 being set
for b2 being Function st b1 in dom b2 holds
b2 .: {b1} = {(b2 . b1)}
proof end;

theorem Th118: :: FUNCT_1:118
for b1, b2 being set
for b3 being Function st b1 in dom b3 & b2 in dom b3 holds
b3 .: {b1,b2} = {(b3 . b1),(b3 . b2)}
proof end;

theorem Th119: :: FUNCT_1:119
canceled;

theorem Th120: :: FUNCT_1:120
for b1, b2 being set
for b3 being Function holds (b1 | b3) .: b2 c= b3 .: b2
proof end;

theorem Th121: :: FUNCT_1:121
for b1, b2 being set
for b3 being Function st b3 is one-to-one holds
b3 .: (b1 /\ b2) = (b3 .: b1) /\ (b3 .: b2)
proof end;

theorem Th122: :: FUNCT_1:122
for b1 being Function st ( for b2, b3 being set holds b1 .: (b2 /\ b3) = (b1 .: b2) /\ (b1 .: b3) ) holds
b1 is one-to-one
proof end;

theorem Th123: :: FUNCT_1:123
for b1, b2 being set
for b3 being Function st b3 is one-to-one holds
b3 .: (b1 \ b2) = (b3 .: b1) \ (b3 .: b2)
proof end;

theorem Th124: :: FUNCT_1:124
for b1 being Function st ( for b2, b3 being set holds b1 .: (b2 \ b3) = (b1 .: b2) \ (b1 .: b3) ) holds
b1 is one-to-one
proof end;

theorem Th125: :: FUNCT_1:125
for b1, b2 being set
for b3 being Function st b1 misses b2 & b3 is one-to-one holds
b3 .: b1 misses b3 .: b2
proof end;

theorem Th126: :: FUNCT_1:126
for b1, b2 being set
for b3 being Function holds (b1 | b3) .: b2 = b1 /\ (b3 .: b2)
proof end;

definition
let c1 be Function;
let c2 be set ;
redefine func c1 " c2 -> set means :Def13: :: FUNCT_1:def 13
for b1 being set holds
( b1 in a3 iff ( b1 in dom a1 & a1 . b1 in a2 ) );
compatibility
for b1 being set holds
( b1 = c1 " c2 iff for b2 being set holds
( b2 in b1 iff ( b2 in dom c1 & c1 . b2 in c2 ) ) )
proof end;
end;

:: deftheorem Def13 defines " FUNCT_1:def 13 :
for b1 being Function
for b2 being set
for b3 being set holds
( b3 = b1 " b2 iff for b4 being set holds
( b4 in b3 iff ( b4 in dom b1 & b1 . b4 in b2 ) ) );

theorem Th127: :: FUNCT_1:127
canceled;

theorem Th128: :: FUNCT_1:128
canceled;

theorem Th129: :: FUNCT_1:129
canceled;

theorem Th130: :: FUNCT_1:130
canceled;

theorem Th131: :: FUNCT_1:131
canceled;

theorem Th132: :: FUNCT_1:132
canceled;

theorem Th133: :: FUNCT_1:133
canceled;

theorem Th134: :: FUNCT_1:134
canceled;

theorem Th135: :: FUNCT_1:135
canceled;

theorem Th136: :: FUNCT_1:136
canceled;

theorem Th137: :: FUNCT_1:137
for b1, b2 being set
for b3 being Function holds b3 " (b1 /\ b2) = (b3 " b1) /\ (b3 " b2)
proof end;

theorem Th138: :: FUNCT_1:138
for b1, b2 being set
for b3 being Function holds b3 " (b1 \ b2) = (b3 " b1) \ (b3 " b2)
proof end;

theorem Th139: :: FUNCT_1:139
for b1, b2 being set
for b3 being Relation holds (b3 | b1) " b2 = b1 /\ (b3 " b2)
proof end;

theorem Th140: :: FUNCT_1:140
canceled;

theorem Th141: :: FUNCT_1:141
canceled;

theorem Th142: :: FUNCT_1:142
for b1 being set
for b2 being Relation holds
( b1 in rng b2 iff b2 " {b1} <> {} )
proof end;

theorem Th143: :: FUNCT_1:143
for b1 being set
for b2 being Relation st ( for b3 being set st b3 in b1 holds
b2 " {b3} <> {} ) holds
b1 c= rng b2
proof end;

theorem Th144: :: FUNCT_1:144
for b1 being Function holds
( ( for b2 being set st b2 in rng b1 holds
ex b3 being set st b1 " {b2} = {b3} ) iff b1 is one-to-one )
proof end;

theorem Th145: :: FUNCT_1:145
for b1 being set
for b2 being Function holds b2 .: (b2 " b1) c= b1
proof end;

theorem Th146: :: FUNCT_1:146
for b1 being set
for b2 being Relation st b1 c= dom b2 holds
b1 c= b2 " (b2 .: b1)
proof end;

theorem Th147: :: FUNCT_1:147
for b1 being set
for b2 being Function st b1 c= rng b2 holds
b2 .: (b2 " b1) = b1
proof end;

theorem Th148: :: FUNCT_1:148
for b1 being set
for b2 being Function holds b2 .: (b2 " b1) = b1 /\ (b2 .: (dom b2))
proof end;

theorem Th149: :: FUNCT_1:149
for b1, b2 being set
for b3 being Function holds b3 .: (b1 /\ (b3 " b2)) c= (b3 .: b1) /\ b2
proof end;

theorem Th150: :: FUNCT_1:150
for b1, b2 being set
for b3 being Function holds b3 .: (b1 /\ (b3 " b2)) = (b3 .: b1) /\ b2
proof end;

theorem Th151: :: FUNCT_1:151
for b1, b2 being set
for b3 being Relation holds b1 /\ (b3 " b2) c= b3 " ((b3 .: b1) /\ b2)
proof end;

theorem Th152: :: FUNCT_1:152
for b1 being set
for b2 being Function st b2 is one-to-one holds
b2 " (b2 .: b1) c= b1
proof end;

theorem Th153: :: FUNCT_1:153
for b1 being Function st ( for b2 being set holds b1 " (b1 .: b2) c= b2 ) holds
b1 is one-to-one
proof end;

theorem Th154: :: FUNCT_1:154
for b1 being set
for b2 being Function st b2 is one-to-one holds
b2 .: b1 = (b2 " ) " b1
proof end;

theorem Th155: :: FUNCT_1:155
for b1 being set
for b2 being Function st b2 is one-to-one holds
b2 " b1 = (b2 " ) .: b1
proof end;

theorem Th156: :: FUNCT_1:156
for b1 being set
for b2, b3, b4 being Function st b1 = rng b2 & dom b3 = b1 & dom b4 = b1 & b3 * b2 = b4 * b2 holds
b3 = b4
proof end;

theorem Th157: :: FUNCT_1:157
for b1, b2 being set
for b3 being Function st b3 .: b1 c= b3 .: b2 & b1 c= dom b3 & b3 is one-to-one holds
b1 c= b2
proof end;

theorem Th158: :: FUNCT_1:158
for b1, b2 being set
for b3 being Function st b3 " b1 c= b3 " b2 & b1 c= rng b3 holds
b1 c= b2
proof end;

theorem Th159: :: FUNCT_1:159
for b1 being Function holds
( b1 is one-to-one iff for b2 being set ex b3 being set st b1 " {b2} c= {b3} )
proof end;

theorem Th160: :: FUNCT_1:160
for b1 being set
for b2, b3 being Relation st rng b2 c= dom b3 holds
b2 " b1 c= (b2 * b3) " (b3 .: b1)
proof end;

theorem Th161: :: FUNCT_1:161
for b1, b2 being set
for b3 being Function st b3 " b1 = b3 " b2 & b1 c= rng b3 & b2 c= rng b3 holds
b1 = b2
proof end;

theorem Th162: :: FUNCT_1:162
for b1 being set
for b2 being Subset of b1 holds (id b1) .: b2 = b2
proof end;

definition
let c1 be Function;
redefine attr a1 is empty-yielding means :: FUNCT_1:def 14
for b1 being set st b1 in dom a1 holds
a1 . b1 is empty;
compatibility
( c1 is empty-yielding iff for b1 being set st b1 in dom c1 holds
c1 . b1 is empty )
proof end;
end;

:: deftheorem Def14 defines empty-yielding FUNCT_1:def 14 :
for b1 being Function holds
( b1 is empty-yielding iff for b2 being set st b2 in dom b1 holds
b1 . b2 is empty );

registration
cluster empty-yielding set ;
existence
ex b1 being Function st b1 is empty-yielding
by RELAT_1:60;
end;

definition
let c1 be Function;
redefine attr a1 is non-empty means :Def15: :: FUNCT_1:def 15
for b1 being set st b1 in dom a1 holds
not a1 . b1 is empty;
compatibility
( c1 is non-empty iff for b1 being set st b1 in dom c1 holds
not c1 . b1 is empty )
proof end;
end;

:: deftheorem Def15 defines non-empty FUNCT_1:def 15 :
for b1 being Function holds
( b1 is non-empty iff for b2 being set st b2 in dom b1 holds
not b1 . b2 is empty );

registration
cluster non-empty set ;
existence
ex b1 being Function st b1 is non-empty
proof end;
end;

scheme :: FUNCT_1:sch 4
s4{ F1() -> non empty set , F2( set ) -> set } :
ex b1 being Function st
( dom b1 = F1() & ( for b2 being Element of F1() holds b1 . b2 = F2(b2) ) )
proof end;

registration
let c1 be non-empty Function;
cluster rng a1 -> with_non-empty_elements ;
coherence
rng c1 is with_non-empty_elements
proof end;
end;