# ゼロで割ってはいけない理由：0 に逆数を与えると数の世界が 1 点に潰れる

> 「0 で割るな」という学校のルールを、割り算＝掛け算の逆という定義に戻って説明します。5÷0 は解なし、0÷0 は解だらけ。0 の逆数を認めると 1=0 が導かれて数が全部消えることまで示します。
> https://rikai.mugen-giken.com/mathematics/math-columns/division-by-zero

## 0. この記事の要点

- 割り算 $a \div b$ は「$b$ に掛けて $a$ になる数」のことです。この定義に戻ると、ゼロ除算が禁止される理由が計算だけで見えてきます。
- $b = 0$ のとき、$0$ に何を掛けても $0$ にしかなりません。だから $5 \div 0$ は**答えが 1 つもなく**、$0 \div 0$ は**答えが多すぎる**（すべての数が答えになる）のです。
- 「$0$ の逆数」を 1 つでも認めると、分配法則から $1 = 0$ が出て、その数の世界にある数はすべて $0$ になります。禁止は道徳ではなく、体系の自壊を避けるための処置です。
- $y = 1/x$ のグラフを見ると、$x$ を $0$ に右から近づければ $+\infty$、左から近づければ $-\infty$ へ行きます。近づき方で行き先が違うので、$x = 0$ での値を「極限で埋める」こともできません。
- ただし逃げ道はあります。複素数にもう 1 点だけ $\infty$ を足したリーマン球面、$0 \div 0$ 型の極限を扱う微分、そして「$a \div 0 = 0$ と決めてしまう」計算機上の流儀。どれも「割り算」の意味を作り変えることで折り合いをつけています。

## 1. 動機：なぜ先生は理由を教えてくれないのか

小学校で「$0$ で割ってはいけません」と習います。理由を聞くと、たいてい「決まりだから」「答えがないから」で終わります。中学・高校になっても、分母が $0$ になる場面では「$x \neq 0$ とする」という但し書きが黙って付くだけで、なぜそこを避けるのかは説明されないことが多いのです。

そのせいで、この禁止はしばしば「数学界の謎ルール」のような扱いを受けます。電卓に `1 ÷ 0 =` と入れると `Error` が出る。表計算ソフトは `#DIV/0!` と怒る。プログラムを書けば例外で止まる。まるで機械が全員で口裏を合わせているようです。

しかし理由は、実はとても単純です。**割り算という言葉の定義に戻れば、$0$ で割った答えが「存在しない」か「決まらない」かのどちらかになることが、その場で確かめられます。** さらに一歩進めて「それでも無理に答えを 1 つ決めたらどうなるか」を追いかけると、数の体系そのものが崩れる様子が見えます。この記事ではその 2 段階を、計算を全部書きながら追います。

数学のルールの多くは、この「禁止」と同じ構造をしています。恣意的な禁令に見えるものが、実は定義から出てくる帰結にすぎない。ルールを暗記の対象ではなく帰結として読む練習については [数学はなぜ難しいのか](/mathematics/math-columns/why-math-is-hard)、とくに <Ref to="mathematics/math-columns/why-math-is-hard#def-proof" text="証明とは何か" /> も参考にしてください。記号の意味を先に決めてから答えを出すというこの手順は、[1 は 0.999… と等しいか](/mathematics/math-columns/one-equals-0-999) の <Ref to="mathematics/math-columns/one-equals-0-999#def-infinite-decimal" text="無限小数の値の定義" /> でも同じ形で使われています。

## 2. 準備：割り算とは何だったか

まず「割り算」の意味をはっきりさせます。$12 \div 3 = 4$ が正しいのはなぜでしょうか。$3 \times 4 = 12$ だからです。つまり割り算は、掛け算を逆向きにたどる操作です。

<Definition id="def-division" title="割り算（積の逆演算）">
$a$, $b$ を実数とする。方程式
$$
b \times x = a
$$
の解 $x$ が**ただ 1 つ**存在するとき、その解を $a \div b$（または $\dfrac{a}{b}$）と書き、$a$ を $b$ で割った商という。解が存在しないとき、または解が 2 つ以上存在するときは、$a \div b$ は定義されない。
</Definition>

「ただ 1 つ」という条件を強調しておきます。記号 $a \div b$ は 1 つの数を指す名前です。名前が指すものが無かったり、複数あったりしては、名前として使えません（逆に、1 つの数に複数の名前が付くのは構いません。$0.999\ldots$ と $1.000\ldots$ が同じ数の別名であるのがその例です — <Ref to="mathematics/math-columns/one-equals-0-999#thm-double-rep" text="小数展開の二重表現" />）。$\sqrt{4}$ を「$2$ 乗して $4$ になる数」と定義しないで「$2$ 乗して $4$ になる**非負の**数」と定義するのも、同じ事情です。

