ベクトルバンドルのリー微分

先日 http://www.asahi-net.or.jp/~fu5k-mths/pdf/bundle_lie_and_noether.pdf

を書いたのですが、ベクトルバンドルのリー微分だけ抜粋します。

解析力学は学科ではドチャクソ重要な理論で、それは場のバージョンでもそうなのですが、 物理学では往々にして

「~という議論ができるんですよ(シンプルなコア議論)」

(永遠の開き)

「あの時のコア議論をここで応用します。こんなアナロジーができますね~」

ということが発生するのですが、

そのアナロジー全然自明じゃねえよ

という気持ちになることがあり、場の解析力学はそういう例の一つです。あとグラスマン数の経路積分とか… 基本的なパターンをやっとけば、その任意の変種がいつでもwell-definedでしょみたいな…願望でものを語るのをやめろ… 場のハミルトン形式もアレですよね…まぁあのくらいは汎関数微分とかをきちんと書けばなんとかなるかもですが…

で、長年場のラグランジュ形式の何が不満だったかというと、 Noetherの定理がクソほどもわからない…「場の理論 Noether」とかでググってもらえると、 いろんなのが出てくると思うんですが、だいたい「次の微小変換を考える」とか言ってこんな式が出てきます。

 \displaystyle{
x\mapsto  y = x + dx \\
 \phi(x)\mapsto  \phi(y)=\phi(x)+d\phi
}

は?????????????????

