📦 Out of Context リポジトリ

リポジトリ / emssr / independent_common_compiler

r2
r2 emssr1
# 二進有理数の層
r2 emssr2
r2 emssr3
[← 総表](Index.md)
r2 emssr4
r2 emssr5
$$
r2 emssr6
\mathsf{Dyad}=\mathbb Z\!\left[\tfrac12\right],
r2 emssr7
\qquad
r2 emssr8
\text{値}=\frac{x}{2^{\delta}}
r2 emssr9
$$
r2 emssr10
r2 emssr11
語には分子 $x$ だけが載る。深度 $\delta$ は build 時の型なので、走らせる側には現れない。
r2 emssr12
r2 emssr13
---
r2 emssr14
r2 emssr15
## 入口
r2 emssr16
r2 emssr17
### `hu` — $\mathsf{one}$    $I\to\mathsf{Dyad}$
r2 emssr18
r2 emssr19
$$
r2 emssr20
\llbracket\mathsf{one}\rrbracket=\langle1,0\rangle
r2 emssr21
\tag{16.3.1}
r2 emssr22
$$
r2 emssr23
r2 emssr24
幾何の読みは「原点 $O$ に立つ」になる。数の literal はこの一語だけであり、
r2 emssr25
残りは全部合成で作る。
r2 emssr26
r2 emssr27
$$
r2 emssr28
2=1\oplus1,\qquad
r2 emssr29
0=1\oplus(\ominus1),\qquad
r2 emssr30
\tfrac12=\beta(0),\qquad
r2 emssr31
\tfrac34=\beta(\beta(0)),\qquad
r2 emssr32
\tfrac14=\beta(\ominus\beta(0))
r2 emssr33
\tag{16.5.5}
r2 emssr34
$$
r2 emssr35
r2 emssr36
---
r2 emssr37
r2 emssr38
## 算術
r2 emssr39
r2 emssr40
| 音節 | 記号 | 型 | 深度 |
r2 emssr41
|---|---|---|---|
r2 emssr42
| `no` | $\oplus$ | $D\otimes D\to D$ | $\max(\delta_u,\delta_v)$ へそろう |
r2 emssr43
| `ha` | $\ominus$ | $D\to D$ | 変わらない |
r2 emssr44
| `ti` | $\star$ | $D\otimes D\to D$ | $\delta_u+\delta_v$ |
r2 emssr45
| `ba` | $\oslash$ | $D\otimes D\to\mathsf{Rational}$ | 分子と分母の二語 |
r2 emssr46
r2 emssr47
加算は平行四辺形則であり、経路を忘れる。乗算はタレス比であり、経路を保持する。
r2 emssr48
この非対称が体系の土台になる(幾何 3 章)。
r2 emssr49
r2 emssr50
```
r2 emssr51
hu hu ka
r2 emssr52
no ka
r2 emssr53
```
r2 emssr54
r2 emssr55
値 $2$。`examples/cmn/futatsu.cmn`
r2 emssr56
r2 emssr57
除算は二進比へ閉じないので、出口の型が $\mathsf{Rational}$ になる。
r2 emssr58
零で割ると実行時に失敗を報告する。
r2 emssr59
r2 emssr60
```
r2 emssr61
hu hu ka ki se ka ba
r2 emssr62
```
r2 emssr63
r2 emssr64
分子 $2$、分母 $2$。`examples/vocabulary/ba_div.cmn`
r2 emssr65
r2 emssr66
---
r2 emssr67
r2 emssr68
## 二分割
r2 emssr69
r2 emssr70
### `se` — $\beta$    $D\to D$
r2 emssr71
r2 emssr72
$$
r2 emssr73
\beta(x)=\frac{x+1}{2},
r2 emssr74
\qquad
r2 emssr75
\beta(1)=1
r2 emssr76
\tag{16.5.4}
r2 emssr77
$$
r2 emssr78
r2 emssr79
基準点が $1$ であり、$1$ は不動点になる。だから半分は零から立てる。
r2 emssr80
降下は四箱へ開く。
r2 emssr81
r2 emssr82
$$
r2 emssr83
\operatorname{Desc}(\beta)(u)=\bigl[\mathrm{Cst}(1,0),\ \mathrm{Add}(u,\cdot),\ \mathrm{Cst}(1,1),\ \mathrm{Mul}(\cdot,\cdot)\bigr]
r2 emssr84
\tag{16.5.6}
r2 emssr85
$$
r2 emssr86
r2 emssr87
```
r2 emssr88
hu hu ka, ki ha ka, no ka, se ka, se ka.
r2 emssr89
```
r2 emssr90
r2 emssr91
値 $3/2^2$。`examples/cmn/yonbunnosan.cmn`
r2 emssr92
r2 emssr93
### `gu` — $\beta^{-1}$    $D\to D$
r2 emssr94
r2 emssr95
$$
r2 emssr96
\beta^{-1}(x)=2x-1
r2 emssr97
$$
r2 emssr98
r2 emssr99
像は深度 $1$ 以上に限る(構成語 §4 の $\operatorname{im}\beta_a$)。深度 $0$ の入力は失敗になる。
r2 emssr100
r2 emssr101
### `za` — $\beta_a$    $D\otimes D\to D$
r2 emssr102
r2 emssr103
$$
r2 emssr104
\beta_a(x)=\frac{x+a}{2}
r2 emssr105
\tag{22.9}
r2 emssr106
$$
r2 emssr107
r2 emssr108
基準点をワイヤで受ける形になる。16 式 (5.6) の $\mathrm{Cst}(1,0)$ が第二ワイヤに変わる。
r2 emssr109
r2 emssr110
```
r2 emssr111
hu hu ka
r2 emssr112
za ka
r2 emssr113
```
r2 emssr114
r2 emssr115
値 $2/2^1$。`examples/vocabulary/za_bisect.cmn`
r2 emssr116
r2 emssr117
---
r2 emssr118
r2 emssr119
## 不動点
r2 emssr120
r2 emssr121
### `ge` — $\mathsf{fix}$    $D\to D$
r2 emssr122
r2 emssr123
$$
r2 emssr124
x=\frac{x+1}{2}
r2 emssr125
\ \Longrightarrow\
r2 emssr126
x=1,
r2 emssr127
\qquad
r2 emssr128
\operatorname{Desc}(\mathsf{fix})(x_0)=\bigl[\mathrm{Cst}(1,0)\bigr]
r2 emssr129
\tag{16.5.8}
r2 emssr130
$$
r2 emssr131
r2 emssr132
集積点は初期値に依らないので、入力ワイヤは落ちる。
r2 emssr133
r2 emssr134
### `zi` — $\Omega_a[\beta_a;x_0]$    $D\otimes D\to D$
r2 emssr135
r2 emssr136
$$
r2 emssr137
\Omega_a[\beta_a;x_0]=a
r2 emssr138
\tag{22.10}
r2 emssr139
$$
r2 emssr140
r2 emssr141
箱を作らず、第二ワイヤをそのまま返す。反復を回す箱は生成元レジストリに無い。
r2 emssr142
r2 emssr143
```
r2 emssr144
hu ka ge
r2 emssr145
```
r2 emssr146
r2 emssr147
値 $1$。`examples/vocabulary/ge_fix.cmn`
r2 emssr148
r2 emssr149
---
r2 emssr150
r2 emssr151
## 観測と二値
r2 emssr152
r2 emssr153
| 音節 | 記号 | 型 | 値 |
r2 emssr154
|---|---|---|---|
r2 emssr155
| `so` | $\varphi_\partial$ | $D\to B$ | $[\,0<x\,]$ |
r2 emssr156
| `hi` | $\le$ | $D\otimes D\to B$ | $[\,u\le v\,]$ |
r2 emssr157
| `mo` | $\pi$ | $B\to D$ | 型を忘れる |
r2 emssr158
r2 emssr159
どちらも 16 §5.3 の八箱へ降りる。$\mathcal M$ は値の join を memory しか持たないので、
r2 emssr160
既定値を退避語へ置き、path separation の片側で書き換えてから読み戻す。
r2 emssr161
r2 emssr162
$$
r2 emssr163
\operatorname{Desc}(\text{判定})=
r2 emssr164
\left[
r2 emssr165
\begin{aligned}
r2 emssr166
&n{+}0:\ \mathrm{Cst}(0,0)\\
r2 emssr167
&n{+}1:\ \mathrm{Cst}(s,0)\\
r2 emssr168
&n{+}2:\ \mathrm{Cst}(\mathrm d,0)\\
r2 emssr169
&n{+}3:\ \mathrm{Store}(n{+}1,\ n{+}2)\\
r2 emssr170
&n{+}4:\ \mathrm{LtBr}(A,\ B,\ n{+}7)\\
r2 emssr171
&n{+}5:\ \mathrm{Cst}(1-\mathrm d,0)\\
r2 emssr172
&n{+}6:\ \mathrm{Store}(n{+}1,\ n{+}5)\\
r2 emssr173
&n{+}7:\ \mathrm{Load}(n{+}1)
r2 emssr174
\end{aligned}
r2 emssr175
\right]
r2 emssr176
\tag{16.5.9}
r2 emssr177
$$
r2 emssr178
r2 emssr179
$\pi$ が型を忘れると、選択が生成元の合成で書ける。
r2 emssr180
r2 emssr181
$$
r2 emssr182
\operatorname{sel}(c,a,b)=c\star a\ \oplus\ (1\ominus c)\star b,
r2 emssr183
\qquad
r2 emssr184
c\in\{0,1\}
r2 emssr185
\tag{16.5.11}
r2 emssr186
$$
r2 emssr187
r2 emssr188
分岐命令は要らない。
r2 emssr189
r2 emssr190
```
r2 emssr191
hu ka so ka mo ka
r2 emssr192
```
r2 emssr193
r2 emssr194
値 $1$。`examples/vocabulary/mo_pi.cmn`
r2 emssr195
r2 emssr196
---
r2 emssr197
r2 emssr198
## 複製と廃棄
r2 emssr199
r2 emssr200
| 音節 | 記号 | 型 | 降下 |
r2 emssr201
|---|---|---|---|
r2 emssr202
| `he` | $\Delta$ | $D\to D\otimes D$ | 空列。同じワイヤを二度使う |
r2 emssr203
| `ho` | $!$ | $D\to I$ | 空列。ワイヤを落とす |
r2 emssr204
r2 emssr205
$!$ は境界を $I$ へ閉じる道になる。注記はこれで閉じる([language/01_source](../language/01_source.md) §3)。
r2 emssr206
r2 emssr207
## 参照
r2 emssr208
r2 emssr209
- [judge](judge.md) 判定値 $\mathcal Q$
r2 emssr210
- [machine](machine.md) 作業領域と報告