<Definition id="def-reciprocal" title="逆数">
実数 $b$ に対し、$b \times x = 1$ を満たす実数 $x$ がただ 1 つ存在するとき、それを $b$ の**逆数**といい $b^{-1}$ または $\dfrac{1}{b}$ と書く。
</Definition>

$b \neq 0$ のときは逆数が存在します。たとえば $b = 3$ なら $x = 1/3$ です。そして $a \div b = a \times b^{-1}$ が成り立ちます。実際 $b \times (a \times b^{-1}) = a \times (b \times b^{-1}) = a \times 1 = a$ なので、$a \times b^{-1}$ は確かに <Ref to="def-division" /> の方程式の解です。

<Aside type="note">
この記事では、実数の四則計算について次の性質を自由に使います。結合法則 $(ab)c = a(bc)$、交換法則 $ab = ba$、分配法則 $a(b+c) = ab + ac$、$1$ が掛け算の単位元であること $a \times 1 = a$、そして加法の逆元（引き算）がいつでも使えること。これらは実数だけでなく、有理数や複素数、あるいは多項式の集合など、多くの体系が共通に持つ性質です。こうして複数の対象に共通する性質だけを取り出して議論の土台にすることを <Ref to="mathematics/math-columns/why-math-is-hard#def-abstraction" text="抽象化" /> といいます。あとで見るように、ゼロ除算の禁止はこれらの性質だけから出てきます。
</Aside>

## 3. $5 \div 0$ は解なし、$0 \div 0$ は解だらけ

すべての鍵を握るのは、次の補題です。「$0$ に何を掛けても $0$」は当たり前に見えますが、これは決まり文句ではなく、分配法則から証明できる事実です。

<Lemma id="lem-zero-product" title="ゼロの吸収律">
任意の実数 $a$ に対し $a \times 0 = 0$ が成り立つ。
</Lemma>

<Proof of="lem-zero-product">
$0$ は加法の単位元なので $0 = 0 + 0$ です。両辺に $a$ を掛けて、分配法則を使うと
$$
a \times 0 = a \times (0 + 0) = a \times 0 + a \times 0 .
$$
ここで $a \times 0$ は 1 つの実数ですから、その加法の逆元 $-(a \times 0)$ が存在します。上の等式の両辺にそれを足すと、左辺は
$$
a \times 0 + \bigl(-(a \times 0)\bigr) = 0,
$$
右辺は
$$
a \times 0 + a \times 0 + \bigl(-(a \times 0)\bigr) = a \times 0 + 0 = a \times 0
$$
となります。したがって $0 = a \times 0$ です。
</Proof>

この補題が言っているのは、**掛け算という操作の中で $0$ はブラックホールだ**ということです。何を放り込んでも $0$ しか出てこない。すると、逆向きにたどる割り算は当然おかしくなります。

<Proposition id="prop-no-solution" title="0 でない数は 0 で割れない">
$a$ を $0$ でない実数とする。このとき $0 \times x = a$ を満たす実数 $x$ は存在しない。したがって <Ref to="def-division" /> の意味で $a \div 0$ は定義されない。
</Proposition>

<Proof of="prop-no-solution">
$0 \times x = a$ を満たす実数 $x$ が存在したとします。交換法則より $0 \times x = x \times 0$ であり、<Ref to="lem-zero-product" /> を $x$ に適用すると $x \times 0 = 0$ です。よって $a = 0$ となり、$a \neq 0$ という仮定に矛盾します。したがってそのような $x$ は存在しません。
</Proof>

<Proposition id="prop-indeterminate" title="0 ÷ 0 は不定">
$0 \times x = 0$ はすべての実数 $x$ について成り立つ。したがって解が一意でなく、<Ref to="def-division" /> の意味で $0 \div 0$ は定義されない。
</Proposition>

<Proof of="prop-indeterminate">
任意の実数 $x$ に対し、交換法則と <Ref to="lem-zero-product" /> より $0 \times x = x \times 0 = 0$ です。よって方程式 $0 \times x = 0$ の解は実数全体であり、少なくとも $2$ つ（たとえば $x = 0$ と $x = 1$）あります。解が一意でないので、商として選ぶべき数を決められません。
</Proof>

つまり、ゼロ除算の困りかたには 2 種類あります。$5 \div 0$ は**候補がゼロ個**で、$0 \div 0$ は**候補が無限個**です。前者は「答えがない」、後者は「答えが決まらない（不定）」と呼び分けます。どちらも $a \div b$ という記号が 1 つの数を指せないという点では同罪です。

<Figure caption="a ÷ b の解が何個あるか">
<Mermaid code={`flowchart TD
  A["方程式 b × x = a の解を探す"] --> B&#123;"b ≠ 0 か"&#125;
  B -- はい --> C["解はちょうど 1 個<br/>x = a × (1/b)"]
  B -- いいえ --> D&#123;"a ≠ 0 か"&#125;
  D -- はい --> E["解は 0 個<br/>（5 ÷ 0 の場合）"]
  D -- いいえ --> F["解は無限個<br/>（0 ÷ 0 の場合）"]`} />
