数学において、集合Xから集合Yへの部分関数f は、 Xの部分集合S (場合によってはX全体)からYへの関数です。部分集合S、つまり関数として見たfの定義域は、 fの定義域または自然定義域と呼ばれます。SがXと等しい場合、つまりf がXのすべての要素で定義されている場合、f は全関数であると言われます。
言い換えれば、部分関数とは、2つの集合間の二項関係であり、最初の集合のすべての要素に対して、2番目の集合の要素を最大で1つだけ対応させるものです。したがって、部分関数は単項関係です。これは、最初の集合のすべての要素が2番目の集合の要素に対応付けられる必要がないため、 (全)関数の概念を一般化したものです。
部分関数は、定義域が正確にわからない場合や、定義が難しい場合によく用いられます。しかし、定義域が正確にわかっている場合でも、簡潔さや分かりやすさのために部分関数が用いられることがよくあります。これは微積分学の場合に当てはまります。例えば、 2つの関数の商は部分関数であり、その定義域には分母の零点が含まれません。このような場合、部分関数は一般的に単に関数と呼ばれます。
計算可能性理論において、一般的な再帰関数とは、整数から整数への部分関数であり、任意のそのような関数が実際に全関数であるかどうかを判定するアルゴリズムは存在しない。
関数に矢印表記を使用する場合、部分関数からに時々次のように書かれるまたはしかし、一般的な慣習はなく、後者の表記法は包含マップや埋め込みに対してより一般的に使用されます。
具体的には、部分関数の場合そしてどんな次のいずれかが該当します。
定義:
それからは、以下の場合にのみ定義されます。は完全平方数(つまり、)。 それでしかし未定義です。
部分関数は、集合X全体上で定義されない可能性のある、 2 つの集合XとY間の写像を考慮することから生じる。[ 1 ] 一般的な例としては、実数における平方根演算が挙げられる。: 負の実数は実数の平方根を持たないため、この演算は部分関数として見なすことができる。に部分関数の定義域は 、部分関数が定義される集合Xの部分集合Sです。この場合、部分関数はSからYへの関数とみなすこともできます。平方根演算の例では、集合Sは非負の実数から構成されます。
部分関数の概念は、定義域が正確には不明な場合、あるいはそもそも不明な場合に特に便利です。後者のコンピュータサイエンスにおける例については、停止問題を参照してください。
定義域Sが集合X全体と等しい場合、部分関数は全部分関数であると言われる。したがって、 XからYへの全部分関数は、XからYへの関数と一致する。
関数の多くの性質は、適切な意味での部分関数に拡張することができる。部分関数を定義域に制限して得られる関数がそれぞれ単射、全射、または全単射である場合、その部分関数は単射、全射、または全単射であると言われる。
関数は像に制限すると自明に全射となるため、部分全単射という用語は単射である部分関数を表す。[ 2 ]
単射部分関数は単射部分関数に逆変換することができ、単射かつ全射である部分関数は単射関数を逆関数として持ちます。さらに、単射関数は全単射部分関数に逆変換することができます。
便宜上、すべての部分関数の集合をで表す。セットからセットへによる この集合は、 の部分集合上で定義された関数の集合の和集合です。同じ終域を持つ:
後者は次のようにも表記される有限の場合、その濃度は
なぜなら、任意の部分関数は任意の固定値によって関数に拡張できるからである。含まれていないしたがって、値域は単射(一意かつ制限により可逆)な演算。
記事冒頭の最初の図は部分関数を表していますが、左側の集合の要素1は右側の集合のどの要素とも関連付けられていないため、関数とは言えません。一方、2番目の図は関数を表しています。左側の集合のすべての要素は、右側の集合のちょうど1つの要素と関連付けられているためです。
実数をそれ自身に写像する自然対数関数は部分関数ではあるが、(全)関数ではない。なぜなら、非正の実数を入力とした場合、定義されないからである。定義域を正の実数のみに限定した場合(つまり、自然対数関数を正の実数から実数への関数とみなした場合)、自然対数は関数となる。
定義されるのは、
表示的意味論では、部分関数は未定義の場合、最下位の要素を返すものとみなされる。
コンピュータサイエンスにおいて、部分関数とは、例外を発生させるか、あるいは無限ループに陥るサブルーチンを指します。IEEE浮動小数点規格では、浮動小数点演算が未定義で例外が抑制された場合に返される非数値が定義されています。例えば、負の数の平方根が要求された場合などがこれに該当します。
関数パラメータが静的に型付けされるプログラミング言語では、言語の型システムでは関数の正確なドメインを表現できないため、関数を部分関数として定義することがあります。そのため、プログラマは代わりに、型として表現可能で、かつ関数の定義領域を含む最小のドメインを関数に与えます。
圏論において、具体的な圏における射の合成演算を考える場合、合成演算はが全関数であるのは、要素が 1 つあります。その理由は、2 つの射がそして構成できるのはもしつまり、ドメインと等しくなければならない
集合と部分関数の圏は、点付き集合と点保存写像の圏と同等ではあるが、同型ではない。 [ 3 ]ある教科書には、「「不適切な」、「無限」要素を追加することによる集合と部分写像の形式的完成は、特に位相幾何学(一点コンパクト化)と理論計算機科学において何度も再発明された」と記されている。[ 4 ]
部分代数は、普遍代数の概念を部分演算に一般化したものである。例としては、乗法逆元が唯一の適切な部分演算である体が挙げられる(ゼロ除算は定義されていないため)。[ 7 ]
与えられた基底集合上のすべての部分関数(部分変換)の集合、は、すべての部分変換の半群(または部分変換半群)と呼ばれる正則半群を形成する。)、通常はで表されます[ 8 ] [ 9 ] [ 10 ]上のすべての部分全単射の集合対称逆半群を形成する。[ 8 ] [ 9 ]
多様体とファイバー束の構造を規定するアトラス内の図表は、部分関数です。多様体の場合、定義域は多様体の点集合です。ファイバー束の場合、定義域はファイバー束の空間です。これらの応用において最も重要な構成は遷移写像であり、これはある図表と別の図表の逆写像の合成です。多様体とファイバー束の初期分類は、主にこれらの遷移写像に対する制約によって表現されます。
関数ではなく部分関数を用いる理由は、グローバルな構造を記述するために局所的なパッチをつなぎ合わせることで、一般的なグローバルなトポロジーを表現できるようにするためである。ここでいう「パッチ」とは、チャートが定義される領域のことである。