:: FUNCOP_1 semantic presentation

theorem Th1: :: FUNCOP_1:1
for b1 being Relation
for b2, b3 being set st b2 <> {} & b3 <> {} & b1 = [:b2,b3:] holds
( dom b1 = b2 & rng b1 = b3 )
proof end;

theorem Th2: :: FUNCOP_1:2
for b1 being set holds delta b1 = <:(id b1),(id b1):>
proof end;

theorem Th3: :: FUNCOP_1:3
for b1, b2, b3 being Function st dom b1 = dom b2 holds
dom (b1 * b3) = dom (b2 * b3)
proof end;

theorem Th4: :: FUNCOP_1:4
for b1, b2 being Function st dom b1 = {} & dom b2 = {} holds
b1 = b2
proof end;

definition
let c1 be Function;
func c1 ~ -> Function means :Def1: :: FUNCOP_1:def 1
( dom a2 = dom a1 & ( for b1 being set st b1 in dom a1 holds
( ( for b2, b3 being set st a1 . b1 = [b2,b3] holds
a2 . b1 = [b3,b2] ) & ( a1 . b1 = a2 . b1 or ex b2, b3 being set st a1 . b1 = [b2,b3] ) ) ) );
existence
ex b1 being Function st
( dom b1 = dom c1 & ( for b2 being set st b2 in dom c1 holds
( ( for b3, b4 being set st c1 . b2 = [b3,b4] holds
b1 . b2 = [b4,b3] ) & ( c1 . b2 = b1 . b2 or ex b3, b4 being set st c1 . b2 = [b3,b4] ) ) ) )
proof end;
uniqueness
for b1, b2 being Function st dom b1 = dom c1 & ( for b3 being set st b3 in dom c1 holds
( ( for b4, b5 being set st c1 . b3 = [b4,b5] holds
b1 . b3 = [b5,b4] ) & ( c1 . b3 = b1 . b3 or ex b4, b5 being set st c1 . b3 = [b4,b5] ) ) ) & dom b2 = dom c1 & ( for b3 being set st b3 in dom c1 holds
( ( for b4, b5 being set st c1 . b3 = [b4,b5] holds
b2 . b3 = [b5,b4] ) & ( c1 . b3 = b2 . b3 or ex b4, b5 being set st c1 . b3 = [b4,b5] ) ) ) holds
b1 = b2
proof end;
involutiveness
for b1, b2 being Function st dom b1 = dom b2 & ( for b3 being set st b3 in dom b2 holds
( ( for b4, b5 being set st b2 . b3 = [b4,b5] holds
b1 . b3 = [b5,b4] ) & ( b2 . b3 = b1 . b3 or ex b4, b5 being set st b2 . b3 = [b4,b5] ) ) ) holds
( dom b2 = dom b1 & ( for b3 being set st b3 in dom b1 holds
( ( for b4, b5 being set st b1 . b3 = [b4,b5] holds
b2 . b3 = [b5,b4] ) & ( b1 . b3 = b2 . b3 or ex b4, b5 being set st b1 . b3 = [b4,b5] ) ) ) )
proof end;
end;

:: deftheorem Def1 defines ~ FUNCOP_1:def 1 :
for b1, b2 being Function holds
( b2 = b1 ~ iff ( dom b2 = dom b1 & ( for b3 being set st b3 in dom b1 holds
( ( for b4, b5 being set st b1 . b3 = [b4,b5] holds
b2 . b3 = [b5,b4] ) & ( b1 . b3 = b2 . b3 or ex b4, b5 being set st b1 . b3 = [b4,b5] ) ) ) ) );

theorem Th5: :: FUNCOP_1:5
canceled;

theorem Th6: :: FUNCOP_1:6
for b1, b2 being Function holds <:b1,b2:> = <:b2,b1:> ~
proof end;

theorem Th7: :: FUNCOP_1:7
for b1 being Function
for b2 being set holds (b1 | b2) ~ = (b1 ~ ) | b2
proof end;

theorem Th8: :: FUNCOP_1:8
canceled;

theorem Th9: :: FUNCOP_1:9
for b1 being set holds (delta b1) ~ = delta b1
proof end;