</Figure>

<Example id="ex-cookies" title="クッキーで考える">
$12 \div 3$ は「クッキー $12$ 枚を $3$ 人で等しく分けると 1 人何枚か」です。では $12 \div 0$ は「クッキー $12$ 枚を $0$ 人で分けると 1 人何枚か」。人がいないので、1 人あたりの枚数を答えようがありません。しかも $12$ 枚のクッキーはどこへ行ったのか、という問題が残ります。$0$ 人に何枚ずつ配っても、配られた合計は $0$ 枚。$12$ 枚にはなりません。これが <Ref to="prop-no-solution" /> の日常語訳です。

一方 $0 \div 0$ は「クッキー $0$ 枚を $0$ 人で分けると 1 人何枚か」。$0$ 人に $1$ 枚ずつ配っても合計 $0$ 枚、$100$ 枚ずつ配っても合計 $0$ 枚。どんな答えでも辻褄が合ってしまいます。これが <Ref to="prop-indeterminate" /> です。
</Example>

## 4. 「$0$ の逆数」を認めると世界が潰れる

ここで、粘り強い人はこう考えます。「答えが無いなら、作ればいいのでは。$\sqrt{-1}$ だって答えが無かったのに $i$ という新しい数を作ったじゃないか」と。

これは筋のいい反論です。数学は実際、その手で数の世界を広げてきました。引き算ができないから負の数を、割り算ができないから分数を、$x^2 = -1$ が解けないから虚数を作った。では同じ手で「$0 \times \infty = 1$ を満たす新しい数 $\infty$」を作ればよいのではないか。

答えは「作れますが、そのとき四則計算の法則のどれかを捨てなければなりません」です。次の定理が、その代償の大きさを教えてくれます。

<Theorem id="thm-collapse" title="ゼロに逆元を与えると全体が潰れる">
$K$ を、加法・減法・乗法が定義され、加法の単位元 $0$ と乗法の単位元 $1$ を持ち、結合法則・交換法則・分配法則が成り立つ集合（可換環）とする。もし $K$ のある元 $e$ が
$$
0 \times e = 1
$$
を満たすならば、$K$ のすべての元は $0$ に等しい。すなわち $K = \{0\}$ であり、とくに $1 = 0$ である。
</Theorem>

<Proof of="thm-collapse">
仮定より $0 \times e = 1$ です。一方、<Ref to="lem-zero-product" /> の証明は分配法則と加法の逆元だけを使っていましたから、$K$ でもそのまま成り立ち、$0 \times e = 0$ です。同じ元が $1$ とも $0$ とも等しいので
$$
1 = 0
$$
が得られます。

次に $K$ の任意の元 $a$ を取ります。$1$ が乗法の単位元であることと、いま得た $1 = 0$ を使うと
$$
a = a \times 1 = a \times 0 = 0
$$
となります（最後の等号は再び <Ref to="lem-zero-product" />）。$a$ は任意でしたから、$K$ のすべての元が $0$ です。
</Proof>

この結果は強烈です。$0$ の逆数を 1 つ認めただけで、$1$ も $2$ も $-7$ も $\pi$ もすべて $0$ になり、数直線が 1 点に潰れてしまいます。区別できる数が $0$ ただ 1 つしか残らない世界では、方程式も関数もグラフも意味を失います。虚数を導入したときは何も壊れませんでした（実数の四則計算はそのまま複素数の中で通用します）。それどころか $e^{i\theta} = \cos\theta + i\sin\theta$ のような新しい関係まで見つかっています（<Ref to="mathematics/math-columns/famous-mathematicians#thm-euler-formula" text="オイラーの公式" />）。ゼロ除算はそこが決定的に違います。

<Corollary id="cor-no-field" title="どんな数の体系にも 0 の逆数はない">
$0 \neq 1$ であるような可換環（整数全体、有理数全体、実数全体、複素数全体、実数係数の多項式全体などはすべてこれに該当する）には、$0 \times e = 1$ を満たす元 $e$ は存在しない。
</Corollary>

<Proof of="cor-no-field">
存在したとすると <Ref to="thm-collapse" /> より $1 = 0$ となり、$0 \neq 1$ という仮定に矛盾します。
</Proof>

<Remark id="rem-zero-ring">
逆に言えば、$1 = 0$ を認める体系はちょうど 1 つだけあります。元が $0$ しかない**零環**です。この世界では確かに $0$ で割れます（$0 \div 0 = 0$）。ただし数が 1 つしかないので、割り算に限らずすべての計算が $0 = 0$ になるだけです。ゼロ除算を許した代償として、数学が完全に沈黙します。
</Remark>

### 4.1. $1 = 2$ の偽証明