ってなりませんか?僕はなったし、これだから動的型で数式書くやつは何をやっても(ry

物理学者が場の量書くとき、だいたい型書かないじゃないですか、まぁそれは珍しくないんですけど、 場の量が何から何の関数なのかわからんし、xって時空点なのか、座標なのかもわからんし、\phiって成分なのかベクトル値なのかもわからんし、故に変換というのが座標変換なのか幾何的な能動変換なのかもわからないし、 まず\phi(x)って書いたときに、\phi(x)を値まで評価したものが移されるのか、\phi,xって記法が何らかの量化制約を持ってるのかもわからんわけです。 ちなみにわかった今だからいいますけど、これ本当はここで場の量(バンドルセクション)である\phiって記号が登場しちゃいけないんですよ。この変換は一義的にはセクションの変換じゃなくてバンドル自体の変換なので。

それで、これが一体なんなのかわからん限りには、場Noetherがなんであんな形しているのかもわからんわけです。これがベクトルバンドルの自己同型変換の無限小版として完全に幾何的な能動変換として書けることに気づいてブチ切れたので、以上のノートを書きました。

結論からいうと、ベクトルバンドルの自己同型変換生成子みたいなものを定義することができて、それは上のようなものをちゃんと定めるし、Noetherの定理はそこから出てくるものです。

まずベクトルバンドルを定義する必要があるのですが、wikipediaを見て。

ベクトル束 - Wikipedia

各点にベクトル空間がついてて、局所的に成分表示できるようなもの、と認識してください。 ここで「なんや、単なる多成分場やんけ」と思うのはやめてね…多様体がいつでも\mathbb{R}^nの同次元部分集合と思うが如き…

いや実質局所的にはそうなんですが、我々はいま解析力学をやっていて、解析力学座標普遍であることを散々強調するわけです。じゃあちゃんと自明化写像によらないということ、それがどういう意味でかというのをきちんと述べるべきであって、多様体の多の字も出ない教科書は滅ぼすしか無い…

で、バンドルというのは、基本的に底空間への射影\pi:E\rightarrow Mというのも持っています。 なので、ベクトルバンドルの射がこれについての可換図式を満たすことは自然なことです。 底空間の写像にファイバーの行き先が整合的であるということですね。

そして先の謎\mapstoは、まさにこの可換図式なのです。\phiが出てくるのは間違った書き方と言いましたが、正しい書式はこう。

\displaystyle{
g:E_1\rightarrow E_2\\
v\in \pi^{-1}(x)\mapsto g(v)\in\pi^{-1}(f(x))\\
f:M_1\rightarrow M_2\\
x\mapsto f(x)
}

\pi^{-1}(-)は射影の逆なので、各点ファイバーです。これなら秒でわかる。型注釈、所属集合注釈を惜しんではいけない。

ほいで、では場Noetherはなんだったのか、という話になるんですが、要するにリー微分なんですよね。

これは有限次元ラグランジュ理論の時もそうで、自由度空間に対する変換があって、そのリー微分が、 ラグランジュ方程式比例項とNoetherモーメントの微分で書ける、というのがNoetherの定理なのです。

ところで、ベクトルバンドルのリー微分ってなんでしょうか。なんか上手い定義が必要です。 一番馴染みあるベクトルバンドルといえば、ベクトル場、テンソル場、微分形式ですね。 これらには多様体の1パラメータ変換群(の生成子)があれば、リー微分が定義できます。

f:M\rightarrow N多様体の可微分写像としましょう。これの微分がベクトル場のなすベクトルバンドルの射を決めます。それは次のようなものです。

\displaystyle{
df:TM\rightarrow TN\\
v^i\partial_i \in TM_x \mapsto \frac{\partial f^i}{\partial x^j}v^j \partial_i \in TN_{f(x)}
}

これはfを座標空間に引き戻してからそれで微分した微分係数を使いますが、座標によらず定義できます。 これが無限小だとしましょう。十分小さな[tex;\epsilon]を用意してfの座標表示がx^i\mapsto x^i+\epsilon X^iとなります。 X^iはこの変換の生成子です。するとベクトル場の成分変換は

\displaystyle{
df:TM\rightarrow TM\\
v^i\partial_i \in TM_x \mapsto \left(\delta^i_j+\epsilon \frac{\partial X^i}{\partial x^j}\right)v^j  \partial_i \in TM_{x+\epsilon X}
}

これはベクトルバンドルの微小変換が \frac{\partial X^i}{\partial x^j}のような行列で実行されていることを意味します。

しかし、これは変換規則がファイバーの自己変換のようにはなりません。\partial_iがあるせいで、場所に依存する自明化の変換を施すと 変換行列の微分項がでてきます。

逆に言えば、これを組み込んだ変換規則をもつような行列を考えれば良いことになります。ベクトルバンドルの変換なので、 底空間をどれだけ動かすか、という底空間のベクトル場と、ファイバーの成分変換行列の直和で、バンドルの局所自明化ごとに与えられるものを考えます。

\displaystyle{
\{(X,M_a)\}_{a}, X \in \Gamma(TN_{U_a}),M_a\in \Gamma(U\times \mathbb{R}^{n\times n})
}

ここで、a\rightarrow  bのフレーム変換行列:つまりGL(n)値場\Lambda:U_a\cap U_b \rightarrow GL(n)に対して、 次のように振る舞うことを条件に課します。

\displaystyle{
(X,M_b)=(X,(X\Lambda)\Lambda^{-1}+\Lambda M_a \Lambda^{-1})
}

ここでX微分として作用しています。これを課すことで、自明化によらないベクトルバンドルの微小変換を実現します。 では実際にリー微分しましょう。リー微分は、場の量に対して、ある点の値を無限小変換で別の場所に持っていき、行き先にすでにあった量との比較をします。 V\in\Gamma(E)ベクトルバンドルのセクション、つまり場の量としましょう。局所標構(基底ベクトル場)e_iを使って、V=v^i e_iとなっているとします。

\displaystyle{
v^i(x)\mapsto v^i(x)+\epsilon M^i_jv^j(x)
} から \displaystyle{
v^i(x)\mapsto v^i(x+\epsilon X)
} を引いたものなので、一次のオーダーで、 \displaystyle{
-(Xv^i)(x)+M^i_jv^j(x)
}ベクトルバンドルのリー微分となります。実際、Mの変換規則が、これをwell-definedにしています。

あとはノートを参照してください。

やっておいて気になっているのは、物理学者が一体場の量をなんだと思いっているのかということです。 実のところ合意がないような気もします。僕はベクトルバンドルの概念が気に入っているので、それだと思っているのですが、 本気でただの多成分場と思っているのかもしれない。つまり大域的自明化が可能な。

しかしその一方でゲージ場などで自明化によらない云々というのを後付けで導入したりもします。 ただゲージ場はゲージ群なので、一般的なフレーム変換ではないというのはありますが…

ギターキット/Elm/就/...

1.エレキギターを取得しました。

 高品位なオーディオを吐くDAWシーケンサがいくらでも手に入る今、なぜ人は楽器なんて面倒なものをやるのでしょうか??????? 音楽が情動のメディアであるように、楽器も一種のメディアなのかもしれません。肉体と音の間の。 とりあえず人間には可制御な物が増えると精神に良いという経験則があります。リアタイだとなお良い。

 そんな訳で、そこそこ取り回しの良い楽器というのが手慰みでほしくなるのですが、これには様々な制約が存在します。 当然のように集合住宅に住んでいますから、生楽器はアウトです。 僕は相対音感はともかく絶対音感が極限まで壊滅的なので音程がアナログな楽器はダメです。 ほいで音域が辛いのもいやだし、コードも弾きたい。さらに左利きなので鍵盤が全体的に辛い、となるとエレキギターになります。

 というのはこじつけで、単に友達がギターもってて僕も欲しいなーと思っただけです。 このように人は思い出すついでに様々な文脈を捏造できる。

 僕は仕組厨なので自作厨をしばし合併症として発症します。 で、Googlingするとギターキットというのがあり、無塗装ボディにバラバラのパーツがセットになったやつが出てきます。 はい、君に決めた。

ammoon 未完成のDIYエレキギターキット バスウッドボディー ローズウッド指板 メイプルネック特別デザイン ヘッドストックなし

なんかHOSCOとかいうメーカーの作例は結構転がっているのですが、 こっちのメーカーまだ新しいのか全然でてこない... 販売元は深センっぽい? まぁ製造も中国でしょうね。 ちなみに決めた理由はヘッドレス/24フレット/3PUあたりです。 軽い/音域広い/音色広い、といったとこでしょうか。ミーハーですね。で、その結果。

f:id:phykm:20180509203725j:plain

 塗装は...めんどい...今度で...

 新興中華キット(?)ということで、まぁ様々な事象がありました。

 まずボディーにピックアップ3つとブリッジを固定するんですが、 ピックアップ2つとブリッジが入らないんですよね。サイズ的に。 ボディーにこう、くぼみを入れるの、なんか座くりとか呼ぶらしいですが、 座くりのエッジが甘すぎて、四角い形のダブルコイルピックが普通に入らない... シングルコイルピックもなんか妙に膨らんでいて入らない... さらにブリッジもサイズがギリギリ過ぎて入らない... これフローティングブリッジ(バネで弦張力と釣り合わせているだけで固定されていない)の一種なので、 本当は可動範囲だけの隙間があかないといけないんですが...。 まぁそういうのもあるさ、とカッターとナイフとリューターでゴリゴリして入れました。

 しかしブリッジにはもう一つトラップがあり、そのままつけるとなんと弦長が足りない... オクターブチューニングできません。しかたないので、更に座くりを広げて少し下につけました。

f:id:phykm:20180509203742j:plain
道具がないのでカッターとリューターで削ったことによる手作り感

それから、ネック先端に弦をロックするテールピースがぴったりつかない...同等品の

https://www.amazon.com/ammoon-6-string-Headless-Electric-Locking/dp/B01N6C99RU

にまさにそういうトラップによる悲劇が書かれており、とりあえず噛み合うまで削りました。

   回路ボックスのフタがネジ止め式ですが、明らかにネジ穴の位置を間違えている...

f:id:phykm:20180509203755j:plain

 これ、止めてある二箇所には最初穴が空いてなかったんですよ。空いている二箇所はよく見ると穴の向こうが虚空で、 要するにネジが刺さるための土台が無い...。まぁこの程度は別にどうということは...

いやさすがに組み立てればわかる欠陥ばっかやんけ、ちゃんとチェックして、どうぞ。

   ギター組み立てのネックは、いろいろ調べたところ、まさにネックらしいのですが、 キットについてここだけはちゃんとしてました。ボディとネックがめちゃくちゃタイトに刺さる。 ネック角度が甘いと弦が指板から落ちるなどの致命的な欠陥になるのですが、そのようなことは起きませんでした。

 演奏感ですが、ウーン、よくわかりませんね(ギターが弾けるとは言っていない)。 実際Youtubeなど探すと、安ギターと高級ギターの音色比較、みたいな動画も結構あって、 見てみると、たしかに高いやつのほうがくっきり鳴ってる気はするな…?という感じはありますが、 いかんせん楽器の特性上エフェクターとかでいろいろ変わるものだし、 それらと比べてこの素組みギターがどうかというのはよくわからない... というかそもそもエフェクターもアンプももっていないので、 現状オーディオIFでDAWを通してディストーションをかけるという遊び方になっており、単純比較が困難。 塗装したらまた音色変わるかな?

 いまのところ音域広いし、コンパクトで弾きやすいし、不満はないですね。 自分で組み立てたということで、ギターの勝手もわかり、 なんか起きてもまー作った時みたいに改造すればいいやとなる心理的障壁のなさもよい。 エレキギター、もうとにかくただのアナログ回路なんですよね... 要するにアナログ回路わかっていれば無限に改造できるという...

 エレキギター自作勢というのも特に海外などに一定数存在するようで、 Amazon.comとかだと普通にもっといろんなメーカーがバラパーツを売ってたりします。 弦張力に耐えるられる程度にボディとネックをつなげて、 ナットの調整範囲内で弦をまっすぐつければ何でもギターになる。 あとはピックアップだけギター用のやつを買って、出力はアナログ信号処理、という流れなので、 いい感じにアマチュアにも届く技術水準といえます。

   いずれ改造にも手を付けたい。

2.Elmに入門しました。

 以前HasteとかいうHaskellによるAltJS?を触ったのですが、またHaskellっぽいJS?をちょっと前に知りました。 正確にはJSではないのですが...

home

はじめに · プログラミング言語Elmの薄い本

まんまHaskellやんけ。

 いや、ところどころ違うのですが(後述)、一般構文は殆どHaskellとかOCamlのそれですね。REPLすらある。 最大の特徴は、これは汎用プログラミング言語ではなくてDSLで、 The Elm Architectureに従ってWebページを記述するのに特化している点でしょう。 プログラムのエントリポイントの型がそもそも独自のものに決められていて、 それが要求するフィールドを定義する、というスタイルのようです。 コンパイルするとページをまるごと吐くので、HTML/JS/CSSの一石三鳥(ほんとか??????????)

   このThe Elm Architechtureというのがなかなか洗練されており、かなり抽象度の高いことができます。 Hasteは単にJSがHaskellで書けるだけだったので、ページ要素の操作はまんまIOで、 コールバック登録もIOとかで、要するにMVCみたいなことをやろうとすれば全部自分でやる必要があるのですが、 Elmの場合はそのへんも抽象化されており、コールバックの「登録」みたいな操作はしません。定義はしますが...

とりあえずこんなん書いてみました。

http://www.asahi-net.or.jp/~fu5k-mths/elm/elm_block/index.html

入門してみた所感としてThe Elm Architectureの「直観」を描いてみたいと思います。

f:id:phykm:20180509222522p:plain

無理。

なんか紐図( https://arxiv.org/abs/1401.7220 とか)っぽいものができる気がしたが気のせいだったぞ!!!!!!!!

文で書きます。基本的には代数的データ型を駆使して、MsgとModelという型を定義し(これは本当になんでもよい)

init:(Model,Cmd Msg)
update:Msg->Model->(Model,Cmd Msg)
subscription:Model->Sub Msg
view:Model->Html Msg

を定義すれば一丁あがりというものです。

型を適当に解釈できれば、この仕様のイメージがつかめます。

Modelは定義するWebページの内部状態、

Msgは内部のメッセージングです。

Cmd aはメッセージaに基づくコマンド、

Sub aはメッセージaを吐くかもしれないリスナー、Html aも同様にaを吐くかもしれない文書です。

このとき、 定義するフィールドはそれぞれ、 init:初期状態と初期化処理 update:Msgに応じた状態更新と副作用 subscription:Modelに応じたリスナー view:Modelの見え方 と解釈できます。

 Msgはクリックやキーボード、時間経過など、Webページが識別してほしいシグナルを直和などを使って全て書き下し、 ModelはWebページが把握しておいてほしい全ての情報を直積やリスト化などで書き下すことで定義すればよいです。 状態遷移などで把握すべき情報が変わる時はそこを直和にする。オートマトンっぽい。

 Msgがどこかから吐かれるたびに、updateが呼ばれます。updateは起きたことに基づいて状態を更新して、 ついでにCmd Msgで何か仕事をできます。状態は常にviewで表示されます。

上のコードは

github.com

にあります。ていうかゲームプログラム難しすぎるのでは?????????????????

 状態としてReady、または Game (ボール状態とブロック、終了フラグ)、 メッセージとしてクリックとマウス移動を取っています。 描画に用いているCollageというパッケージはCanvasベースらしいので、できること/性能もそれに準じたものと思われます。 あんまり複雑なのをやるとつらそう。ただWebGLのパッケージも存在するっぽい。

Elmの開発環境(?)は結構整っているように思えます。とりあえず公式から処理系をインストールし、

サンプル

examples

をみながらやりたいことを考え、

Elm Packages

で必要なパッケージを調べます。必要なパッケージがわかったら、 elm-pachage install を必要なだけ打って、インポートし、書きます。

 どうも開発ディリクトリに非標準パッケージを直接DLしてくる(elm-stuffというディリクトリができる)っぽいので cabal hellみたいなことは起きにくい? ページ自体はちょっと重め。

 REPLもあるのでこれにロードして関数をチェックすることもできます。 できたページを確認するのにコンパイルしてもいいですが、elm-reactorとかいうドチャクソ便利なものがあり、 これを起動するとローカルサーバーが立ち上がって.elmファイルを直接ブラウザから見れるようになります。ソースファイルを選択すると、 ファイル生成なしに、サーバーがコンパイル後のページを返そうとします。

 エラーがあった場合にはエラー文もブラウザで見えます。地味にコマンドラインよりも見やすいので助かりがあります。 ブラウザをリロードすれば再コンパイルします。

Haskellと微妙に違う、といいましたが、気になった点としては以下です。

  • Cmd Subのような->みたいなカインドはあるが、型クラスはない。
  • ::と:が逆。
  • リスト型は[a]じゃなくてList a
  • 型定義が基本typeかtype aliasだけでスッキリしている。もちろん前者にコンストラクタが要る。
  • 実感は無いが、正格評価らしい?
  • トップレベルのパターンマッチができない(?)。case of で頑張る。

最後のは表現が正しいのかわかりませんが、要は

sum::List Int->Int
sum [] = 0
sum (x:xs) = x + (sum xs)

じゃなくて

sum ls = case ls of
    []     -> 0
    (x:xs)-> x + (sum xs)

としろということです。

感触は結構いいのですが、これ本気でCSSデザインやろうとしたらどうなるのか... 一石三鳥だが要するに三鳥分定義を書かなきゃいけない点は変わらず... あと言語の方向性からして厳しいとは思いますが、他JSやCSSライブラリと連携取れるんだろうか...

なんか来月に日本語の解説書が出るっぽい。

基礎からわかる Elm

当然のごとく予約しました。

3.就をやっている。

就をやっている。助け...

4.論をやらなくていいのか

やばい。

語学嫌いは言語類型論をやれ

 半年たってしまった...

 皆さん、英語(任意の語学)好きですか?

僕は嫌いです。

 人はなぜ、特定の教科/分野/学問を好きになったり嫌いになったりするのでしょうか。 精神論や観念論はよろしくないという立場においては、これは端的に言って 「好き/嫌い」と判定されるような行動をとる傾向性を、 適当なフィードバックで強化されるような環境に置かれたからでしょう(身も蓋もない)。 そのような話として行動分析学があるので興味ある向き、そして教育者各位は読んで僕に教えてください。

行動分析学入門―ヒトの行動の思いがけない理由 (集英社新書)

行動分析学入門―ヒトの行動の思いがけない理由 (集英社新書)

行動分析学入門

行動分析学入門

  • 作者: 杉山尚子,島宗理,佐藤方哉,リチャード・W.マロット,アリア・E・マロット
  • 出版社/メーカー: 産業図書
  • 発売日: 1998/03/30
  • メディア: 単行本(ソフトカバー)
  • 購入: 3人 クリック: 30回
  • この商品を含むブログ (17件) を見る

 思えば語学の成功体験なんも無いですね。僕は理系か文系かというとド理系で、 ここ数年で偏見が緩まったおかげて人文/社会科ももしかしたら面白いかもしれないと思いつつありますが、 語学は銃口を突きつけられないとやらない位にモチベーションがない。 中高大と語学はとにかくもう、

こういう表現がある、こういう語彙がある、 書いて覚えろ、聴いて覚えろ/書き取れ、 (どうでもいい文を)読んで読解しろ、

という話ばかりで、 原理さえ押さえればどんな議論を考えてもよいという高い自由度/正誤判定が一貫していて容易という明快さがある数物に比べて、 なんだこのクソつまらん教科は、教科じゃないんじゃないか?などと思ったりしました。 あと僕は耳も悪いので日本語も英語も文脈抜きで単語や短文をクソ音質で投げられても聞き取れる訳がない。

 今でも「言語学」はともかくとして、「語学」は学問じゃないよな、と思っています。 どちらかというと体育や美術に近い。というのも、それは追求したり分析したりするものではなくて、 習慣化したり、表現したり、交流したりする為のものなので。 しかし体育や美術、つまりトレーニングや表現技法の一種なら、 それはそれでゲーミフィケーションやコミュニティによる動機づけがまるで足りてないのではないか。 なぜ日本の英語話者は日本とかいう環境で英語を学び通せてしまえたのか。 まぁこの教授形態の愚痴は本題でないので置いておきます。 学校教育に期待できないのは今に始まったことではない...

 ともかく語学はクソつまらない。面白いと思っている人には申し訳ないですが、 英語が覇権を握ったが為にどの分野で大成するにもこんなつまらんものと付き合わされる羽目になった歴史を恨みざるを得ない。 なぜ面白くないのかというと、その内容や事実に内的説明が殆ど与えられないからです。 ただ規則と事実が、何故こうなっているのか、なぜこうすると良いのか(何の為なのか)抜きの羅列になる。 これが数物であれば、原理はなるべく一貫性とコンパクトさを保とうとしますし、各種公式や定理にも、 それを考える動機づけ、ないしなぜそれが成り立つかの導出が伴っています。 今にして思えばこれは当たり前で、特定の言語なんていうのは、 歴史/文化的経緯でフワッと決まった側面を持っているわけで、 まったく普遍的でも必然的でもない要素が多分に含まれているのです。 そんなただの偶発的な事象に由来する取り決めに「親しむ」ことを強いられるのが気持ちいいわけがありません。 多様な文化はどんなめちゃくちゃなものも存在は尊重しますが、それは僕に(誰にでも)強制しないという条件があります。

 なんかもっと普遍的で、汎用で、形式的側面から言語をなんとかできないのか... 学部の時に形式言語理論に潜って文脈自由文法とその派生(言語学では句構造文法というようですが) に出会ったときの感動が想像できますでしょうか?英語はもはや何も分からんが、これなら分かる。 なぜ語学教育は近似的でもいいから句構造文法を一番最初に提示しないのか??????? 人を馬鹿にしやがって。許さんぞ。今でも思っています。

 さて、去年に遡りますが、こうして悶々としていたなかで、ある分野に出会います。 普通の教育課程をパスすると英語とかいう憎き覇権言語が外国語の9割になってしまいがちですが、 当然ながら世の中には大量の言語があります。英語や日本語とか似ても似つかない言語もありえます。 しかしwikipediaを眺めていると、ある言語は◯◯的で~とかある言語はこの言語に似ていて~/違って~とか、 あるいは品詞や句や節や諸々の語学概念が、複数の言語にまたがって、あるいは比較されて用いられている事がわかります。

「まてよ、そもそも言語学(?)には、こうした言語によらない概念や語法や道具立てがもっとあるのか?」

と思って調べていくと、どうも言語類型論という分野がある事がわかります。 それらしい読み物や入門書が参考文献として出てきます。

言語のレシピ――多様性にひそむ普遍性をもとめて (岩波現代文庫)

言語のレシピ――多様性にひそむ普遍性をもとめて (岩波現代文庫)

言語類型論入門――言語の普遍性と多様性 (岩波オンデマンドブックス)

言語類型論入門――言語の普遍性と多様性 (岩波オンデマンドブックス)

言語普遍性と言語類型論―統語論と形態論 (言語学翻訳叢書)

言語普遍性と言語類型論―統語論と形態論 (言語学翻訳叢書)

ヴォッッッッッッッッッ

 これは大当たりでした。僕は語学弱者であり、言語学専攻でもないので、誤読の可能性は大いにあるのですが、 ここ数年で最高レベルに分野の存在に感謝を捧げています。

 いいですか?リンクは貼りました。 とりあえずリンゼイの言語類型論入門をカートに入れてください。話はそれからです。僕もこれを今読んでいる。

 何が当たりだったか。この分野には、 「語学がそれ自体面白いものである為には足りないと思われるもの」の大半が入っていたからです。 それは何かというと、言語(特定のものではなく全ての)それ自体に対する説明としての科学です。 リンゼイでは次のように類型論を定めています。

言語の全体像やその構成部分の分類を、それらが共有する形式的特徴に基づいて行うこと。

 言語全体を相手にしているので、自ずと語法は特定の言語を贔屓しない中立的なものを志向します。それから、主に形式的特徴に基づくことで、例えば地理的、歴史的経緯による系統よりは、その言語が言語として持つ性質にフォーカスします。このあたりの傾向を通言語的とか共時的とかいいます。

 リンゼイ本に沿って、具体的に類型論が何を語るか少し見てみます。

 まず品詞はありふれた概念ですが、通言語的に品詞という概念が意味を持つか、という問題があります。 品詞なるラベルは何で決まるのか?それらの判別規準はなにか?というのをあらゆる言語に通じる形で定めようとするのは難しい、という話が延々とされます(誠実ですね)。おそらく大抵の言語に名詞動詞形容詞等etc...といったカテゴリーがあること自体はいいでしょう。そこで、次の普遍性が提出されます。「すべての言語にて、名詞動詞は《開いた》品詞で、形容詞以外の他の品詞は《閉じた》品詞である」。ここで、「開いた」というのは、語彙の追加や削除が容易に起きることを指します。これはちょうどプログラミング言語のコア部分はそうそう変わらないがライブラリは随時追加されるような様子に似ています。

 もう一つ有名な例をだします。それはSVO要素の順序についでです。そもそもSVOに相当する概念が各言語にあるのか/それは何で系統的に識別できるか、という問題がありますが、 ひとまずこれがあるとしましょう。例えば英語はSVO、日本語はSOVです。 理論上あり得るSVO順序6種類のうち、このSVO/SOVを採用する言語が大半であり、VSO/VOS/OVSは稀、OSVは全く無いという統計が存在します。 そしてこれは何故かというのを、認知上の利点、統語的なVO要素の結びつきによって説明します。 例えば、Sは先行した方が認知上メリットがあるだとか、VOは動詞句を構成するのでこれが分割されることは稀、というように。

 それから、これはベイカー本でも紹介されているのですが、多くの文法で、動詞句のVとOの順序は、 それ以外の句、節の構造、修飾詞、冠詞の参照先の順序、前置詞/後置詞の傾向などと相関があるという指摘が入ります。 これに関する説明や概念立てを検討した後で、ドライヤーの方向分岐理論が紹介されます。 方向分岐理論の説明がいまいち飲み込めないのでここはちょっと自分の理解ですが、それは 構文解析木の分岐において、複雑さがバウンドされないカテゴリ(分岐的カテゴリ)を左右どちらに置くかは一貫している」と読めます。 もっと大雑把には、言語の文法は右再帰か左再帰かを統一する傾向にある、と言って良いのではと思います。 VO順の場合は、Oは複雑な構造を持ちえるので、動詞句以外の句などにおいても、左側にそうした複雑な要素を置こうとします。 そして、この理由はなぜかと聞かれれば、もちろん構文解析の容易さを挙げます。

これ滅茶苦茶面白くないですか??????

 他にもいろんな分析例があるのですが、どうも目次をみると、これは言語が果たすべき基本機能やレパートリーが概ね共通で、それをどう実現するかという(制限された)多様性をコンパクトに列挙しているようにも見えます。つまり、類型論は

  • あらゆる言語全体という集合にも、かなり強い制約や共通した性質がある(普遍性)。

  • 言語がある機能を実現する為にとる手段は、限られつつも選択の余地がある(多様性)。

という二点を明らかにするのです。この普遍性と多様性はまさりリンゼイの副題です。

 前者の普遍性は、なんらかの尤もらしい説明が与えられます。  後者の多様性は、限られつつも恣意的であることが了解されます。

 例えば、ある人が新しい言語を学ぶとしましょう。もし十分な類型論的知見があれば、 その言語の文法のうち、どこまでが言語によらない必然的な要素、つまり一貫した説明を与えられる部分で、 どこまでがその言語の恣意的な選択、つまりそうである理由は無いが、その言語「らしさ」を成す部分であるかを了解できるわけです。

 こういう話が学習段階で提示されたらもっと語学が好きになれたろうにと本当に思います。

 大事な違いですが、例えばこれはある語の語源がどうとか、歴史的な語族系統図がどうとか、◯◯語圏の文化と言語の関係がどうとかそういう話では全く無いんですよ。むしろ全く逆で、そうした雑多な要素を一切排除して残る形式的なコア部分のその原理と選択肢は何か、という話なのです。(なんか雑多で非形式的で豊かであればあるほどいい、という文化系特有の傾向(偏見)、はっきり言って大ッ嫌いなんですが、まぁそれはおいとくとして) 個人的な性癖ですが、こう、習うより慣れろというのが本当に無理で、もっというと疑うよりも習えというのも厳しいのですが、こうやって普遍的な部分からスタートして、残りの恣意的な部分は、それこそが◯◯語なんですよ、と言ってくれれば、とりあえず説明の要求は前者に集中して、後者はまぁそれこそが◯◯語なんだから仕方ないよな、と思う余地が生まれるわけです。

 プログラミング言語のような人工言語は、ある種の表現力を実現するためにその構文を考えていると思います。 であれば同様の「この機能を実現するためにどの構文をつかうか」という視点が自然言語にもあって然るべきではないですか。 自然言語の機能のレパートリーは、どうも歴史を通してあまり変わっていないようなので、 各々の言語はそれをどうやって実現するかという、制限された選択肢のなかから、あるやり方を一貫して選んだものだといえるわけです。

 どうですか。ここしばらく類型論のプッシュばかりしています(研究をしろ)が、ちょっとでも興味をもったらリンゼイをポチってください。僕はリンゼイが済んだらコムリーにいきます(研究をしろ)。

   なお申し添えますが、言語類型論をやっても個々の言語が出来るようには全くならないと思います。

環、有界、STモナド

全部話題バラバラです。

1.なぜ物理量は環なのか?

 今ゼミでIsham某量子論本を読んでいたりするのですが、これに限らず、ある文脈において、次のような対比が語られる事があります。 すなわち、

古典力学では物理量のなす環構造が可換であったが、量子論では一般に非可換になる。

 この可換非可換という対比は、単にある種の代数構造の条件開放という意味で「少なくとも数学的には」自然な一般化の発想で それで例えば可換/非可換C*環が、GN双対を通じて普通の幾何(コンパクトハウスドルフ位相空間)/非可換幾何の対比になるだとか、 あるいは量子群だとかいう名称がここに由来するだとかいった話に繋がったり、物理では非可換性によって、物理量の同時測定、同時値付与ができない、不確定性関係につながるとか、そういった風潮や言い回しの背景を提供しているようにに思います。(そうでないならそれは良いことなのでどうでもいいです)

 しかし、ほんとかよ? 毎度のことですが、この手の言説の雑さ加減、ちょっと反省してくれというお気持ちが湧いてきます。  いや、数学的な構造それ自体に興味があるので、可換非可換を対比しますというのは別にいいんですよ。それは自由にやればいいし、 やっていきをした結果として理論物理に有意な構造が手に入ればそれを使うのもいいですが。  問題は、物理学の基礎や定式化において「量子論は物理量環が非可換になったやつ」という言説が目に余るということです。

 まずそもそもですが、

定式化段階で「物理量が可換環である」とみなせる理論、そんなにあるか?

という点です。大体において、こういう状況での可換環というのは力学相空間X上のC(X)のことを指しているはずです。 要するに、「力学的相空間/状態空間があって、物理量がその上の複素数値関数で、各点積による可換環構造をもつ」というビジョンは 古典力学ではありがちだよね?ということを想定して、古典物理は可換C*環だ!といっているのです。

 はー、ちょっと待てよと。例えば学部でやるような以下の古典理論を見てみますよ?

  • 解析力学(L)

    • ラグランジアンTN\mathbb{R}値関数、加法的、\mathbb{R}mod、しかし乗法的でない。
    • Noetherモーメント:リー群が作用しているとき、リー代数からNoetherモーメントの対応はTN\mathbb{R}値関数へ線形、乗法的ではない。
  • 解析力学(H)

    • ハミルトニアンベクトル場:\mathbb{R}mod、乗法をもたない。
    • poisson環:\mathbb{R}mod、乗法を持つが可換ではない。
  • 古典場理論(電磁気,流体含む)

    • 電磁気の各種量:基本変数がベクトル場や微分形式なのでいずれも\mathbb{R}mod、乗法はない。外積はgradeを上げる上に可換ではない。
    • 物理量として、密度関数の領域積分や、あるいはその密度関数自体を取るので、そもそも乗法は限られた状況でしか入らない。(例えばエネルギー密度の計算やポインティングベクトル場など)
  • 熱力学

    • 熱力学関数:状態空間上の実凸関数だが、同次性を持つことを強いられるので、乗法を無制限にとれない。系の拡大と加法が取れるので\mathbb{R}mod。
  • 相対論

    • 古典場の理論に準じる。大体テンソル場およびその領域積分が基本的物理量なので、乗法は無制限にとれない。

 実数値関数ばっかやんけ!というツッコミをおいておいても、殆どが\mathbb{R}modであって、 \mathbb{R}algじゃないわけですよ。algebraっぽい奴だって各点積とは違うし。 いや、それでも解析力学で、任意の物理量としてTN,TN^*上関数環の、poissonではない各点積関数環を考えられるでしょ、 と思うかもしれません。しかしそれにどんな物理的意味がありますか?poissonはハミルトニアンベクトル場の無限小リー微分としての 意味がありますが、各点積はなんですか?ええ?なんもないでしょう?  第一ですよ、環構造を定義する方法なんて、今やいくらでもあるわけです。集合が手に入ったら適当が環を持ってきて関数環、形式的積を定義して自由生成、結合的演算があったらそれで環とか、数学的構造が手に入ったらまぁご自由に作ってくださいと。 そんななかで大事なことは、(物理において)「その積が物理的動機にモチベートされている」かどうかであって、 その意味でいえば相空間複素関数環の各点積構造、ほとんど動機がないわけですよ。 解析力学で各点積関数環を作れるのは、単に「作れてしまう」から計算や試案に便利というだけであって、 それ自体に統一された第一級の物理的な解釈があるわけではないのです。

 こうしてみると、ガッツリ環として最初から宣言しているのは、ハミルトン形式のPoisson環くらいで、 これは最初から非可換なわけですから「量子論では物理量は非可換!」とか「????」じゃないですか。 大体角運動量の議論とかですら、リー代数->正準力学系->ユニタリ表現で、非可換な代数が準同型になることを使っているわけで、 それをスルーして、「非可換性を強調するときだけC(X)、実際の運用の時はpoissonにアナロジーを求める」なんてダブスタもいいとこです。いい加減にしろ。

 これ結構悪影響があって、というのも量子力学では物理量は作用素で表現しますが、 まぁ案の定「作用素」ですから、環になりますよね? そして「量子物理量の環構造の物理的意味が不明」という問題が発生してしまうのです。

 しかしまってくれ、そもそも環構造に物理的意味が最初から憑依していたケースは、そもそも古典物理ですら限られているわけで、 その古典物理の物理量環だって、「相空間があって、値が実数値だから定義できる」という意味しかない。 だからこの意味不明問題は、そもそも定式化がナンセンスであって、積構造に何を期待するかというのは、 ヒルベルト空間の作用素という数学的モデルの実装戦略を採用した我々が最初に動機づけすべきことなのです。 で、それがない? 何も宣言してないんだから無くて当然でしょう。そしてそれで何も困ることはない。

 もう一つの悪影響は、「物理量が実数値である」という思い込みを強めてしまう点です。

 というのも、例えば量子測定では、測定値集合は別に実数に限られてなんかいないし、任意の可測または位相空間が認められます。 これはごく当然のことで、例えば物理量の測定をするときに、僕らは測定器のUIの状態を見るわけじゃないですか。 それは実数ですか? なわけ無いですよね? アナログメーターの針や、デジタル表示器のレジスタ状態をモデル化した某かを 僕らは認識しているわけで、そこまで含めたら測定値集合が実数でなくてはならないなんてことには全くならない。 このメーター系のモデルは、とりあえず確率論の文脈に置くので、可測空間でありさえすればよいのです。 ではどうして古典力学含む物理理論で、大量の実数由来の数学的構造が使われているのか、というのは 単にそれぞれの状況で実数が便利な構造であった、というだけに過ぎません。 なぜなら、個々の理論では実数を使う「動機」がそれぞれ微妙に異なるからです。

 量子力学の測定概念が一気に位相空間や可測空間に一般化できた理由は、 それだけ量子力学古典力学と違って、内部に複雑な構造を備えていない、非常に素朴な理論であることによります。 古典理論のように、個々の系に複雑な構造が入ってしまえば、その系に対する操作はその構造を保つようなインセンティブが働きます。 ところが量子力学は一般論としてはヒルベルト空間を使う以上のことは言っていませんから、その写像もかなり自由に選べます。 量子力学の古典的対応物は、\bf{Top},\bf{Meas}とかの類であって、間違っても\bf{Symp}とかではないのです。 その意味では、量子力学の公理で「物理量を作用素で表す」も本当はおかしいんですよ。最初からPOVMで宣言するのが筋ってもんです。

2.非有界作用素はいつ必要になるのか?

 半分位続きですが、量子力学の数学的にまっとうな処理というのをやろうとすると、関数解析になるのですが、 そこで面倒くさいのが、非有界作用素の扱いです。というのも、正準量子化とかいうクソ論法に量子力学の当初の仕事が頼ってしまったため、数学的定式化の後で、この位置と運動量に相当する掛け算作用素微分作用素をまともに扱うハメになってしまったのです。

 非有界作用素の面倒臭さは何かというと、基本的に定義域が全域ではありません。それでも稠密に定義されるものを扱うので、 「ほぼ全域定義」ではありますが、この「定義域」情報を持ち回す必要性によって、 折角作用素「環」構造を作ってあげたのに、例えば加法や結合が、定義域に対してどういう影響を与えるかがまったく非自明で、 個々の要素にいちいち付き合ってやらないといけなくなります。

 ところでですが、量子力学の測定理論概念でのCPTPとかPOVMとかの話は基本的に可分であれば有界作用素の議論で完結します。 これはCPTP概念がもともと作用素環(したがって有界作用素環)に由来したり、測定理論としてのメソッドを確率分布の獲得としてきちんと定めたために、スペクトルが確率値で有界にバウンドされるおかげです。 となると、(有限自由度)量子力学それ自体の定式化では、非有界作用素の登場する所はないのです。

 それで気になるのは、僕らは「いつ非有界作用素との付き合いを余儀なくされるのか」ということです。ごく原始的な測定にはいりません。位置と運動量については、正準量子化を採用しなければよいのです。 たとえば最初からL^2(\mathbb{R})上の左正則表現をとれば、Stone定理でユニタリ表現を分解できるので、 実質運動量に相当するPVMとそのユニタリ作用の概念をもったまま、難なく議論ができます。PVMですから当然有界です。 ユニタリ表現をちゃんと自覚的に召喚すれば、ユニタリなのですから非有界性はどこにも出てきません。 つまり「物理量を作用素で表す」という呪縛を解除すれば良いという話です。そのスペクトルに「物理量の値」としての意味しかないのならば、 それをわざわざPVM要素にかけて積分してヒルベルト空間にねじ込む理由がありません。最初からPVMで扱えば有界になるし便利。 もし、そのスペクトルに変換群が作用しているとしても、PVMの底集合に群が作用していて、 それが密度行列に対するユニタリ表現との間に繋絡自然性条件が走っているとみなせば良いのですから、群作用も問題ない。

 有限自由度の個々の系に関して言う分には、非有界作用素を別の数学で殴る代用手続きがあるように見えます。

 そこで、複数の系の相互作用なんかを考えてみます。たとえば測定のモデルとしてvNプロトコルというのがあり、 それは次の形をしています。

\exp(itA\otimes P)

 ここでAは測りたい物理量でPはメーター系の変換生成子です。しかし、これも取扱自体は有界作用素の範疇で実行できます。 というのもAをスペクトル分解して、これによる合成系のPVM上でPによるユニタリ変換を直積分すれば良いからです。 ユニタリ変換のPVM積分ですから、有界の範疇です。しかしここにはより興味深いことが起きていて、 ここではAのスペクトルの「値自体」がメーターをどの程度動かすかを決めているのです。 なのでAのスペクトルは「ただの測定値」ではありません。メーター系の変換群としての意味があることになって、 それではこのプロトコルを一般化するとしたらどうなるのか?それを組織化するならどうすればいいか?という疑問が湧きます。

 思いかえせば、古典物理でも「物理量の(各点)積」ってこういう使い方をしていたよな、という気がしますね。 例えば解析力学や古典場などで各点積相互作用項を突っ込むことで両者が両者に従って変換されるのが良い例です。 つまり、いい感じの相互作用やある種の動作を引き起こすために、「積をとってみている」わけです。 より素朴な古典物理の場合は、この相互作用それ自体を物理的イメージに基づいて行っている場合があったわけですが、 (例えば常/偏微分方程式を「発見する」場合のdxなどを用いた投機的計算など:弾性体や曲線の方程式とか) いつしかそうした文脈が忘れ去られて、単なる「積構造」だけが引き継がれるようになったのかもしれません。 量子力学でそうした正当な直観を回復する方法論があるのかについてはまだ謎です。

 脱線しました。非有界作用素に戻ってきますが、唯一これやばいなと思うのがあり、それはフォック空間を作る時のLadderoperatorです。

 自由場の量子化、というか量子化はクソなので、単に多粒子系ですが、相互作用をさしあたって深刻に考えなくていい場合は、とりあえずフォック空間を張る事ができます。これは一種の自由テンソル代数のようなものですが、 量子論でのフォックは対称化や反対称化を行ったり、内積も適切に決めてやる必要があるので、 単なるテンソル代数とは微妙に異なります。

 どういう普遍性で定義するのがベストか不明ですが、とりあえずgraded monoidかな?位に思っています。しかしここに問題点があり、粒子を合流させる積演算、およびそこから造られるLadderoperatorは非有界なのです。統計性処理のために。これは量子的調和振動子の計算ともあいます。

 ウオーここへ来て非有界になってしまった。しかしこれはある意味では自然という見解があります。というのも、例えば素粒子現象のように初っ端から多粒子で、かつ識別不能な場合、可観測量とはなにかというと、一粒子の場合はPOVM要素で成立確率を返す汎関数ですが、 このPOVM要素をLadderoperatorでフォック空間に輸送すると、「POVM要素を満たす粒子数期待値」を返す汎関数になるんですよ。 でもこれは確かに自然な物理量に思えます。だって識別不能なんですから、どれがどの事象を成立させるかわからないわけで。

 すると、こうした状況では、単純な確率論としてのメソッドに基づく定式化がまずい気がしてきます。 確率論は汎関数の評価値として[0,1]値だけを相手にすればいいので、有界になりますが、 粒子数期待値となれば[0,\infty)ですから、どんなつまらない物理量でも対応作用素が非有界になってしまいます。どうすれば…

3.STモナド

 Haskellは、他の言語では副作用とかよんでる振る舞いをきちんと型レベルで捕捉することに成功していますが、 そのためにモナドを振り回す必要があります。まぁそれはよいのですが、 例えばIOモナドはほぼなんでもできますが、純粋な計算をしたいというのに、ちょっとIOの力を借りただけで、 IOに汚染されたままになってしまってはたまりません。

 良くも悪くも、型の表現力と統制力が強力なので、やりたいことに対して丁度よい型による表現を探す事が求められているのだと思います。  そこで破壊的代入や参照や配列更新等ができつつも、最終的に値を純粋に取り出してモナド文脈から戻ってくることの出来るモナドとして STモナドがあります。しかしこのSTモナドの実行関数runSTの型がくせ者で、一見型を見ただけでは、 これが何を意味するのか、これによってどんな利用制限がかかってくるのか、それは何故なのかがピンときません。

runST::forall a.(forall s. (ST s a))-> a

この全称量化こそがSTモナドのキモだったのですが、ようやくそれを了解したのでこれを書いています。

 ところでですが、述語論理において次の証明規則があります。

\forall x. \phi \Rightarrow \phi(t/x)

 これは全称量化の除去規則というやつで、全称量化束縛された変数の具体化に相当します。 このときtは「実質的には」なんでもよいのですが、あくまで推論規則としてこれを見るにはちゃんと制限があります。 それはt\phiに代入されたときに、t中の自由変数が捕獲されてはいけないということです。 「実質的には」なんでもよい、といったのは、論理命題としてなら、 \phi中の束縛変数をアルファ変換などで置き換えても同値になるためです。 しかし推論規則としてはこの制限は無視できません。今それぞれの論理式はただの記号列だからです。 例として

\phi(-)= \forall y.\exists z. (-) + z > 100 + y

などを考えて、t=-zなどとすれば破綻をきたす事がわかります。

 話を戻しますが、型システムと論理がいい感じに対応してそうというお話があります。

カリー=ハワード同型対応 - Wikipedia

 詳しくは理解していませんが、型システムがどういう振る舞いをするかのアナロジーを論理に求めることはできそうです。 そこでrunSTですが、何らかの具体的な値を吐かせるために使うわけですから、型変数のaはいずれ具体化されるはずです。 このとき、先の述語論理のアナロジーで考えれば、aの具体化においてsを含むと、これが捕獲される事がわかります。 したがって、runSTを含んで型検査をするときに、aにsを含む具体化を要求するようなコードは弾かれることになります。

 例えば不正なコードとして、

Haskell/存在量化された型 - Wikibooks

の例を見てみましょう。

v = runST (newSTRef True)

が不正ですが、これはnewSTRefの型が

newSTRef::a' -> ST s (STRef s a')

であることによります。このvの型を導出しようとすると何が起きるか見てみましょう。 ST s (STRef s a')をrunSTに代入するのですから、最終的に具体的なaを導出するには ST s (STRef s a')からrunSTの具体化の前提:forall s.(ST s a)を導く必要があります。 このときaは全称量化されていたのですから、sを含んではいけません。 ここで、forall導入を行ってforall s.ST s (STRef s a')としてもa=(STRef s a')となり、 sに依存したaしか示すことができません。そこでこの型チェックは失敗します。

 証明論的なこの不正の理由は納得できましたが、そもそもこのコードはなぜ弾かれるべきなのでしょうか?

 ここで、あえて型ST s aを「環境sと相互作用する返り値型aの計算」だと解釈してみましょう。 newSTRefの型a' -> ST s (STRef s a')は、参照型について「その参照が意味を持つ環境」sがSTRef s a'として 型に組み込まれている事がわかります。 すると、先のコードについては、「環境s上でしか意味を持たない参照」をs以外に持ち出すことが不正であると考えられます。

