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

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

引っ越したらインターネットに接続できなかった

同居していた姉の卒業に伴って引っ越した。 さぁ早速インターネットを申し込もう!とおもったら、まさかの「機器がいっぱいいっぱいで、増設に3ヶ月ほどかかりますが…」。 やってられるかー!!!

明日にでも(文句言うところが違うかもしれないが、)仲介をしていたところに文句を言ってみる。 あと、Docomoのモバイルルーターを申し込もう…

なぜかbundleコマンドが消えちゃった話

顛末:

  1. LLVMでコンパイラつくってみたいな
  2. パーサとかめんどい
  3. パーサジェネレーターとかないかな…ついでにrubyとかで扱えるといいな
  4. ruby-llvm発見→紹介してたサイトのコードをダウンロードして実k…gemがないだと…
  5. bundle install →エラー:bundleがみつかりません

gemが入ってるディレクトリを見ると、bundlerは2つのバージョンが入ってた。 片方はbinディレクトリがなかった。もしかしてgemは更新した時に、変更があったファイルしか更新しない?

だとすると、bundleが何かの拍子に消えたのだろうか? もしかして、homebrewがrubyを更新する時に消しちゃったんじゃないだろうか?

なにはともかく、bundlerを再インストール。無事bundleコマンド復活。再びbundle install

あれ、まだgem足りない?

一階命題論理の統語論

統語論って何って話は、自分なりの理解を統語論と意味論ってなんなのかってのを以前書いた。(間違ってるかもしれんが仕方ない。) 今日はこの統語論について読んだ内容を書いて行こうと思う。

論理式に使われる記号

証明に表れる命題は、記号論理学では論理式に置き換えられる。 普通は、命題を、否定、連言、選言、含意、同値という形式の命題の組み合わせで表すが、これらの命題は、以下のように記号を使って論理式に書き換えられる。(以下、φψは命題)

  1. 否定(φではない): ¬φ
  2. 連言(φかつψ): φψ
  3. 選言(φまたはψ): φψ
  4. 含意(φならばψ): φψ
  5. 同値(φのとき、またそのときのみψ): φψ

ここに、真と偽を直接記述できる論理式を表すために、記号として以下のような零項真理関数というものをあつかう。

  1. 真: true()
  2. 偽: false()

命題の中には、それ以上分けられない(たぶん「それ以上分解したら文という形をなさない」という意味)命題が存在する。これを原子命題と呼ぶ。論理式の中に直接文を書くのは紛らわしいので、原子命題は命題記号というものに置き換えられる。

一階命題論理で使う記号は以上である。つまり、一階命題論理では命題記号とture()、false()、¬、∧、∨、→、↔という記号を使って、命題を論理式に書き換える。

一階命題論理はどう書くのか

では、この記号をどう使うのか、というはなし。 どうかけば論理式になるのかというと、 以下のような定義になるらしい

  1. 命題記号は論理式である
  2. ρがn項真理関数であり、(φ1,...,φn)が命題記号のn個組なら、 ρ(φ1,...,φn)は論理式である
  3. これ以外は論理式ではない

true()、false()は零項真理関数であり、¬は一項真理関数、∧、∨、→、↔は二項論理関数と定義されている。 また、∧、∨、→、↔は、∧(φ, ψ)というような書き方をせずにφψと書いているが、こういった書き方を中置記法と言って、2項真理関数は大抵こういった書き方をする。

真理関数の間には、優先順位があって、次のとおりである。

  1. ¬
  2. ∧, ∨

また、→は右結合といって、右側から順にくくって行く。つまり、P→Q→Rという論理式は、P→(Q→R)と同じである。

おわり

以上で論理式が書けるはず。 ところで、任意のn項真理関数がここに出てきた論理式で全部書けちゃう話は意味論ができるまでできないのかな?

今年度中(できれば夏まで)にやっておきたいこと

Rakefileの書き方のメモとか書こうと思ってたけど、面倒臭くなったので、これを書く。 3記事/dayへの道は遠い…

という訳で、今年度中にやっておきたいこと、もとい、勉強しておきたいこと。

数学基礎論について本を読み、理解する