theorem Th10: :: FUNCOP_1:10
for b1, b2 being Function
for b3 being set holds <:b1,b2:> | b3 = <:(b1 | b3),b2:>
proof end;

theorem Th11: :: FUNCOP_1:11
for b1, b2 being Function
for b3 being set holds <:b1,b2:> | b3 = <:b1,(b2 | b3):>
proof end;

definition
let c1, c2 be set ;
func c1 --> c2 -> set equals :: FUNCOP_1:def 2
[:a1,{a2}:];
coherence
[:c1,{c2}:] is set
;
end;

:: deftheorem Def2 defines --> FUNCOP_1:def 2 :
for b1, b2 being set holds b1 --> b2 = [:b1,{b2}:];

registration
let c1, c2 be set ;
cluster a1 --> a2 -> Relation-like Function-like ;
coherence
( c1 --> c2 is Function-like & c1 --> c2 is Relation-like )
proof end;
end;

theorem Th12: :: FUNCOP_1:12
canceled;

theorem Th13: :: FUNCOP_1:13
for b1, b2, b3 being set st b2 in b1 holds
(b1 --> b3) . b2 = b3
proof end;

theorem Th14: :: FUNCOP_1:14
for b1, b2 being set st b1 <> {} holds
rng (b1 --> b2) = {b2} by Th1;

theorem Th15: :: FUNCOP_1:15
for b1 being Function
for b2 being set st rng b1 = {b2} holds
b1 = (dom b1) --> b2
proof end;

registration
let c1 be set ;
cluster {} --> a1 -> empty Relation-like Function-like ;
coherence
{} --> c1 is empty
by ZFMISC_1:113;
end;

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

theorem Th16: :: FUNCOP_1:16
for b1 being set holds
( dom ({} --> b1) = {} & rng ({} --> b1) = {} ) ;

theorem Th17: :: FUNCOP_1:17
for b1 being Function
for b2 being set st ( for b3 being set st b3 in dom b1 holds
b1 . b3 = b2 ) holds
b1 = (dom b1) --> b2
proof end;

theorem Th18: :: FUNCOP_1:18
for b1, b2, b3 being set holds (b1 --> b2) | b3 = (b1 /\ b3) --> b2
proof end;

theorem Th19: :: FUNCOP_1:19
for b1, b2 being set holds
( dom (b1 --> b2) = b1 & rng (b1 --> b2) c= {b2} )
proof end;

theorem Th20: :: FUNCOP_1:20
for b1, b2, b3 being set st b2 in b3 holds
(b1 --> b2) " b3 = b1
proof end;

theorem Th21: :: FUNCOP_1:21
for b1, b2 being set holds (b1 --> b2) " {b2} = b1
proof end;

theorem Th22: :: FUNCOP_1:22
for b1, b2, b3 being set st not b2 in b3 holds
(b1 --> b2) " b3 = {}
proof end;

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

theorem Th24: :: FUNCOP_1:24
for b1 being Function
for b2, b3 being set st b2 <> {} & b3 in dom b1 holds
dom (b1 * (b2 --> b3)) <> {}
proof end;