newSTRefがa->ST s (STRef s a)の返り値は、型変数sが二度出現し、それは同一です。これは

  • 環境s上のアクションであること

  • 得られる参照値は環境sにおいて有効なこと

  • この2つの環境は同一なこと

を示していると考えられます。  このほかのST文脈を利用する関数も、「ST sの外に出すべきでない」場合は その返り値がsに依存するようになっています。逆に言えばs依存していなければ、外に持ち出す事ができる事になります。

 たとえばSTArrayならfreezeすることによって、immutableArrayになり、これはST sのような文脈を持たないので、 そのまま外に出すことができます。ただし、STArrayをfreezeする動作は配列のコピーを含むので 効率の観点からコピーを省略してそのまま凍結する為の専用関数runSTArrayがあります。 この型は

runSTArray::forall s.ST s (STArray s i e) -> Array i e 

であり、runSTと比べると、あえてSTArray sと、ST sのsが揃えてあります。 すなわち、この配列自体が存在する環境と、それを操作する環境が揃っており、かつ配列の中身には環境sに依存がないことを量化子で強いているのです。

 たとえばこの配列に環境sに依存したインデックスiや要素eが使われていれば弾かれますが、 この配列自体がsに存在することはちょうどぴったり許されるのです。こうすることで、 環境情報について整合的な、環境情報に依存しない要素からなる、環境情報をもつ配列を、 環境情報を持たない純粋な配列として取り出すことが、ぴったり実現できます。

