:: PARTFUN1 semantic presentation

theorem Th1: :: PARTFUN1:1
for b1, b2, b3, b4, b5, b6 being set st b1 c= [:b2,b3:] & b4 c= [:b5,b6:] holds
b1 \/ b4 c= [:(b2 \/ b5),(b3 \/ b6):]
proof end;

theorem Th2: :: PARTFUN1:2
for b1, b2 being Function st ( for b3 being set st b3 in (dom b1) /\ (dom b2) holds
b1 . b3 = b2 . b3 ) holds
ex b3 being Function st b1 \/ b2 = b3
proof end;

theorem Th3: :: PARTFUN1:3
for b1, b2, b3 being Function st b1 \/ b2 = b3 holds
for b4 being set st b4 in (dom b1) /\ (dom b2) holds
b1 . b4 = b2 . b4
proof end;

scheme :: PARTFUN1:sch 1
s1{ F1() -> set , P1[ set ], F2( set ) -> set , F3( set ) -> set } :
ex b1 being Function st
( dom b1 = F1() & ( for b2 being set st b2 in F1() holds
( ( P1[b2] implies b1 . b2 = F2(b2) ) & ( P1[b2] implies b1 . b2 = F3(b2) ) ) ) )
proof end;

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

Lemma4: dom {} = {}
;

theorem Th4: :: PARTFUN1:4
canceled;

theorem Th5: :: PARTFUN1:5
canceled;

theorem Th6: :: PARTFUN1:6
canceled;

theorem Th7: :: PARTFUN1:7
canceled;

theorem Th8: :: PARTFUN1:8
canceled;

theorem Th9: :: PARTFUN1:9
canceled;

theorem Th10: :: PARTFUN1:10
rng {} = {} ;

E5: now
let c1, c2 be set ;
take c3 = {} ;
thus ( dom c3 c= c1 & rng c3 c= c2 ) by XBOOLE_1:2;
end;

Lemma6: for b1, b2 being set
for b3 being Relation holds
( b3 is Relation of b1,b2 iff ( dom b3 c= b1 & rng b3 c= b2 ) )
by RELSET_1:11, RELSET_1:12;

registration
let c1, c2 be set ;
cluster Function-like Relation of a1,a2;
existence
ex b1 being Relation of c1,c2 st b1 is Function-like
proof end;
end;

definition
let c1, c2 be set ;
mode PartFunc of a1,a2 is Function-like Relation of a1,a2;
end;

theorem Th11: :: PARTFUN1:11
canceled;

theorem Th12: :: PARTFUN1:12
canceled;

theorem Th13: :: PARTFUN1:13
canceled;

theorem Th14: :: PARTFUN1:14
canceled;

theorem Th15: :: PARTFUN1:15
canceled;

theorem Th16: :: PARTFUN1:16
canceled;

theorem Th17: :: PARTFUN1:17
canceled;

theorem Th18: :: PARTFUN1:18
canceled;

theorem Th19: :: PARTFUN1:19
canceled;

theorem Th20: :: PARTFUN1:20
canceled;

theorem Th21: :: PARTFUN1:21
canceled;

theorem Th22: :: PARTFUN1:22
canceled;

theorem Th23: :: PARTFUN1:23
canceled;

theorem Th24: :: PARTFUN1:24
for b1 being Function holds b1 is PartFunc of dom b1, rng b1 by Lemma6;

theorem Th25: :: PARTFUN1:25
for b1 being set
for b2 being Function st rng b2 c= b1 holds
b2 is PartFunc of dom b2,b1 by Lemma6;

theorem Th26: :: PARTFUN1:26
for b1, b2, b3 being set
for b4 being PartFunc of b1,b2 st b3 in rng b4 holds
ex b5 being Element of b1 st
( b5 in dom b4 & b3 = b4 . b5 )
proof end;

theorem Th27: :: PARTFUN1:27
for b1, b2, b3 being set
for b4 being PartFunc of b1,b2 st b3 in dom b4 holds
b4 . b3 in b2
proof end;

theorem Th28: :: PARTFUN1:28
for b1, b2, b3 being set
for b4 being PartFunc of b1,b2 st dom b4 c= b3 holds
b4 is PartFunc of b3,b2
proof end;

theorem Th29: :: PARTFUN1:29
for b1, b2, b3 being set
for b4 being PartFunc of b1,b2 st rng b4 c= b3 holds
b4 is PartFunc of b1,b3
proof end;

