---
# System prepended metadata

title: 有限ドメインの確率論のCoq実装を読む

---


# 有限ドメインの確率論のCoq実装を読む

## 一般的な確率空間の話

**標本空間**と呼ばれる集合 $Ω$，**事象** (*event*) のなす集合族 $\mathcal{B} ⊆ 2^Ω$，**確率測度** $P : \mathcal{B} → [0, 1]$ からなる $(Ω, \mathcal{B}, P)$ で

- $P(Ω) = 1$
- 可算加法性： $∀(A : \mathbf{N} → 2^Ω). (∀i∀j ∈ \mathbf{N}. i ≠ j ⇒ A_i ∩ A_j = ∅) ⇒ P(⋃_{i ∈ \mathbf{N}} A_i) = ∑_{i = 1}^{∞} P(A_i)$

を満たすものを**確率空間**と呼ぶ．

$Ω$ が有限の場合は簡単．例えばサイコロの場合は $Ω := \{1, 2, 3, 4, 5, 6\}$，$\mathcal{B} := 2^Ω$，$P(A) := |A|/6$ で，「出た目が偶数である」ことに対応する事象が $A_{\mathrm{even}} := \{2, 4, 6\}$ で，$P(A_{\mathrm{even}}) = 1/2$．

写像 $X : Ω → \mathbf{R} ∪ \{+∞, -∞\}$ が $∀r ∈ \mathbf{R}. \{ω ∈ Ω | X(ω) > r\} ∈ \mathcal{B}$ を満たすとき，$X$ を**確率変数** (*random variable*) と呼ぶ．$Ω$ が有限の場合は簡単で，例えばサイコロの目の大きさなら単に $X(n) := n$ でよい．

確率変数 $X$ に対して，$\mathrm{E}[X]$ で $X$ の**期待値**を表す．$Ω$ が有限の場合は簡単に定義でき，$\mathrm{E}[X] := ∑_{ω ∈ Ω} P(\{ω\}) \cdot X(ω)$ という具合．例えばサイコロの場合，目の大きさの期待値は $\mathrm{E}[X] = (1 + 2 + 3 + 4 + 5 + 6)/6 = 7/2$．

また，$\mathrm{V}[X]$ で $X$ の**分散** (*variance*) を表す．これも有限の場合は定義が簡単で，$\mathrm{V}[X] := ∑_{ω ∈ Ω} (X(ω) - \mathrm{E}[X])^2$．

確率は，記法として $P[X = a] := P(\{ω ∈ Ω | X(ω) = a\})$ などと拡張される．


## 記法

- ``E `* F``： 直積 $E × F$
- ``E `*T``： $E × T$（T は何かしらの台集合らしい？）
- ``T`* F``： $T × F$

- `Pr d E`： 分布 `d` に於ける事象 `E` の確率
  * 分布というものの実体はまだよくわからない．

- `{RV P -> T}`： `T : eqType` 型の値をとる，**ambient distribution** `P` 上を動く確率変数の型
  * ambient distributionという用語はよくわからない．何らかの私訳？

- `` `p_X``： `X : {RV P -> R}` なる `P`

- `` `Pr[ X = a ]``： 確率変数 `X` が `a` をとる確率（一般的な記法と同じ）

- `` `Pr_P [ A | B ]``： 事象に対する条件つき確率

- `Z \= X @+ Y`： 「確率変数 `Z` は `X` と `Y` の和である」という命題
- `X \=sum Xs`： 「確率変数 `X` は独立な確率変数列 `Xs` の和である」という命題
- `` `E X``： 確率変数 `X` の期待値（一般的な記法 $\mathrm{E}[X]$ と同じ）
- `` `E_[ X | F ]``： 事象 `F` を前提とする確率変数 `X` の条件つき期待値
- `` `V X``： 確率変数 `X` の分散（一般的な記法 $\mathrm{V}[X]$ と同じ）
- `X _|_  Y | Z`： `Z` の下で `X` と `Y` は条件つき独立（一般的な記法に近い）．P(X, Y | Z) = P(X | Z) P(Y | Z)
- `P |= X _|_ Y`： 確率変数 `X` と `Y` は独立である


## 定理

### 期待値の線型性

```coq
Lemma E_sum_2 : X \= X1 @+ X2 -> `E X = `E X1 + `E X2.
```

和の期待値は期待値の和に等しい．


### 独立な確率変数の分散の線型性