実際にはこのsというのは、実体がありません。実際STのドキュメントを見ると、

Control.Monad.ST

The strict state-transformer monad. A computation of type ST s a transforms an internal state indexed by s, and returns a value of type a. The s parameter is either an uninstantiated type variable (inside invocations of runST), or RealWorld (inside invocations of stToIO).

とあり、RealWorldへ具体化して実質的にIOとなるか、具体化されないままrunSTされるかしかありません。 しかし実体の無いまま全称量化される仮想的な型変数をSTに組み込むことで、 「計算環境」のような文脈と、それに伴う制御を与えていることになります。

測地線 on Canvas と ABCjs on HasteFFI


また一ヶ月がたってしまった。

1.Haste

 ちょこちょこHaskellを触ったりしていますが、Atcoder Begginerで遊ぶだけでなく、
何か作ってみないとなぁという気持ちがありました。そこで調べてみるとHasteとかいうのを見つけます。

haste-lang.org


 HasteはHaskellからJavaScriptへのコンパイラで、どういう訳かHaskellの基本機能が全部使えます。
で、それだけではJavaScriptの代替にはならないので、CanvasやDOM操作用のモジュールが定義されています。

haste-compiler-0.5.5.0: Haskell To ECMAScript compiler


 ごいすー。ところでHaskellのドキュメント、型から大体の情報が得られる良さがありますね。とにかく型がよいということがわかります。
 このHaste、hastec hogehoge.hsで生成される同名jsファイルをHTMLから読むようにすれば終了です。なんということだ。