theorem Th30: :: PARTFUN1:30
for b1, b2, b3 being set
for b4 being PartFunc of b1,b2 st b1 c= b3 holds
b4 is PartFunc of b3,b2
proof end;

theorem Th31: :: PARTFUN1:31
for b1, b2, b3 being set
for b4 being PartFunc of b1,b2 st b2 c= b3 holds
b4 is PartFunc of b1,b3
proof end;

theorem Th32: :: PARTFUN1:32
for b1, b2, b3, b4 being set
for b5 being PartFunc of b1,b2 st b1 c= b3 & b2 c= b4 holds
b5 is PartFunc of b3,b4
proof end;

theorem Th33: :: PARTFUN1:33
for b1, b2 being set
for b3 being Function
for b4 being PartFunc of b1,b2 st b3 c= b4 holds
b3 is PartFunc of b1,b2
proof end;

theorem Th34: :: PARTFUN1:34
for b1, b2 being set
for b3, b4 being PartFunc of b1,b2 st dom b3 = dom b4 & ( for b5 being Element of b1 st b5 in dom b3 holds
b3 . b5 = b4 . b5 ) holds
b3 = b4
proof end;

theorem Th35: :: PARTFUN1:35
for b1, b2, b3 being set
for b4, b5 being PartFunc of [:b1,b2:],b3 st dom b4 = dom b5 & ( for b6, b7 being set st [b6,b7] in dom b4 holds
b4 . [b6,b7] = b5 . [b6,b7] ) holds
b4 = b5
proof end;

scheme :: PARTFUN1:sch 2
s2{ F1() -> set , F2() -> set , P1[ set , set ] } :
ex b1 being PartFunc of F1(),F2() st
( ( for b2 being set holds
( b2 in dom b1 iff ( b2 in F1() & ex b3 being set st P1[b2,b3] ) ) ) & ( for b2 being set st b2 in dom b1 holds
P1[b2,b1 . b2] ) )
provided
E11: for b1, b2 being set st b1 in F1() & P1[b1,b2] holds
b2 in F2() and
E12: for b1, b2, b3 being set st b1 in F1() & P1[b1,b2] & P1[b1,b3] holds
b2 = b3
proof end;

scheme :: PARTFUN1:sch 3
s3{ F1() -> set , F2() -> set , F3( set ) -> set , P1[ set ] } :
ex b1 being PartFunc of F1(),F2() st
( ( for b2 being set holds
( b2 in dom b1 iff ( b2 in F1() & P1[b2] ) ) ) & ( for b2 being set st b2 in dom b1 holds
b1 . b2 = F3(b2) ) )
provided
E11: for b1 being set st P1[b1] holds
F3(b1) in F2()
proof end;

scheme :: PARTFUN1:sch 4
s4{ F1() -> set , F2() -> set , F3() -> set , P1[ set , set , set ] } :
ex b1 being PartFunc of [:F1(),F2():],F3() st
( ( for b2, b3 being set holds
( [b2,b3] in dom b1 iff ( b2 in F1() & b3 in F2() & ex b4 being set st P1[b2,b3,b4] ) ) ) & ( for b2, b3 being set st [b2,b3] in dom b1 holds
P1[b2,b3,b1 . [b2,b3]] ) )
provided
E11: for b1, b2, b3 being set st b1 in F1() & b2 in F2() & P1[b1,b2,b3] holds
b3 in F3() and
E12: 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
proof end;

scheme :: PARTFUN1:sch 5
s5{ F1() -> set , F2() -> set , F3() -> set , F4( set , set ) -> set , P1[ set , set ] } :
ex b1 being PartFunc of [:F1(),F2():],F3() st
( ( for b2, b3 being set holds
( [b2,b3] in dom b1 iff ( b2 in F1() & b3 in F2() & P1[b2,b3] ) ) ) & ( for b2, b3 being set st [b2,b3] in dom b1 holds
b1 . [b2,b3] = F4(b2,b3) ) )
provided
E11: for b1, b2 being set st P1[b1,b2] holds
F4(b1,b2) in F3()
proof end;

definition
let c1, c2, c3, c4 be set ;
let c5 be PartFunc of c1,c2;
let c6 be PartFunc of c3,c4;
redefine func * as c6 * c5 -> PartFunc of a1,a4;
coherence
c5 * c6 is PartFunc of c1,c4
proof end;
end;

theorem Th36: :: PARTFUN1:36
for b1, b2 being set
for b3 being Relation of b1,b2 holds (id b1) * b3 = b3
proof end;

