数学とプログラミングとくだらないこと

プログラミングの事とか数学のこととかを書いていきます。

Xcodeの使い方がすこし分かった(と思う。)

Xcodeの使い方が少しわかったと思うのでメモ。

Xcodeで複数の実行ファイルを作成するプロジェクトを作る

Xcodeでは一つの実行ファイルに一つのTargetというものが対応しているみたい。 このTargetというのはプロジェクトについていろいろ設定するところから追加できるみたいだ。

Targetに含まれるソースファイルを指定する。

Target作ったはいいが、ソースファイルはどうやって指定するんだよ、という問題が出てきた。 右側ペインにTargetMembeshipというのが出るので、各ソースファイルごとに指定してやればいい。

特定のTargetをビルドして見る

再生&停止ボタン(?)の隣に、現在ビルド&デバッグするターゲットの名前が表示される。 ここをクリックするとドロップダウンメニューになっていて、ターゲットを切り替えられる。

その隣にもドロップダウンメニューがあって「My Mac 64-bit」って書いてあるから、 多分別のアーキテクチャようにも切り替えられるんだろう。

省力TeX

出来るだけ手間を省いてTeXを書く方法。PandocとXeLaTeXを使います。 Markdownで書いて、必要なとこだけLaTeXで書こうという魂胆。 ここに書いてあることのほとんど全部は ここ に書いてある。

最終目標はMarkdownで書いたレポートの体裁をPDFで出力すること。

Pandoc

Pandocとは

PandocはHaskell製のドキュメントコンバーター。 HTMLの表現力で文書構造を表せるドキュメントを相互変換します。

インストール

  1. Haskell Platform をインストール
  2. コンソールからcabal updateして cabal install pandoc

使い方

実際にどう使うかと言うと、Markdown形式の sample.mdsample.tex に変換するときは、

pandoc sample.md -o sample.tex

とすれば出来る(はず)。

XeLaTeX

XeLaTeXとは

詳しくは解説しないけど、Unicode文字が使えるTeXがXeTeX。 日本語を使おうとすると特殊なLaTeXがいるらしいが、そのうちの一つがこれ。 他に知ってるのはLuaTeX。

インストール

インストールするには、TeXLiveやMikTeXを入れれば入るらしい。

BXjscls

XeTeXではjsarticle(LaTeX専用って知らなかった…)の代わりに BXjsclsをインストールして、 bxjsarticleクラスを使うのがいいと思う。

フォントの注意

フォント技術云々の話がよくわからないが、どうやらXeTeXはフォントについてる情報を 読んで、文字にフォントを当ててるらしいから、そういうUnicodeとの対応表? を持ってるフォントが必要。 どこかの記事でTakaoフォントが使われていた (気がする)。こんな風にフォントを設定するらしい。

\setmainfont{TakaoPMincho}
\setsansfont{TakaoPGothic}
\setmonofont{TakaoGothic}

zxjafontってパッケージを使えば、プリアンブルに、

\usepackage[ms]{zxjafont}

とか

\usepackage[hiragino]{zxjafont}

とか書けばフォント設定が一発で済むんだってさ。 ここが詳しいんじゃないだろうか?

Markdown

今回は文章の本体をMarkdownで書く。 Pandocが対応していれば、MarkdownだろうとTextileだろうと何でもいい。 本文中でTeXの数式を書いてもちゃんと出力されるらしい。(インラインしか試してない)

Pandocで変換

Pandocで変換する。プリアンブルを別のTeXファイルに書いて-Hオプションで挿入するなり、 -Vオプションで、文書クラス、タイトル、編集者を指定するなりして、

pandoc input.md
    -H header.tex
    -V title=タイトル
    -V documentclass=bxjsarticle
    --latex-engine=xelatex
    -o output.pdf

って出力すればPDFが出来上がる。 今やったら micortypeでエラーが出ました でも普通は上のページみたいに、Pandocの出力を下のみたいなファイルから読み込ませて pdflatexなり何なりでPDFに変換するのがいいと思う。

\documentclass[11pt,a4j]{bxjsarticle}
\usepackage{zxjatype}
\usepackage[ms]{zxjafont}
\usepackage{xltxtra]

\title{Title}
\author{Mith009}

\begin{document}
\maketitle
\input{report}
\end{document}

じゃあXeLaTeXいらないじゃん!!!

π計算

π計算というものがある。 パイ計算というのは、並列計算のモデルで、言わばラムダ計算の並列版なのだとか。

で、日本語で書いてあるページがちょっと前まで探しても見つからなかったけど、 最近は結構検索上位にでも上がってきたのか、1ページ目にまで上がってきている。

ここ(たぶん東大の研究室か何かのページ)に書いてあるのは、本当にさわりだけみたいだ。 たぶん参考資料(英語)を読めってことなんだろうと思う。 やっぱ東大ってやってることはすごいんだな…。

まぁとりあえずわかったこと。

  • π計算はチャネルの作成、チャネルへの送信、チャネルへの受信、並列実行からなる。
  • 構成要素はプロセス、チャネル、値。
  • 作成したチャネルは値として扱える。
  • λ計算を自然に変換できる。

分散アルゴリズムってやつをパイ計算で表せば、証明とかも簡単にできるのかもしれないなと思った。 通信系の学生としては、全域木探索やダイクストラ法の分散バージョンがπ計算でどう表されるのかってのが気になる。

…できるよね?

体系SKにおいて定理Bを導く

戸次大介という人の数理論理学という本の第二部第7章ヒルベルト証明論のところの練習問題。

「BCWB'C*がいずれもSKの定理であることを証明せよ」 とりあえずBだけできた。

1. (φ→(ψ→χ))→((φ→ψ)→(φ→χ)) : S
2. (φ→(ψ→χ))→((φ→ψ)→(φ→χ))→((ψ→χ)→((φ→(ψ→χ))→((φ→ψ)→(φ→χ)))) : K
3. (ψ→χ)→((φ→(ψ→χ))→((φ→ψ)→(φ→χ))) : 1, 2, MP
4. ((ψ→χ)→((φ→(ψ→χ))→((φ→ψ)→(φ→χ))))→(((ψ→χ)→(φ→(ψ→χ)))→((ψ→χ)→(φ→ψ)→(φ→χ))) : S
5. ((ψ→χ)→(φ→(ψ→χ)))→((ψ→χ)→(φ→ψ)→(φ→χ)) : 3, 4, MP
6. (ψ→χ)→(φ→(ψ→χ)) : K
7. (ψ→χ)→(φ→ψ)→(φ→χ) : 5, 6, MP

この本は練習問題の回答が載ってないからつらい。 結局、WikipediaC,B,W,Kシステムのページ見て、 SKIコンビネータとの関係を類推しながらやった。

理Iの証明を読んでみて、関数適応とMP規則の適用が対応するに違いない!…とか思ってたら、普通にWikipediaに書いてあった…

規則MPが、

P,P→Q⇒Q

だから、引数がPに、関数がP→Qに、値がQに対応するんだろうな。