JavaScriptまったく触ったことがないし、JavaScript1行も書かなくてもJavaScriptが書けます(?)。

 ほいで、やっぱりモチベーション維持のためには、視覚に訴える物を作りたくなります。まるちめでぃあという奴です。
 そこでHaste.Graphics.Canvasを見てみると、簡単な図形・画像描画関数があります。全部モナドっぽい。
なるほどなるほど。しかし表示するだけじゃなくていんたらくてぶなことをしたいなと思えてきます。我々はわがままなので。
 そこでHaste.Eventsを見てみると、たくさんのイベント型が定義されており、コールバック登録関数onEventがあります。
なるほどなるほどなるほど。しかしどんな感じで何を使うか一から試して考えるのは辛いので何か例が欲しくなります。
 そこで公式のExampleからサンプルを落としてコンパイルしてみます。とっても小さなサンプルもあるのでこのくらいなら読めます。大体要素をIDで探してそれに対するアクションをする感じとわかります。
なるほどなるほどなるほどなるほど。

豊かなわかりが得られる事がわかります。Wakari is God.

 で、前から試してみたいと思ってた非ユークリッド平面を作ってみることにしました。二次元リーマン多様体ですが、2次元だと次元が小さいので、曲率テンソルの有意な成分は実質一つになることが知られています。ということで、すくなくとも局所的には曲率が正か負かゼロかという話で尽きます。
 じゃぁ曲率が正、負、ゼロで一定の面とは何かというので、それぞれ球面、双曲面、普通のユークリッド平面が代表的なものとして出てきます。これらにはそれぞれいい感じに自己等長変換リー群が作用できます。SO(3),PSL(2),SO(2)\ltimes \mathbb{R}^2です。
これらの群は全部3次元で、回転と平行移動がいい感じに混ざっていると考えることができます。仮にこうした平面上で「移動」に相当する概念があるとしたら、それが単位元近傍の等長変換であると考えるのは理に適っているでしょう。
 そこでこれらのリー群の指数写像を作用できるようにしましょう。それから、「移動」するならそもそもこの平面に何か物を置かないといけません。これはもう直線にしておきましょう。もちろん測地線のことです。

ここでハッピーなことが3つあります。

  • こうした3「平」面は、簡単な非ユークリッド計量をもった平面として表現できる。

ポアンカレ上半面:ポアンカレ計量、立体射影:フビニ=スタディ計量)

  • それからそこでの測地線が全て見かけ上は円弧か直線である。
  • そしてHaste.Graphics.Canvas円弧が定義されている

大勝利である事がわかります(低級グラフィックだと円弧が無かったりする)。

結果です。

http://www.asahi-net.or.jp/~fu5k-mths/hyper_line.html
http://www.asahi-net.or.jp/~fu5k-mths/sphere_line.html



 良さがありました。しかしこれを書くにあたってHasteモジュール中CanvasとEventsばかり触ることになり、いまだDOMやSocketの操作が全くわからないままであるので、
HasteでJavaScriptライフを満喫するにまだ課題がある事がわかります。ソースは、何処に貼ればいいんだっけ...Canvasの描画、どのくらいまで速度がでるのかわかりません。ミニゲームくらいは作れるのだろうか。

 ところでPSL(2,\mathbb{R})リー代数なのですが、当初計算しやすいからと次の基底でとっていました。

\begin{bmatrix}
1&0\\
0&-1
\end{bmatrix},\begin{bmatrix}
0&1\\
0&0
\end{bmatrix},\begin{bmatrix}
0&0\\
1&0
\end{bmatrix}

 しかしこれ、あんまり自然じゃないんですね。2次元平面のアナロジーで行けば、ある点周りの回転と平行移動が欲しいところですが、このうち、1つめは上半面モデルで垂直方向の移動ですが、残り2つは何物でもない。
 パウリ行列もどきですが、結局次の基底のほうがより素直な変換になる事がわかります。場の量子論ポアンカレ群いじりしていたときを思い出す。

\begin{bmatrix}
1&0\\
0&-1
\end{bmatrix},\begin{bmatrix}
0&-1\\
1&0
\end{bmatrix},\begin{bmatrix}
0&1\\
1&0
\end{bmatrix}


ちなみに2つ目が回転で3つ目が平行移動です。

2.ABCjsとそもそものABC記法