theorem Th37: :: PARTFUN1:37
for b1, b2 being set
for b3 being Relation of b1,b2 holds b3 * (id b2) = b3
proof end;

theorem Th38: :: PARTFUN1:38
for b1, b2 being set
for b3 being PartFunc of b1,b2 st ( for b4, b5 being Element of b1 st b4 in dom b3 & b5 in dom b3 & b3 . b4 = b3 . b5 holds
b4 = b5 ) holds
b3 is one-to-one
proof end;

theorem Th39: :: PARTFUN1:39
for b1, b2 being set
for b3 being PartFunc of b1,b2 st b3 is one-to-one holds
b3 " is PartFunc of b2,b1
proof end;

theorem Th40: :: PARTFUN1:40
canceled;

theorem Th41: :: PARTFUN1:41
canceled;

theorem Th42: :: PARTFUN1:42
canceled;

theorem Th43: :: PARTFUN1:43
for b1, b2, b3 being set
for b4 being PartFunc of b1,b2 holds b4 | b3 is PartFunc of b3,b2
proof end;

theorem Th44: :: PARTFUN1:44
for b1, b2, b3 being set
for b4 being PartFunc of b1,b2 holds b4 | b3 is PartFunc of b1,b2 ;

definition
let c1, c2 be set ;
let c3 be PartFunc of c1,c2;
let c4 be set ;
redefine func | as c3 | c4 -> PartFunc of a1,a2;
coherence
c3 | c4 is PartFunc of c1,c2
by Th44;
end;

theorem Th45: :: PARTFUN1:45
for b1, b2, b3 being set
for b4 being PartFunc of b1,b2 holds b3 | b4 is PartFunc of b1,b3
proof end;

theorem Th46: :: PARTFUN1:46
for b1, b2, b3 being set
for b4 being PartFunc of b1,b2 holds b3 | b4 is PartFunc of b1,b2 ;

theorem Th47: :: PARTFUN1:47
for b1, b2 being set
for b3 being Function holds (b1 | b3) | b2 is PartFunc of b2,b1
proof end;

theorem Th48: :: PARTFUN1:48
canceled;

theorem Th49: :: PARTFUN1:49
for b1, b2, b3 being set
for b4 being PartFunc of b1,b2 st b3 in b4 .: b1 holds
ex b5 being Element of b1 st
( b5 in dom b4 & b3 = b4 . b5 )
proof end;

theorem Th50: :: PARTFUN1:50
canceled;

theorem Th51: :: PARTFUN1:51
for b1, b2 being set
for b3 being PartFunc of b1,b2 holds b3 .: b1 = rng b3
proof end;

theorem Th52: :: PARTFUN1:52
canceled;

theorem Th53: :: PARTFUN1:53
for b1, b2 being set
for b3 being PartFunc of b1,b2 holds b3 " b2 = dom b3
proof end;

theorem Th54: :: PARTFUN1:54
for b1 being set
for b2 being PartFunc of {} ,b1 holds
( dom b2 = {} & rng b2 = {} )
proof end;

theorem Th55: :: PARTFUN1:55
for b1, b2 being set
for b3 being Function st dom b3 = {} holds
b3 is PartFunc of b1,b2
proof end;

theorem Th56: :: PARTFUN1:56
for b1, b2 being set holds {} is PartFunc of b1,b2 by Lemma4, Th55;

theorem Th57: :: PARTFUN1:57
for b1 being set
for b2 being PartFunc of {} ,b1 holds b2 = {}
proof end;

theorem Th58: :: PARTFUN1:58
for b1, b2 being set
for b3 being PartFunc of {} ,b1
for b4 being PartFunc of {} ,b2 holds b3 = b4
proof end;

theorem Th59: :: PARTFUN1:59
for b1 being set
for b2 being PartFunc of {} ,b1 holds b2 is one-to-one by Th57;

theorem Th60: :: PARTFUN1:60
for b1, b2 being set
for b3 being PartFunc of {} ,b1 holds b3 .: b2 = {}
proof end;

theorem Th61: :: PARTFUN1:61
for b1, b2 being set
for b3 being PartFunc of {} ,b1 holds b3 " b2 = {}
proof end;

theorem Th62: :: PARTFUN1:62
for b1 being set
for b2 being PartFunc of b1, {} holds
( dom b2 = {} & rng b2 = {} )
proof end;

theorem Th63: :: PARTFUN1:63
for b1, b2 being set
for b3 being Function st rng b3 = {} holds
b3 is PartFunc of b1,b2
proof end;

