DefinedFunctionSymbol

Syntax call
DefinedFunctionSymbol[
[Graphics:Termsgr46.gif] , ... , [Graphics:Termsgr47.gif]]
Input
a sequence [Graphics:Termsgr48.gif], ... , [Graphics:Termsgr49.gif] of Mathematica expressions. [Graphics:Termsgr50.gif] is either a Mathematica symbol [Graphics:Termsgr51.gif]
or a type signature [Graphics:Termsgr52.gif]"7[Graphics:Termsgr53.gif]
Output
the list { [Graphics:Termsgr54.gif], ... , [Graphics:Termsgr55.gif]} where 1<= [Graphics:Termsgr56.gif]"ï<=[Graphics:Termsgr57.gif]<=n such that [Graphics:Termsgr58.gif] is not an already declared function symbol
Effect
declare [Graphics:Termsgr59.gif], ... , [Graphics:Termsgr60.gif]as constructors by extending the default definition of IsDefinedFunctionSymbol
and append to $FunctionSymbol the pairs {[Graphics:Termsgr61.gif],[Graphics:Termsgr62.gif]} where [Graphics:Termsgr63.gif]is the arity of [Graphics:Termsgr64.gif], 1 <= j <= m ;
if [Graphics:Termsgr65.gif][Graphics:Termsgr66.gif] then assign to [Graphics:Termsgr67.gif] a unique constant type
else [Graphics:Termsgr68.gif][Graphics:Termsgr69.gif]"7[Graphics:Termsgr70.gif] and then assign to [Graphics:Termsgr71.gif] the type ∀[Graphics:Termsgr72.gif].
Implementation

[Graphics:Termsgr2.gif][Graphics:Termsgr73.gif]