またwebがらみですが、僕は音楽に関してスコア厨ですから、webで楽譜を弄れたら良さみが深まるなぁと思うわけです。
そこでまた調べてみると、ABCjsなるJavaScriptライブラリがあることがわかります。

abcjs.net


 JavaScriptライブラリ以前にそもそもJavaScriptをよく知らないのでどのような位置付けなのかもわかりませんが、とにかくブラウザはHTMLを表示するし、その中でJavaScriptが起動するわけで、
ドキュメント自体がJavaScriptから見える実行環境と思うことにしました。そんなわけで、ドキュメントの先のほうでjsファイルをロードしておけばライブラリとしてはそれで配置終了っぽいというわかりを得ます。
 ABCjsのうちBasicなるライブラリでは、文字列でABC記法(後述)自体と、それを表示する要素IDを投げると、そこで楽譜を描画してくれる関数renderAbcがあり、これで大体用が終わることがわかります。

 Hasteを触ったのですからJavaScriptを回避してみたくなります。HasteはFFIをもっており、js関数をインポートしたり、Haskell関数をjs関数としてエクスポートできます。どういう原理なんだ。
そしてその関数はシンプルにも

ffi::(FFI a)=> JSString -> a

で、JavaScriptの生コードを適当な何者かとして受け付けます。
得られる型aは実質なんでもよく、生コードに期待する型をこっちでつけてしまってよいのです。どういう原理なんだ。
とにかくFFIは謎です。そこで試しに

renderABC::String -> String -> IO()
renderABC = do ((ffi.toJSStr) "(function(a,b){ABCJS.renderAbc(a,b);})")

などとし、

renderABC "note" dat

とかしてやると、なんと表示されてしまう事がわかります。お試しください。どういう原理なんだ。
("note"はHTMLに書いた要素ID、datは別に定義したABC記法のString)

 既にABC記法のスコアがページにある場合は、勝手にその続きに譜面を描画するPluginもあり、簡単な楽譜表示には困らないことがわかります。
 しかしどうもABC記法の検出が雑っぽく、ページ内にごちゃごちゃしたものがあると誤認して変なものが出てくるのでこっちはやめました。

 結局Haskell内にABC譜文字列を埋め込み、ABCjsをFFIロードし、HasteでJavaScriptにするという埋め込み+FFIを行います。以下は去年書いた曲のメロ譜です。

http://www.asahi-net.or.jp/~fu5k-mths/cis_moll_ref.html

http://www.asahi-net.or.jp/~fu5k-mths/f_moll_ref.html


 いい感じですね。スペースを入れるかどうか、ハイフンをつけるかどうかで、スラー/タイの制御や、旗の接続制御ができるので、例えば八分三連や、八分シンコペなどはグルーヴに応じて調整できます。楽譜の整形ができるので見栄えします。


 ところでこのABC記法、構文は単純ではありますが、これ自体を楽譜、もとい演奏ファイルの抽象として考えると不自然な構文があります。一応、「音楽記述言語」を標榜しているのですが、ウーン?
 違和感の例として、音名と記譜が対応していないことがあります。ABCは名の通りABCDEFG(ラ~ソ)で音を書きますが、変化音(Cis,Ces,Dis,Desとか)はありません。
 それから調号をスケール呼称で指定して表示できますが、調号がかかっているときでも、変化なしのABCDEFGでそのスケールの音を指定します。つまりこの記号は音名ではなく、五線上の音符の位置のことです。
 さらに、調号がかかっている時に、変化音を付けた場合、勝手にナチュラルやダブルシャープダブルフラットに変換されるわけではありません。やはりこれも何の音を書いているかではなく、楽譜上その記号があるかどうかなのです。これでは音楽の記述言語ではなく、楽譜の記述言語です。音楽に対して二段離れている。すなわち、音楽にはこういう要素がこういう構造であるよね?というのを書く言語(楽譜とかMIDIとか)ではなく、楽譜にはこういう記号がこういう配置であるよね?というのを書く言語ということです。

 ちょっと音楽周りに関してやってみたい事があり、そのためにABCがいい感じかと思ったのですが、こういう調子だと微妙なことになりますね。僕は音楽それ自体の高級軽量抽象言語がほしいと思っているのですが、伝統的な楽譜はレガシーたっぷりで曖昧なところもあり、それに代替するものが何かないかと思っていましたが、ABC記法は楽譜がセマンティクスになってしまっているので同様の問題をはらんでしまいます。ここでの問題は、例えば意味論(音そのもの)がちゃんと定義されるのかどうかというのを含みます。

 もともと五線楽譜というのは微妙に冗長だったり曖昧だったりする記譜法ではあります。
例えば平均律ゆえの同音異名はその例です。良く書かれた楽譜では、同音異名のうちどれを取るか(調号で沢山シャープしてある音の半音下をナチュラルで書くか、一度下からダブルシャープするか等)
というのは幾つかの理由をもって選択されます。具体的には

  • 記譜上のメロディラインが滑らかかつ見やすくなるようにとる(半音階的メロディや刺繍音など)。
  • モーダルインターチェンジや局所転調で、旋法上の音順序を破壊しないように最近音から変化させる。

等です。このあたりはどういうニュアンスを込めるかは未定義な割にしばしそうしたニュアンスが意味を持ったりするので困りものです。

 旗を接続するかどうか、旗の切断を拍のどこで行うか、というのもそうで、これも慣習に基づきます。グルーヴによらす、4/4の曲は四音程度で旗を切断する傾向にあります。恐らく視認性のためでしょう。また付点8分付点8分8分というのは様々なところで聴くリズムですが、これも二回目の付点8分を16分8分のタイにすることが多いように思えます。不思議ですね。しかもこの場合4音以下でも途中の16分と8分の旗はつなぎません。

 こうしたものは慣習を守らなくても、楽譜として不正になることはありません。しかし見栄えは悪くなります。可読性も落ちます。
 DAWで五線編集機能が無いものが結構あるのですが、そもそも楽譜からMIDIへの変換は比較的曖昧さが無いが、MIDIから楽譜への変換はかなりの曖昧さがあるという問題によるように思います。昔そうしたGUIを触ったことがありますが、MIDIに保存してから立ち上げ直すと、楽譜が崩れていることに大変落胆した覚えがあります。しかしそのソフトは変化音処理や旗接続はかなり自然にできていたので、今思えば優秀な方だったのでしょう。

 ABCが音楽抽象、音楽記述言語というより、楽譜抽象、楽譜記述言語にあえてしたのは、やはり楽譜を取り巻く伝統的エコシステムに乗りたいというのと、新しい音楽抽象を策定して普及される事それ自体が極めて難しいからだろうという予測はできます。
 MIDIは楽器制御というつよい目的があったので、割と思い切った低レベル音楽抽象規格になりましたが、高レベル抽象で、楽譜並の表現力があり、楽譜以上の形式的厳格さを持つものを作れるかどうかというと、ウーン...
 こうした厳格かつ高級な策定自体が、なんらかの非自明な音楽観を反映してしまいざるを得ないことが想像できます。例えば「声部」概念が意味をもつかどうか、というのは例です。
また電子楽器の制御UIをどうするかというのも音源やDAWで微妙に異なる訳で、出来合いの記述変数自体に統一性がありません。
様々な面倒があります。面倒。面倒。面倒。

3.サピエンス全史たのしかった

これです。
www.amazon.co.jp


ジャパリパークの図書館に納め、フレンズが文字を学ぶことにより、かばんちゃんが容易にハブられることがわかる。

すごーい!

1.お型付け

 春休み生活崩壊で進捗が微妙なことに...しかし近日型付けます。

 

 型付けます。

 

 型とは言うまでもなく、typeですね。Int,Double,IO String,Array (Int,Int) Char...などがあります。世の中では、型をつけるとさまざまなことがスッキリすることから、物事を整理することを型付けるといいます(?)。

 プログラミング言語で型があるといいとかわるいとかいう話があるようで、僕はある側ですが、そもそもプログラミングは初心者なのでこの方向にはそんなにつよく主張すべきものがない。

 ところが、10年付き合って来た物理というか類似の数学を弄る科学では本当に型を付けてくれというつよい思いがあります。

 本当につよい。

 型がついていない本を読むのは大変な苦痛です。言処理系なら、アスペよろしく実行時エラーでおさらば、あとはプログラマのせいですぅ~といえますが、本だとそうはいきません。なぜなら、著者のせいにしても何も生まれないからです。
 読者は常に著者の想像する「意味」を、その数式のくせに非形式な式(台無し…)から読み取って、それを最大限尊重した解釈を汲み取らなくてはなりません。
 曖昧な記述に対してGHCならNo instance for...だとかCouldn't match expected type...with actual type...と当然のように返すことができても、人間は許されないのです。かなしい。人権はないのか…人間は処理系以下か…
 こうした曖昧な概念を書いている人間の頭にあるのはとにかく非形式だが少なくとも彼にとってはリアルな「意味」なのです。「意味」があることだけは当人にとって確かなので、その文章を動的型付けで正常に処理できる処理系を、勝手に読者が繕ってくれるという心算で書いているのです。この文章も…アッアッ…
 しかしその意味を共有する為には形式が必要なわけで、もっと形式的表現力というものに気を配る風潮があってほしいと思うばかりなのですが、自然言語はとにかくOpenEndであり、普段の議論はそれで雑に解決してしまうので、まったく遠き理想です。
 僕はもう人びとの言う「意味」を察するのに疲れました。
 そこで型です。とにかく型を付けましょう。型をつけると型付くといいますから。

 で、とりあえず渡辺さんの学習理論本を読んだり読まなかったりとまた積み始めているので、2章まで型をつけました(pdf)。
http://www.asahi-net.or.jp/~fu5k-mths/pdf/watasumi2_tba_up.pdf

 

2.電磁気のおもひで

 ところで、カタカタ言う前の自分は幾何厨でして、物理のいろんな概念を多様体にぶち込めというお気持ちがしばらくありました。
 多様体はいい。とてもいい。僕の中で幾何厨であるモチベーションと、静的型付けモチベーションはまぁ似たところがありまして、単に一般化されて後者になっただけという感じがします。
 要するに、その数学的概念がどう動機づけされているか、というのを考えると、伝統的な言い回しを無視して、ある種の数学的概念をストレートに投入した方が定式化も見通しもスマートになるとか、やりたいことに対して先に数学的構造や圏や型を動機とともに宣言してしまったほうが、解釈がブレなくていいとかそういう話なのです。
 物理もできてから長いですから、発想としては面白くともなんか曖昧/古い/飛躍がある/ill-defined/解釈が雑な説明がぼちぼちあるわけです。まぁそれでも実験に反するような死に方や明らかな矛盾はすぐに補足されますから、そうではないという点でこうした不満は微妙な話で、しかし流石にレガシーはきちんと捨てて欲しいというお気持ちがあるので「~~をもっと短く正確に宣言するとしたらどうなるか」というのは常時気になるわけです。アスペだ。アスペで何が悪い。

 で、多様体です。例えば相対論を、多様体でモリモリ書こうという風潮は、モダンな本だと割と採用しているみたいなのですが、学部で使うような日本語の古典的なスタイルの入門書では、ほんのちょっと触れられれば良い方で、ふんわりとした「4元ベクトル」とか「共変テンソル」のような曖昧な何某かで説明が終了するのもしばしばです。
 これは微分幾何をしなくても究極死なない特殊相対論ですらそうで、抽象ベクトル空間すら触れずに説明が終了する無謀すらあります。
 一般相対論は僕は天文とかのガチ方面をやっていないので、詳しい事情はわかりません。が、一般相対論はそもそも最初から擬リーマン幾何かつゲージ理論なわけですから、微分形式なりなんなりを使ったほうが良いに決まっています。それらは第一義にそれなんですから、他の語法を使うと余計混乱するわけです。

 そう、微分形式です。古典にはフランダースの「微分形式の理論」とかいう本がありまして、物理などで微分形式自体をふんわりと使う風潮は今更微分幾何プッシュするまでもなくあったようなのです。
 一般相対論ほどガチでもない微分形式のふんわり用法としてかなりメジャーなのが、電磁気です。電磁気はもうベクトル解析が幅を効かせてますし、座標変換行列なんかがよく演習問題になっていたりするので、あんまり導入ご利益がないのでは…という向きもあります。