theorem Th64: :: PARTFUN1:64
for b1 being set
for b2 being PartFunc of b1, {} holds b2 = {}
proof end;

theorem Th65: :: PARTFUN1:65
for b1, b2 being set
for b3 being PartFunc of b1, {}
for b4 being PartFunc of b2, {} holds b3 = b4
proof end;

theorem Th66: :: PARTFUN1:66
for b1 being set
for b2 being PartFunc of b1, {} holds b2 is one-to-one by Th64;

theorem Th67: :: PARTFUN1:67
for b1, b2 being set
for b3 being PartFunc of b1, {} holds b3 .: b2 = {}
proof end;

theorem Th68: :: PARTFUN1:68
for b1, b2 being set
for b3 being PartFunc of b1, {} holds b3 " b2 = {}
proof end;

theorem Th69: :: PARTFUN1:69
for b1, b2 being set
for b3 being PartFunc of {b1},b2 holds rng b3 c= {(b3 . b1)}
proof end;

theorem Th70: :: PARTFUN1:70
for b1, b2 being set
for b3 being PartFunc of {b1},b2 holds b3 is one-to-one
proof end;

theorem Th71: :: PARTFUN1:71
for b1, b2, b3 being set
for b4 being PartFunc of {b1},b2 holds b4 .: b3 c= {(b4 . b1)}
proof end;

theorem Th72: :: PARTFUN1:72
for b1, b2, b3 being set
for b4 being Function st dom b4 = {b1} & b1 in b2 & b4 . b1 in b3 holds
b4 is PartFunc of b2,b3
proof end;

theorem Th73: :: PARTFUN1:73
for b1, b2, b3 being set
for b4 being PartFunc of b1,{b2} st b3 in dom b4 holds
b4 . b3 = b2
proof end;

theorem Th74: :: PARTFUN1:74
for b1, b2 being set
for b3, b4 being PartFunc of b1,{b2} st dom b3 = dom b4 holds
b3 = b4
proof end;

definition
let c1 be Function;
let c2, c3 be set ;
canceled;
canceled;
func <:c1,c2,c3:> -> PartFunc of a2,a3 equals :: PARTFUN1:def 3
(a3 | a1) | a2;
coherence
(c3 | c1) | c2 is PartFunc of c2,c3
by Th47;
end;

:: deftheorem Def1 PARTFUN1:def 1 :
canceled;

:: deftheorem Def2 PARTFUN1:def 2 :
canceled;

:: deftheorem Def3 defines <: PARTFUN1:def 3 :
for b1 being Function
for b2, b3 being set holds <:b1,b2,b3:> = (b3 | b1) | b2;

theorem Th75: :: PARTFUN1:75
canceled;

theorem Th76: :: PARTFUN1:76
for b1, b2 being set
for b3 being Function holds <:b3,b1,b2:> c= b3
proof end;

theorem Th77: :: PARTFUN1:77
for b1, b2 being set
for b3 being Function holds
( dom <:b3,b1,b2:> c= dom b3 & rng <:b3,b1,b2:> c= rng b3 )
proof end;

theorem Th78: :: PARTFUN1:78
for b1, b2, b3 being set
for b4 being Function holds
( b1 in dom <:b4,b2,b3:> iff ( b1 in dom b4 & b1 in b2 & b4 . b1 in b3 ) )
proof end;

theorem Th79: :: PARTFUN1:79
for b1, b2, b3 being set
for b4 being Function st b1 in dom b4 & b1 in b2 & b4 . b1 in b3 holds
<:b4,b2,b3:> . b1 = b4 . b1
proof end;

theorem Th80: :: PARTFUN1:80
for b1, b2, b3 being set
for b4 being Function st b1 in dom <:b4,b2,b3:> holds
<:b4,b2,b3:> . b1 = b4 . b1
proof end;

theorem Th81: :: PARTFUN1:81
for b1, b2 being set
for b3, b4 being Function st b3 c= b4 holds
<:b3,b1,b2:> c= <:b4,b1,b2:>
proof end;

theorem Th82: :: PARTFUN1:82
for b1, b2, b3 being set
for b4 being Function st b1 c= b2 holds
<:b4,b1,b3:> c= <:b4,b2,b3:>
proof end;

theorem Th83: :: PARTFUN1:83
for b1, b2, b3 being set
for b4 being Function st b1 c= b2 holds
<:b4,b3,b1:> c= <:b4,b3,b2:>
proof end;

theorem Th84: :: PARTFUN1:84
for b1, b2, b3, b4 being set
for b5 being Function st b1 c= b2 & b3 c= b4 holds
<:b5,b1,b3:> c= <:b5,b2,b4:>
proof end;