ゼロ除算の禁止を破ると具体的にどう間違えるのか。有名な「証明」を見ておきます。

<Example id="ex-fake-proof" title="1 = 2 の偽証明">
$a$ と $b$ を $0$ でない実数とし、$a = b$ とします。両辺に $a$ を掛けて
$$
a^2 = ab .
$$
両辺から $b^2$ を引いて
$$
a^2 - b^2 = ab - b^2 .
$$
左辺を因数分解、右辺を $b$ でくくると
$$
(a+b)(a-b) = b(a-b) .
$$
両辺を $a - b$ で割ると
$$
a + b = b .
$$
$a = b$ なので左辺は $2b$ となり、$2b = b$。両辺を $b\ (\neq 0)$ で割って
$$
2 = 1 .
$$

どこが間違いでしょうか。$a = b$ と仮定したので $a - b = 0$ です。つまり「両辺を $a-b$ で割る」という 1 行が、まさに $0$ で割る操作でした。<Ref to="prop-no-solution" /> と <Ref to="prop-indeterminate" /> により、この操作には意味がありません。

より正確に言うと、$(a+b)(a-b) = b(a-b)$ という等式自体は正しい（両辺とも $0$ です）のに、そこから $a+b = b$ を導いた推論が誤りです。$xc = yc$ から $x = y$ を結論してよいのは $c \neq 0$ のときだけで、その根拠は $c^{-1}$ を両辺に掛けられることでした。$c = 0$ では掛けるべき $c^{-1}$ が存在しません（<Ref to="cor-no-field" />）。
</Example>

<Aside type="caution">
方程式を解くときに「両辺を $x$ で割る」と書いて解を失う事故は、この偽証明と同じ構造です。たとえば $x^2 = x$ を両辺 $x$ で割って $x = 1$ とすると、解 $x = 0$ が消えます。正しくは $x^2 - x = 0$、すなわち $x(x-1) = 0$ と因数分解して $x = 0$ または $x = 1$ とします。割るのではなく移項して因数分解する、と覚えておくと事故が減ります。
</Aside>

## 5. グラフで見る：$1/x$ は $0$ の近くで何をしているか

代数の側からは「答えが無いか多すぎる」でした。解析（グラフや極限）の側から見ると、また違う顔が見えます。$f(x) = 1/x$ のグラフを描いてみましょう。

<Figure caption="y = 1/x のグラフ。x = 0 の直上には点が 1 つも無い">
<svg viewBox="0 0 400 260" width="100%" role="img" aria-label="y = 1/x のグラフ。原点付近で上下に発散する二つの枝">
  <line x1="0" y1="130" x2="400" y2="130" stroke="currentColor" stroke-width="1" opacity="0.5" />
  <line x1="200" y1="0" x2="200" y2="260" stroke="currentColor" stroke-width="1" opacity="0.5" />
  <line x1="200" y1="0" x2="200" y2="260" stroke="var(--sl-color-accent)" stroke-width="2" stroke-dasharray="6 5" />
  <polyline points="222,0 227,22 233,43 244,65 267,87 300,101 333,108 400,116"
    fill="none" stroke="var(--sl-color-accent)" stroke-width="2.5" />
  <polyline points="178,260 173,238 167,217 156,195 133,173 100,159 67,152 0,144"
    fill="none" stroke="var(--sl-color-accent)" stroke-width="2.5" />
  <text x="386" y="146" font-size="13" fill="currentColor">x</text>
  <text x="207" y="14" font-size="13" fill="currentColor">y</text>
  <text x="243" y="200" font-size="13" fill="currentColor">x = 0 は「壁」</text>
</svg>
</Figure>

右側の枝は、$x$ が $0$ に近づくほど天井知らずに上がっていきます。左側の枝は、同じく $0$ に近づくほど床を突き抜けて下がっていきます。この様子を数値で確かめます。

<Example id="ex-table" title="1/x の値の表">
$x$ を $0$ に近づけたときの $1/x$ の値です。

| $x$ | $0.1$ | $0.01$ | $0.001$ | $0.0001$ |
|---|---|---|---|---|
| $1/x$ | $10$ | $100$ | $1000$ | $10000$ |

| $x$ | $-0.1$ | $-0.01$ | $-0.001$ | $-0.0001$ |
|---|---|---|---|---|
| $1/x$ | $-10$ | $-100$ | $-1000$ | $-10000$ |

右から近づくと $+$ の方へいくらでも大きくなり、左から近づくと $-$ の方へいくらでも小さくなります。両者の差は縮まるどころか、$0$ に近づくほど開いていきます。$x = 10^{-4}$ では上下の値の差が $20000$ もあるのです。
</Example>

この「いくらでも大きくなる」を、感覚ではなく式で押さえておきます。どんなに大きな目標値を決めても、それを超えさせるほど $0$ に近い $x$ が必ず取れる、という点が要になります（この「いくらでも小さい正の数が取れる」ことを保証しているのが実数のアルキメデス性です — <Ref to="mathematics/math-columns/one-equals-0-999#lem-archimedes" text="アルキメデスの原理" />）。

