2016年5月27日金曜日

継続と大域脱出

継続を使う例として空リストを受け取るなり脱出するflattenの例がよく挙げられるが、その動機がよくわからずやる気が出なかったので別の例を考えた。

引数の総積を求める関数はSchemeで次のように書ける。

(define (prod x . xs) (if (null? xs) x (* x (apply prod xs))))

(prod 1 2 3 4 5 6 7 8 9 10)
3628800

複雑にネストした数のリストにも適用したければ次のようにすればよかろう。
(define (prod-nest x . xs)
(let prod-aux ((y x) (ys xs))
((lambda (p) (if (list? y) (p (prod-aux (car y) (cdr y))) (p y)))
(lambda (a) (if (null? ys) a (* a (prod-aux (car ys) (cdr ys))))))))

(prod-nest '(1 ((2) 3 4 5) 6) 7 '((8 9) 10))
3628800


だが、総積は引数にゼロが発見され次第ゼロを返せばよろしい。さもなくばゼロに数を掛け続けるというシーシュポスもびっくりな行いをし続けなければならない!ゼロを発見次第ゼロを返すというのは、ゼロを発見次第継続にゼロを渡すということである。

これには次のように式を加えてやれば良い。ちゃんと中断していることがわかるように経過をprintした。
(define (prod-nest-cc x . xs)
(call/cc (lambda (cc)
(let prod-aux ((y x) (ys xs))
((lambda (p) (if (list? y) (p (prod-aux (car y) (cdr y)))
(begin (print y) (if (zero? y) (cc 0) (p y)))))
(lambda (a) (if (null? ys) a (* a (prod-aux (car ys) (cdr ys))))))))))

(prod-nest-cc '(1 ((2) 0 4 5) 6) 7 '((8 9) 10))
1
2
0
0

なお、即座にゼロを返すようにする、だけでは上手くいかない。
(define (prod-nest-x x . xs)
(let prod-aux ((y x) (ys xs))
((lambda (p) (if (list? y) (p (prod-aux (car y) (cdr y)))
(begin (print y) (if (zero? y) 0 (p y)))))
(lambda (a) (if (null? ys) a (* a (prod-aux (car ys) (cdr ys))))))))

(prod-nest-x '(1 ((2) 0 4 5) 6) 7 '((8 9) 10))
1
2
0
6
7
8
9
10
0
あくまで同一階層内の脱出に止まっていることがわかる。

2016年1月25日月曜日

xyjaxが機能しないとき

mathjax およびxyjaxをそれぞれのドキュメントを参照して正しくインストールしたはずなのにxyjaxが機能しないとき(コンパイル後にダイアグラムが消えてしまう)、mathjax.jsをロードする際にconfig=TeX-AMS_CHTMLを渡しているのが問題かもしれない。これは設定を省略するために渡しているので、extentionにxyjax.jsを追加せよとの記述を上書きしてしまう。xyjaxを使うためには手で設定を書かねばならないのでconfig=TeX-AMS_CHTMLを渡す必要はない。

2015年11月18日水曜日

Weierstraß の楕円関数と楕円曲線上の点の加法

楕円曲線$C$上の加法は無限遠点を原点$O$として曲線$C$と$y$軸に平行な直線との二交点を$P$、$P'$として$P+P'=O$、また曲線$C$と適当な直線$\ell$との三交点を$A$、$B$、$C$として$A+B+C=O$で定義される。