theorem Th85: :: PARTFUN1:85
for b1, b2 being set
for b3 being Function st dom b3 c= b1 & rng b3 c= b2 holds
b3 = <:b3,b1,b2:>
proof end;

theorem Th86: :: PARTFUN1:86
for b1 being Function holds b1 = <:b1,(dom b1),(rng b1):> by Th85;

theorem Th87: :: PARTFUN1:87
for b1, b2 being set
for b3 being PartFunc of b1,b2 holds <:b3,b1,b2:> = b3
proof end;

theorem Th88: :: PARTFUN1:88
canceled;

theorem Th89: :: PARTFUN1:89
canceled;

theorem Th90: :: PARTFUN1:90
canceled;

theorem Th91: :: PARTFUN1:91
for b1, b2 being set holds <:{} ,b1,b2:> = {}
proof end;

theorem Th92: :: PARTFUN1:92
for b1, b2, b3 being set
for b4, b5 being Function holds <:b5,b1,b2:> * <:b4,b3,b1:> c= <:(b5 * b4),b3,b2:>
proof end;

theorem Th93: :: PARTFUN1:93
for b1, b2, b3 being set
for b4, b5 being Function st (rng b4) /\ (dom b5) c= b1 holds
<:b5,b1,b2:> * <:b4,b3,b1:> = <:(b5 * b4),b3,b2:>
proof end;

theorem Th94: :: PARTFUN1:94
for b1, b2 being set
for b3 being Function st b3 is one-to-one holds
<:b3,b1,b2:> is one-to-one
proof end;

theorem Th95: :: PARTFUN1:95
for b1, b2 being set
for b3 being Function st b3 is one-to-one holds
<:b3,b1,b2:> " = <:(b3 " ),b2,b1:>
proof end;

theorem Th96: :: PARTFUN1:96
for b1, b2, b3 being set
for b4 being Function holds <:b4,b1,b2:> | b3 = <:b4,(b1 /\ b3),b2:> by RELAT_1:100;

theorem Th97: :: PARTFUN1:97
for b1, b2, b3 being set
for b4 being Function holds b1 | <:b4,b2,b3:> = <:b4,b2,(b1 /\ b3):>
proof end;

definition
let c1, c2 be set ;
let c3 be Relation of c1,c2;
attr a3 is total means :Def4: :: PARTFUN1:def 4
dom a3 = a1;
end;

:: deftheorem Def4 defines total PARTFUN1:def 4 :
for b1, b2 being set
for b3 being Relation of b1,b2 holds
( b3 is total iff dom b3 = b1 );

theorem Th98: :: PARTFUN1:98
canceled;

theorem Th99: :: PARTFUN1:99
for b1, b2 being set
for b3 being PartFunc of b1,b2 st b3 is total & b2 = {} holds
b1 = {}
proof end;

theorem Th100: :: PARTFUN1:100
canceled;

theorem Th101: :: PARTFUN1:101
canceled;

theorem Th102: :: PARTFUN1:102
canceled;

theorem Th103: :: PARTFUN1:103
canceled;

theorem Th104: :: PARTFUN1:104
canceled;

theorem Th105: :: PARTFUN1:105
canceled;

theorem Th106: :: PARTFUN1:106
canceled;

theorem Th107: :: PARTFUN1:107
canceled;

theorem Th108: :: PARTFUN1:108
canceled;

theorem Th109: :: PARTFUN1:109
canceled;

theorem Th110: :: PARTFUN1:110
canceled;

theorem Th111: :: PARTFUN1:111
canceled;

theorem Th112: :: PARTFUN1:112
for b1 being set
for b2 being PartFunc of {} ,b1 holds b2 is total
proof end;

theorem Th113: :: PARTFUN1:113
for b1, b2 being set
for b3 being Function st <:b3,b1,b2:> is total holds
b1 c= dom b3
proof end;

theorem Th114: :: PARTFUN1:114
for b1, b2 being set st <:{} ,b1,b2:> is total holds
b1 = {}
proof end;

theorem Th115: :: PARTFUN1:115
for b1, b2 being set
for b3 being Function st b1 c= dom b3 & rng b3 c= b2 holds
<:b3,b1,b2:> is total
proof end;

theorem Th116: :: PARTFUN1:116
for b1, b2 being set
for b3 being Function st <:b3,b1,b2:> is total holds
b3 .: b1 c= b2
proof end;