theorem Th25: :: FUNCOP_1:25
for b1 being Function
for b2, b3 being set holds (b2 --> b3) * b1 = (b1 " b2) --> b3
proof end;

theorem Th26: :: FUNCOP_1:26
for b1, b2, b3 being set holds (b1 --> [b2,b3]) ~ = b1 --> [b3,b2]
proof end;

definition
let c1, c2, c3 be Function;
func c1 .: c2,c3 -> set equals :: FUNCOP_1:def 3
a1 * <:a2,a3:>;
correctness
coherence
c1 * <:c2,c3:> is set
;
;
end;

:: deftheorem Def3 defines .: FUNCOP_1:def 3 :
for b1, b2, b3 being Function holds b1 .: b2,b3 = b1 * <:b2,b3:>;

registration
let c1, c2, c3 be Function;
cluster a1 .: a2,a3 -> Relation-like Function-like ;
coherence
( c1 .: c2,c3 is Function-like & c1 .: c2,c3 is Relation-like )
;
end;

Lemma16: for b1, b2, b3 being Function
for b4 being set st b4 in dom (b3 * <:b1,b2:>) holds
(b3 * <:b1,b2:>) . b4 = b3 . (b1 . b4),(b2 . b4)
proof end;

theorem Th27: :: FUNCOP_1:27
for b1, b2, b3, b4 being Function st dom b4 = dom (b3 .: b1,b2) & ( for b5 being set st b5 in dom (b3 .: b1,b2) holds
b4 . b5 = b3 . (b1 . b5),(b2 . b5) ) holds
b4 = b3 .: b1,b2
proof end;

theorem Th28: :: FUNCOP_1:28
for b1, b2, b3 being Function
for b4 being set st b4 in dom (b3 .: b1,b2) holds
(b3 .: b1,b2) . b4 = b3 . (b1 . b4),(b2 . b4) by Lemma16;

theorem Th29: :: FUNCOP_1:29
for b1, b2, b3 being Function
for b4 being set
for b5 being Function st b1 | b4 = b2 | b4 holds
(b5 .: b1,b3) | b4 = (b5 .: b2,b3) | b4
proof end;

theorem Th30: :: FUNCOP_1:30
for b1, b2, b3 being Function
for b4 being set
for b5 being Function st b1 | b4 = b2 | b4 holds
(b5 .: b3,b1) | b4 = (b5 .: b3,b2) | b4
proof end;

theorem Th31: :: FUNCOP_1:31
for b1, b2, b3, b4 being Function holds (b4 .: b1,b2) * b3 = b4 .: (b1 * b3),(b2 * b3)
proof end;

theorem Th32: :: FUNCOP_1:32
for b1, b2, b3, b4 being Function holds b1 * (b4 .: b2,b3) = (b1 * b4) .: b2,b3 by RELAT_1:55;

definition
let c1, c2 be Function;
let c3 be set ;
func c1 [:] c2,c3 -> set equals :: FUNCOP_1:def 4
a1 * <:a2,((dom a2) --> a3):>;
correctness
coherence
c1 * <:c2,((dom c2) --> c3):> is set
;
;
end;

:: deftheorem Def4 defines [:] FUNCOP_1:def 4 :
for b1, b2 being Function
for b3 being set holds b1 [:] b2,b3 = b1 * <:b2,((dom b2) --> b3):>;

registration
let c1, c2 be Function;
let c3 be set ;
cluster a1 [:] a2,a3 -> Relation-like Function-like ;
coherence
( c1 [:] c2,c3 is Function-like & c1 [:] c2,c3 is Relation-like )
;
end;

theorem Th33: :: FUNCOP_1:33
canceled;

theorem Th34: :: FUNCOP_1:34
for b1, b2 being Function
for b3 being set holds b2 [:] b1,b3 = b2 .: b1,((dom b1) --> b3) ;

theorem Th35: :: FUNCOP_1:35
for b1, b2 being Function
for b3, b4 being set st b3 in dom (b2 [:] b1,b4) holds
(b2 [:] b1,b4) . b3 = b2 . (b1 . b3),b4
proof end;

theorem Th36: :: FUNCOP_1:36
for b1, b2 being Function
for b3 being set
for b4 being Function
for b5 being set st b1 | b3 = b2 | b3 holds
(b4 [:] b1,b5) | b3 = (b4 [:] b2,b5) | b3
proof end;

theorem Th37: :: FUNCOP_1:37
for b1, b2, b3 being Function
for b4 being set holds (b3 [:] b1,b4) * b2 = b3 [:] (b1 * b2),b4
proof end;

theorem Th38: :: FUNCOP_1:38
for b1, b2, b3 being Function
for b4 being set holds b1 * (b3 [:] b2,b4) = (b1 * b3) [:] b2,b4 by RELAT_1:55;

theorem Th39: :: FUNCOP_1:39
for b1 being Function
for b2 being set
for b3 being Function
for b4 being set holds (b3 [:] b1,b4) * (id b2) = b3 [:] (b1 | b2),b4
proof end;

definition
let c1 be Function;
let c2 be set ;
let c3 be Function;
func c1 [;] c2,c3 -> set equals :: FUNCOP_1:def 5
a1 * <:((dom a3) --> a2),a3:>;
correctness
coherence
c1 * <:((dom c3) --> c2),c3:> is set
;
;
end;

:: deftheorem Def5 defines [;] FUNCOP_1:def 5 :
for b1 being Function
for b2 being set
for b3 being Function holds b1 [;] b2,b3 = b1 * <:((dom b3) --> b2),b3:>;

registration
let c1 be Function;
let c2 be set ;
let c3 be Function;
cluster a1 [;] a2,a3 -> Relation-like Function-like ;
coherence
( c1 [;] c2,c3 is Function-like & c1 [;] c2,c3 is Relation-like )
;
end;

theorem Th40: :: FUNCOP_1:40
canceled;

theorem Th41: :: FUNCOP_1:41
for b1, b2 being Function
for b3 being set holds b2 [;] b3,b1 = b2 .: ((dom b1) --> b3),b1 ;

theorem Th42: :: FUNCOP_1:42
for b1, b2 being Function
for b3, b4 being set st b3 in dom (b2 [;] b4,b1) holds
(b2 [;] b4,b1) . b3 = b2 . b4,(b1 . b3)
proof end;

theorem Th43: :: FUNCOP_1:43
for b1, b2 being Function
for b3 being set
for b4 being Function
for b5 being set st b1 | b3 = b2 | b3 holds
(b4 [;] b5,b1) | b3 = (b4 [;] b5,b2) | b3
proof end;

theorem Th44: :: FUNCOP_1:44
for b1, b2, b3 being Function
for b4 being set holds (b3 [;] b4,b1) * b2 = b3 [;] b4,(b1 * b2)
proof end;

theorem Th45: :: FUNCOP_1:45
for b1, b2, b3 being Function
for b4 being set holds b1 * (b3 [;] b4,b2) = (b1 * b3) [;] b4,b2 by RELAT_1:55;

theorem Th46: :: FUNCOP_1:46
for b1 being Function
for b2 being set
for b3 being Function
for b4 being set holds (b3 [;] b4,b1) * (id b2) = b3 [;] b4,(b1 | b2)
proof end;

theorem Th47: :: FUNCOP_1:47
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4, b5 being Function of b1,b2 holds b3 .: b4,b5 is Function of b1,b2
proof end;

definition
let c1, c2 be non empty set ;
let c3 be BinOp of c1;
let c4, c5 be Function of c2,c1;
redefine func .: as c3 .: c4,c5 -> Function of a2,a1;
coherence
c3 .: c4,c5 is Function of c2,c1
by Th47;
end;

theorem Th48: :: FUNCOP_1:48
for b1, b2 being non empty set
for b3 being BinOp of b1
for b4, b5 being Function of b2,b1
for b6 being Element of b2 holds (b3 .: b4,b5) . b6 = b3 . (b4 . b6),(b5 . b6)
proof end;

theorem Th49: :: FUNCOP_1:49
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4, b5, b6 being Function of b1,b2 st ( for b7 being Element of b1 holds b6 . b7 = b3 . (b4 . b7),(b5 . b7) ) holds
b6 = b3 .: b4,b5
proof end;

theorem Th50: :: FUNCOP_1:50
canceled;

theorem Th51: :: FUNCOP_1:51
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4 being Function of b1,b2
for b5 being Function of b2,b2 holds (b3 .: (id b2),b5) * b4 = b3 .: b4,(b5 * b4)
proof end;

theorem Th52: :: FUNCOP_1:52
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4 being Function of b1,b2
for b5 being Function of b2,b2 holds (b3 .: b5,(id b2)) * b4 = b3 .: (b5 * b4),b4
proof end;

theorem Th53: :: FUNCOP_1:53
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4 being Function of b1,b2 holds (b3 .: (id b2),(id b2)) * b4 = b3 .: b4,b4
proof end;

theorem Th54: :: FUNCOP_1:54
for b1 being non empty set
for b2 being BinOp of b1
for b3 being Element of b1
for b4 being Function of b1,b1 holds (b2 .: (id b1),b4) . b3 = b2 . b3,(b4 . b3)
proof end;

theorem Th55: :: FUNCOP_1:55
for b1 being non empty set
for b2 being BinOp of b1
for b3 being Element of b1
for b4 being Function of b1,b1 holds (b2 .: b4,(id b1)) . b3 = b2 . (b4 . b3),b3
proof end;

theorem Th56: :: FUNCOP_1:56
for b1 being non empty set
for b2 being BinOp of b1
for b3 being Element of b1 holds (b2 .: (id b1),(id b1)) . b3 = b2 . b3,b3
proof end;

theorem Th57: :: FUNCOP_1:57
for b1, b2, b3 being set st b3 in b2 holds
b1 --> b3 is Function of b1,b2
proof end;

theorem Th58: :: FUNCOP_1:58
for b1 being set
for b2 being non empty set
for b3 being Element of b2 holds b1 --> b3 is Function of b1,b2 by Th57;

theorem Th59: :: FUNCOP_1:59
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4 being Function of b1,b2
for b5 being Element of b2 holds b3 [:] b4,b5 is Function of b1,b2
proof end;

definition
let c1, c2 be non empty set ;
let c3 be BinOp of c1;
let c4 be Function of c2,c1;
let c5 be Element of c1;
redefine func [:] as c3 [:] c4,c5 -> Function of a2,a1;
coherence
c3 [:] c4,c5 is Function of c2,c1
by Th59;
end;

theorem Th60: :: FUNCOP_1:60
for b1, b2 being non empty set
for b3 being BinOp of b1
for b4 being Function of b2,b1
for b5 being Element of b1
for b6 being Element of b2 holds (b3 [:] b4,b5) . b6 = b3 . (b4 . b6),b5
proof end;

theorem Th61: :: FUNCOP_1:61
for b1, b2 being non empty set
for b3 being BinOp of b1
for b4, b5 being Function of b2,b1
for b6 being Element of b1 st ( for b7 being Element of b2 holds b4 . b7 = b3 . (b5 . b7),b6 ) holds
b4 = b3 [:] b5,b6
proof end;

theorem Th62: :: FUNCOP_1:62
canceled;

theorem Th63: :: FUNCOP_1:63
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4 being Function of b1,b2
for b5 being Element of b2 holds (b3 [:] (id b2),b5) * b4 = b3 [:] b4,b5
proof end;

theorem Th64: :: FUNCOP_1:64
for b1 being non empty set
for b2 being BinOp of b1
for b3 being Element of b1 holds (b2 [:] (id b1),b3) . b3 = b2 . b3,b3
proof end;

theorem Th65: :: FUNCOP_1:65
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4 being Function of b1,b2
for b5 being Element of b2 holds b3 [;] b5,b4 is Function of b1,b2
proof end;

definition
let c1, c2 be non empty set ;
let c3 be BinOp of c1;
let c4 be Element of c1;
let c5 be Function of c2,c1;
redefine func [;] as c3 [;] c4,c5 -> Function of a2,a1;
coherence
c3 [;] c4,c5 is Function of c2,c1
by Th65;
end;

theorem Th66: :: FUNCOP_1:66
for b1, b2 being non empty set
for b3 being BinOp of b1
for b4 being Function of b2,b1
for b5 being Element of b1
for b6 being Element of b2 holds (b3 [;] b5,b4) . b6 = b3 . b5,(b4 . b6)
proof end;

theorem Th67: :: FUNCOP_1:67
for b1, b2 being non empty set
for b3 being BinOp of b1
for b4, b5 being Function of b2,b1
for b6 being Element of b1 st ( for b7 being Element of b2 holds b4 . b7 = b3 . b6,(b5 . b7) ) holds
b4 = b3 [;] b6,b5
proof end;

theorem Th68: :: FUNCOP_1:68
canceled;

theorem Th69: :: FUNCOP_1:69
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4 being Function of b1,b2
for b5 being Element of b2 holds (b3 [;] b5,(id b2)) * b4 = b3 [;] b5,b4
proof end;

theorem Th70: :: FUNCOP_1:70
for b1 being non empty set
for b2 being BinOp of b1
for b3 being Element of b1 holds (b2 [;] b3,(id b1)) . b3 = b2 . b3,b3
proof end;

theorem Th71: :: FUNCOP_1:71
for b1, b2, b3 being non empty set
for b4 being Function of b1,[:b2,b3:]
for b5 being Element of b1 holds (b4 ~ ) . b5 = [((b4 . b5) `2 ),((b4 . b5) `1 )]
proof end;

theorem Th72: :: FUNCOP_1:72
for b1, b2, b3 being non empty set
for b4 being Function of b1,[:b2,b3:] holds rng b4 is Relation of b2,b3
proof end;

definition
let c1, c2, c3 be non empty set ;
let c4 be Function of c1,[:c2,c3:];
redefine func rng as rng c4 -> Relation of a2,a3;
coherence
rng c4 is Relation of c2,c3
by Th72;
end;

definition
let c1, c2, c3 be non empty set ;
let c4 be Function of c1,[:c2,c3:];
redefine func ~ as c4 ~ -> Function of a1,[:a3,a2:];
coherence
c4 ~ is Function of c1,[:c3,c2:]
proof end;
end;

theorem Th73: :: FUNCOP_1:73
for b1, b2, b3 being non empty set
for b4 being Function of b1,[:b2,b3:] holds rng (b4 ~ ) = (rng b4) ~
proof end;

theorem Th74: :: FUNCOP_1:74
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4 being Function of b1,b2
for b5, b6 being Element of b2 st b3 is associative holds
b3 [:] (b3 [;] b5,b4),b6 = b3 [;] b5,(b3 [:] b4,b6)
proof end;

theorem Th75: :: FUNCOP_1:75
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4, b5 being Function of b1,b2
for b6 being Element of b2 st b3 is associative holds
b3 .: (b3 [:] b4,b6),b5 = b3 .: b4,(b3 [;] b6,b5)
proof end;

theorem Th76: :: FUNCOP_1:76
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4, b5, b6 being Function of b1,b2 st b3 is associative holds
b3 .: (b3 .: b4,b5),b6 = b3 .: b4,(b3 .: b5,b6)
proof end;

theorem Th77: :: FUNCOP_1:77
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4 being Function of b1,b2
for b5, b6 being Element of b2 st b3 is associative holds
b3 [;] (b3 . b5,b6),b4 = b3 [;] b5,(b3 [;] b6,b4)
proof end;

theorem Th78: :: FUNCOP_1:78
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4 being Function of b1,b2
for b5, b6 being Element of b2 st b3 is associative holds
b3 [:] b4,(b3 . b5,b6) = b3 [:] (b3 [:] b4,b5),b6
proof end;

theorem Th79: :: FUNCOP_1:79
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4 being Function of b1,b2
for b5 being Element of b2 st b3 is commutative holds
b3 [;] b5,b4 = b3 [:] b4,b5
proof end;

theorem Th80: :: FUNCOP_1:80
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4, b5 being Function of b1,b2 st b3 is commutative holds
b3 .: b4,b5 = b3 .: b5,b4
proof end;

theorem Th81: :: FUNCOP_1:81
for b1, b2 being non empty set
for b3 being BinOp of b2
for b4 being Function of b1,b2 st b3 is idempotent holds
b3 .: b4,b4 = b4
proof end;

theorem Th82: :: FUNCOP_1:82
for b1, b2 being non empty set
for b3 being BinOp of b1
for b4 being Function of b2,b1
for b5 being Element of b2 st b3 is idempotent holds
(b3 [;] (b4 . b5),b4) . b5 = b4 . b5
proof end;

theorem Th83: :: FUNCOP_1:83
for b1, b2 being non empty set
for b3 being BinOp of b1
for b4 being Function of b2,b1
for b5 being Element of b2 st b3 is idempotent holds
(b3 [:] b4,(b4 . b5)) . b5 = b4 . b5
proof end;

theorem Th84: :: FUNCOP_1:84
for b1, b2, b3 being Function st [:(rng b2),(rng b3):] c= dom b1 holds
dom (b1 .: b2,b3) = (dom b2) /\ (dom b3)
proof end;

definition
let c1 be Function;
attr a1 is Function-yielding means :Def6: :: FUNCOP_1:def 6
for b1 being set st b1 in dom a1 holds
a1 . b1 is Function;
end;

:: deftheorem Def6 defines Function-yielding FUNCOP_1:def 6 :
for b1 being Function holds
( b1 is Function-yielding iff for b2 being set st b2 in dom b1 holds
b1 . b2 is Function );

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

registration
let c1 be Function-yielding Function;
let c2 be set ;
cluster a1 . a2 -> Relation-like Function-like ;
coherence
( c1 . c2 is Function-like & c1 . c2 is Relation-like )
proof end;
end;

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

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