```coq
Lemma V_sum_2 : X \= X1 @+ X2 -> P |= X1' _|_ X2' -> `V X = `V X1 + `V X2.
```


### 分散の平均

```coq
Lemma Var_average n (X : {RV (P `^ n) -> R}) Xs (sum_Xs : X \=sum Xs) :
  forall sigma2, (forall i, `V (Xs ``_ i) = sigma2) ->
  n%:R * `V (X `/ n) = sigma2.
```

- ``P `^ n`` は何か？ 分布 `P` の確率変数が `n` 個独立に動いたときの分布？
- ``` ``_``` は何か？ 列に対する添字アクセス？
- `e %: T` は型強制っぽい？

$∀σ_2. (∀i. V[\boldsymbol{X}_i] = σ_2) ⇒ n \cdot V[X / n] = σ_2$

分散が全て $σ_2$ であるような確率変数の列に対し，その相加平均の分散を取った確率変数は分散が $σ / n$．要するに “平均を取ると散らばり具合が低減する”．


### 事象集合に対する確率に関する不等式

```coq
Lemma Pr_bigcup (B : finType) (p : pred B) F :
  Pr (\bigcup_(i | p i) F i) <= \sum_(i | p i) Pr (F i).
```

$P(⋃_{i ∈ \{n | p(n)\}} F_i) \leq ∑_{i ∈ \{n | p(n)\}} P(F_i)$

わりと自明．


### 「Booleの等式」

```coq
Lemma Boole_eq (I : finType) (F : I -> {set A}) :
  (forall i j, i != j -> [disjoint F i & F j]) ->
  Pr (\bigcup_(i in I) F i) = \sum_(i in I) Pr (F i).
```

$(∀i∀j. i ≠ j ⇒ F_i ∩ F_j = ∅) ⇒ P(⋃_{i ∈ I} F_i) = ∑_{i ∈ I} P(F_i)$

これもわりと自明．要するにどの2者も排反な事象の集合の確率はそれぞれの確率の和になる．


### 事象集合の分割に関する等式

```coq
Lemma total_prob (I : finType) (E : {set A}) (F : I -> {set A}) :
  (forall i j, i != j -> [disjoint F i & F j]) ->
  cover (F @: I) = [set: A] ->
  Pr E = \sum_(i in I) Pr (E :&: F i).
```

- `{set A}` や `[set: A]` は何か？
  * mathcompの記法らしい？： https://math-comp.github.io/htmldoc/mathcomp.ssreflect.finset.html

    > [set: T] or setT == the full set (the A containing all x : T).

    - `{set A}` は有限型 `A` に対しその要素からなる集合全体につく型．気持ちとしては冪集合的なものらしい．要するにここでは $E ⊆ A$．

- `cover` や `@:` は何か？

  * 上記ページに以下の記述あり：

    > `f @: A == the image set of the collective predicate A by f.`

    像 $f[A]$ らしい．

    > `Definition cover P := \bigcup_(B in P) B.`

- `:&:` は何か？

  > A :&: B == the intersection of A and B.

$(∀i∀j. i ≠ j ⇒ F_i ∩ F_j = ∅) ⇒ ⋃_{B ∈ F[I]} B = A ⇒ P(E) = ∑_{i ∈ I} P(E ∩ F_i)$

$⋃_{B ∈ F[I]} B$ はつまり $⋃_{i ∈ I} F_i$．前件は要するに $\{F_i\}_{i ∈ I}$ が $A$ を分割した商集合であると言っている．命題自体は，直観的にはわりと自明そう．


### 条件つき確率が満たす性質

```coq
Section bayes_extended.
Variables (I : finType) (E : {set A}) (F : I -> {set A}).
Hypothesis dis : forall i j, i != j -> [disjoint F i & F j].
Hypothesis cov : cover (F @: I) = [set: A].

Lemma total_prob_cond :
  Pr d E = \sum_(i in I) `Pr_[E | F i] * Pr d (F i).

（中略）
End bayes_extended.
```

$(∀i∀j. i ≠ j ⇒ F_i ∩ F_j = ∅)$ と $⋃_{i ∈ I} F_i$ を前提し，$P_d(E) = ∑_{i ∈ I} P[E | F_i] \cdot P_d(F_i)$ を示している．

前節とよく似たことを条件つき確率として言ったもの．


### Bayesの定理

```coq
Lemma Bayes (E F : {set A}) : `Pr_[E | F] = `Pr_[F | E] * Pr d E / Pr d F.
```

一般的なBayesの定理．$P(E | F) = \frac{P(F | E) P(E)}{P(F)}$

条件つき確率は $P(E | F) := \frac{P(E ∩ F)}{P(F)}$ で定められ，“事象 $F$ が成立しているときに $E$ も成立している確率” のこと．

したがって上記補題は単に $P(E | F) P(F) = P(E ∩ F) = P(F | E) P(E)$ の両辺を $P(F) ≠ 0$ なる $P(F)$ で割ると出てくる．


### Bayesの定理の拡張

```coq
Section bayes_extended.
Variables (I : finType) (E : {set A}) (F : I -> {set A}).
Hypothesis dis : forall i j, i != j -> [disjoint F i & F j].
Hypothesis cov : cover (F @: I) = [set: A].

（中略）

Lemma Bayes_extended j :
  `Pr_[F j | E] = `Pr_[E | F j] * Pr d (F j) / \sum_(i in I) `Pr_[E | F i] * Pr d (F i).
（中略）

End bayes_extended.
```

$P(F_j | E) = \frac{P(E | F_j) P(F_j)}{∑_{i ∈ I} P(E | F_i) P(F_i)}$

ここに端的な説明があった：

- https://bellcurve.jp/statistics/course/6444.html


### `Pr_bigcup_incl_excl`

```coq
Let SumPrCap (n : nat) (S : 'I_n -> {set A}) (k : nat) :=
  \sum_(J in {set 'I_n} | #|J| == k) Pr P (\bigcap_(j in J) S j).

（中略）

Theorem Pr_bigcup_incl_excl n (S : 'I_n -> {set A}) :
  Pr P (\bigcup_(i < n) S i) = \sum_(1 <= k < n.+1) ((-1)^(k-1) * SumPrCap S k).
```

- `'I_n` はおそらく $\{1, …, n\}$ のこと？ → $\{0, …, n - 1\}$ だった．$\mathbf{I}_n$ と書くことにしよう：

  * https://math-comp.github.io/htmldoc/mathcomp.ssreflect.fintype.html

    > 'I_n, ordinal n == the finite subType of integers i < n, whose
    >                    enumeration is {0, ..., n.-1}. 'I_n coerces to nat,
    >                    so all the integer arithmetic functions can be used
    >                    with 'I_n.

$\mathit{SumPrCap}(S, k)$ は，族 $\{S_i\}_{i ∈ \mathbf{I}_n}$ のうち $k$ 個の共通部分をとってできる事象の確率の総和をとったもの：

$\mathit{SumPrCap}(S, k) := ∑_{J ∈ \{J ⊆ \mathbf{I}_n | \#J = k\}} P(⋂_{j ∈ J} S_j)$

定理は $P(⋃_{i ∈ \mathbf{I}_n} S_i) = ∑_{k = 1}^{n} (-1)^{k - 1} \mathit{SumPrCap}(S, k)$ という主張．少なくとも自明ではなさそう．

$n = 1$ の場合は $P(S_0) = (-1)^0 \mathit{SumPrCap}(S, 1) = P(S_0)$ なので明らか．

$n = 2$ の場合は $P(S_0 ∪ S_1) = \mathit{SumPrCap}(S, 1) - \mathit{SumPrCap}(S, 2) = (P(S_0) + P(S_1)) - P(S_0 ∩ S_1)$ でこれはたしかにそのとおり．

要するに “ヴェン図の外縁部以外の部分の大きさ” の話をしているらしい．


### `reasoning_by_cases`

```coq
Lemma reasoning_by_cases (U : finType) (P : fdist U)
  (A B : finType) (X : {RV P -> A}) (Y : {RV P -> B}) E :
  `Pr[ X \in E ] = \sum_(b <- fin_img Y) `Pr[ [% X, Y] \in (E `* [set b])].
```

`fin_img` はどこで定義されているのか調べてもわからなかったが，おそらく単に写像のつくる像だろう．つまり $f$ に対して $\mathop{\mathrm{img}} f := \{f(x) | x ∈ \mathop{\mathrm{dom}} f\}$ を返す．

`[% X, Y]` については記法が以下のように定められている．要するに $ω ↦ (X(ω), Y(ω))$ で定義される確率変数のようだ．

```coq
Section pair_of_RVs.
Variables (U : finType) (P : fdist U).
Variables (A : eqType) (X : {RV P -> A}) (B : eqType) (Y : {RV P -> B}).
Definition RV2 : {RV P -> A * B} := fun x => (X x, Y x).
End pair_of_RVs.

Notation "'[%' x , y , .. , z ']'" := (RV2 .. (RV2 x y) .. z).
```

$P[X ∈ E] = ∑_{b ∈ \mathop{\mathrm{img}} Y} P[(X, Y) ∈ E × \{b\}]$

<!-- $P[X \in E] = P(\{\omega \in \Omega | X(\omega) \in E\})$

$\Omega = \{1, \ldots, 6\}, X(n) := n, E_{\mathrm{even}} = \{2, 4, 6\}$ -->


というわけでわりと直観的には自明そうだ．


### Markovの不等式

```coq
Section markov_inequality.
Variables (U : finType) (P : {fdist U}) (X : {RV P -> R}).
Hypothesis X_ge0 : forall u, 0 <= X u.

（中略）

Lemma markov (r : R) : 0 < r -> `Pr[ X >= r ] <= `E X / r.
（中略）

End markov_inequality.
```

$(∀ω ∈ Ω. X(ω) ≥ 0) ⇒ ∀r ∈ \mathbf{R_{+}}. P[X ≥ r] ≤ \mathrm{E}[X] / r$．

ここに簡潔な説明がある：

- https://manabitimes.jp/math/937

  > つまりマルコフの不等式 $P(|X| ≥ a) ≤ \dfrac{E[|X|]}{a}$ は，$∣X∣$ の期待値が大きくなければ $∣X∣$ が大きくなる確率はそんなに高くないことを表しています。

  * 実は学部生の頃に所属していた研究室の2年上の先輩による記事．


### Chebyshevの不等式

```coq
Section chebyshev.

Variables (U : finType) (P : fdist U) (X : {RV P -> R}).

Lemma chebyshev_inequality epsilon : 0 < epsilon ->
  `Pr[ (Rabs `o (X `-cst `E X)) >= epsilon] <= `V X / epsilon ^ 2.
（中略）

End chebyshev.
```

