部分関数の合成
式の全ての部分が値が持つときに限り、全体も値を持つ
定義
$ m変数部分関数$ gと、$ k変数部分関数$ f_1,\cdots,f_mの合成
$ g\left(f_{1}(\vec{x}), f_{2}(\vec{x}), \ldots, f_{m}(\vec{x})\right)の定義域は
$ \left\{\vec{x} \in \mathbb{N}^{k} \mid f_{1}(\vec{x}) \downarrow, \ldots, f_{m}(\vec{x}) \downarrow \land\; g\left(f_{1}(\vec{x}), \ldots, f_{m}(\vec{x})\right) \downarrow\right\}
図にすると、こんな感じ
https://gyazo.com/a50ae3befe2864d15d2764177547c353
引数の数も違うのでまったく厳密ではないが、ノリとしてmrsekut.icon
部分関数を合成していくごとに、定義される部分が小さくなっていく感じ
例
以下の3つの関数を考える
$ f(x) = \left\{ \begin{array}{ll} x & (xが偶数) \\ 未定義 & (xが奇数) \\ \end{array} \right.
$ \mathrm{nought}(x)=0
$ \mathrm{multiply}(x,y)=x\times y
このとき合成された、$ \mathrm{multiply}(f(x),\mathrm{nought}(x)) の定義域はどうなるか
以下のようになる
$ \mathrm{multiply}(f(x),\mathrm{nought}(x)) = \left\{ \begin{array}{ll} 0 & (xが偶数) \\ 未定義 & (xが奇数) \\ \end{array} \right.
$ xが奇数のときに、$ 0にならないことに注意
式の全ての部分が値が持つときに限り、全体も値を持つ
https://gyazo.com/65fb52fd05e5594c207284e9f50e9e3a