型理論とかモデル理論とかはやっぱりプログラマーには必須かなーと思うので、こういうのをやっておきたい。数学基礎論って本を読んでみたいと思っている。

解析学線形代数、確率統計、代数

解析学線形代数は、院試で苦労している人がいるので、人の振り見て我振り直せということで、完全に理解しておきたい。演習中心。 少々興味があるので復刊 現代解析学といった本も読んでいこうと思う。

データ解析とか機械学習に興味があるので、確率統計を復習する。 なにより、前期でやった内容をほとんど覚えてないし、講義に検定とかの内容が出てこなかった。 統計学について真面目に勉強しておきたいけども、まだ読む本などは決まってない

代数学は、そこまで詳しくはやらないとは思うけども、暗号でいるらしいから、勉強しておきたい。 積んでる本に、代数学から学ぶ暗号理論: 整数論の基礎から楕円曲線暗号の実装までがあるので、 まずはここから読んでいく。

ビショップ本を読む

確実に一度読んだだけでは理解できないので、まずはちゃんと読んでみることにする。 もんだいは、この本たいてい在庫がないし、高いし、図書館で常に貸し出し中なのである… 今月のバイト代が入ったら、生協にないか見に行ってみよう。

まとめ:そして何より重要なこと

やろうとしていることはかなり多い。 でもまぁ平日3、4時間程度割けば、夏休み終わるまでには成し遂げられるんじゃないかな? 問題はモチベーションというやつだ…

だから一緒に勉強してくれるひとなど募集…

llvm3.2にて(追記あり)

もしかして、LLVM IRのBasicBlockが空行区切りで分割されてしまう?

なんかClangで-emit-llvmを指定して出力すると、ラベルが入るところに空行が入っていて、 予想だけれども、brに指定された変数は、自動的に次のBasicBlockのラベルになるのではないだろうか?

追記

予想2:LLVM IRでは、

  1. 無名の変数には、%か@の後に符号なし整数が続く名前が自動的に与えられる
  2. LLVM IRでは、ラベルも変数
  3. この例で、ラベルはBasic blockが作られる?時に名前が与えられる用に見える

→無名のラベルは、定義順?に連番で作られてるだけでは?

日記など。

今週末に引っ越しをする。 そこで今日(昨日)はバイトから帰ってきてから荷造りというか、荷物の整理をした。

これまで買ってきた本がそれなりにあるのだけれど、それで段ボールが4箱ほどいっぱいになった。 この段ボール、多分一回り大きかったら、持てなかっただろうな… しかしそれでも結構な量があるわけで、引っ越すついでに、大きな本棚が欲しいなと思った。 できれば机の上に置けるやつ。 なんせ資料本というか、チュートリアルというか、そういうのが多いもので…

自分の持ち物は結構少なかったように思う。 部屋を狭く見せていたのは、背の高いラックで、 押し入れを満杯に見せていたのは、不要な段ボールだった。 整理するのと同時にゴミの山が積み上がった。

さて一段落ついたぞ、と思ったら、読もうと思ってた本まで片付けてしまって、暇を持て余してしまったのだった…

Twitterやブログの使い方について考えるなど。

Twitterなどをどう使うべきかを考えてみたというだけの話。

1.Twitterの場合

Twitterは、なんとなく思いついたことをつぶやくようにしようとおもう。 つまりブレインストーミングてきな。 あるいは誰かがリプライで助言をしてくれるかもしれないし、 TL上にインスピレーション?を喚起してくれる発言があるかもしれない

2.ブログの場合

ブログは、結論の出た考えを書いていこうと思う。 これはTwitterなどで発言した考えなどをまとめて、見やすくする目的がある。

3.Facebookmixiの場合

書ける長さが中途半端で何に使っていいかわからない。

詳細に?論展開して問題提起をするってのを考えたけど、 友人らが興味を持つような内容の問題提起はできない気がする。

ライフログを取るならば、Facebookが優秀なのではないかなと思うのだけれど、 そのログを何に使うのかという話になる訳で…。

mixiは完全に身内ネタとかアレなネタ専用。 レスポンスが返ってくる率は高い。

まとめ

Facebookmixiは人のを輪を広げる専用。