循環定義

循環定義（じゅんかんていぎ、）は、ある概念を定義するためにその概念自体を用いることである。この場合、定義文のみの知識では定義した概念の本質的な理解が出来ないため、定義は成立しない。

 概説 
端的に言えば、ある概念の定義文に、その概念自体の名称を用いた場合が循環定義である。例えば、"カシ"の定義文として、「どんぐりをつける木」としたとき、どんぐりの定義文を「カシの作る種実類」とする。定義文を相互に代入するとカシの定義文が「カシの作る種実類をつける木」、どんぐりの定義文が「どんぐりをつける木の作る種実類」となり循環定義となる。このように、定義が循環すると定義文のみの知識では概念の相対的な位置付けは理解できるが、定義する概念自体の絶対的な理解ができないため、定義は成立しない。

循環の輪が大きい場合には、循環定義を発見することが難しくなるが、循環に関係する概念の数が多くなるため実際の理解においては既知の概念を経由する可能性が大きくなり問題とならない場合も多い。そもそも、語彙が有限であり、全ての語彙を定義するためには既に定義されている語彙を用いるか、一切定義されていない語彙を用いる必要が有るため、循環定義を完全に無くすことは不可能である（ミュンヒハウゼンのトリレンマ）。例えば、特定の概念の定義文を構成する語彙の一つ(語彙A)に、語彙Aの定義文を代入し、更にその語彙Aの定義文を構成する語彙の一つ(語彙B)に、その語彙Bの定義文を代入する・・・、というプロセスを延々と繰り返していけば、どこかで必ず“循環の輪”は発生してしまうのである。したがって、どんな概念の定義文だって、潜在的には循環定義を内包しているといえるのである。
 循環定義の例 
誤った定義を用いることで、故意に循環定義を発生させることもできる。

たとえば、メートルの定義は

であり、「メートルの定義」に「秒を使っている」ことがわかる。

秒の定義は

であるが、ここで、秒を

と誤って定義すると、「秒の定義」に「メートルを使っている」ことになるが、「メートルの定義」に「秒を使っている」ことになるため、循環定義が発生する。

初期のキログラムの定義でもこのような循環定義が発生した。キログラムは当初、1リットルの水の標準気圧および最も密度の高くなる気温（約4℃）での質量と定義されていた。圧力の単位は平方メートル当たりのニュートン ([Pa] = [N]/[m2]) であり、ニュートンは1キログラムの質量を毎秒毎秒1メートル加速する力 ([N] = [kg]･[m]/[s2]) である。水の容積は気圧に依存するため、「キログラムの定義」に「自分自身の定義」が使われていることになる。混乱を解決するため、キログラムは後にセーヴルにある金属製のキログラム原器で定義された（なお、2019年5月20日以降はプランク定数、光速度、およびセシウム周波数に基づいて定義される）。

「死」の定義もかつては循環定義がつきまとっていた。死を「生命の体液の永久的な流動停止」と定義した際に、「生命の体液」とは何かが問題となった。

数学の一理論である非有基的集合論では循環集合を構築できる。循環集合は様々な循環する性質をもつ事象のモデル化に便利で、よく利用されている。情報工学では再帰呼び出しを定義に使った手続きがあるが、これらの定義は最終的に完了するので循環定義ではない。

2007年版のウェブスターの辞書には "hill" と "mountain" が次のように定義されている。
 Hill - "1: a usually rounded natural elevation of land lower than a mountain"（自然のなだらかな小高い陸地で山より低い）
 Mountain - "1a: a landmass that projects conspicuously above its surroundings and is higher than a hill"（周囲から目立って突き出している、丘より高い陸地）
これも循環定義の典型的な例だ。

辞典にも循環定義が存在する可能性があるが、存在したとしても循環の輪が非常に大きいため、発見と修正は難しいと予測される。

UNIX系OSのソフトウェアのインストールに用いるパッケージ管理システムにおいても循環定義が起こりうる。ソースコードを利用するパッケージ管理システムにおいては、あるソースコードパッケージが他のソースコードパッケージの機能に依存する場合があり、この依存関係が循環を形成した場合に発生する。この場合、依存先をどこまで辿っても必要な機能の実装が見つからないため、システムに設定された打ち切り回数まで依存関係に沿ってインストール開始を延々と繰り返す状態に陥ることになる。インストール中に依存関係の循環を発生させる機能を無効にする（循環そのものを切断する）か、バイナリパッケージをインストールすることで循環に対し実装を与える（事前に定義する概念について理解することと同義）ことでインストールを進行させることが可能だ。

 関連項目 
 循環論法
 恒真式
 自己言及のパラドックス
 自己参照 
 WP:CIRCULAR

Category:意味論 (論理学)
Category:定義
Category:哲学的論理学