楕円曲線上の点はWeierstrassßの$\wp$関数とその微分を用いて表わされるが、次の$\wp$関数に対する恒等式が楕円曲線上の点の加法に対応する。
\[
\begin{pmatrix}
\wp(a) & \wp'(a) & 1 \\
\wp(b) & \wp'(b) & 1 \\
\wp(c) & \wp'(c) & 1
\end{pmatrix}=0
\]
ただし$a+b+c=0$。また$A=(\wp(a),\wp'(a))$、$B=(\wp(b),\wp'(b))$、$C=(\wp(c),\wp'(c))$で$A+B+C=O$。

2015年7月27日月曜日

CentOS7 on DELL にてmaple をアクティベート

問題:maple18 を centos7 on DELL T620にインストールしパーチェスコードを入力したら"missing host id for license server"と出てユーザー登録に進めなかった。

原因:NICの名前がeth0でないこと。

解決:
  1. biosdevnameをアンインストール
  2. /etc/sysconfig/network-scripts のifcfg-em1 をifcfg-eth0に変え、DEVICE=... NAME=... の右辺をeth0 に変更する。無ければ作成。
 ついで、/opt/maple18/bin をパスに通しておけばコマンドラインから maple で起動可能。また/opt/maple18/bin/activate で認証可能。

2015年5月14日木曜日

メモ・harmonic superspace とtwistor

※あまり自信がありません。

 Twistor Theory

R. Penrose はMinkowski空間上のnull line をspinorでパラメトライズするという発想からtwistor理論を創始した。(complexified compactified) Mikowski space $\mathbb{M}$上のnull line (plane) はtwistor space $\mathbb{T}=\mathbb{C}P^3$上の点に対応し、$\mathbb{M}$上の点はそれを通るnull line (plane)全体と対応する$\mathbb{T}$内の部分空間$\mathbb{C}P^1$を定める。(このsphere $S^2\simeq \mathbb{C}P^1$は$S^2\simeq SL(2,\mathbb{C})/B$、$B$は$SO(1,3)\simeq SL(2,\mathbb{C})$のBorel subgroup、という形でもとのLorentz群と関連するらしい。)なお(compactified) Euclid space $S^4$に対してはnull なobjectが存在しないので単なる$\mathbb{C}P^1$ fibration $\mathbb{C}P^3 \rightarrow S^4$ が定まる。twistor space $\mathbb{C}P^3$上の正則なベクトル束が$S^4$上のself-dual Yang—Mills equation の解と対応することを明らかにしたのがWard transformation でありADHM構成であった。このようにしてtwistor はself-duality と密接なかかわりを持っている。

Harmonic Superspace

Harmonic superspace はその上のsuper fieldがある種の$\mathcal{N}=2$ supermultiplet を導くような空間であり、$\mathbb{R}^{4|8}\times S^2$である。ここで$\mathbb{R}^{4|8}$は$(x^a,\theta^{\alpha}_i,\bar{\theta}^{\dot{\alpha}i}),i=1,2$でパラメトライズされる空間で、$S^2\simeq SU(2)/U(1)$である。この$SU(2)$は$\mathcal{N}=2$超ポアンカレ代数に作用する。最初に「ある種の」といったのは、$S^2$方向における微分がharmonic superspace上の関数に対するCauchy—Riemann conditionを与えるからである。すなわちharmonic superspaceは“性質の良い”$\mathcal{N}=2$ 超対称性理論を与える。

TTとHS

$S^2$を付すことによって理論に構造をあたえるこの両手法の関連はとりもなおさずself-duality とCauchy—Riemann conditionとの関係に帰すことができる。Cauchy—Riemann condition $\partial/\partial\bar{z} f(z,\bar{z})=0$の形式は一般にchiral condition と言ってもよかろう。一方でself-dual condition もこのchiral conditionの形に書くことができる。$F_{\dot{\alpha}\dot{\beta}}=0$は$[D^
{++},D^+_{\alpha}]=0$と等価。ここで$D^{++}=u^{+i}\partial/\partial u^{-i}$、$D^+_{\alpha}=u^{+\dot{\alpha}}D_{\alpha\dot{\alpha}}$、$u$は$S^2\simeq\mathbb{C}P^1$の座標である。(twistorの文脈でコホモロジーが色々出てくるのは高次元版Cauchy—Riemann conditionを処理するためとも言える。)この式はclassical master equationでもあり、ここからさらなる普遍性への扉が開かれる。

 参考文献

  1. R. S. Ward and R. O. Wells jr, "Twistor Geometry and Field Theory", Cambridge University Press, 1990
  2. A. S. Galperin, E. A. Ivanov, V. I.  Ogievetsky and E. S. Sokatchev, "Harmonic Superspace", Cambridge University Press, 2001

2015年3月29日日曜日

unshuffle

$L_\infty$-algebra の定義にunshuffleというのが出てきてすこし時間をとられたのでメモ。参考にしたのは nLab

定義 $\sigma \in \mathfrak{S}_{n,k}$がunshuffle であるとは、$0\leq k\leq n$であって$\sigma(1)<\cdots<\sigma(k)$かつ$\sigma(k+1)<\cdots<\sigma(n)$。


\[
\left(
\begin{array}{ccc|cc}
1& 2 & 3& 4 & 5 \\  1&3&5&2&4
\end{array}\right) \in \mathfrak{S}_{3,5}
\]
\[
\left(
\begin{array}{c|c}
1& 2 \\  2&1
\end{array}\right) \in \mathfrak{S}_{1,2}
\]
\[
\left(
\begin{array}{cc|}
1& 2 \\  2&1
\end{array}\right) \not\in \mathfrak{S}_{2,2}
\]

2015年1月16日金曜日

コンピュータリテラシー

情報リテラシーと言った場合かなりコンピュータリテラシーと混同されているように思われる。情報~コンピュータという構図は奇妙だ。ちゃんと分けてそれぞれの趣旨や目的を明確にして学習してほしい。とくに「コンピュータが使える」というのなら、しれっと英文にマルチバイト文字を混ぜたり、異なる改行コードを混在させたり、フォーマットを統一しているふりして適当なデータをよこしたりしないでほしい。なぜコンピュータを用いるのか?その根本は機械的処理にあったのではないか。機械的処理にコンピュータを使えないのならそれは「コンピュータが使える」とは言えないし、機械的処理にふさわしいデータとはどのようなデータなのか考えられないのなら、「コンピュータについて知っている」とすら言えない。そして機械的処理を行わないのならコンピュータを使用する必要すら無い!

問い:ウェブブラウジングと機械的処理との関係を述べよ。

2015年1月15日木曜日

FreeBSD

昨年の末までGentooを調子良く使っていたのだが、新年気を新たにとFreeBSDを入れてみることにした。ユーザー名に"."を使えるかどうかは自明ではないようだが、Mac OS X, Gentoo, そしてこのFreeBSDはOK。はずかしながらとうとうGentooで無線LANを動かすことができなかったのだが、FreeBSDではインストールの段階で自動認識してくれた。portage vs ports は好みが分かれるところだろうが、自分は毎回コンパイルオプションを聞いてくれるportsの方が好み。成功率もportageと比べるととても高い印象。(成功率、という表現はいかに私が怠惰かを表現しているわけなのだが)代数曲面描画ソフトsurfはたしか色々と依存性が複雑で前にDebianか何かにインストールしようとして悲惨なことになった覚えがあったのだが、問題なくmake installで入ったのには感動した。しかしxmonadはcore dumpしてしまう。twmが思ったよりも使いやすく(やはり怠惰ゆえなのだが)これに落ち着きそうだ。デスクトップ上にアイコンのような形で二次元的に最小化しておけるのが楽。タスクバーへの最小化は意外と使い辛い。......というわけで誰の役にも立たないただの日記であった。

2014年12月30日火曜日

xargsに空白を含む文字列を渡す

xargsに空白を含む文字列を渡すにはsedなどで空白をエスケープしてやればよい。

... | sed "s/ /\\\\ /g"|xargs ...

2014年9月29日月曜日

代数構造

「人間が数を(勝手に)足したり掛けたりするのだ」というのが昔の数学だとすれば、今は「数は(自然に)足し算や掛け算の構造を持っている」というのが現代流の数学の考え方のように思える。そもそも数に代数構造を定義できるのは数が代数構造を持っているからに他ならないわけでそれをあたかも人間が定義したかのようにいうのはおこがましい。

2014年4月29日火曜日

下付き完全反対称テンソルの負符号の起源

完全反対称テンソル$\epsilon^{{i}_1{i}_2\cdots{i}_n}$そのものが出てくる理由は体積素もといwedge積とかそういうところにある。だから平坦な場合
\[
\epsilon^{{i}_1{i}_2\cdots{i}_n} \equiv \mathrm{sgn}\begin{pmatrix} 1 & 2 & \cdots & n \\ i_1 & i_2 & \cdots & i_n \end{pmatrix}
\]
で、相対論なんかが関わるときに出てくる$\epsilon_{0123}=-1$のなぞについては
\begin{eqnarray}
\epsilon_{{j}_1{j}_2\cdots{j}_n} &\equiv &
\epsilon^{{i}_1{i}_2\cdots{i}_n} g_{i_1j_1}g_{i_2j_2}\cdots{g}_{i_nj_n} \\
&=& \mathrm{det} g \mathrm{sgn}\begin{pmatrix} 1 & 2 & \cdots & n \\ i_1 & i_2 & \cdots & i_n \end{pmatrix}\\
&=&\mathrm{det} g \epsilon^{{i}_1{i}_2\cdots{i}_n}
\end{eqnarray}
なので、$g$の性質いかんで符号や係数がつく。上の$i_n$はMinkowski添字で、一般座標の添字を考えれば曲線座標バージョンの定義についても納得がいく。

2014年4月4日金曜日

ダブルポインターのこころ?

文字列の集まりを管理しようと思ったら、それぞれの文字列の先頭のアドレスを集めておきたいですね。文字列そのものよりも文字列の場所を教えるほうが親切です。アドレスを格納するのがポインターでしたから、すなわちポインターの配列 *argv[] です。でも渡すのはこのポインターの配列の先頭のアドレス(と文字列の数)だけで十分ですから、ダブルポインター **argv (と argc )が渡されます。

2014年3月28日金曜日

結合則

結合則が成り立つのは総*があるときか。例えば足し算を例にとると、足し算は結合的であるというよりは、総和というものがあって、これは二項演算に帰着できるというほうが正確ではないか。max, minなどについても同様。

2014年3月26日水曜日

位相空間と集合

位相空間論における連続写像は集合論における単射のバリエーションとみなすこともできる。「行った先が同じなら元も同じ」「行った先が近いならば元も近い」。むしろこの観点からは集合論が位相空間論の特殊な場合ではないか。

2014年3月15日土曜日

Yanofsky流Lawvereの不動点定理とCantorの定理

最近Lawvereの不動点定理が腑に落ちたので備忘メモを記す。

Theorem(Lawvere) デカルト閉圏$\mathscr{C}$において全射$f:\Omega\rightarrow Y^\Omega$が存在するとき、任意の$\alpha : Y\rightarrow Y$は不動点を持つ。

Proof デカルト閉圏の性質から$\mathscr{C}(\Omega, Y^\Omega)\simeq \mathscr{C}(\Omega\times\Omega, Y)$なので$f$を$\hat{f}:\Omega\times\Omega\rightarrow Y$とみなすことができる。$f$は全射なので任意の$h\in Y^\Omega: \Omega\rightarrow Y$に対して$h=f(\omega_h)$あるいは同じことであるが$h(\omega)=\hat{f}(\omega, \omega_h)$を満たす$\omega_h$が(一意的ではないにせよ)存在する。いま$Y^\Omega$の元として$g(\omega)=\alpha(\hat{f}(\omega,\omega))$なるものを考える。すると$g=f(\omega_g)$($g(\omega)=\hat{f}(\omega,\omega_g)$)なる$\omega_g$について$g(\omega_g)=\alpha(f(\omega_g,\omega_g))=\hat{f}(\omega_g, \omega_g)$。(QED)

解釈
$\Omega$というのは「ラベル」の空間で、任意の$Y^\Omega$がラベルづけできる、すなわち任意の$h\in Y^\Omega$に対して対応する$\Omega$の元が存在する、言い換えれば$\Omega\rightarrow Y^\Omega$なる全射が存在することがキモとなっている。$\alpha$として不動点が存在し得ない写像を想定できればこの全射性を否定することができる。

Yanofsky流にダイアグラムを書くと次のようになる。
\[
\xymatrix{
\Omega\times\Omega \ar[r]^{\hat{f}} & Y \ar[d]^\alpha \\
\Omega \ar[u]^\Delta \ar[r]^g & Y
}\]
$\Delta$は$\Omega\times\Omega$の対角線を取る作用素である。

Lavereの不動点定理(の対偶)を用いてCantorの定理を証明しよう。いま$\mathbf{2}=\{0,1\}$, $\wp(\mathbb{N})=\mathbf{2}^\mathbb{N}$とする。

Theorem(Cantor) $\mathbb{N}\lneq\wp(\mathbb{N})$

Proof 定理は$\mathbb{N}\rightarrow\mathbf{2}^\mathbb{N}$なる全射が存在しないことを主張している。$\alpha:\mathbf{2}\rightarrow\mathbf{2}$として$\alpha:1\mapsto 0, 0\mapsto 1$なるものを考えると、この変換は不動点を持たない。したがってLawvereの定理の対偶により全射$\mathbb{N}\rightarrow\mathbf{2}^\mathbb{N}$は存在しない。(QED)

解釈
$\wp(\mathbb{N})=\mathbf{2}^\mathbb{N}$の$\mathbb{N}$は桁番号を、$\mathbf{2}$はその桁の値を表している。すなわち$\mathbf{2}^\mathbb{N}$は$[0,1)$の実数を二進法で表したものである。(写像が数になる、と言うところが冪対象の存在の所以である。)全射$\mathbb{N}\rightarrow\mathbf{2}^\mathbb{N}$が存在すると$[0,1)$の実数に自然数で通し番号をつけることができるということになるが、$g(n)=\alpha(\hat{f}(n,n))$すなわちその$n$桁目が$n$番目の数の$n$桁目ではないもの、であるような$g$を取ると、$g$の$n_g$桁目は$g$の$n_g$桁目ではないものになってしまうので矛盾するのである。

\[
\xymatrix{
\mathbb{N}\times\mathbb{N} \ar[r]^{\hat{f}} & \mathbf{2} \ar[d]^\alpha \\
\mathbb{N} \ar[u]^\Delta \ar[r]^g & \mathbf{2}
}\]

Yanofskyの論文[1]や辻本さんという人の文書[2]に興味深い例がたくさん載っている。一つ[2]から紹介しよう。

Lemma(辻本) すべての心理状態を物理状態に帰着させることはできない。

Proof 心理状態として物理状態を良し悪しで判定することを考える。すなわち物理状態の空間を$\mathcal{H}$とおくと、この心理状態の集合は$\mathbb{2}^\mathcal{H}$で表されることとなる。ここで否定的な状態を考える。すなわち$\alpha:1\mapsto 0, 0\mapsto 1$なるものを考えて$g(h)=\alpha(\hat{f}(h,h))$とする。$g$は$h$なる物理状態で指定される心理$f(h)$が$h$自身について考えた結果を否定する。$g$が$g$自身について考えれば、これは$\alpha$の不動点となり矛盾する。(QED)


[1]N. S. Yanofsky, http://arxiv.org/abs/math/0305282
[2]辻下 徹, www.ritsumei.ac.jp/se/~tjst/doc/tjst/988-st.pdf‎

2014年2月7日金曜日

enumerate環境で番号を連続させるマクロ

http://dameal-man.blogspot.jp/2013/03/texenumerate.html で$\mathrm{TeX}$のenumerate環境で番号を連続させる方法を書いたがこれは次のようなマクロでも実現できる。こちらのほうがエレガント。cenumerate環境。

\newcounter{cenumi}
\setcounter{cenumi}{0}
\newenvironment{cenumerate}
 {\ begin{enumerate}\setcounter{enumi}{\value{cenumi}}}
  {\setcounter{cenumi}{\value{enumi}}\end{enumerate}}

2014年1月12日日曜日

htmlでフォントが勝手に変わるとき

cgiなどを用いてある文章のリストからランダムに選択して表示するページを作ると、文字列の種類によって他のアルファベットのフォントが勝手に変更されたりしてしまうことがある。そのときはアルファベット用のfont-familyを指定したうえで該当箇所をでくくれば解決する。

2013年12月27日金曜日

svg のbounding box

Mathjax では対応できない$\mathrm{\TeX}$ の図表や式をhtml に載せるならsvg 形式がよいとおもうが、dvi -> pdf -> svg ではbounding box がa4のままである。dvi -> ps -> eps -> pdf -> svg とやればps2eps がbonding box を調整してくれるので dvips, ps2eps, epstopdf and pdf2svg だけでうまくいく。

2013年11月22日金曜日

圏の双対のイメージ?

eqaulizerというのがあってこれは二つの射をeqaulizeする。一方coeqaulizerは同値類で割ることの圏論的形式とでも言うべきものであるから、強いて言えばeqaulizeされているのは対象の中の要素だといえよう。まさに要素$\leftrightarrow$写像の双対性である。

2013年11月19日火曜日

raiseboxの高さ、深さ

$\mathrm{\TeX}$ におけるraiseboxの高さ、深さの意味がよく分からなかったので記録。なおmathjaxでは使用できない模様。
\[
{\raisebox{3ex}[0ex][0ex]{x}}^a_b,~
{\raisebox{0ex}[3ex][0ex]{x}}^a_b,~
{\raisebox{0ex}[0ex][3ex]{x}}^a_b
]\