<Definition id="def-divergence" title="正の無限大に発散する">
$x \to 0^{+}$（$x$ が正の値を取りながら $0$ に近づく）のとき、関数 $g(x)$ が**正の無限大に発散する**とは、どんなに大きな数 $M > 0$ を持ってきても、それに応じて $\delta > 0$ を選んで
$$
0 < x < \delta \implies g(x) > M
$$
とできることをいう。このとき $\displaystyle\lim_{x \to 0^{+}} g(x) = +\infty$ と書く。負の無限大への発散も同様に、$g(x) > M$ を $g(x) < -M$ に置き換えて定める。また $x \to 0^{-}$（$x$ が負の値を取りながら $0$ に近づく）の場合は、条件 $0 < x < \delta$ を $-\delta < x < 0$ に置き換えて同様に定める。
</Definition>

<Proposition id="prop-divergence" title="1/x の片側極限">
$$
\lim_{x \to 0^{+}} \frac{1}{x} = +\infty, \qquad \lim_{x \to 0^{-}} \frac{1}{x} = -\infty .
$$
</Proposition>

<Proof of="prop-divergence">
前半を示します。$M > 0$ を任意に取り、$\delta = \dfrac{1}{M}$ と定めます（$M > 0$ なので $\delta > 0$ です）。$0 < x < \delta$ とすると、$x$ と $\delta$ はともに正なので、両辺に正の数 $\dfrac{1}{x\delta}$ を掛けても不等号の向きは変わらず
$$
0 < x < \delta \implies \frac{1}{\delta} < \frac{1}{x} ,
$$
すなわち $\dfrac{1}{x} > M$ が得られます。$M$ は任意でしたから <Ref to="def-divergence" /> の条件が満たされ、$\lim_{x \to 0^{+}} 1/x = +\infty$ です。

後半は、$x < 0$ のとき $1/x = -\,1/|x|$ であり、$|x| \to 0^{+}$ に前半を適用すれば $1/|x| > M$ すなわち $1/x < -M$ となることから従います。
</Proof>

<Corollary id="cor-no-limit" title="x を 0 に近づけた極限は存在しない">
$\displaystyle\lim_{x \to 0} \frac{1}{x}$ は、実数としても $+\infty$ としても $-\infty$ としても存在しない。
</Corollary>

<Proof of="cor-no-limit">
極限が存在するとは、右から近づいたときと左から近づいたときの行き先が一致することです。<Ref to="prop-divergence" /> より右からの行き先は $+\infty$、左からの行き先は $-\infty$ で、一致しません。より具体的に言えば、$\delta > 0$ をどれだけ小さく取っても（区間が狭いほど主張は強いので $\delta \le 1$ としてよい）、区間 $0 < |x| < \delta$ の中には $1/x > 1$ となる $x$（たとえば $x = \delta/2$）と $1/x < -1$ となる $x$（たとえば $x = -\delta/2$）が両方存在します。したがって $1/x$ の値が 1 か所に集まることはありません。
</Proof>

$f(x) = 1/x$ の定義域から $x = 0$ を除くのは、単に「そこで値が大きくなりすぎるから」ではありません。**近づき方によって行き先が食い違うため、どんな値を割り当てても関数が連続にならない**からです。仮に $f(0) = 42$ と決めたとしても、$x = 0.0001$ での値 $10000$ と $x = -0.0001$ での値 $-10000$ の間で、グラフは $42$ の周りで跳ね回るだけです。

### 5.1. $0 \div 0$ 型は「答えが何にでもなる」

$0 \div 0$ の不定性は、極限の言葉にすると生々しく見えます。

<Example id="ex-indeterminate-limits" title="同じ 0 ÷ 0 の形から違う答えが出る">
次の 3 つはいずれも、$x \to 0$ のとき分子も分母も $0$ に近づきます。形の上ではすべて「$0 \div 0$」です。

$$
\begin{aligned}
\lim_{x \to 0} \frac{3x}{x} &= \lim_{x \to 0} 3 = 3, \\[4pt]
\lim_{x \to 0} \frac{x^{2}}{x} &= \lim_{x \to 0} x = 0, \\[4pt]
\lim_{x \to 0^{+}} \frac{x}{x^{2}} &= \lim_{x \to 0^{+}} \frac{1}{x} = +\infty .
\end{aligned}
$$

途中の変形はいずれも $x \neq 0$ の範囲でのみ行っています（極限は $x = 0$ そのものでの値を問わないので、これは正当です）。最後の式では <Ref to="prop-divergence" /> を使いました。