$P[|X - \mathrm{E}[X]| ≥ ε] ≤ \mathrm{V}[X] / ε^2$．こちらも簡潔に言えば “$X$ が平均から逸脱する確率は，$X$ の分散が大きくなければそれほど大きくはならない” という具合．


### 事象の独立性

```coq
Definition inde_events (E F : {set A}) := Pr d (E :&: F) = Pr d E * Pr d F.
```

事象 $E$ と事象 $F$ が**独立**であるとは，$P(E ∩ F) = P(E) P(F)$ が成り立つことを言う．


### 事象の条件つき独立性

```coq
Definition cinde_events (E F G : {set A}) :=
  `Pr_d[ E :&: F | G] = `Pr_d[E | G] * `Pr_d[F | G].
```

事象 $E$ と事象 $F$ が $G$ の下で**条件つき独立**であるとは，$P(E ∩ F | G) = P(E | G) P(F | G)$ が成り立つことを言う．


### `weak_law_of_large_numbers`

```coq
Section weak_law_of_large_numbers.

Local Open Scope vec_ext_scope.

Variables (A : finType) (P : {fdist A}) (n : nat).
Variable Xs : 'rV[{RV P -> R}]_n.+1.
Variable miu : R.
Hypothesis E_Xs : forall i, `E (Xs ``_ i) = miu.
Variable sigma2 : R.
Hypothesis V_Xs : forall i, `V (Xs ``_ i) = sigma2.
Variable X : {RV (P `^ n.+1) -> R}.
Variable X_Xs : X \=sum Xs.

Lemma wlln epsilon :
  0 < epsilon ->
  `Pr[ (Rabs `o ((X `/ n.+1) `-cst miu)) >= epsilon ] <= sigma2 / (n.+1%:R * epsilon ^ 2).
（中略）

End weak_law_of_large_numbers.
```

有限型 $A$，$A$ の分布 $P$，$(n + 1)$ 個の $P$ 上の確率変数の列 $\boldsymbol{X}$ が

- $∀i. \mathrm{E}[\boldsymbol{X}_i] = μ$
- $∀i. \mathrm{V}[\boldsymbol{X}_i] = σ^2$

とどの要素も相等しい平均 $μ$ と分散 $σ^2$ をもつとき，$X(ω) := ∑_{i = 1}^{n + 1} \boldsymbol{X}_i(ω)$ で確率変数 $X$ を定めると，

$0 < ε ⇒ P[|X / (n + 1) - μ| ≥ ε] ≤ σ^2 / ((n + 1) * ε^2)$

が成り立つという主張．要するにChebyshevの不等式を列に拡張したもので，“同一分布の確率変数の平均をとるとより逸脱しにくくなる” ことを言っていると見ればよさそう．
