冪等

数学において、冪等性は、大雑把に言って、ある操作を1回行っても複数回行っても結果が同じであることをいう概念である。まれに等冪とも。抽象代数学、特に射影や閉包演算子に見られる特徴である。"idempotence" という単語はラテン語の "idem"と"potere"から来ている。

主に以下の2つの定義が使われている。

二項演算において、自分自身にその二項演算を施したときに、結果が自分自身となるようなものを冪等である、または冪等元という。例えば、実数の乗算で冪等な数は 0 と 1 だけである。
単項演算において、その演算を行った結果に同じ演算を行っても結果が変わらない場合に冪等であるという。例えば、実数から整数への関数である床関数は冪等である。この単項演算における冪等の定義は、上記の二項演算のときの定義の特殊例である。

1. 形式的定義
--------

1.1. 二項演算
---------

二項演算 "*" を備えた集合 //S// について、//S// の元 //s// は

を満たすとき冪等であるという。特に、任意の中立元は冪等である。//S// の全ての元が冪等である場合には、その二項演算 "*" は冪等であるという。例えば、集合の結びと交わりはどちらも冪等演算である。

1.2. 単項演算
---------

単項演算、つまり集合 //X// から //X// への写像 //f// が、//X// のいかなる元 //x// についても

を満たすとき、//f// は冪等であるという。これを写像の合成 ∘ で表すと

となる。つまり、//X// 上の冪等単項演算とは、//X// からそれ自身への写像全体のなす集合 //X////X// における、合成 ∘ に関して冪等な元のことである。

2. 主な例
------

2.1. 写像
-------

恒等写像 id = //x// や定値写像 //f// = //C// は、それがいかなる集合上で定義されていたとしても常に冪等写像である。もうすこし明らかでない例として、実数や複素数に対する絶対値関数、実数の床関数などが挙げられる。

ある位相空間 //X// の各部分集合 //U// について //U// の閉包を与える写像は、//X//の冪集合における冪等写像である。これは閉包作用素の例であり、全ての閉包作用素は冪等写像である。

2.2. 環の冪等元
----------

環における冪等元とは、環の乗法に関して冪等であるような元のことと定義される。環の冪等元全体からなる集合の半順序を次のように定義することができる。すなわち、//e// と //f// が冪等な元であるとき、//ef// = //fe// = //e// となるときかつそのときに限って //e// ≤ //f// が成り立つと定めるのである。この順序では 0 が最小な冪等元であり、1 が最大の冪等元となる。

環 //R// において //e// が冪等であるとき、//eRe// も //e// を乗法単位元とする環になる。もとの環 //R// が単位元 1//R// を持つ場合でも、//e// ≠ 1//R// ならば単位元が異なるため単位的環としての部分環にはなっていない。

2つの冪等元 //e// と //f// は //ef// = //fe// = 0 が成り立つとき直交するという。この場合、//e// + //f// も冪等であり、//e// ≤ //e// + //f// かつ //f// ≤ //e// + //f// である。

環 //R// で //e// が冪等であるとき、//f// = 1 − //e// と置けば //f// と //e// は直交する。

//R// の冪等元 //e// が //R// の中心に属すとき、つまり //R// 内の全ての //x// について //ex// = //xe// が成り立つとき、//e// は中心的 en あるいは中心冪等元であるという。この場合、//Re// は //e// を乗法単位元とする環である。//R// の中心冪等元は、複数の環の直和としての //R// の分解と密接に関係する。単位的環 //R// が環 //R//1,...,//R////n// の直和であるとき、各環 //R////i// の単位元は //R// において互いに直交する中心冪等元であり、これらの総和が単位元 1 に一致する。逆に、//R// において中心的な冪等元 //e//1,...,//e////n// がどの二つも互いに直交し、これらの総和が単位的環 //R// の単位元 1 に一致するならば、//R// は環 //Re//1,...,//Re////n// の直和である。つまり、//R// の中心冪等元 //e// に対し、//R// は //Re// と //R// の直和に分解できる。