分子の $0$ への近づき方と分母の $0$ への近づき方の「速さ」の比によって、答えは $3$ にも $0$ にも $+\infty$ にもなります。同じように係数を選べば任意の実数を作れます（$\lim_{x\to 0} cx/x = c$）。だから $0 \div 0$ にただ 1 つの値を割り当てることはできません。<Ref to="prop-indeterminate" /> の解析版です。
</Example>

<Aside type="tip">
高校で習う微分係数の定義
$$
f'(a) = \lim_{h \to 0} \frac{f(a+h) - f(a)}{h}
$$
は、まさにこの「$0 \div 0$ 型」の極限です。分子も分母も $0$ に近づくのに、比としては有限の値に落ち着く。微分とは、禁止された $0 \div 0$ を極限という手続きで注意深く迂回する技術だと言えます。ゼロ除算が単純に「$0$」や「$\infty$」に決まっていたら、微分は生まれませんでした。
</Aside>

## 6. それでも割りたい人のために

ここまでは「できない」話でした。では数学は $0$ で割ることを永久に諦めたのかというと、そうでもありません。**割り算や数の意味を作り変えれば、限定的に許すことはできます。** 代表的な 3 つを挙げます。

**その 1：リーマン球面。** 複素数全体 $\mathbb{C}$ に、無限遠点と呼ばれる新しい点 $\infty$ をただ 1 つ付け加えた集合 $\mathbb{C} \cup \{\infty\}$ を考えます。ここでは $z \neq 0$ に対して $z / 0 = \infty$、$z / \infty = 0$ と定めます。<Ref to="thm-collapse" /> と矛盾しないのは、この集合が「加減乗除がすべて成り立つ数の体系」ではないからです。実際 $\infty + \infty$、$\infty - \infty$、$0 \times \infty$、$\infty / \infty$、そして $0/0$ は定義されないまま残されます。左右で行き先が違う問題も、複素数平面では $0$ のまわりをぐるりと回って近づけるので、$+\infty$ と $-\infty$ が同じ 1 点 $\infty$ につながり、解消されます。値段は「引き算の自由」でした。

**その 2：極限による迂回。** <Ref to="ex-indeterminate-limits" /> で見たとおり、$0/0$ 型の式は具体的な近づき方を指定すれば値が決まります。微分・積分はこの方針を徹底したもので、ロピタルの定理のように $0/0$ 型を系統的に処理する道具まで整備されています。ここでは「$0$ で割る」のではなく「$0$ に近い数で割った結果の行き先を見る」ことをしています。実数には「$0$ に最も近い正の数」が無い（<Ref to="mathematics/math-columns/one-equals-0-999#cor-no-infinitesimal" text="実数に無限小はない" />）以上、$0$ に迫るにはこの「行き先」を追いかけるしかありません。

**その 3：便宜上 $a \div 0 = 0$ と決める。** Isabelle/HOL や Coq のような定理証明支援系、あるいは一部のプログラミング言語の整数除算では、$a \div 0 = 0$ と定義してしまうことがあります。「$0$ で割ったら未定義」という但し書きを毎回書く手間を省くための工学的な妥協です。この規約でも <Ref to="thm-collapse" /> と矛盾しません。$0$ の逆数を作ったわけではなく、$\div$ という記号に「$b \neq 0$ なら商、$b = 0$ なら $0$」という 2 段構えの意味を与えただけだからです。代わりに $(a \div b) \times b = a$ という割り算の基本性質が $b = 0$ のとき壊れます。

**その 4（おまけ）：浮動小数点数。** 電卓やコンピュータの実数計算（IEEE 754 規格）では、$1.0 / 0.0$ は `inf`、$-1.0 / 0.0$ は `-inf`、$0.0 / 0.0$ は `nan`（not a number、非数）という特別な値を返します。これは <Ref to="prop-no-solution" /> と <Ref to="prop-indeterminate" /> の区別を、そのまま値として実装したものです。「解なし」には無限大、「不定」には非数。よくできています。

```python
import numpy as np

with np.errstate(divide="ignore", invalid="ignore"):
    print(np.float64(1.0) / np.float64(0.0))   # inf
    print(np.float64(-1.0) / np.float64(0.0))  # -inf
    print(np.float64(0.0) / np.float64(0.0))   # nan

# 整数の割り算は例外になる
try:
    1 // 0
except ZeroDivisionError as e:
    print("ZeroDivisionError:", e)
```

`nan` は「どんな数とも等しくない」という性質を持ち、`nan == nan` は偽になります。答えが決まらないことを、値そのものが自己申告しているわけです。

