数理科学12月号
数理科学2014年12月号「場と力の物理イメージ」を読んだ。
特集ではなく、連載「フィールズ賞で語る現代数学」第三回「群と対称」が面白かった。例の有限群の完全分類はパワフルな学者がごり押しで解決したみたいなイメージを持っていたけど、結構紆余曲折があったんだなとか。それに群論というのは古典的に完成されているというイメージだったけど、頂点代数とモンスター群のような新しい話題が出る余地があるのだとか。
数理科学2014年12月号「場と力の物理イメージ」を読んだ。
特集ではなく、連載「フィールズ賞で語る現代数学」第三回「群と対称」が面白かった。例の有限群の完全分類はパワフルな学者がごり押しで解決したみたいなイメージを持っていたけど、結構紆余曲折があったんだなとか。それに群論というのは古典的に完成されているというイメージだったけど、頂点代数とモンスター群のような新しい話題が出る余地があるのだとか。
C言語はユーザからレジスタの自由を奪う事によって成立した。今度はポインタの番だ。
目標:
C言語からポインタを取り除く事:
これによりヌルポインタアクセス、バッファオーバラン、リークなどの問題から一切解放される。さらに多重参照(エイリアシング)の問題から解放される。またmalloc/freeなどのメモリ管理コードが不要になる事により行数が削減される。ガベージコレクション停止はない。
注意しなければならないのは、python、rubyなどのLLやJavaでさえ、糖衣により見えにくくしただけでポインタの問題は解決できてないことだ。identity演算子、強/弱の参照の使い分け、エイリアシングによるバグ、ガベージコレクタによる停止などの形でポインタの問題はユーザを悩ませ続けている。
現在のC言語で出来る事は何でも出来る事:
UNIXカーネルなども原理的には書き換え可能であること。
C言語で出来たライブラリを呼び出す事が出来る事:
将来的には:
Cよりも速く走る事が可能な言語仕様にする。
なぜ可能であるか:
どうしてC言語からポインタを除く事が可能かは、なぜC言語にポインタがあるのかを考えれば分る。以下に見るようにすべて現代では当たり前の機能によって置き換え可能である。つまり少々モダンな言語機能を足せば可能である。
1、今のプログラミング言語であれば、配列や構造体のようなデータ構造を関数に渡したり、関数から返したり出来る。しかしC言語ではそれを省略してポインタで間に合わせることにした。
2、今のプログラミング言語では、複数の戻り値を返す事ができる物が多い。しかしC言語ではそれを省略してポインタで間に合わせることにした。
3、今のプログラミング言語であれば関数は配列などの大きなデータ構造を返す事が出来る。しかし、Cではそれが出来ないので、関数にポインタを渡して値を入れてもらう。あるいは関数の中でmallocして、ポインタを返す。
4, 今の言語ではリスト、ベクトル、ハッシュ、構造体がある。他のデータ型はこれらから作る事ができる。
対して、Cではこれらすら用意するのがめんどくさかった。
配列を*(a+i)のシンタックスシュガーにしてコンパイラを単純にしたかった
-> 最小のコンパイラで最大の効果
-> 現代の視点ではコンパイラを単純にするより言語を単純にすべき
単に最初のCコンパイラは最適化がほとんどなかったから
5、今のC実装では配列のindexing a[i]はポインタよりも早い事さえある。だけど昔の実装ではポインタを使ったほうが早かった
6,今の言語ではいろいろな型(多相)を返せる、受け取れる。Cは出来ないのでしばしばポインタのキャストが使われる。また構造体Aに構造体Bが含まれ構造体Bに構造体Aが含まれるというような時にはポインタが必要。これも任意の型を入れる事が出来ればOK。
以上のように今では普通の機能を足せばポインタは必要なくなる。
あと一つだけ、漏れているのは
7, ヒープアロケートしたものが欲しい
たとえば、生成と解放の順序が予測不能(というよりコールグラフで表現不能)なものがある( ex. 人間などが順不同に生成、削除するものなど)、グラフ構造を作りたい(たとえばwindowのView Hierarchy)という場合。この辺りがいかにも神秘精妙に見えるから、ポインタを無くする事が出来ないという信仰につながるのだと思う。
これについては、ユニークなキーを自動生成する関数と組み合わせた連想配列で十分。その速さは原理的に最悪でもmallocと同じにできる。(キーの列挙不能な連想配列をmallocと同一視するプラグマが可能だから。現実的には違う種類のグラフや入れ物を混合するmalloc/freeは遅い。)
次に提案言語のプログラムがなぜCよりも速く走ることが出来るのか。第一には現在多くの最適化の障害になっているのはエイリアシングであり、それがない分だけ最適化がアグレッシブにできる。(c.f 「多重参照 (aliasing)」の問題点 )
第二には、現代的な配列などを使いポインタを無くすれば、コンパイラはデータをヒープに置くかスタックに置くか、レジスタで済ますかを自由にオプティマイズできるからだ。ヒープに対してスタック上のalloca()は何倍も速く確保できる。
例えば行列のライブラリを作ったとすると一般の場合に適用できるようにデータはヒープ確保になる。しかし、ローカルな寿命しか持たなければstack上に何倍も速いalloca()で確保できたはずである。さらに行列が小さければレジスタに確保できたかも知れない。
もちろんCでもこれらのオプティマイズは手作業で可能である。しかし現実的にはそこまで手間をかけられない事のほうがが多く、提案言語の方が速くなる。
C言語のプログラマはポインタを生成するとき、必ず頭の中で、ポインタで指される先は関数呼び出しで変更されるのかされないのか、エイリアスの可能性はあるのか、ポインタの寿命はどこまでか、指し示されるメモリの寿命はどこまでかを追跡している。この種の静的解析はコンパイラの方がずっと上手にできる。これから解放されたらどれだけ楽になる事か。
最初にC言語がレジスタを隠蔽したとき「そんなので速いプログラムを書く事が出来るのか」と言われた。しかし今では人間が割り当てるよりも速く走る。今度はポインタを人間の手から奪うべき時だ。
またポインタがないことにより、多くの場合データを所有している継続が1つになり、自動的な並列化を行いやすいことも速さにつながる。
段階的進行:
第一段階:
C++へのコードトランスレータとして実現する。
copy on write
第二段階(将来):LLVM上で最適化を実装。
データのメモリへのストアの仕方がコンパイラの自由になることを利用
参照数のコンパイル時追跡によるコピーの削除、参照カウントの削除。ヒープ割り当てからスタックやレジスタへの割り当て。配列長の追跡による配列長の省略。
遠い将来:
これをC++言語にまで適用したい。C++の膨大な言語仕様の大半はポインタがなければ削除可能であろう。そしてtemplateとconstexpr周りを新しいマクロ機能として再構成したい。
UNIXカーネルの書き直しなど
データ・サイエンスのプログラミング言語はRからPythonに置き換わる - エキサイトニュース(1/3)
Pythonが優勢になりつつあるという記事の主旨には反対しない。(統計解析以外のライブラリが圧倒的に充実しているから。)でも以下に見る細部はなんだか的外れだと思う。(ちなみに私はRは3年くらい、Pythonは3ヶ月ほど使った程度。)
このシフトの理由はいくつかあるようだが、第一にはPython自体が汎用的で比較的学びやすい言語であるのに対し、Rが習得するにあたってやや複雑であることがあげられるだろう。
とくにそんな事はない。どっちも同じ程度に使いやすい汎用言語。「汎用言語」という言葉があるかは知らないけど、チューリング完全でほとんどなんでも出来る言語のこと。
Rは実際にはプログラミング言語ではない Rを覚えることに苦労する人が多い理由として考えられるのは、Rが実際にはプログラミング言語ではないからかもしれない。R専門家のジョン・クックいわく、Rとは「統計のためのインタラクティブな環境」であり、厳密にはプログラミング言語ではないのだ。彼はさらに「Rをプログラミング言語だと考るのではなく、Rがプログラミング言語を内包しているのだと考えた方が良いと分かった」と述べている。 つまりRは伝統的なプログラミング言語とは本質的に異なっており、この点が技術者にとってRのニュアンスを理解しにくいものにしているのだ。
Rは他のLLと似たような汎用言語で統計関係のライブラリが特に充実しているくらいが違い。あとは本当に普通のプログラミング言語。
なぜRは普通のプログラミング言語でないといいたがる人がよく居るのか分らないけど、
もしかするとその理由はSPSSやSASをやっていた人に「プログラミング言語だから」といって尻込みしてもらいたくないからなのだろうかと想像している。
RはSASやSPSSなどの統計ツールに精通している技術者であっても習得が難しいとボブ・ミュンヘンは強調している。Rにはマクロやマトリックス言語などが組み込まれているので、SPSSなどのツールと違ってそれらの言語を別途マスターしなくて済む。その点は確かに楽だ。しかしRがStataのように動作するものだと期待すると失望させられることになる。 Rは特殊なのだ。だから難しい。
SASやSPSSを使ってた人にとってRが難しいのはむしろ、普通の汎用言語をプログラムした事が無い人にはプログラミング言語を理解するのが難しいからじゃないかな。普通の解析をするくらいならプログラミングは必要なくとも、何となく気持ち悪さとして感じるはず。
だからこの文章は、普通の言語をやっていなかった人に取ってRが難しいかという話と、普通の言語をやっている人に取って難しいかという話を、不当に混同させているように見える。
直線へ当てはめをする回帰分析にAICを適用する方法は、ここの「AICとは」に簡単な説明がある。でも、もっとぶっちゃけて簡単にしちゃいます。
(サンプル数) × { log(パラメータを一つ減らしたモデルの残差の分散) - log(減らす前の残差の分散) }
しばらく、コメント欄は承認制にします。スパムが多すぎてかないませんので。
承認はきっと月に1度程度しかしないと思うので、コメントが現れるまではずいぶん時間がかかるかもしません。
新しいマシンにTeXをインストールせざるを得なくなった。MacTeXとそれに含まれるTeXLiveってすごいな。今時のTeXの世界はこんなに多機能、複雑になっていたのか。(最初から複雑だったけど、さらに。)
しかし20年来の夢だったのに、最近のTeXでも数式の中にギリシア文字や簡単な記号を入れられないとは。失望。それだけの事で編集中の数式の可読性は大きく上がるのに。
頭に来た私は、Cipher言語の為に作った数式入力フロントエンドにTeX書き出し機能をつけて一日で作ってやったぜ。
こういう風に入力すると
こういう風なTeXを書き出します。いかにTeXの数式が冗長なのかよくわかる。一方ギリシア文字、記号、上付き下付き以外はTeXコマンドそのまま。そうしないとTeXの再実装になってしまうから。
個人的にTeXに感じていた不満はこれでほとんど解決したので、もうTeXには深入りすまい。解決してない不満はインストールと設定のめんどくささだが、これは永久に解決しないだろう。一度普及した上に複雑化したものが単純化した例はないからだ。
で、終わったあとにunicode-mathというのがある事を知る。ギリシア文字を使える。(ただそのドキュメントを読んだら、記号とかの記述が無かったけど記号はダメなの?(しかしφとεがまっすぐか曲がっているかというのはフォント依存なので、うかつにやると問題がある。しかしそれは本文用のgreekのことで、他のコードポイントに数式用のgreekがあって、これはフォント依存しないようだ。)
しかし、unicodeには本文用のギリシア文字とは他に、math greekというのが別にあるのだから、それくらいはXeTeXの本体に取り込んで欲しかった。ギリシア文字や記号が直接入れられないのはTeXを実装した時点の端末や文字コードの制約のせいで、もし今クヌースがこれからTeXを作るところだったとしたら必ず、入れてたと思うのだけど。
googleの中の人たちが作ったword2vecというモノがあります。deep learningを自然言語(N-gram?)に適用することにより単語を100次元くらいのベクトル空間にマップする物だと思います。面白さは以下のベージの通りですが、たったこれだけの事で、ほとんど意味理解の一歩手前まで到達していると思います。
Taku Kudo : word2vec で少し遊んでみた。いわゆる deep…
面白いのは、2つのベクトルの差が、2つの単語の関係をよく近似してくれること。
(中略)
A B C → X (A → Bの関係に対し、 C → X に当てはまるXを探す)グーグル ヤフー トヨタ → 日産
渋谷 新宿 札幌 → 旭川
警察 泥棒 正義 → くそ
平和 戦争 左 → 右
社員 会社 生徒 → 小学校
空 海 天井 → 床板
生きる 死ぬ 動く → 止まる
・・・
Deep-learningはラテン語の動詞活用を学習できるか?
est: sum (to be) の直説法現在3人称単数
sunt: 同3人称複数
dat: dō (to give) の直説法現在3人称単数
dant: 同3人称複数
おおすごい。
word2vecに英辞郎データを放り込んでみた - naoya_t@hatenablog
("see" と「見る」の関係が、"find" と何の関係に似ているかを調べます)
------------------------------------------------------------------------
見つける 0.450238
見いだす 0.439524
喜ぶ 0.435330
最後のなんか本来の使用法と違うと思うけど、意味がある結果が出て来ちゃう。
上はうまく行った例で、やってみるとずいぶん間違った類推も多いですが、うちにいる4才児もまあ似たようなものです。しかも学習時間は日本語wikipedia全文を突っ込んでもわずか30分程度。人間ってなんなんだろうと思いますよ。機械学習だし人手に比べれば不完全極まりない訳ですが、WordNetのような意味ネットワークを作ろうとする試みの足下くらいには30分で自動で行っちゃえるわけですよ。
で、上記のような自然言語処理(NLP)を知っている人にとってはword2vecの扱いは簡単すぎるくらいだし、形態素解析などの前処理も常識すぎるので、やり方を書いてないのですが、私のようなやった事の無い人はちょっと困った訳です。で、やり方を以下にまとめておきます。(私の環境はOSX 10.9ですが、ほかのversionやほかのUNIXでもほぼ手続きは同じだと思います。)
(ちなみに単に試してみたいだけなら、自分で走らせる必要は無くてDEEP LEARNERというwebサイトがあって類義語や上記の3項アナロジーなどを試す事が出来ます。)
まずはコーパスを持ってこなくてはなりません。まずは無料で簡単に手に入るWikipediaの日本語版にします。
http://ja.wikipedia.org/wiki/Wikipedia:データベースダウンロードからたどれる
http://dumps.wikimedia.org/jawiki/の
jawiki-latest-pages-articles.xml.bz2をダウンロードします。bz2圧縮されたファイルの大きさは2GBに届かないくらいです。
次にxmlやらwiki記法などをなどを取り除いてplain.txtにするひつようがあります。それには長谷部氏のwp2txtを使うのが簡単です。
CUI版はhttps://github.com/yohasebe/wp2txt
GUI版はhttp://rubyforge.org/projects/wp2txt/
です。(wp2txtはRubyを必要としますが、OSXでしたらプレインストールされています。)GUI版はもうupdateされていないのでCUI版のほうが良いのですが、堕落したMacユーザである私はGUI版を使いました。wp2txtは直接bz2圧縮ファイルを入力出来ます。wp2txtの出力ファイルは99MBにする事をお勧めします。それでも20個ほどの出力fileができますが。私は出力のコードはUTF8、本文paragraph以外の出力はみな抑制しましたが、これはお好みで。出力は20個ほどのファイルに分割されますが、そのときはターミナルappから
cat jawiki-latest-pages-articles.xml-* > jawiki.txt
などとして連結すればよいです。このテキストファイルの大きさは今だと2GBちょっとくらいです。
次にword2vecは単語ごとにスペースで分かち書きされている必要があるので、そのために工藤さんのmecabをインストールします。私は「オススメ」のipa辞書を使いました。方法はmecabのページ
http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html
に分りやすく書いてあります。OSXの時はsuしてmake installが
% sudo make install
になるのが注意です。macabはデフォルトでは文字コードがEUCなのですが、このページの説明書き通り辞書を
% tar zxfv mecab-ipadic-2.7.0-xxxx
% ./configure --with-charset=utf8
% make
とやってもUTF8に出来ませんでしたが、2番目の方法
% cd mecab-ipadic-2.7.0-xxxx
% /usr/local/libexec/mecab/mecab-dict-index -f euc-jp -t utf-8
# make install
で、うまく行きました。(ただ、はまっている間mecab本体に対しても./configure --with-charset=utf8をやったのも効いている可能性があります。)
mecabのインストールが出来たら先ほどのtext化したファイルに対して
% mecab -Owakati jawiki.txt > jawikisep.txt
として分かち書きします。
次にword2vecのインストールです。本家
https://code.google.com/p/word2vec/
からソースコードをダウンロードして一つのフォルダに入れます。で、私の環境ではソースコードから#include
% make
です。
最後に、先ほどの分かち書きしたファイルに対してトレーニングを行います。
% ./word2vec -train jawikisep.txt -output jawikisep.bin -size 200 -threads 4 -binary 1
どうも-binary optionをつけないと次に使うとき読み込めないようです。驚くべき事に30分程度でトレーニングが終わります。
あとは
./distance jawikisep.bin
とか
./word-analogy jawikisep.bin
とかして楽しみましょう。
私は最初はwikipediaの最初の10MBでやっていたのですが、これは精度が低かったようです。100MBにするとすこし改善、1GBにすると大きく改善。全部(2.2GB)にするとさらに少しだけ改善しました。上の工藤さんの例ほどうまくは行かないのですが、まあ、wikipediaは文体に偏りがあるからかも知れないとおもっています。たとえば光→闇、善→?とかやるとでない訳ですが、まあ、wikipediaって「闇」とか「善」とか使わなそうですしね。
さらに上のDEEP LEARNERにも負けているっぽいのですが、これは学習のパラメータをもう少し勉強した方がいいのかも知れません。
もしかしたらビットコインは新しい時代の主要な通貨になるかも。と思っていたが、考えなおした。
ビットコインはベアラー型の通貨であり価値を保証する政府も必要としないと聞いて「これこそ未来の通貨だ」と思った。(あとに説明するように実際はベアラー型ではないみたいだけど。)
例えば現金は(それ以上に株券は)持っている人がそれを行使できる。受け取る方としてはいちいち政府に問い合わせたり、信販会社のサーバに問い合わせたりする必要は無い。これがベアラー(持っている人)型。このようにコントロールする中心のなさという点はコンピュータ利用のこれまでの歴史を正しく発展させる方向だと思った。
またキャッシュカードなどと比べてトランザクションコストが大幅に低いらしい。例の1円とかの支払いはキャッシュカードでは難しいらしいという問題ね。
しかし、ビットコインは総発行量に限界がある。これはコンピュータの限界とは何の関係もない制約だ。 最初は数学の定理とかで絶対的に上限が定まっているのかと思って興奮したがそんな事はなかった。既存ノードたちが発行量についての規約(サトシ論文)に反するような事をする新規ノードを許さないというだけだと思う。これ自体はむしろ必要な事で発行量を制限しなければ制御不能なインフレになって価値が暴落してしまう。しかしだ、そういう本質的でない制約を持ち込むと、他の外に作られたネットワークに取って代わられる危険があるのでは無いかと漠然とした不安を感じていた。
そこへ、中里さんのこの記事を読んで、ビットコインは長期的にはダメだろうと考える事になった。ビットコインは本来的な限度の無さというコンピュータの本性に反しているからだ。
例えばコンピュータのなかではコピーの回数には制限が無い。ハードウェアの仕組みを知っている人からするとむしろコピーこそコンピュータの動作原理であるくらいだ。それを制約する方が無理がある。だからDRMなどを実現する方がずっとめんどくさい。このようにコピーの限度の無さというのがコンピュータの本来の性質だ。
IPv4のアドレスの有限性を所与の物として、それを市場取引で分配しようと提案した経済学者もいたけど、世の中はそんな風になる必要は無かった。IPv4に見るような通信のIDの数の上限もコンピュータの本来の性質ではない。たまたまだ。そんな制約に我々が縛られる必要はないのだ。
中里さんが例示したセカンドライフの中の不動産というのもダメだった。仮想空間のなかでの土地が有限でなければならない理由など確かにない。
DRMなどまだ決着がついてないものもあるにせよ、コンピュータの本来の限界と関係ない限界で我々を縛ろうとする試みは概ね失敗する運命にあるようだ。
さて、ビットコインは何なのか。現金や金のように物としての存在自体(あるいは複製の難しさ)が価値を保証するわけではない。私が理解したところでは、どちらかと言うとビットコインは分散型の帳簿システムだった。例えると単一サーバがファイルを配布するシステムに対してWinnyが分散されたネットワークとして全体として落ちる事の無いパフォーマンスのよいファイルサーバを構成していたような物。同様に、これまでのカードや銀行のシステムは中心があってつじつまのあう帳簿システムを提供していたのに対して、ビットコインは近隣のノードとやり取りするノードによるネットワークが全体としてだます事が難しいコンシステントな帳簿システムを提供しているということ。
ビットコインが(金のようなコピー不可能な実態を作り出すものではなく)分散型の帳簿システムであるならばトランザクションコストの低さなどの利点は他のコンシステントな帳簿システムのすべてにも利用可能である。コンシステンシとは誰かが(お金などを)あげたら相手の増えた分だけきっちり減るという事だ。帳簿システムのコンシステンシを中心に出来上がっているものは、例えばキャッシュカード会社、銀行、証券会社である。また、ネット上の(マイクロ)ペイメントの会社もみなそうだ。
これらの企業の中で、分散型の帳簿システムを採用したところに今後注目するべきだろう。それによりトランザクションコストは大幅に下がり他の企業に対する競争の優位性になる。新しい時代のお金の使い方が生まれるかもしれない。そうすればむしろ「採掘」のコストや採掘されたものを記録しておくコストが無い分だけ、ビットコインよりも低コストなはずである。(ビットコインは本来ない制約を設けるために余計なコストがかかっている。)ビットコインはそれら「他の物」が立ち上がるまでの期間だけ栄えるだろう。
なぜ今まで一貫してコンピュータ利用は制約を逃れて来たかというと、コンピュータの本質と関係ない制約を受けない新規参入者は、制約を受けない事による余剰の資源をほかの利点を伸ばすことに使い利便を増やしたからなのだろう。
コンピュータの本来持っている制約のなさに立ちふさがる物はみな、おそらく引きつぶされて行くのだろう。
これだけでとりあえずの用は済んでいるという話です。branchの切り替えとかcommitはXcodeから出来るので覚える必要ないし。OSは 10.8 と10.9、Xcode 5。
まずはインストール。webを見るとgitのインストールから紹介しているところがありますが要りません。Xcodeにはgitが含まれているので、パスを通すだけで良いです。$HOME/.profileに以下を足します。
export PATH="$PATH:/Applications/Xcode.app/Contents/Developer/usr/bin/"
あとはterminal.appで当該ディレクトリに移動して使います。
コミットをアンドゥしたいときは: git reset HEAD~1
最近のcommitを見たい時は: git log
ブランチのリストは: git branch
ブランチを削除したい時は: git branch -d ブランチ名
ただし、mergeしてないブランチを消滅させたい時は: git branch -D ブランチ名
お役立ちのサイトは:
サルでもわかるGit入門
Git Book
In quantizing gravity, we have the trouble of missing time. This trouble may most easily be explained in a simplified Wheeler-DeWitt equation, which will be shown in the former half of this article. In the latter half, I will present my tentative idea on this issue. A prime symbol will be used to mean a time derivative because of web limitation.
(Japanese version of this post is available.)
The most popular way to quantize is using canonical formalism. ADM formalism [1] is usually used in handling the canonical formalism of gravity. In ADM formalism, the metric of the spacetime will be written as
gμν =
( -N2+NiNj hij Nj
Ni hij )
(A matrix will be denoted in the way above because of web limitation.) Wheeler-DeWitt equation of isotropic space will be considered here, because the problem of time is not different even with the full theory that includes non-isotropic fluctuations. The metric of the isotropic space is
ds2 = - dt2 + a2(t) ( dr2/(1 - kr2) + r2 dθ2 + r2 sin2 θ dφ2 ) ,
where k stands for the normalized curvature. This metric is called Friedmann–Lemaître–Robertson–Walker (FLRW) metric, or shortly, Robertson–Walker metric. In ADM formalism, this metric corresponds to
hij =
( a2/(1 - kr2) 0 0
0 a2r2 0
0 0 a2r2sin2 θ ) (1)
with Ni = 0. The Lagrangian for this metric is
L = ∫d3x √{-g} R = ∫d3x N√h ( 3R - K2 + (Kij)2 )
after an tedious calculation, where Kij = hij' /2N で Kij = hikhjlKkl , K = hijKij. The integration gives
L = 6 (N k a - a a'2 /N) .
(The factor 6 will be abbreviated afterwards.)
To quantize, we usually consider that we need to move to canonical formalism, which is an idea originating in Dirac. The canonical momenta for this system are
Π = δL/δN' = 0
π = δL/δa' = - 2 a a' /N .
Here the canonical variable Π is not free and permanently under the condition Π = 0. Such condition is called ``constraint'', and a system with at least one constraint is called ``constrained system''.
How should the constrained systems be treated in canonical formalism? The Dirac's idea is as follows[2]. We begin with defining the Hamiltonian with H = Π N' + π a' - L as usual. Then
H = N ( k a - π2/a ) .
Because the condition Π = 0 should hold after time evolution under this Hamiltonian, we have another constraint condition:
0 = Π' = dH/dN = ( k a - π2/a ) ≡ φ .
Such conditions that come from the consistency of the constraints over the time are called ``secondary constraints''. Repeating such a procedure until we have no more secondary constraints, we will have a set of equations that is equivalent to Euler-Lagrange equations. We are happy with this result in classical mechanics.
However, we have trouble in quantum mechanics. Wheeler and DeWitt considered that the constraints should hold on any quantum state |ψ〉[3]:
Π |ψ〉= 0 ,
φ |ψ〉= 0 .
In the case of quantum gravity, we have
H |ψ〉= 0
because of those condition. No time evolution will occur under those conditions, which effectively mean that there is no time. This is the problem of time in quantum gravity.
Here I start presenting my tentative idea for the standard description of the problem above. I suggest introducing a variable T = ∫dt N instead of g00 = N to solve the problem of time. This variable is subjective time for the observer in the system. With this variable, the Lagrangian is
L = (dT/dt)( - a (dt/dT)2 a'2 + k a ) .
This way of parametrization is not strange since this is the same as that of string theory. (What would occur to string quantization if we impose constraints on the states instead of the customary method of gauge fixing? This question is answered in [4], which have less difficulty than the customary method.) This variable T may be regarded as a local coordinate of the spacetime, and also regarded as a chart of the spacetime manifold.
Let us move to canonical formalism.
Π = δL /δT' = a (dt/dT)2 a'2 + k a ,
π = δL/δa'= - 2 a a' /N .
Since we have condition
Π + π2/4a = ka
irrespective of time, this system is a constrained system. With the definition H = Π N' + π a - L, we have
H = 0 .
It can be easily seen that we have no more constraints. Using the WdW idea, we have an equation for the wave function:
(∂/∂T + π2/4a - ka) |ψ〉= 0 .
This equation may be physically interpreted as a Schrödinger equation with its time variable T. (The variable T gives physically meaningful equation in contrast to taking t and N as variables, which have gauge indeterminancy.) Why taking variable T was better? The answer may be that gravity is rather a dynamics of manifolds (or local coordinates) than a dynamics of the metric. If we consider that our curved space owes to embedding into higher-dimensional space, this choice of variable is more natural.
Let us see the physical outcomes of this new method. The equation of motion out of this method is
a a'2 / N2 + ka = λa3/3 + Π .,
On the other hand, the customary method gives
aa'2 / N2 + ka = λa3/3
.
The solution of the ordinary method a = exp √{λ/3} t , for the case of k=0 for brevity, is known as de Sitter space is solution of
a'2/a2 = λ/3 .
In contrast, the differential equation of our method is
a'2/a2 = λ/3 + Π/a ,
and we easily see that the universe tend to expand more than the conventional theory.
Thus our method gives a little bit different outcomes from that of Einstein equations. Usually one may want to abandon such a theory. Though we have unusual situation where we are considering on the ``dark energy'' to explain excessive tendency of expansion, which can include some deviation from Einstein equations. Our method has a virtue of explaining that fact with minimal change without adding any new matter nor any new mechanism.
[1] Arnowitt, R.; Deser, S.; Misner, C. (1959). "Dynamical Structure and Definition of Energy in General Relativity". Physical Review 116 (5): 1322?1330.
[2'] P.A.M. Dirac, Lectures on Quantum Mechanics (Belfer Graduate School of Science, Yeshiva Univ., 1964)
[3] Usually, we handle quantization of the constrained systems with gauge fixing in Lagrangian, or gauge fixing in canonical formalism to bring it to the Dirac brackets. The Wheeler-DeWitt idea of using the constraint equations as if they are Schrödinger equations is only seen in the context of quantum gravity, as far as the author knows.
[4] T. Mogami, Quantization of Nambu-Goto Action in Four Dimensions, arXiv:1005.2726.
P.S. My question about this tentative idea is if it is generally covariant since what is lost is R00 component of the Einstein equations sparing other components like Rii. However, since it is based on the invariant action of dynamical variables which is a local coordinate of a chart of the space-time manifold, it cannot break general covariance. I would like to investigate this point sometime.