そんな中で

マクスウェル方程式―電磁気学のよりよい理解のために (SGC Books)

はあえて微分形式で3次元の電磁気をいじるという斬新な本で、読みやすいかどうかは置いておいて、電磁気学の諸概念に、ちゃんと「相応しい微分形式の階数」が付くのです。場の量およびベクトル場が、バンドルの切断であることは良いでしょう。それらは局所的に成分表示できるのですから、バンドルです。すると、後はどの場の量がどのバンドルの切断かという「型」を付ければいいですが、こと電磁気に関してはとっても簡単で直観的です。

 

 ここで軽くやってみましょう。とりあえず基本変数として、
{\bf E},{\bf B},{\bf D},{\bf H},{\bf P},{\bf M},\phi,{\bf A},A_\mu,T_{\mu\nu},F_{\mu\nu}
とかがありますね。
順に電場、磁束密度、電束密度、磁場、分極、磁化、スカラーポテンシャル、ベクトルポテンシャル、それから4元化して、4元ポテンシャル、エネルギー運動量テンソル、電磁場テンソルです。エネルギー運動量テンソルポインティングベクトルと応力テンソルを含みます。
 多様体のほうは、空間三次元多様体Mを空間、それから時間\mathbb{R}Mの積またはNを時空としておきましょう。

 さてクイズです。これらは全部ある意味で微分形式とするのが相応しいのですが、その階数はいくつでしょうか?

 

正解(?)は順に
1,2,2,1,2,1,1,0,1,3,2
です。(多分)

 

 なぜそう考えるかという話をします。これらは全部空間や時空に広がる物理量ですが、物理量はそれを測定する手段があります。
 その測定器の形状は、様々です。しかし以上のものは、なんらかの理想的な測定器が何次元の情報で同定できるかによって、微分形式の階数が決まります。

 そもそもこうしたものを微分形式で書く理由ですが、多様体の部分多様体に対するスカラー汎関数、もとい座標Lebesgue絶対連続かつ密度が可微分な「測度」で、局所的に微小なk次元立方体を考えた時に、漸近的に、その「辺」に対して線形であるようなものを考えると、これは微分形式にほかならないので、凡そ微分形式で表現すること自体はそれなりに動機づけされていると見て良いでしょう。
 測定器がなす部分多様体積分して測定値を得るような概念が微分形式というわけです。

 

 まず\bf{E}です。電場とはどのように定義されたでしょうか。それは単位仮想電化の受ける力です。力とは線に沿ってエネルギー積分ができる概念ですから、余接バンドルの要素、つまり1形式です。

 \bf{B}はどうですか。磁気力線というものをだれかが考えました。回路を横切る磁気力線の量によって誘導起電力が得られると考えられています。磁束は面を用いて計算されるので、2形式です。あるいは別の解答として、仮想電流片の受ける力と言っても良いです。その場合も力が1形式で、電流は接ベクトルですから2形式です。

 \bf{D}はどうですか。これは電気力線ですから磁束密度に準じて2形式です。逆に\bf{H}は仮想磁荷の受ける力ですから電場に準じて1形式です。

 スカラーポテンシャルは何でしょうか?微分して\bf{E}なんですから当然0形式です。ベクトルポテンシャルはもちろん1形式です。

 ポインティングベクトルは?面あたり時間あたりエネルギー流出ですから、空間上2形式です。しかし時空で考えればこれに時間方向が入るので3形式です。エネルギー密度は?もちろん3形式でしょう。立体で積分するのですから。応力テンソルはどうですか?空間では3形式でしょう。面を指定して力が得られ、力は1形式です。これらを統合すると、エネルギー運動量テンソルは3形式です。普通の記法で添字が二つしか書かれていないのはHodgeStarがかかっているのでしょう。多分(?)。

 同様に、電磁場テンソルも統合すれば2形式です。運動する電流片は2ベクトルで指定できますが、これに対する仕事を与えます。4元ポテンシャルが1形式であることにも整合します。

 では分極はどうでしょうか?誘電体の性能を測るときには、測りたい面で薄く切って、コンデンサに差し込みます。面は二次元ですから、2形式です。
 同様に磁化はどうですか?磁性体の性能を測るときは、測りたい方向で細く切って、ソレノイドに差し込みます。ソレノイドは一次元ですから、1形式です。

というわけで、めでたく次のように型付きます。
{\displaystyle\begin{align}{\bf E}: \Gamma(\wedge^1T^*M)\\{\bf B}:\Gamma(\wedge^2T^*M)\\{\bf D}: \Gamma(\wedge^2T^*M)\\{\bf H}: \Gamma(\wedge^1T^*M)\\{\bf P}: \Gamma(\wedge^2T^*M)\\{\bf M}: \Gamma(\wedge^1T^*M)\\{\bf A}: \Gamma(\wedge^1T^*M)\\ \phi: \Gamma(\wedge^0T^*M)\\ A: \Gamma(\wedge^1T^*N)\\ T: \Gamma(\wedge^3T^*N)\\ F : \Gamma(\wedge^2T^*N)\end{align}}
 よかったですね。ちなみに\Gamma(-)はバンドル切断のことです。マクスウェル方程式もこれらの間の関係式で書けます。
 なお適当な事情で階数が変わることがありますが、大抵の場合は計量テンソルで落とすか、またはHodgeStarでdegreeを反転させているのが大半です。HodgeStarはリーマン多様体上で定義されるものですが、これは言い換えれば空間の計量やその成分表示(座標系)に依存するということです。
 そして紛らわしいことに、HodgeStarによる反転は直交座標を採用して成分だけを見ていると変化に気が付きません。そうした中で軸性ベクトルの区別だとか、\bf{E},\bf{D},\bf{B},\bf{H}は同じなのか違うのかとかそういう曖昧なことになってしまいます。適切な抽象化をしてはじめて識別できる物というのがあります。抽象化がわかりを運んでくることがわかります。

 

3.ラグランジュ形式

 微分形式というと、解析力学多様体上の微分形式の話になるのですが、これも物理の学部レベルの入門書では多様体の多の字も出ないことがあります。そもそも微分幾何の種を巻いたの物理サイドじゃなかったのかよと突っ込みたくなるのですが、不思議な話です。
 解析力学周りで僕が本当にブチ殺すべしと思っているペテンがありまして、それは
量子力学を学ぶために解析力学(特にハミルトン形式)が要る」
という言い回しです。これは本当に断言しておきますが、大嘘ですからね。
 これを本気で言っている人のことは信用しないでください。ひどい目にあいますよ。
僕は真面目に解析力学をやろうとして山本義隆さんの本の沼に落ちて幾何厨になりましたが、その結果量子力学の発見法的議論に対する深い憎しみだけが残ったことは言っておきます。
 量子力学解析力学の構造なんか見向きもしないで好き勝手やりますからね。真に受けるだけ損です。既に学んだ皆さんは、これを後世に伝えることだけはやめてください。知的虐待ですよ。
 まぁこの恨み言を続けると長くなるのでやめますが、解析力学自体は、微分幾何でアレしなくてもそれ自体よくできたお話で、発想もうまくいっていて、精密化もやろうと思えばできて、あげくシンプレクティック幾何学とかいう純粋な幾何にまで発展する本当にいい話なんですが、
 で、そう言えばシンプレクティック多様体という語は聞くけどラグランジュ形式の方はあまり語られないなと思ったので、微分形式によるラグランジュ形式を書いておきました。だいたい山本義隆本ネタですが、当文献は「型」情報がイマイチで読みにくかったので、その補足として(pdf)。
http://www.asahi-net.or.jp/~fu5k-mths/pdf/geo_lag.pdf


4.けもの

フレンズ、よかったですね。

射影とマラ9がありました

1.射影仮説

 

というのがあります。これは量子力学の「公理系」に入ってたり入ってなかったりあるいは面倒なのでそもそも公理を明示しなかったりと言うこともありますが、
大雑把に次のような感じの「公理系」の一つとして組み込まれます。

  • ある種の確率論をヒルベルト空間の作用素を使って表現します。その方針は以下です。
  • 状態はベクトル射線、またはそのシュミット積和としてのunit-trace positive(密度行列)とします。
  • 事象特に数値ボレル上の事象としての物理量は、射影作用素(値測度)、またはEffect Operator(値測度:POVM)、または有界正規作用素とします。
  • 以上のペアについて確率や期待値は\mathrm{Tr} \rho Eで計算します。(Born)
  • 状態発展はユニタリ、または等長、またはCPTP、または少なくともPositivity-Trace preservingとします。(Schr-Eqは強連続ユニタリをStoneで微分すればいい)
  • PVM\{P_A\}_{A\in \Sigma}測定において、\rhoAの成立をみたときの事後状態を\frac{P_A\rho P_A}{Prob(A)}とします。(射影仮説)

(現代的なスタイルはモリモリ自然な一般化を受けているのでバリエーションを並列しています)
 何が「公理系」じゃと個人的には思ったりするのですが、
大体の物理理論というのは、「現象Xを数学的構造Yで表現しましょうね」「表現出来たら現象側での挙動と理論側での計算を対応させて遊びましょうね」
というものなので、量子力学は単にある種の確率論の数学的構造をヒルベルト空間の作用素を使って表現しましょうというスローガンのことです。
 確率論としての適当な数学的構造と、その外延性および適当な位相構造を考えると、状態と事象の間に完全な双対圏同値が成り立ち(後述)、また物理量だの測定だのといった概念は量子力学と独立に定式化可能な一般的概念なので、
量子力学のコア主張は本質的に

 

「状態空間をunit-trace-positiveな作用素で書きます」ー★

 

または

 

「事象空間をEffect Operatorで書きます」ー★

 

のどちらかを採用しましょうということです。