<Remark id="rem-history">
歴史的には、$0$ で割る試みは古くからありました。7 世紀インドの数学者ブラフマグプタは、$0$ を数として扱う規則を体系的に書いた最初期の人物ですが、$0 \div 0 = 0$ と述べています（現代の目には誤りです）。12 世紀のバースカラ 2 世は $a \div 0$ を「無限量」とみなす立場を取り、リーマン球面の発想に近いところまで来ていました。$0$ が「無」ではなく計算対象の数になった時点で、この問題は避けて通れないものになったのです。数の歴史を作った人々については [有名な数学者（ラマヌジャン、オイラー）](/mathematics/math-columns/famous-mathematicians) も合わせて読んでみてください。同じインドの数学の系譜に連なるラマヌジャンの逸話は <Ref to="mathematics/math-columns/famous-mathematicians#ex-1729" text="1729 の話" /> にあります。
</Remark>

## 7. 演習

<Exercise id="exr-six-div-zero" difficulty="易">
<Ref to="def-division" /> に戻って、$6 \div 0$ が定義されないことを説明してください。また $0 \div 0$ が定義されない理由が、$6 \div 0$ の場合と**どう違うか**を述べてください。

<Solution>
$6 \div 0$ は、方程式 $0 \times x = 6$ の解のことです。<Ref to="lem-zero-product" /> より、どんな実数 $x$ に対しても $0 \times x = 0$ ですから、左辺は常に $0$ で、$6$ にはなりません。よって解は 1 つも存在せず、$6 \div 0$ という記号が指すべき数がありません（<Ref to="prop-no-solution" />）。

$0 \div 0$ は方程式 $0 \times x = 0$ の解ですが、こちらはすべての実数 $x$ が解になります（<Ref to="prop-indeterminate" />）。つまり $6 \div 0$ は候補が $0$ 個で「存在しない」、$0 \div 0$ は候補が無限個で「1 つに決まらない（不定）」という違いがあります。定義が「ただ 1 つ存在するとき」を要求しているので、どちらも失格です。
</Solution>
</Exercise>

<Exercise id="exr-fake-proof-two" difficulty="標準">
次の「証明」の誤りを、どの行で何をしたのが不当かを明示して指摘してください。

「$x = 1$ とする。このとき $x^2 = x$ である。両辺から $1$ を引くと $x^2 - 1 = x - 1$。左辺を因数分解して $(x+1)(x-1) = x-1$。両辺を $x-1$ で割って $x + 1 = 1$。よって $x = 0$。$x = 1$ と仮定したので $1 = 0$ である。」

<Solution>
誤りは「両辺を $x-1$ で割って」の行です。仮定 $x = 1$ より $x - 1 = 0$ なので、この操作は $0$ で割ることに当たります。

もう少し丁寧に述べます。$(x+1)(x-1) = x-1$ という等式は正しく、実際 $x = 1$ を代入すると両辺とも $0$ です。ここから $x+1 = 1$ を導く推論は、一般に $ac = bc \implies a = b$ という形をしていますが、この推論が正しいのは $c \neq 0$ のとき、すなわち両辺に $c^{-1}$ を掛けられるときだけです。<Ref to="cor-no-field" /> より $c = 0$ には逆数が存在しないので、$c = 0$ ではこの推論は使えません。

なお、この「証明」の結論 $1 = 0$ は <Ref to="thm-collapse" /> が予告していたとおりのものです。$0$ で割る操作を 1 回でも許すと、まさにこの等式が出てくるのです。
</Solution>
</Exercise>

<Exercise id="exr-limit-computation" difficulty="標準">
次の極限を求めてください。答えだけでなく、途中の変形が $x = 0$ での割り算になっていないことも説明してください。

$$
\text{(1)}\ \lim_{x \to 0} \frac{x^{2} + 3x}{x}, \qquad
\text{(2)}\ \lim_{x \to 0} \frac{(x+2)^{2} - 4}{x}, \qquad
\text{(3)}\ \lim_{x \to 0^{+}} \frac{x + 1}{x^{2}} .
$$

<Solution>
**(1)** 分子を因数分解すると $x^2 + 3x = x(x+3)$ です。$x \to 0$ の極限では $x$ が $0$ に近づく途中の値だけを見ればよく、$x = 0$ そのものは考えません。よって $x \neq 0$ としてよく、$x$ で約分できます。
$$
\frac{x^{2}+3x}{x} = \frac{x(x+3)}{x} = x + 3 \quad (x \neq 0).
$$
右辺は $x \to 0$ で $3$ に近づくので、答えは $3$ です。

**(2)** 分子を展開すると $(x+2)^2 - 4 = x^2 + 4x + 4 - 4 = x^2 + 4x = x(x+4)$ です。(1) と同じく $x \neq 0$ で約分して
$$
\frac{(x+2)^{2}-4}{x} = x + 4 \quad (x \neq 0),
$$
極限は $4$ です。（これは $f(t) = t^2$ の $t = 2$ における微分係数 $f'(2) = 4$ の計算そのものです。）

