let S be non empty non void ManySortedSign ; for o, a, b, c being set
for r being SortSymbol of S st o is_of_type <*a,b,c*>,r holds
for A being MSAlgebra over S st the Sorts of A . a <> {} & the Sorts of A . b <> {} & the Sorts of A . c <> {} & the Sorts of A . r <> {} holds
for x being Element of the Sorts of A . a
for y being Element of the Sorts of A . b
for z being Element of the Sorts of A . c holds (Den ((In (o, the carrier' of S)),A)) . <*x,y,z*> is Element of the Sorts of A . r
let o, a, b, c be set ; for r being SortSymbol of S st o is_of_type <*a,b,c*>,r holds
for A being MSAlgebra over S st the Sorts of A . a <> {} & the Sorts of A . b <> {} & the Sorts of A . c <> {} & the Sorts of A . r <> {} holds
for x being Element of the Sorts of A . a
for y being Element of the Sorts of A . b
for z being Element of the Sorts of A . c holds (Den ((In (o, the carrier' of S)),A)) . <*x,y,z*> is Element of the Sorts of A . r
let r be SortSymbol of S; ( o is_of_type <*a,b,c*>,r implies for A being MSAlgebra over S st the Sorts of A . a <> {} & the Sorts of A . b <> {} & the Sorts of A . c <> {} & the Sorts of A . r <> {} holds
for x being Element of the Sorts of A . a
for y being Element of the Sorts of A . b
for z being Element of the Sorts of A . c holds (Den ((In (o, the carrier' of S)),A)) . <*x,y,z*> is Element of the Sorts of A . r )
assume A1:
( the Arity of S . o = <*a,b,c*> & the ResultSort of S . o = r )
; AOFA_A00:def 8 for A being MSAlgebra over S st the Sorts of A . a <> {} & the Sorts of A . b <> {} & the Sorts of A . c <> {} & the Sorts of A . r <> {} holds
for x being Element of the Sorts of A . a
for y being Element of the Sorts of A . b
for z being Element of the Sorts of A . c holds (Den ((In (o, the carrier' of S)),A)) . <*x,y,z*> is Element of the Sorts of A . r
then A2:
( o in dom the Arity of S & dom the Arity of S c= the carrier' of S )
by FUNCT_1:def 2, RELAT_1:def 18;
then reconsider s = o as OperSymbol of S ;
let A be MSAlgebra over S; ( the Sorts of A . a <> {} & the Sorts of A . b <> {} & the Sorts of A . c <> {} & the Sorts of A . r <> {} implies for x being Element of the Sorts of A . a
for y being Element of the Sorts of A . b
for z being Element of the Sorts of A . c holds (Den ((In (o, the carrier' of S)),A)) . <*x,y,z*> is Element of the Sorts of A . r )
assume A4:
the Sorts of A . a <> {}
; ( not the Sorts of A . b <> {} or not the Sorts of A . c <> {} or not the Sorts of A . r <> {} or for x being Element of the Sorts of A . a
for y being Element of the Sorts of A . b
for z being Element of the Sorts of A . c holds (Den ((In (o, the carrier' of S)),A)) . <*x,y,z*> is Element of the Sorts of A . r )
assume A5:
the Sorts of A . b <> {}
; ( not the Sorts of A . c <> {} or not the Sorts of A . r <> {} or for x being Element of the Sorts of A . a
for y being Element of the Sorts of A . b
for z being Element of the Sorts of A . c holds (Den ((In (o, the carrier' of S)),A)) . <*x,y,z*> is Element of the Sorts of A . r )
assume A6:
the Sorts of A . c <> {}
; ( not the Sorts of A . r <> {} or for x being Element of the Sorts of A . a
for y being Element of the Sorts of A . b
for z being Element of the Sorts of A . c holds (Den ((In (o, the carrier' of S)),A)) . <*x,y,z*> is Element of the Sorts of A . r )
assume A7:
the Sorts of A . r <> {}
; for x being Element of the Sorts of A . a
for y being Element of the Sorts of A . b
for z being Element of the Sorts of A . c holds (Den ((In (o, the carrier' of S)),A)) . <*x,y,z*> is Element of the Sorts of A . r
let x be Element of the Sorts of A . a; for y being Element of the Sorts of A . b
for z being Element of the Sorts of A . c holds (Den ((In (o, the carrier' of S)),A)) . <*x,y,z*> is Element of the Sorts of A . r
let y be Element of the Sorts of A . b; for z being Element of the Sorts of A . c holds (Den ((In (o, the carrier' of S)),A)) . <*x,y,z*> is Element of the Sorts of A . r
let z be Element of the Sorts of A . c; (Den ((In (o, the carrier' of S)),A)) . <*x,y,z*> is Element of the Sorts of A . r
A8:
<*a,b,c*> = the_arity_of s
by A1;
dom the Sorts of A = the carrier of S
by PARTFUN1:def 2;
then A9:
( the Sorts of A is Function of the carrier of S,(rng the Sorts of A) & rng the Sorts of A <> {} )
by FUNCT_2:2;
(( the Sorts of A #) * the Arity of S) . o =
( the Sorts of A #) . <*a,b,c*>
by A1, A2, FUNCT_2:15
.=
product ( the Sorts of A * <*a,b,c*>)
by A8, FINSEQ_2:def 5
.=
product <*( the Sorts of A . a),( the Sorts of A . b),( the Sorts of A . c)*>
by A8, A9, FINSEQ_2:37
;
then A10:
<*x,y,z*> in Args (s,A)
by A4, A5, A6, FINSEQ_3:125;
Result (s,A) = the Sorts of A . (the_result_sort_of s)
by FUNCT_2:15;
hence
(Den ((In (o, the carrier' of S)),A)) . <*x,y,z*> is Element of the Sorts of A . r
by A1, A7, A10, FUNCT_2:5; verum