0 でも 1 でもない冪等元 //e// は零因子であるため、整域や可除環にはそのような冪等元は存在しない。局所環にもそのような冪等元は存在しないが、理由は異なり、環のジャコブソン根基に含まれる冪等元は 0 だけであることによる。また、分解型四元数環 en には冪等元が存在して、それらはちょうど回転カテナリー曲面 en を形作る。

全ての元が冪等である環をブール環と呼ぶ。この場合、乗算は可換で、各元には加法に対する逆元が存在する。

2.3. その他
--------

冪等な操作はブール代数にも見られる。
線型代数学における射影作用素は冪等である。実際、射影は冪等な線型写像として定義される。
冪等半環は、加法が冪等な半環である。
冪等行列。

3. 情報工学における冪等
-------------

情報工学における冪等とは、ある操作を1度行っても複数回行っても同じ効果となることを言う。特に、何回行ってもエラーや不整合の状態が変わらない操作を指す。

3.1. 関数の例
---------

絶対値関数 abs == abs) == abs)) == ... は全ての x について冪等である。換言すれば、abs を一回適用した結果と複数回適用した結果は等しい。

3.2. 冪等なヘッダファイル
---------------

C言語のヘッダファイルは冪等になるよう設計される。すなわち、あるヘッダファイルが複数回インクルードされた場合、問題が発生しないようにして、一回インクルードしたのと同じ効果をもたらすようにする。

3.3. WWW
--------

HTTP の GET 要求は冪等とみなされる[1]。Webの機構は基本的にその前提で要求結果をキャッシュに保持する。HTTP の POST 要求は冪等とはみなされないため、POST 要求はキャッシュされない。HTTP の DELETE 要求も冪等である。冪等は、単に処理中の要求を再度受け付けたときに何もしないというだけではない。そのような操作は冪等ではなく安全であるという。

3.4. NFS
--------

NFSプロトコルの設計者は、冪等な操作によってサーバやネットワークの故障の際の回復力が増すことを理解していた。サーバ内に状態を持たないことでこれが実現される。クライアント側は Read や Write の要求がタイムアウトしたとき、不正な結果が得られることを心配せずに再度要求すればよい。NFS の最初のRFCには、どういう操作が冪等でなくなる可能性があるかが詳しく論じられていたが、それらの場合もサーバ側が要求の繰り返しを検出することで冪等にできる。

3.5. ユーザインタフェース
---------------

ユーザインタフェース設計で、ボタンが冪等であるとは、そのボタンを1回押しても複数回押しても同じ効果が得られることをいう。例えば、「一時停止」ボタンが冪等でない場合、押すたびに一時停止と実行再開を繰り返すだろう。一方、一時停止ボタンを何度押しても一時停止したままの場合は、別にある「プレイ」ボタンで実行再開させる。後者は冪等である。赤外線による遠隔操作やタッチパネルなどのユーザインタフェースでは、ユーザーがちゃんと一回だけボタンを押せるかどうかが確実とは言えないので、冪等なユーザインタフェースが好ましい。エレベータを呼ぶボタンも冪等であるが、人によってはそうでないかのように何度も押してしまう。

一般に Web のフォーム送信ボタンは冪等ではないが、何らかの手段で冪等になるようにしている場合もある。オンラインでのショッピングやインターネットバンキングでは、間違って複数回注文してしまうことがないよう注意が必要である。サイトによってはページが変わるまでボタンを再度押さないよう警告文を載せていることもある。あるいは、何らかのコードで二度目以降の送信を防ぐようになっている場合もある。例えば、即座にクライアント側のボタンを押せないようにしたり、POST 要求にユニークなコードを付与することでサーバ側が同じフォーム送信であると認識して無視したりといった方法がある。後者は、例えばブラウザの戻るボタンで前のページに戻って再度 POST してしまう場合などにも有効である。特に個人のコンピュータ以外でフォーム送信した場合、ブラウザを全て終了させるのが安全である。

4. 関連項目
-------

不動点
冪零行列
参照透過性