**(3)** 分子は $x \to 0^{+}$ で $1$ に近づき、分母 $x^2$ は正の値を保ったまま $0$ に近づきます。$0/0$ 型ではないので約分は起きません。実際、$0 < x < 1$ のとき $x + 1 > 1$ なので
$$
\frac{x+1}{x^{2}} > \frac{1}{x^{2}} > \frac{1}{x}
$$
（最後の不等号は $0 < x < 1$ のとき $x^2 < x$ による）。<Ref to="prop-divergence" /> より右端は $x \to 0^{+}$ で $+\infty$ に発散するので、$\displaystyle\lim_{x \to 0^{+}} \frac{x+1}{x^{2}} = +\infty$ です。

3 問とも、約分で消したのは「$0$ に近い $0$ でない数」であって $0$ そのものではありません。ここがゼロ除算と極限の分かれ目です。
</Solution>
</Exercise>

<Exercise id="exr-convention-cost" difficulty="難">
第 6 節で紹介した「$a \div 0 = 0$ と定義してしまう」規約を採用したとします。この規約のもとでも <Ref to="thm-collapse" /> と矛盾しないことを説明し、その代わりに失われる性質を具体例で 1 つ挙げてください。

<Solution>
**矛盾しない理由。** <Ref to="thm-collapse" /> が禁じているのは、$0 \times e = 1$ を満たす元 $e$ が数の集合の中に存在することです。この規約は新しい数を作っていません。実数の集合はそのままで、記号 $\div$ に
$$
a \div b = \begin{cases} a \times b^{-1} & (b \neq 0) \\ 0 & (b = 0) \end{cases}
$$
という 2 段構えの意味を与えただけです。$0 \div 0 = 0$ と書いても、$0$ の逆数を $0$ だと主張しているわけではありません（もしそう主張すれば $0 \times 0 = 1$、すなわち <Ref to="lem-zero-product" /> より $0 = 1$ となって潰れます）。したがって加減乗の法則は何も壊れません。

**失われる性質。** 割り算の一番基本的な性質
$$
(a \div b) \times b = a
$$
が $b = 0$ で成り立たなくなります。実際 $a = 1$, $b = 0$ とすると、規約より $1 \div 0 = 0$ なので
$$
(1 \div 0) \times 0 = 0 \times 0 = 0 \neq 1 = a .
$$
同様に「$a \div b = c$ ならば $a = c \times b$」も成り立ちません。つまりこの $\div$ は、もはや <Ref to="def-division" /> の意味での「掛け算の逆」ではありません。$b \neq 0$ という条件を書き忘れたまま $(a \div b) \times b = a$ を使うと誤った結論が出るので、この規約を採る体系では、その条件を定理の側に明記する責任が残ります。手間が消えたのではなく、移動しただけです。
</Solution>
</Exercise>

## 参考文献

- 松坂和夫『代数系入門』岩波書店、1976 — 環と体の章。$0$ の逆元が存在しないこと、零環についての標準的な扱い。
- 杉浦光夫『解析入門 I』東京大学出版会、1980 — 第 I 章。極限と発散の厳密な定義。
- Lars V. Ahlfors, *Complex Analysis*, 3rd ed., McGraw-Hill, 1979 — 第 1 章。リーマン球面と無限遠点の導入。
- Kim Plofker, *Mathematics in India*, Princeton University Press, 2009 — ブラフマグプタとバースカラ 2 世によるゼロの扱い。
- [IEEE Standard for Floating-Point Arithmetic (IEEE 754-2019)](https://standards.ieee.org/ieee/754/6210/) — 除算における `inf` と `nan` の規定。

## Appendix: 「例外」と「特別な値」のどちらがよいか

**プログラミングの現場では、ゼロ除算の扱いが 2 通りに分かれます。** 整数の割り算では例外を投げて計算を止める言語が多く、浮動小数点数では `inf` や `nan` を返して計算を続ける実装が主流です。前節の Python の例は、この 2 つが同じ言語の中に同居している様子でした。

**どちらにも理由があります。** 例外で止める方式は、間違いを見逃さない点で安全です。分母が $0$ になったのは大抵プログラムの論理ミスなので、その場で止まってくれた方が原因を特定しやすい。一方 `nan` を返す方式は、大量の数値計算を途中で止めたくない場面で威力を発揮します。たとえば $100$ 万点のデータのうち $1$ 点だけ分母が $0$ になったとき、その $1$ 点を `nan` として残り全部を計算し終える方が実用的です。`nan` は「これは信用できない値だ」という札として、以後の計算に伝播していきます（`nan` を含む足し算・掛け算の結果はすべて `nan` になります）。

**共通しているのは、どちらも「普通の数を返す」ことだけは避けている点です。** もし $1/0$ が黙って $0$ を返したら、その $0$ は正当な計算結果と区別がつかず、誤りが下流へ静かに広がります。<Ref to="prop-no-solution" /> と <Ref to="prop-indeterminate" /> が言っているのは、まさに「返すべき普通の数が無い」ということでした。例外も `nan` も、この数学的事実をそれぞれのやり方で正直に報告しているだけなのです。
