--- tags: TrRun3 id: Arrg-B16_fullNotation.md --- # 檜山トレラン3 B16 完全記法: レッドヘリング対処法 $\require{color}% \newcommand{\hyp}{\text{-}} \newcommand{\BL}{ \{\![ } \newcommand{\BR}{ ]\!\} } \newcommand{\LCL}{ (\![ } \newcommand{\LCR}{ ]\!) } \newcommand{\B}{ {\bf B} } \newcommand{\N}{ {\bf N} } \newcommand{\R}{ {\bf R} } \newcommand{\Rnn}{ {\bf R}_{\ge 0}} \newcommand{\Rnni}{ {\bf R}_{\ge 0}^{+\infty}} \newcommand{\Sy}[1]{ \langle #1 \rangle } % symbole \newcommand{\id}{ \mathrm{id} } % id %$ ## 悩んでないで、完全記法で書いてみ! とにかく、**人は記法に惑わされ騙される!** 騙しのテクニックは決まっていて: 1. 書くべきことを省略する。 2. 省略しないまでも、極端に短く(多くの場合は1文字で)書く。 3. 同じ語・記号をオーバーロードする。 4. 本来は区別すべきものを同一視する。 これらをレッドヘリングと呼んだのだった([A04 何がレッドヘリングなのか](https://hackmd.io/@m-hiyama/Hy8UIODJY))。こんなことに騙されるのはバカバカしい。人生を無駄にしている。安易に騙されないようにしよう。 「省略しない、短か過ぎない、オーバーロードしない、同一視しない」書き方を<strong style="color:crimson">完全記法</strong>と呼ぶことにして、騙されない方法は: - **完全記法で書いてみた後で、通常の記法を使う。** 線形結合の完全記法の構文(詳細は [A07 予定外:異世界でリラーン講座](https://hackmd.io/@m-hiyama/ByJOpRn1Y) 参照): |係数半環 | 囲み記号 | 区切り記号 | 演算記号 | データ(の呼び名)| |---------|----------|-----------|---------|------------| | $\B$ | $\{\:\}$ | $,$ | $\cup$ | 有限集合 | | $\N$ | $\BL\:\BR$ | $,$ または $+$ | $\oplus$ | バッグ | | $\R$ または $\Rnn$ | $\LCL\:\LCR$ | $,$ または $+$ |$\oplus$ | ベクトル | 完全記法で書いた演算と簡約〈reduction〉の例 $\quad \{1\Sy{a}, 0\Sy{b}, 1\Sy{a}, 1\Sy{c}\}\cup \{1\Sy{c}, 1\Sy{a}\} \\ \qquad \downarrow\text{ set-union operation } \\= \{1\Sy{a}, 0\Sy{b}, 1\Sy{a}, 1\Sy{c}, 1\Sy{c}, 1\Sy{a}\} \\ \qquad \downarrow\text{ set reduction } \\= \{1\Sy{a}, 1\Sy{c} \}\\ \:\\ \quad \BL 1\Sy{a}, 0\Sy{b}, 1\Sy{a}, 1\Sy{c}\BR \oplus \BL 1\Sy{c}, 1\Sy{a}\BR \\ \qquad \downarrow\text{ bag-union operation } \\= \BL 1\Sy{a}, 0\Sy{b}, 1\Sy{a}, 1\Sy{c}, 1\Sy{c}, 1\Sy{a}\BR \\ \qquad \downarrow\text{ bag reduction } \\= \BL 3\Sy{a}, 2\Sy{c} \BR\\ \:\\ \quad \LCL 1\Sy{a} + 0\Sy{b} + 1\Sy{a} + 1\Sy{c}\LCR \oplus \LCL 1\Sy{c} + 1\Sy{a}\LCR \\ \qquad \downarrow\text{ vector-sum operation } \\= \LCL 1\Sy{a} + 0\Sy{b} + 1\Sy{a} + 1\Sy{c} + 1\Sy{c} + 1\Sy{a}\LCR \\ \qquad \downarrow\text{ vector reduction } \\= \LCL 3\Sy{a} + 2\Sy{c} \LCR$ すごく面倒でしょ、書きたくないでしょ、だから省略・短縮・オーバーロード・同一視したくなるのは人情だし、世間では盛大に省略・短縮・オーバーロード・同一視が使われてる。**だーが**、事情も分からずに闇雲に省略・短縮・オーバーロード・同一視したら意味不明になるのは当然。 横着する前に、慣れるまででいいから、**完全記法で書いてみようよ**。結局は、横着しないほうが理解が早いから。もちろん、慣れたら横着記法でもOK。いずれは横着記法の使い手になるだろう(それが良いか悪いかワカランが)。 ## その他の例 完全記法で書いた入れ子データ〈nested data〉の例 $\quad \{ \{1\Sy{a}, 1\Sy{b}\}, \{ 1\Sy{a}\} \} \:\leftarrow \text{ nested set in }FinPow(FinPow(\{a, b, c\}) )\\ \quad \BL \BL 1\Sy{a}, 1\Sy{b}\BR, \BL 1\Sy{a}\BR \BR \:\leftarrow \text{ nested bag in }Bag(Bag(\{a, b, c\}) )\\ \quad \LCL \LCL 1\Sy{a} + 1\Sy{b}\LCR + \LCL 1\Sy{a}\LCR \LCR \:\leftarrow \text{ nested vector in }FreeVect(FreeVect(\{a, b, c\}) )$ <div id="my-mistake"> ==追記:== <div style="margin-left:3em"> オッ、あっ、アレッ。また無意識に横着記法していた。ほんとに完全記法で入れ子データを書くなら: $\quad \{ 1\Sy{\{1\Sy{a}, 1\Sy{b}\}}, 1\Sy{\{ 1\Sy{a}\}} \}\\ \quad \BL 1\Sy{\BL 1\Sy{a}, 1\Sy{b}\BR}, 1\Sy{\BL 1\Sy{a}\BR} \BR \\ \quad \LCL 1\Sy{\LCL 1\Sy{a} + 1\Sy{b}\LCR} + 1\Sy{\LCL 1\Sy{a}\LCR} \LCR$ シンボルを山形括弧で識別して、係数 1 も省略しないならこうなる。あーー、めんどくせー。 </div> </div> ニセの和/ニセのスカラー倍とホントの和/ホントのスカラー倍が置き換え可能なことが、ニセ・ホントを区別しない横着記法を正当化しているし、一方で混乱を助長している。ニセのスカラー倍を併置で書いていたので、ホントのスカラー倍を $\star$ で書くとして: $\quad \{1\Sy{a}, 0\Sy{b}, 1\Sy{a}, 1\Sy{c}\} \\= \{1\Sy{a}\}\cup \{0\Sy{b}\}\cup \{1\Sy{a}\}\cup \{1\Sy{c}\} \\= 1\star \{1\Sy{a}\}\cup 0\star\{1\Sy{b}\}\cup 1\star\{1\Sy{a}\}\cup 1\star\{1\Sy{c}\} \\ \:\\ \quad \BL 1\Sy{a}, 0\Sy{b}, 1\Sy{a}, 1\Sy{c}\BR \\= \BL 1\Sy{a}\BR \oplus \BL 0\Sy{b}\BR \oplus \BL 1\Sy{a}\BR \oplus \BL 1\Sy{c}\BR \\= 1\star \BL 1\Sy{a}\BR \oplus 0\star \BL 1\Sy{b}\BR \oplus 1\star \BL 1\Sy{a}\BR \oplus 1\star \BL 1\Sy{c}\BR\\ \:\\ \quad \BL 3\Sy{a}, 2\Sy{c} \BR\\= \BL 3\Sy{a}\BR \oplus \BL 2\Sy{c} \BR\\= 3\star \BL 1\Sy{a}\BR \oplus 2\star \BL 1\Sy{c} \BR\\ \:\\ \quad \LCL 1\Sy{a} + 0\Sy{b} + 1\Sy{a} + 1\Sy{c}\LCR \\= \LCL 1\Sy{a}\LCR \oplus \LCL 0\Sy{b}\LCR \oplus \LCL 1\Sy{a}\LCR \oplus \LCL 1\Sy{c}\LCR \\= 1\star \LCL 1\Sy{a}\LCR \oplus 0\star \LCL 1\Sy{b}\LCR \oplus 1\star \LCL 1\Sy{a}\LCR \oplus 1\star \LCL 1\Sy{c}\LCR \\ \:\\ \quad \LCL 3\Sy{a} + 2\Sy{c} \LCR \\= \LCL 3\Sy{a}\LCR \oplus \LCL 2\Sy{c} \LCR \\= 3\star\LCL 1\Sy{a}\LCR \oplus 2\star \LCL 1\Sy{c} \LCR$ 「係数 1 は書かない」とか「係数 0 の項は書かない」とかもルールだが、あくまでルールであって、「係数 1 は存在しない」とか「係数 0 の項は存在しない」わけではないし、「係数 1 は書いてもいい」し「係数 0 の項も書いてもいい」。ほんとのところは: - 係数 1 は書くべきだが、面倒だからほとんど常に省略される。 - 係数 0 の項は、簡約〈reduction〉により取り除かれる。簡約済みの標準形〈正規形〉には係数 0 の項は登場しない。 横着するための略記のルール(人が**恣意的・偶発的・怠惰**に決めた約束ごと)と数学的事実(集合や写像の概念で記述できる命題)は別物。ゴッチャにしてはいけない。混乱したら、略記しないで**完全記法で書こう**。もう、記法に騙されて時間を無駄にするのはやめよう。