で、射影仮説です。これどうもかつては相当なバズワードで、ああ~もうそういうバズりが嫌なので物理やっとるのに的な僕としては
いちいち過去のバズりっぷりを調べる気力もないのですが、まぁこの仮説が入っている点について不満があるという意見があったのです。確か。
「不満」と表現するのは、別にこれは矛盾でもなんでもないということです。運用上問題はないけどなんかそぐわねぇなというお気持ちです。
(そもそも何をもって矛盾というのかがはっきりしない程度に量子力学含めた物理学は「物理的意味」ドリヴンじゃん…というと怒られそう)
その不満の代表的な物として、

  • 系の発展の仕方が複数(ユニタリ、等長、CPTP…と射影)あるのが嫌だ。
  • ウィグナーの◯◯系の思考実験:「観測者の観測者を考えると射影仮説の適用ラインが後退するので、状態が観測者依存になるけどいいの?」
  • 波束の収縮系:「観測で状態が瞬間的に変わること自体がキモい」

あたりがあると思います。
それで、YouはShock!な一部物理学者の間で射影仮説やめろキャンペーンが…


 はられたかどうかは知りませんが、射影仮説が特に運用上問題を起こさないことはとっくにわかっているので、射影仮説を他の自然な性質や残りの公理から出して消そうという運動がおこります。多世界だと思いましょうとか、勝手にデコヒーレンス起こす機構があるのではとか、そういう話です。

 僕もまぁその手の本を読んで育ったり育たなかったりしたのですが、今はもう完全にこれ系に関してはドライになってしまっており、
その結果として以下で僕は次の信念にあります。

 

射影仮説は単に、一般化された条件付き「状態」の一例にすぎない。量子力学とは関係なく幾度となく使われてきたし、またあってもなくても(ある意味では)困らない。数学的には自由に考えて良い。

 

 こう言うと、「いや、要るのでは」という見解もあるのですが、それ以前に「要る」が未定義語では…と無限に紛糾し…ォァァ
 先に言い訳をしておくと、本当に射影仮説が要るときというのは「ある事象を観測した事後状態」が欲しい時なのですが、
よく考えればその場合だって、測定値可測空間と状態空間の凸空間テンソル積からの可測CPTP写像とかを連鎖すればいいだけで、
明示的に「ある事象を観測した事後状態」を考えないと困るということはないんですよ。「ある事象を観測した事後のフィードバック操作」という(凸)可測関数を合成すれば済むわけで。
 少なくとも目の前にある現象をモデル化するだけなら特に困らない。
 本来考えられて然るべき数学的構造を考えないで「結果Aを得たときに…」という認識を理論にぶち込もうとするからこんな…こんな…ウッ...

 

 一般化された条件付き「状態」というのは、要するに射影仮説もCPinstも条件付き確率測度もすべて単なる一例になるような、「状態の再規格化操作」がもっと一般的な文脈で考えることができて、確率測度だろうが密度行列だろうが、行う数学的処理は全く同じだということです。

 要するに、普段「条件付き確率」を違和感なく操作している人が射影仮説を拒むことはできないし、逆も然りということです。
で、学習理論だのベイズ推定などがワイワイやってる現在「条件付き確率」なんて珍しくもなんともないよね?
いや、別にいいですよ、「条件付き確率/状態は単なる数学的操作にすぎない」と主張することもまた可能です。確率的推定だって可測写像にすぎないわけですからね。その人が「私は結果Aを得た。その条件下で系は~」と一生言い出さなければ大丈夫だし、
実際に一生そういうことを言わなくても量子力学も確率論も機能するわけです。人生つまんないと思うけど。

 

 釈明します。

 以上の「一般的」というのは一般確率論(GPT)だとか操作的確率論(OPT)とかの修辞と同じ射程を意味します。 

 GPT,OPTとは、もっと緩く自然な公理から開始される一般的な確率論で、古典と量子と、あるいはその他を含みます。もっともプリミティブには「状態」と「事象」という二つの集合があって、そのペアごとに「その状態でその事象が成り立つ確率」を得られる状況があるというような最低限の合意をします。
これは別に良いですよね? 状態と事象とは、そのペアについて確率がわかるものです。おわり。はい。
で、大変面倒なことにGPT,OPTは流儀にばらつきがあり、それぞれの数学的構造の語法や射程がいまいち統一されていないので、具体的な例を挙げる気になりません。そこで僕は圏好きなので、次の最高にクールな随伴圏同値から始めます。

 

{\bf CCH} \simeq {\bf BEM}^{op}

 

ただし相互の随伴関手は\hom(-,I)で、Iは単位区間[0,1]です。

 

 定義をしましょう。\bf CCHとは、ある局所凸位相ベクトル空間のコンパクト凸集合のなす圏です。\bf BEMとはEffectModuleかつ適当な距離位相完備なものの圏です。
 さて、僕のように量子基礎論に脳を侵されていると、ここで疑問が生じます。ヒルベルト空間の時と同様、それらの数学的構造は、物理的意味にmotivateされているか?ということです。

 これに関しては簡単な思考実験で、わりと正当化できます。長くなるので省略しますが、双外延的(状態は事象で識別され、全ての状態で同じようにふるまう事象は同一)であれば、いかなる一般確率論モデル(つまり状態と事象)も、適当な位相を突っ込むことで、\bf CCH,BEMの対象だと思うことができます。要するに憎き(?)ヒルベルト空間のときとは違って、これらを状態、事象の数学的構造だと宣言する十分な理由があるということです。

 \bf CCH,BEMはその数学的操作について物理的解釈と動機を持つということがわかりましたが、具体的な現実の系について、それを表現するCCH,BEMの対象を直接大量の実験をして得るのは非現実的です。
 そこで大抵は、目標とする系を十分記述できるようなCCH,BEMの対象を獲得する発見法的議論を我々は持ち合わせます。その一つは確率論と通常呼ばれているもので、

G:{\bf Meas,Top,CptHaus}\rightarrow {\bf CCH}

です。G(X)はその空間上の適当な確率測度のなす空間です。つまり確率測度の集合を状態とみなす関手です。一方で量子力学

P:{\bf Hilb}_{iso} \rightarrow {\bf CCH}

ヒルベルト空間と等長写像を、密度行列と等長写像の両側積に移す。

とか

M:CP({\bf Hilb}) \rightarrow {\bf CCH}

※上に加えて一般にCPTPを許容する。

とかやるわけです。作用素環で物理やりたいという奇特な人たちは先に事象側を作って

\lt 1:{\bf C}* \rightarrow {\bf  BEM}

とかをやります。この場合の対象はC*代数を単位的と思って、レーヴナー順序で1以下の作用素をEffectModuleと見なします。それから、これだけでは事象や状態の一方だけなので、双対圏同値の\hom(-,I)を使って作っておきます。こうして補完された状態や事象の全てに意味がある保証はありませんが、随伴の普遍性のお陰で、外延性の限りで一番デカイのが手に入るので実証主義的には困りません。

 

 さて、こうした構造を考えたときに、測定とはなんでしょうか? 
 ここで「測定値標本空間の値xを得ること」というのはしばし問題になる勇み足です。なぜなら、もしその一点確率測度がゼロならばその現象は起き得ないことになります。手っ取り早くかつ十分受け入れられるほどに禁欲的なのが、\bf CCH\mathrm{id}_{\bf CCH}Gに関するコンマ圏をとることです。
というのも、この圏の対象は、「状態空間から確率測度のなす空間への凸写像」なので、測定器を用意して、相互作用させ、系を捨てたが、測定器のメーターはまだ見てないという状況にあたります。一生見なくていいよ。

 測定過程も同様で、{\bf CCH}での適当な(例えばLocalTomographyを仮定するとか)テンソル積を考慮した上で、{\mathrm{id}_{\bf CCH}}G \otimes \mathrm{id}_{\bf CCH}のコンマ圏を考えればよいことになります。そうしたらこの対象は出力系に合成された「測定器系」に測定結果をストレージするが、系は捨てていないという状況になります。

 

 ここで測定過程M:S_1\rightarrow S_2 \otimes G(X)を考えましょう。
ここで、G(X)側に、好きな事象Aをツッコミます。それからS2の状態を消去すれば、測定結果がAである確率が得られます。

この確率で、Aを突っ込んだだけの未規格化状態を規格化します。これは事後状態とみなせます。もしS_1,S_2が密度行列であり、
MがCPinstであれば、これはinstrumentの事後状態処理そのものです。これは射影測定過程を含むので、これは射影仮説と同じことをしています。

 

 RN微分を考えることもできます。S_2の任意の事象E_2\in\hom(S_2,I)を評価させると、唯の測定値集合上の測度:規格化されていない確率測度がのこります。
これとS_2の自明な事象で消去した場合と比べると絶対連続なのでRNを行うことができます。このRN微分の結果を、E_2についてCurryすれば、測定値集合インデックスされた状態が出来上がります。
(ただし、単なる測度のときに準じたRegularityがどこかで必要になると思われる)

 

 以上の操作はS_1,S_2が確率測度の凸空間であれば、たんに条件付き確率の処理に同じです。つまり凸空間としてのS_1,S_2の数学的実装が違うだけで、
やっている処理は同じなのです。RNができるのも同じです(これは\bf CCH\bf BEMの双対の直積位相で入れているのも効いている)。

すると、もし誰かが条件付き確率の処理を自然に行っているならば、その人が量子力学での射影仮説を拒む理由は何処にもないのです。
射影仮説は理論に「事後」を考察することを許容することと等価で、これは量子だろうと古典だろうとどの確率論でも同じです。
逆に言えば「事後状態は…」とか「結果Aを得て…」という状況を考えるのをやめれば射影仮説どころかもっと広汎に「事後」概念を捨てられます。

そして捨てたところで失うものはありません。
繰り返しますが、「結果Aを得て…」または「結果xを得て…」という条件下での事後処理を表現したいという動機がありますが、
今測定プロセスがM:S_1\rightarrow S_2\otimes G(X)と書かれているわけで、
このあとに事後処理を表現するXからの可測写像Gで移したものを続ければいいだけだからです。G(X)\otimes S_2みたいな空間からの写像というのを考えるのになんの困難もないのですから。
 このとき「結果Aを得て…」という文脈は現れませんが、どの結果が出ようが確率がゼロだろうがちゃんと写像されてなんの問題もなくモデル化できます。「結果Aを得て…」という文脈を欲しがっているのは人間であって、現象ではありません。
現象は単に十分豊かな(可測、凸、CPTP…そのミックス)写像があれば書けるわけです。

すると、射影仮説が良いか悪いかというのは、

 

「「結果xを得て…」という主観的体験の分岐可能性を数学的モデルが表現できて欲しい」という要求をどこまで理論に押し付けるか?

 

という話にすぎないのです。で、別にそれはどっちでもいいわけです。やりたいならばやれば?という話で終わりです。数学的には可能だし、RegularであればRN微分で、測定値の各点ごとの条件付けもできます。ただし、条件付き確率と射影仮説は同じ階層にいる概念なので、一方を受け入れて一方を拒否するのはダブスタです。これは認められない。あなたはどちらがお好みですか? 僕はRN微分がかっこいいので条件付けしたいです(そうじゃない)

 

2.マラ9

 

を聴いて来ました。先週末。慶応のワグネルソサエティという大学オケです。

http://www.wagner-society.net/

マラ9はいいぞ(布教をしようと思ったがここで息絶える)。