theorem Th117: :: PARTFUN1:117
for b1, b2 being set
for b3 being Function st b1 c= dom b3 & b3 .: b1 c= b2 holds
<:b3,b1,b2:> is total
proof end;

definition
let c1, c2 be set ;
func PFuncs c1,c2 -> set means :Def5: :: PARTFUN1:def 5
for b1 being set holds
( b1 in a3 iff ex b2 being Function st
( b1 = b2 & dom b2 c= a1 & rng b2 c= a2 ) );
existence
ex b1 being set st
for b2 being set holds
( b2 in b1 iff ex b3 being Function st
( b2 = b3 & dom b3 c= c1 & rng b3 c= c2 ) )
proof end;
uniqueness
for b1, b2 being set st ( for b3 being set holds
( b3 in b1 iff ex b4 being Function st
( b3 = b4 & dom b4 c= c1 & rng b4 c= c2 ) ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4 being Function st
( b3 = b4 & dom b4 c= c1 & rng b4 c= c2 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def5 defines PFuncs PARTFUN1:def 5 :
for b1, b2, b3 being set holds
( b3 = PFuncs b1,b2 iff for b4 being set holds
( b4 in b3 iff ex b5 being Function st
( b4 = b5 & dom b5 c= b1 & rng b5 c= b2 ) ) );

registration
let c1, c2 be set ;
cluster PFuncs a1,a2 -> non empty ;
coherence
not PFuncs c1,c2 is empty
proof end;
end;

theorem Th118: :: PARTFUN1:118
canceled;

theorem Th119: :: PARTFUN1:119
for b1, b2 being set
for b3 being PartFunc of b1,b2 holds b3 in PFuncs b1,b2
proof end;

theorem Th120: :: PARTFUN1:120
for b1, b2, b3 being set st b3 in PFuncs b1,b2 holds
b3 is PartFunc of b1,b2
proof end;

theorem Th121: :: PARTFUN1:121
for b1, b2 being set
for b3 being Element of PFuncs b1,b2 holds b3 is PartFunc of b1,b2 by Th120;

theorem Th122: :: PARTFUN1:122
for b1 being set holds PFuncs {} ,b1 = {{} }
proof end;

theorem Th123: :: PARTFUN1:123
for b1 being set holds PFuncs b1,{} = {{} }
proof end;

theorem Th124: :: PARTFUN1:124
canceled;

theorem Th125: :: PARTFUN1:125
for b1, b2, b3 being set st b1 c= b2 holds
PFuncs b1,b3 c= PFuncs b2,b3
proof end;

theorem Th126: :: PARTFUN1:126
for b1, b2 being set holds PFuncs {} ,b1 c= PFuncs b2,b1
proof end;

theorem Th127: :: PARTFUN1:127
for b1, b2, b3 being set st b1 c= b2 holds
PFuncs b3,b1 c= PFuncs b3,b2
proof end;

theorem Th128: :: PARTFUN1:128
for b1, b2, b3, b4 being set st b1 c= b2 & b3 c= b4 holds
PFuncs b1,b3 c= PFuncs b2,b4
proof end;

definition
let c1, c2 be Function;
pred c1 tolerates c2 means :Def6: :: PARTFUN1:def 6
for b1 being set st b1 in (dom a1) /\ (dom a2) holds
a1 . b1 = a2 . b1;
reflexivity
for b1 being Function
for b2 being set st b2 in (dom b1) /\ (dom b1) holds
b1 . b2 = b1 . b2
;
symmetry
for b1, b2 being Function st ( for b3 being set st b3 in (dom b1) /\ (dom b2) holds
b1 . b3 = b2 . b3 ) holds
for b3 being set st b3 in (dom b2) /\ (dom b1) holds
b2 . b3 = b1 . b3
;
end;

:: deftheorem Def6 defines tolerates PARTFUN1:def 6 :
for b1, b2 being Function holds
( b1 tolerates b2 iff for b3 being set st b3 in (dom b1) /\ (dom b2) holds
b1 . b3 = b2 . b3 );

theorem Th129: :: PARTFUN1:129
canceled;

theorem Th130: :: PARTFUN1:130
for b1, b2 being Function holds
( b1 tolerates b2 iff ex b3 being Function st b1 \/ b2 = b3 )
proof end;

theorem Th131: :: PARTFUN1:131
for b1, b2 being Function holds
( b1 tolerates b2 iff ex b3 being Function st
( b1 c= b3 & b2 c= b3 ) )
proof end;

theorem Th132: :: PARTFUN1:132
for b1, b2 being Function st dom b1 c= dom b2 holds
( b1 tolerates b2 iff for b3 being set st b3 in dom b1 holds
b1 . b3 = b2 . b3 )
proof end;

theorem Th133: :: PARTFUN1:133
canceled;

theorem Th134: :: PARTFUN1:134
canceled;

theorem Th135: :: PARTFUN1:135
for b1, b2 being Function st b1 c= b2 holds
b1 tolerates b2 by Th131;

theorem Th136: :: PARTFUN1:136
for b1, b2 being Function st dom b1 = dom b2 & b1 tolerates b2 holds
b1 = b2
proof end;

theorem Th137: :: PARTFUN1:137
canceled;

theorem Th138: :: PARTFUN1:138
for b1, b2 being Function st dom b1 misses dom b2 holds
b1 tolerates b2
proof end;

theorem Th139: :: PARTFUN1:139
for b1, b2, b3 being Function st b1 c= b3 & b2 c= b3 holds
b1 tolerates b2 by Th131;

theorem Th140: :: PARTFUN1:140
for b1, b2 being set
for b3, b4 being PartFunc of b1,b2
for b5 being Function st b3 tolerates b5 & b4 c= b3 holds
b4 tolerates b5
proof end;

theorem Th141: :: PARTFUN1:141
for b1 being Function holds {} tolerates b1
proof end;

theorem Th142: :: PARTFUN1:142
for b1, b2 being set
for b3 being Function holds <:{} ,b1,b2:> tolerates b3
proof end;

theorem Th143: :: PARTFUN1:143
for b1, b2 being set
for b3, b4 being PartFunc of b1,{b2} holds b3 tolerates b4
proof end;

theorem Th144: :: PARTFUN1:144
for b1 being set
for b2 being Function holds b2 | b1 tolerates b2
proof end;

theorem Th145: :: PARTFUN1:145
for b1 being set
for b2 being Function holds b1 | b2 tolerates b2
proof end;

theorem Th146: :: PARTFUN1:146
for b1, b2 being set
for b3 being Function holds (b1 | b3) | b2 tolerates b3
proof end;

theorem Th147: :: PARTFUN1:147
for b1, b2 being set
for b3 being Function holds <:b3,b1,b2:> tolerates b3 by Th146;

theorem Th148: :: PARTFUN1:148
for b1, b2 being set
for b3, b4 being PartFunc of b1,b2 st b3 is total & b4 is total & b3 tolerates b4 holds
b3 = b4
proof end;

theorem Th149: :: PARTFUN1:149
canceled;

theorem Th150: :: PARTFUN1:150
canceled;

theorem Th151: :: PARTFUN1:151
canceled;

theorem Th152: :: PARTFUN1:152
canceled;

theorem Th153: :: PARTFUN1:153
canceled;

theorem Th154: :: PARTFUN1:154
canceled;

theorem Th155: :: PARTFUN1:155
canceled;

theorem Th156: :: PARTFUN1:156
canceled;

theorem Th157: :: PARTFUN1:157
canceled;

theorem Th158: :: PARTFUN1:158
for b1, b2 being set
for b3, b4, b5 being PartFunc of b1,b2 st b3 tolerates b5 & b4 tolerates b5 & b5 is total holds
b3 tolerates b4
proof end;

theorem Th159: :: PARTFUN1:159
canceled;

theorem Th160: :: PARTFUN1:160
canceled;

theorem Th161: :: PARTFUN1:161
canceled;

theorem Th162: :: PARTFUN1:162
for b1, b2 being set
for b3, b4 being PartFunc of b1,b2 st ( b2 = {} implies b1 = {} ) & b3 tolerates b4 holds
ex b5 being PartFunc of b1,b2 st
( b5 is total & b3 tolerates b5 & b4 tolerates b5 )
proof end;

definition
let c1, c2 be set ;
let c3 be PartFunc of c1,c2;
func TotFuncs c3 -> set means :Def7: :: PARTFUN1:def 7
for b1 being set holds
( b1 in a4 iff ex b2 being PartFunc of a1,a2 st
( b2 = b1 & b2 is total & a3 tolerates b2 ) );
existence
ex b1 being set st
for b2 being set holds
( b2 in b1 iff ex b3 being PartFunc of c1,c2 st
( b3 = b2 & b3 is total & c3 tolerates b3 ) )
proof end;
uniqueness
for b1, b2 being set st ( for b3 being set holds
( b3 in b1 iff ex b4 being PartFunc of c1,c2 st
( b4 = b3 & b4 is total & c3 tolerates b4 ) ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4 being PartFunc of c1,c2 st
( b4 = b3 & b4 is total & c3 tolerates b4 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def7 defines TotFuncs PARTFUN1:def 7 :
for b1, b2 being set
for b3 being PartFunc of b1,b2
for b4 being set holds
( b4 = TotFuncs b3 iff for b5 being set holds
( b5 in b4 iff ex b6 being PartFunc of b1,b2 st
( b6 = b5 & b6 is total & b3 tolerates b6 ) ) );

theorem Th163: :: PARTFUN1:163
canceled;

theorem Th164: :: PARTFUN1:164
canceled;

theorem Th165: :: PARTFUN1:165
canceled;

theorem Th166: :: PARTFUN1:166
canceled;

theorem Th167: :: PARTFUN1:167
canceled;

theorem Th168: :: PARTFUN1:168
for b1, b2 being set
for b3 being PartFunc of b1,b2
for b4 being set st b4 in TotFuncs b3 holds
b4 is PartFunc of b1,b2
proof end;

theorem Th169: :: PARTFUN1:169
for b1, b2 being set
for b3, b4 being PartFunc of b1,b2 st b4 in TotFuncs b3 holds
b4 is total
proof end;

theorem Th170: :: PARTFUN1:170
canceled;

theorem Th171: :: PARTFUN1:171
for b1, b2 being set
for b3 being PartFunc of b1,b2
for b4 being Function st b4 in TotFuncs b3 holds
b3 tolerates b4
proof end;

theorem Th172: :: PARTFUN1:172
for b1 being set
for b2 being PartFunc of b1, {} st b1 <> {} holds
TotFuncs b2 = {}
proof end;

theorem Th173: :: PARTFUN1:173
canceled;

theorem Th174: :: PARTFUN1:174
for b1, b2 being set
for b3 being PartFunc of b1,b2 holds
( b3 is total iff TotFuncs b3 = {b3} )
proof end;

theorem Th175: :: PARTFUN1:175
for b1 being set
for b2 being PartFunc of {} ,b1 holds TotFuncs b2 = {b2}
proof end;

theorem Th176: :: PARTFUN1:176
for b1 being set
for b2 being PartFunc of {} ,b1 holds TotFuncs b2 = {{} }
proof end;

theorem Th177: :: PARTFUN1:177
canceled;

theorem Th178: :: PARTFUN1:178
canceled;

theorem Th179: :: PARTFUN1:179
canceled;

theorem Th180: :: PARTFUN1:180
canceled;

theorem Th181: :: PARTFUN1:181
canceled;

theorem Th182: :: PARTFUN1:182
canceled;

theorem Th183: :: PARTFUN1:183
canceled;

theorem Th184: :: PARTFUN1:184
canceled;

theorem Th185: :: PARTFUN1:185
for b1, b2 being set
for b3, b4 being PartFunc of b1,b2 st TotFuncs b3 meets TotFuncs b4 holds
b3 tolerates b4
proof end;

theorem Th186: :: PARTFUN1:186
for b1, b2 being set
for b3, b4 being PartFunc of b1,b2 st ( b2 = {} implies b1 = {} ) & b3 tolerates b4 holds
TotFuncs b3 meets TotFuncs b4
proof end;

Lemma55: for b1 being set
for b2 being Relation of b1 st b2 = id b1 holds
b2 is total
proof end;

Lemma56: for b1 being set
for b2 being Relation st b2 = id b1 holds
( b2 is reflexive & b2 is symmetric & b2 is antisymmetric & b2 is transitive )
proof end;

Lemma57: for b1 being set holds id b1 is Relation of b1
proof end;

registration
let c1 be set ;
cluster reflexive symmetric antisymmetric transitive total Relation of a1,a1;
existence
ex b1 being Relation of c1 st
( b1 is total & b1 is reflexive & b1 is symmetric & b1 is antisymmetric & b1 is transitive )
proof end;
end;

registration
cluster symmetric transitive -> reflexive set ;
coherence
for b1 being Relation st b1 is symmetric & b1 is transitive holds
b1 is reflexive
proof end;
end;

registration
let c1 be set ;
cluster id a1 -> reflexive symmetric antisymmetric transitive ;
coherence
( id c1 is symmetric & id c1 is antisymmetric & id c1 is transitive )
by Lemma56;
end;

definition
let c1 be set ;
redefine func id as id c1 -> total Relation of a1;
coherence
id c1 is total Relation of c1
by Lemma55, Lemma57;
end;