トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

研究日誌とつぶやき

Last-modified: 2010-04-08 (木) 14:47:18 (5142d)
Top / 研究日誌とつぶやき

研究ページ

つぶやき

  • LMNtalで求めてみたい整数の類
    • 婚約数
    • 回文数(回文素数、回文平方数)
    • ダイヤル数
  • LMNtalですごろくできないかな?
  • UNYOは面白い。こういうのがあったらいいかも。
    • 巻き戻しができる。
    • ノードの検索
    • マウスでのズーム(メニューのZoomとの連動は未実装)
    • 次に反応するアトムが分かる。
    • UNYOったけどほったらかし→MainFrame?, SearchNodeFrame?, GraphPanel?(WheelZoom?)


2009-3-21

global

  • 例えばsrc以下のソースをHTML化したい場合、src直下で
    $ gtags -v
    $ htags
  • するとHTMLフォルダがsrcと同じディレクトリに生成される
    • フォルダを汚さない親切設計

JSAI

  • 例題が欲しい
    • 全域クモは鉄板ネタだと思う、uniq ver.とuniq+nd ver.ができそう

2009-3-19

float型の同型性判定

mem_eq(L1, L2, a, b, r).
{+L1, a(1.0).}.
{+L2, a(1.0).}.

--> false(r). a(L0). b(L1). {a(1.000000). +L1. }, {a(1.000000). +L0. }. 
  • 必ずfalseになる。

uniq

  • por版に実装してみた、一応動く
  • nd
    • 通常実行
      a(1), a(1), a(2), a(2).
      a(A) :- uniq(A) | ok(A).
      --> a(1). a(2). ok(1). ok(2). @3
    • nd
      init:17663488
      17663488::17734632,17665952::a(1). a(1). a(2). a(2). @3
      17734632::::a(1). a(1). a(2). ok(2). @3
      17665952::::a(1). a(2). a(2). ok(1). @3
      
      # of States = 3
      • 一度ルールが適用された後で新たな状態が生成されていない、原因探る

JSAI2009

  • のページを作った
  • 実装を急ぐ

2009-3-16

mem_eqメモ

mem_eq( M1, M2, mem1, mem2, result).

{+M1. a}. {+M2. a}. //ture
{+M1. a}. {+M2. b}. //false
{+M1. a:-b.}. {+M2. a:-b.}. //true
{+M1. a:-b.}. {+M2. b:-a.}. //true
{+M1. c. a:-b.}. {+M2. c. b:-a.}. //true
{+M1. c. a:-b.}. {+M2. d. b:-a.}. //false
{+M1. a. a:-.}. {+M2. }. //true
{+M1. a. a:-.}. {+M2. }. //true
{+M1. a. a:-b.}. {+M2. c. c:-b.}. //true
{+M1. a. a:-b.}. {+M2. b. a:-b.}. //true

C言語

  • makes pointer from integer without a cast
  • format argument is not a pointer
    • どれもキャストをしっかり書けば大丈夫

2009-3-11

PPL2009

  • 岐阜は遠かった

uniq

  • vectorでIDを生成するように変更
  • warningを少しずつ消していく

サンダーバード

  • 受信フォルダがおかしくなったら、
    • Inbox, Inbox.msfを削除
      • Users\seiji\AppData?\Roaming\Thunderbird\Profiles\xxxxxx.default\Mail\pop.ueda.info.waseda.ac.jp
    • 受信フォルダ→右クリック→プロパティ→検索の再構築

2009-2-8

Spanning Spider

  • 少し簡単にして10行ほど減らせた
  • でもあいかわらず重複がでる(はず、未確認)まぁいいか

2009-2-7

uniq

  • uniqは膜を引数に取れないから、膜に対してuniq使うならインデックスが必要

2009-2-6

卒論

  • 発表は終わった。先輩方、ありがとうございました。
  • あとはちょいちょい論文の書き直し
    • もう一回CHRとの比較測定したい
    • Spiderはもうちょいきれいにできそう
    • 概要と研究背景を大幅書換え

2009-1-26

制約プログラミングとは

「制約プログラミング」はAI(人工知能)技術の一つで、1980年代に開発
され、この20年間で世界中の様々な分野の実用的な計画問題を解くため
に用いられてきた技術です。

「制約プログラミング」は簡単にいえば以下のような開発技法です。

 * 計画が充たすべき条件を「制約」のかたちで記述する。
 * 制約条件を充たした計画を、プログラムが自動的に探索して作成する。
 * 探索には制約伝播手法を用いる。制約を利用して条件に合わない計画
   を取り除きながら探索するので計画作成が効率よく行える。

「制約プログラミング」の長所は、「わかりやすさ」と「効率」を兼ね
備えた技術である点です。制約があることを利用して効率よく答えを探
すことができるだけでなく、問題の表現が人間の直感にあっていて、モ
デリングや設計が確実に行えることが、「制約プログラミング」の大き
な特徴です。

2009-1-25

JSAI2009

  • 申し込んだ、うどん。

(卒論を頑張る)良い子のみんなへ

  • 夜は早く寝ましょう、体調を崩す原因となります
    • PCの画面がぼやけて見えたり、小さなファイル名をうまくクリックできなくなったり、変な汗が出たら黄色信号♪♪
      • 経験者が言うのだから間違いなし

2009-1-24

つぶやき

  • ここにきて読みたいCHRの英語の論文が2つも出てきた
    • こんな気持ちになるとは
    • 卒論終わったら読むかな、JASIのためにもなるだろうし

CHR解説の章

  • 非常に内容が薄い、Propagationの論文をもうちょい読んで書いてみるか
    • 時間があれば、にしよう

JSAIのタイトル

  • キマラナーイ、案募集

先生より卒論に関して

  • uniq制約のセマンティクスを述べる。
    • 特にCHRとのpropagationとの関係を述べる。
  • uniq 制約の必要性や応用例を述べる、その際以下に注意
    • 非決定的実行またはモデル検査と組み合わせた例を挙げる(CHR との記述力の違いを示すため)
    • 従来の uniq との違いは膜を使った記述例で現れるので、膜を使った例を含めるのが非常に望ましい。

2009-1-23

JSAI 2009

  • 人工知能学会@高松
    • まさかのmain author

電源コード

  • 研究室に忘れてきた・・・
    • この3日間は旧PCで頑張る、やはりお前が頼りだ

Moude

  • LMNtalみたいな書き換え言語
    • 班ゼミで紹介されていた、ちょっとおもしろそう

卒論 例題集

  • Spanning Spiderは卒論に入れる
    • 閉路探索のアルゴリズムが正しいっぽかったので一安心
  • チームの総当り対戦表を作る(自作の問題)
    • uniqの使い方の一例見たいな感じで入れてみようかな、
  • CHR
    • 不等式制約は確定
    • 最短経路系を一つ
    • もう一つくらい何かを、簡単なやつ(超が付かない程度)でもいいらしい
  • mem_eqを使ってる例題があるとかなりいい

2009-1-22

\(バックスラッシュ)記法のバグ??

  • \を使った式で@pをコピーすると実行できない
    • (LMNtal)Compilation Failed compile.parser.SrcRuleContext? cannot be cast to compile.parser.SrcLink?
    • (SLIM)unknown instruction name ompilation C
first{a:-b.}, second{}.
first{@p} \ second{} :- second{@p}.

--> エラー
first{a:-b.}, second{}.
first{@p},  second{} :- first{@p}, second{@p}.

--> first{@601}, second{@601}.
  • 一つ目の例はfirst, second膜があったときに、ヘッドの\以降をボディに書き換えるルール
  • 二つ目は\を使わないで書いたもの
first{a:-b.}. second{a:-b.}, third{}.
first{@p} \ second{@q}, third{} :- second{@q}, third{@q}.

-->エラー
  • こういう風にコピーしたいルールは省略させずに書いてみてもダメだった
  • 今のところ、\と@pを同じルール内に書く術はなさそう

uniq

  • ルールコピーの際に履歴もコピーさせる方法は、よく分からないことが分かった
    • 中間命令のcopyrulesはコピー元のルールセットをコピー先の膜に入れる(コピー先の膜内でも使えるようにする)ようになっていて、新しくルールを生成してそれをコピー先に、という風にはなっていなかった・・・。がっかり。
    • rule.cのlmn_rule_copy()はシステムルールを各膜にコピーするときだけ使われてるみたい、ここをいくらいじってもだめだ

Spanning Spider

  • これは確かにuniqがあると割と簡単に書ける
  • だけど↑のルールコピーの問題が残っているからそんなに簡単にはできないかも・・・がっかり
    • と思ったけど、これ書きながらやり方を思いついたかも、びっくり

2009-1-20

卒論

  • 概要を書いてみた、研究の意義の部分が書きにくい、どういう書き方が意義なんだろう

uniq

  • 余計な出力を消した
    • dumper内で条件分岐、その場しのぎのひどい実装、このままいかざるをえないかな・・・

2009-1-19

卒論

  • pdfを言語班ローカル/seijiにupしました。
  • texファイルなどは明日適所に配置します。
    • upしました。home/seiji/tex_pack/

uniq

  • 引数無しも反応させるだけなら問題無し(みたい)
    • でも反応した後ルールを消去させないといけない
    • 現時点で方法が思いつかない、質問する
  • 引数有りの場合に余計なidが出力されてしまう
    • dumperとは別ファイルに分けたほうがいい??
  • 履歴のコピーもまだ
    • でもこれはすぐできそう

2009-1-18(2)

slim

  • ガードにstring制約が無いことをはじめて知った

uniq

java : a(1), a('1'), a("1") --> ok, a("1"), a(1).
slim : a(1), a('1'), a("1") --> ok, ok, a(1).
  • どっちが正しいのやら、個人的には下を推したい

2009-1-18

uniq

  • 現在時刻:1/18 AM2:55
  • 記念すべき第一回実行
    a(b).
    a(c), a(c).
    a(d).
    a(e).
    a(f).
    a(g).
    a(X) :- uniq(X) | ok.
    
    -->
    ok. ok. ok. ok. ok. ok. a(c). @3
    • 感涙。
    • 続きは午前9時頃〜、おやすみなさい
  • 18日やること
    • 引数無しuniqのための条件分岐

2009-1-17

uniq

  • dumper
    • 君は面倒くさい人だね。中の関数呼び出すの面倒だった
    • ふと気がつくとuniqに関係無い文字列まで拾うようにしていた。なんという無駄な労力。馬鹿か俺はバカカオレワおろろーん。涙 まぁべつにいいけど
  • あとできれいにするところメモ
    • dumper.c, .h
    • task.c
    • rule.c, .h
  • 18,19でやるuniqメモ
    • 履歴との照合(とりあえずオーダー気にせず)

openoffice 3.0

  • 起動遅い。起動してから表示されるまでの間に作業できちゃう

2009-1-16

mem_eq

  • ついにコミットした。
  • しかし、どんな膜を指定してもfalseになってしまう。
    • 膜の同型性判定lmn_mem_equals()が必ずfalseをはく。バグだろう、たぶん

2009-1-14

卒論tex

  • 言語班seijiページに卒論内容を一覧できるようにしたい

slim開発

  • googlrecodeにブランチを作ってそこにUPするようにする
    • trunkの一つ上のディレクトをリポジトリーロケーションで指定
    • slimフォルダをbranches内へコピー(右クリック→ブランチ・タグ)

2009-1-9

あけおめ

研究以外の宿題

  • リアルタイム(略)
    • 友情パワーを使う。提出。
  • ネットワー(略)
    • 課題1と2の内容を少々かぶらせることで撃破。コースナビが直ったら提出。

インストール

  • メモ箋人
  • SICStus4
    • 有料だとどっかのサイトに書いてあったけど、どうやら見るとメアド登録だけで良さそう、Vista版もあったのでとりあえずインストーラをダウンロード
  • C ポインタ完全制覇
    • 脳内にインストール中

2008-12-29

uniq

  • とりあえず引数がint型の場合に限りuniqが動くようになった

ayanoの手伝い

  • 文書化作業は難しい、卒論の早期着手が必要

2008-12-23

uniq実装

  • slimでlinkからアトム名を文字列として受け取る方法が分かった
  • そしてuniq実装という敵はとてつもなく強大だということも分かった
  • でも履歴管理は、ルールの構造体に履歴を持たせるベクターみたいなのを保持させるだけで、思った通りでよかった

ayanoの手伝い

  • 文書化作業は難しい、卒論の早期着手が必要

2008-12-17

uniq実装

  • 開始宣言

履歴の持たせ方

  • とりあえず全てのルールに履歴を保持させる方向でやってみる
    • 評価した後でまた考える

propagation<=>uniqの書き換えで気になったこと完結編?

  • 単にeclipseでLMNtal実行時に-Oつけてたからだったorz
    • まぁ、\を使った記法が便利ってことになるから、別にいいか
  • (2)に関して、中間命令列を見ると\を使っても最適化はされていない
    • KUDOさん2によると、テキストレベルの略記法として存在する、と書いてあった
    • つまりpropagationを実現するためには、uniqと\と最適化オプションのコラボが必要

2008-12-16(2)

propagation<=>uniqの書き換えで気になったこと2

  • ↓に関して、中間命令を見てみたが、LMN(1)もLMN(2)もほぼ同じだった
    • 一部、引数に与えている値が違うが、中間命令の数と順番はまったく同じ
    • もしかしてuniq内部に\に相当する機能がある??調べる

2008-12-16

propagation<=>uniqの書き換えで気になったこと

  • autogen_boolean.plをエンコードしてみた
    • よく考えたらpropagationをuniq使って書き換えるとき、
      CHR : a(A) ==> b(A).
      LMN(1) : a(A)   :- uniq(A) | a(A), b(A).  
      LMN(2) : a(A) \ :- uniq(A) | b(A).
    • LMN(1)と書くよりLMN(2)としたほうが、よりCHRに沿っている気がする
      • propagationはボディを追加するルールだし、バックスラッシュはあったほうがいいのではないか

履歴をどう持たせるか

  • 引数無しuniqは履歴無し
  • コピーの際に履歴複成
  • @pの表記
    • uniqを持つルールだけ特別扱い?cでの実装方法が見えない

ルールの識別

  • java版と同様、文字列による識別でいい気がする
    • (ていうかそれが自分にとっては一番楽そう)
    • a(A, A)みたいな形のアトムは特別扱いしている(ようだ)

メモ

  • Uniq, Link.javaにprint文

2008-12-15

メモ

a(b(c, d, e(f))).
a(A) :- uniq(A) | ok(A).
=> b(L0L1L2F0)e(L3L2)f(L3)d(L1)c(L0)

2008-12-8

班ゼミ

  • seijiのためのゼミと化すm(_ _)m
    • 卒論までの道筋がかなり明確に
    • ちょっと複雑な例題のエンコードと、実装を同時並行で
      • すでに見つけてある論文からまずは選んでみる

CHRエンコード

  • 簡単な例題を土日で10個ほど
  • uniqを使った場合の不便さはあまり感じない
    • uniq以外のところでは、意外とエンコードしにくい部分が多かった
    • ライブラリとかをもっとうまく使いたい

r3dg

  • 課題を忘れていた
    • VisualC#をインストール。時間かかりすぎ

2008-12-5

続・新PC環境構築

  • vpnクライアントの設定完了
    • wasedaに対してfirefoxから接続できないとかまじ無いわ。
  • slimコンパイル完了

2008-12-4

Perlのエラーの直し方@cygwin

  • slimのコンパイル中(automake, autoconf等)に
    perl 2180 C:\cygwin\bin\perl.exe: *** fatal error - 
    こんなのが出て処理が止まった時の解決法。
    • 1. Cygwinのウインドウの全てを閉じ、Cygwinを使ったサービスやアプリケーションを終了する
    • 2. 「ファイル名を指定して実行」等から、c:\cygwin\bin\ash.exeを起動する
    • 3. ash上で、rebaseallコマンドを実行する
      • これで直ると思う。

2008-12-2

eclipseの挿入/上書きモード

2008-12-1

続・uniqの仕様

  • よく考えたらアルゴリズムについて何も考えていなかった。
    • 既存のやつだけでもチェックしとくか、明日朝やろう。眠い。
  • まったく同じ内容のルールをUNYOで視覚化すると、一つにまとめられている
    • 内部でもこんな感じなんだろうか?
  • 現在のuniqルールの複製について確認
    t(1), t(1), t(2), t(2).
    i(0).
    {
      t_ok @@ t(T) :- int(T), uniq(T) | ok(T).
    }.
    copy @@ i(I), {@p}/ :- I<2 | i(I+1), {@p}, @p.
    
    --->
    ok(1), ok(2), t(1), t(2), i(2), {@t_ok@}, @t_ok@, @t_ok@, @copy@.
    • 今更でしかも変な例だが、やはり履歴は共有されているようだ。

eclipse3.4

  • いつのまにかカーソルが挿入ではなく上書きに・・・どうやったら直るんだろこれorz

2008-11-30

mem_eqのコミット

  • コミットしようとすると警告が出てできない。なんだか怖いので後回し。

新PCの環境構築 進度

  • 一旦整理
  • 完了
    • officeソフト
    • eclipse
      • develとslimとCプラグイン
    • cygwin
    • teraterm
    • terapad
  • 未完
    • vpn client
    • ブックマーク色々
    • slimをコンパイル@cygwin

新uniq仕様

  • 考え中(主に文章の書き方で)
  • 火曜までにはもう決めちゃいたい

2008-11-27

eclipse3.4とVista

  • eclipse.exeを右クリック→スタートメニューに追加をするとなぜか起動できずeclipseのロゴがすぐ消える
  • exeじゃなくショートカット作成→スタート(略)だといける、なぜ??

OpenOffice3.0

  • 人柱上等。いい機会だからOpenOffice?マスターに、俺はなる。

中間発表

  • 研究背景・動機の薄さが問われた
    • そこんとこの見直しが必要

2008-11-23

中間発表資料

  • 研究背景で何書くか迷う。
    • 原さん修論の「得意分野が広がった」「守備範囲が広がった」は、フォーマルな言い方なんだろうか??笑
  • uniq現在の仕様も迷う
    • こっちも班ゼミで言われているような言い方でなく、もっとフォーマルにできないかと堀さんに言われた(気がする)。明日みんなに相談
  • レジュメ
    • なにそれおいしいの?

2008-11-21

膜の同型性判定を行うシステムルールをslimに作った。

mem_eq({}, {}, mem1, mem2, result).

--->
true(result), mem1(L0), {'+'(L0).}, mem2(L1), {'+'(L1).}.
  • 第1,2引数:判定を行う膜
  • 第3,4引数:それぞれ第1,2引数の膜と接続される
  • 第5引数:true又はfalseと接続される
  • mem_eq:消去される
  • 現在の仕様(班ゼミで一応話し合った結果)
    • 「判定する膜からは自由リンクが一本だけ伸びていて、その接続先がmem_eq」なら判定される
    • 判定する膜から2本以上伸びている場合はfalse
    • 膜じゃない場合は問答無用にfalse
    • 膜の名前が違えばfalse

メモ

  • cygwin@俺のPCでのslim実行方法 [#saacb82f]
    • slim/src下で
      lmntal.bat --slimcode ../mem_eq_test.lmn | ./slim -
  • UNIXコマンド ショートカットリンク
    • ln -s リンクしたいディレクトリ 作るリンク名

2008-11-19

  • eclipse3.4 ganymedeが起動しないとき(JVM terminated.と表示されたとき)
    • 下記はあくまで一つの方法。他にもやり方はあるらしい。
    • eclipse.iniを書き換える。
      -showsplash
      org.eclipse.platform
      --launcher.XXMaxPermSize
      256M
      -vmargs
      -Dosgi.requiredJavaVersion=1.5
      -Xms40m
      -Xmx256m    
    • まずは上記の256Mが512Mになっていないか確認。512なら256に直す。
    • 元から256だったり、256にしても変わらなかったら、以下のように書き換える。
      -showsplashorg.eclipse.platform
      --launcher.XXMaxPermSize256M
      -framework
      plugins\org.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar
      -vmargs
      -Dosgi.requiredJavaVersion=1.5
      -Xms40m
      -Xmx256m
    • 上から4行だけを書き換えればよい。これでたぶん直る。

2008-11-17

  • メモ
    • system_ruleset.c, atom.h,

2008-11-14

  • 「LMNtal処理系」の論文は読破。
  • 班ゼミにて
    • 新uniqについて
      • once
      • 今日の班ゼミでは仕様はほとんど決められなかった。
      • 決めなければならない部分の確認に留まる。
    • 膜の同型性判定の機能
      • uniqの前にこっちを片付ける。
      • システムルールセットとして作ってみる。
      • 仕様のイメージは固まったので、とりあえず作り始めてみる。

2008-11-09

  • 「LMNtal処理系」の論文
    • テストの理解がイマイチ

2008-11-07

  • 決して暇ではないが、暇つぶしに書いたLMNtalコード
    • friendship.lmn
      • 友愛数を求める。5分くらいでできた。ただしオーダーは悪い。
  • 先生からのCHRお勧め論文
  • SLIMのソース理解
    • 堀さんイッシーさんにご協力いただけることに
    • とりあえず宿題としてLMNtalの大本の論文を速読
  • 以下、班ゼミメモ 言語使用をはっきりさせて、みんなで議論 どんな感じで実装するのかも話し合う。

CHRの実装を参考にするか、LMNtalJava?の方を参考にするのか? 新しいCHRのpropagationの実装? その論文はどこに?

Javaのほうはとりあえず参考に

電子図書館 CHRの論文を原さんの論文の参考文献を電子辞書から探す。 関連研究としてサンプルをいっぱい知っておく。

SLIMでのガードインラインの実装

新uniqの実装が一番の目標かも 一回使ったら、ルールごと消すのが一番うれしい。 今はちがうっぽいから。

2008-11-01

  • SLIMのソース
    • なかなかはかどらず。C言語は久しぶりだから、とかそんな問題じゃなく進みが遅い。
  • もう11月。

2008-10-28

  • LMNtal中間命令
    • ドキュメント>中間命令に関するまとめ
  • XSBとSWI
    • 一旦休止

2008-10-21

  • XSBとSWI
    • CHRの記述方法に違いあり。四苦八苦。
  • uniqソース
    • いいかげん読もうとglobalをインストールするが、使い方がよく分からん。もう寝る。

2008-10-17

  • XSB
    • インストールに時間がかかった
    • SWIとどう違うか調べる。
    • 佐々木さんにサンプルソースを頂く。ありがたい。

2008-10-10

  • 班ゼミへの臨み方
    • ネタ出しは単なる発表ではなく、自分の研究に対する意見を頂く場。今後大いに活用すべし。
  • uniq
    • どうやら引数はほんとに可変個らしい。
      a(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),
      a(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1).
      a(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) :-
      uniq(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) | ok.
      
      --->
      ok, a(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1).
      

2008-10-09

2008-10-08

  • CHR
    • プログラム実行すると、結果が2回分表示される原因がなんとなく見えてきたかも。
      1: a(X) <=> X<10 | true.
      2: a(X) <=> X>10 | true.
    • これらに対してa(1)をクエリーとして与えると、1は3, 2は4の結果になる。
      3: true.
      4: a(1)
         true .
         a(1)
    • ちなみにa(11)を与えると3,4を逆にした結果に。
    • あと:- module(leq,[leq/1]).っていったい何だー?

2008-10-07

  • CHR
    • トレースのやり方がわかった。
      :- chr_trace.
    • Portが何か分かる。
    • いくつかCHRの基本に関する文献を探し当てた。どれも英語で数十ページ。

2008-10-06

  • CHR
    • 昨日、今日もCHRを使ってみたが、よく分からない部分が多い。CHRというかSWI-Prologが使いこなせていない。
  • 合宿成果報告
    • 笹嶋さんからパワポ資料作成と欠席のお知らせをいただく。俺も作らなきゃ、焦る。

2008-10-03

  • CHRの\(バックスラッシュ)
    • 以下の2式は同じ結果になる
      1: a, b,  c <=> a, b, f.
      2: a, b \ c <=> f.
    • CHRでは、ヘッド内に\をつけると、\より後ろのヘッドだけがボディに書き換わる
    • LMNtalにあったら、単純に処理が速くなりそう?
      • -O2をつければ同じような実行は可能
      • LMNtalにあった場合の利点は記述量の削減だけかな
  • ↑関連で、「ヘッドがマッチしたときにボディを追加する(書換えじゃなく)」という記述方法があったら何か生まれたりして(ayano談)

2008-09-29

  • 後期開始
  • 夏休みは
    • CHRのリファレンス読み&ちょっとコード書いた
    • 岩波講座1冊読んだ
    • 夏合宿のフラクタルの写真を撮った

2008-09-03

  • Wikiを模様替え。

2008/08/28

2008/08/02

  • 夏休みのテーマ
    • プログラミング言語に関する一般教養
      • 『岩波講座プログラミング言語』の知らなそうなとこを読む
      • 班ゼミで挙がってた論文を読む。あれもこれもではダメなので、読みやすそうなやつを、とりあえず1つ読むことを目標に。どれにするかは岩波を読み終わるくらいまでに。
    • 細かいところでCHRやuniq。キーワードは「制約処理」
      • どこまで手を伸ばせるか分からないが、例題をLMNtalとCHRで書くのは最低やろう。

2008/07/22

  • 卒論キックオフ
    • なんとか終了('Д`)
    • 新たなテーマを引き出した。uniq.

2008/07/19

  • 明日は院試。健闘を祈る。

2008/07/16

  • 型制約アトムの振る舞い
    i = [int(1)   , int(1.5)   , int("moji")   ].
    f = [float(1) , float(1.5) , float("moji") ].
    s = [string(1), string(1.5), string("moji")].
     こんなのを書くと、
    i = [int(1)   , int(1)   , int("moji")   ].
    f = [float(1.0) , float(1.5) , float("moji") ].
    s = [string(1), string(1.5), string("moji")].
    int(1.5)とfloat(1)をint(1)とfloat(1.0)に変換してくれる。
     これはint(1.5, H)のように2つ引数がある場合に起こる(引数が1.5のみ、又は3つ以上だとそのまま)。

2008/07/13

  • BigInteger?の使い方
    a=java_math_BigInteger?.new("1234567890").
    b=java_math_BigInteger?.new("9876543210").

2008/07/12

  • ガード否定条件(ドキュメントより)
    今の段階で「任意のatomが膜内に存在する場合は反応しない」という文は書ける。下はaというatomを含む幕には反応しない。
    {$p} :- \+($p=(a, $pp))
    aの引数までは指定できる。a(X, Y, Z)とかして。でもそのリンクの先までは見るようにはなってないらしい。
    {$p} :- \+($p=(a(int(H)), $pp))
    のように型付きプロセスを使うと、a(int(1))やa(int(n))というように書かれたatomを含む場合以外には反応する。

2008/07/11

  • キックオフどーすんべ。
  • profilerを使うと色々な尺度で実行時間などを計れるそうだ。
  • とにかくドキュメントを読むか。で、なにか探す。有望なのはやっぱ型か。

2008/07/09

  • 膜の名前(旧式)
    a:{1, 2}.
    という膜において、コロンは':'の形になっている(stringじゃない)。↓例
    a(':') :- b(':') とか ':'(a, H) :- ':'(b, H)にマッチする。

2008/07/08

  • atomの表記規則
    a, (a)
    上の2つは同じaというatomを表し、どちらも
    a :- b 又は (a :- b)
    の式に反応する。また、
    a(1), (a(1)), a(A)
    これらは下のようになる。(左から順番)
    研究日誌080708_2.JPG
    大文字Aはstringに置き換えられる。でもなんか変な感じ。俺のイメージとしては、a(1)がaと1というatomをリンクで結んだ形になるんだから、(a(1))と書けば、
    研究日誌080708_3.JPG
    のようになって欲しかった。まぁでも気持ち悪いから、これよりさっきの図の方が良い。むしろa(A)こそ、
    研究日誌080708_4.JPG
    となって欲しかったなぁ。まぁだからと言って、何かメリットがあるかというと謎だけど。。

  • 膜の名前のつけ方
    name{a, b, c}. ・・・
    name:{a, b, c}. ・・・
    • 上の2種類がある。△狼貅亜
    • △name,":"膜をリンクでつなぐことで、膜に名前をつけることにしている。
    • 左が 右が
      研究日誌080708.JPG

2008/07/07

  • vm.lmn
    • コンパイラとは名ばかりの、計算機に近い代物(一応2分木で構文解析とかしてるけど)。
    • 今日のゼミ時のものから、バグを修正。
    • 例外処理を書きたいけど、欲しいのはやっぱりorと否定。これらがあれば例外処理だけでなく、ソース全体をもっと簡単に書ける気がする。
  • eclipse
    • の検索機能を使いこなしたい。本を読もう。
  • グローバルルールセット
    • どこに書いてあるんだろう?
  • 輪読 終了

2008/07/06

  • 自動で書き換わってしまうatom
    "-"(2, 1).
    • を書くと、勝手に
    (-2, 1)
    • に書き換わってしまうという悲劇。
      • (080707追記)'-'は演算子、"-"はstringみたいに分けられたらいいのに。。
  • UNYOでのlist構造(のようなもの?)
    list("xx", '.'("a", '.'("b", '.'("c", [])))). ・・・
    list('.'("a", '.'("b", '.'("c", []))), "yy"). ・・・
    • この二つはUNYO上では同じものとして描かれるが、例えば次の式
    list(Index, '.'(Value, Next)) :- list(Index, Next), get(Value).
  • にマッチするのはー阿里漾まぁ´△鯑り混ぜて書くような適当な人はごく少数(自分含む)だとは思うけど、どーにかなんないもんか。。
    • (080707追記)リンク番号出せば分かった。iwasawa感謝!

2008/07/05

  • LMNtalの否定とif文
    • if文使えば否定を書けることになるのか?elseがあるから、「条件に当てはまるアトムが無いならば」を書けるような・・・。まぁ否定の機能を作ることの問題点とかあんまり分かってないからなんとも言えないが。

2008/07/02

  • Java目線でコンパイラ
    • 色々ためになる。ソフ開でやったBNFの役立つ日がついに来た。
    • とりあえずサイトの通りに作ってみて、そのあとは色々拡張する。
    • そしたらLMNtalでも作ってみる。並列処理特論の言語とか簡単でよさそう。
  • るぅいんどぅく(輪読)終了

2008/06/30

  • 続るぅいんどぅく(輪読)
    • あと一息。パワポパワポ。
  • コンパイラ


2008/06/27

  • るぅいんどぅく(輪読)
    • パワポパワポ。発表一週間前に完成目指す。
  • 班ゼミ
    • hyperlinkがあればどう便利なのか、そこがカギ。
    • linkよりtypeとかの方が明らかに大掛かりじゃん。
    • 誰もが考えそうなSLIMとLMNtalMCの統合名、SLIMNtalMC。

2008/06/24

  • 出張言語班ゼミin6月宴会
    • 先生をつついたら出てきた卒論テーマになりそうなもの
      • コンパイラ
      • 型体系
      • hyper LMNtal, hybrid LMNtal
      • super SLIM, ultra SLIM(新出単語)
      • 他、多数(LMNtalの数学的背景とか、貴重そうな話も)
  • それで、どうするか?
    • hyper LMNtalに対する漠然としていたイメージが少しだけはっきりした。しばらくこの方面を目指してみたい。
  • hyper LMNtalへ行く前にまずやること(先生より)
    • LMNtalのソースコード(特に処理系(コンパイラ))を読む。
    • LMNtalでコンパイラを書いてみる。
    • 型体系について学ぶ。
    • プログラミング言語全体に関する素養を深める。
    • やっと本題へ。
  • 輪読、並列処理特論のレポをまず片付ける。あとはやる気だ!

2008/06/23

  • 卒論に関して(gochoと先生の対談より)
    • 「やはりUNYOではこれ以上の卒論修論は厳しいかもしれない。」
      • 予想はしていたが、ちょっとガッカリ。
    • 「SLIMでは、テーマが沸いて出て来るらしい。」
      • そりゃそうだ。
    • 今後の方向性は?
      • めげずにUNYO関係の新たなアイディアを搾り出す、
      • CHR?やhyper?hybrid?LMNtalについて調べてみる。(でも難しそう・・・)
      • SLIMに駆け込む。
        →希望は上ほど高い。うーん、どうしたもんか。

2008/06/21

  • UNYO 続・マウスホイールでズーム
    • マウスホイールとメニューのZOOMの対応付けを試みるが、後一歩のところで例外が出る。旧UNYOと違ってZOOMのスライドバーがメニューの中に組み込まれてることが原因か?
  • 狐さんを導入
    • 爆速。

2008/06/20

  • UNYO マウスホイールでズーム
    • panel.GraphPanel?.java
      • 20,111,907行目辺り変更。
      • authorに名前を追加しようとしたが止める。恐れ多い。

2008/06/19

  • 『Java言語で学ぶデザインパターン入門』結城浩
    • 「多数のオブジェクトの間の調整を行わなければならないときこそ、Mediatorパターンの出番」
  • 『Java言語プログラミングレッスン下』結城浩
    • スーパー・サブクラス、abstract、オーバーライド・ロードなどなど、基本事項を今一度整理。お恥ずかしい限り。
    • 「Objectクラスはアダム」

2008/06/16

  • Spinの課題
    • 前回同様、jSpinのoption→commonのチェックは全外し。あんな実行結果読めるか!勝手に付けたカウンタ&printf文に期待。
  • 輪読
    • 1回目より読むスピードがUP。
    • 今日の原田氏、市川さんの範囲は重要だったはずなのに、疲れてて・・・。昨日サイドバックでオーバーラップしまくった後遺症か。

2008/06/15

  • 中野さんの卒論『LMNtalのグラフィック機能の設計と実装』
    • 修論の方を読む前に、予備知識になるかと思って読んでみた。
    • MVCへの対応付け
      • デザインパターンの勉強はしたこと無いが、考え方と必要性は理解できた(つもり)。
    • 3種類の膜 グラフィック・描画・レラティブ(relative)
      • 描画とレラティブの線引きはどこに?
      • ロック、アンロックもちょっと理解が微妙。。
    • つーかGlaphic LMNtalはどこに??

2008/06/13

  • UNYO 3G API
    • Application Program Interface
    • eclipse 3.1でJavadoc作るにはファイル→エクスポート→Javadoc
  • UNYOのノード検索機能
    • 努力あるのみ。小さなことからこつこつと。
    • まずは検索してノードを赤くすることから。

2008/06/11

  • ruth_aaron_pair.lmn
    • ルース=アーロンペアを見つける。
    • 機能の実現だけで、計算は遅い。O(n)〜O(n^2)。
    • ちなみにルース=アーロンペアとは、連続した整数のそれぞれの素因数の和が等しいペアのこと。
  • totient.lmn
    • トーティエント関数。
    • もともとO(n)だから割と速い。
    • ちなみにトーティエント関数とは、1〜nの自然数のうちnと互いに素な自然数の個数をφ(n)として与える関数。

2008/06/10

  • UNYOの検索機能
    • 調べてみようか・・・。
  • hpc勉強会
    • Javaできねー。

2008/06/09

  • LMNtal ソースコード
    • 読んでいくことにした。

2008/06/06

  • othello.lmn
    • 新UNYOならリンクの角度を設定とか出来るらしい
    • 必要の無いアトムを隠せる機能は欲しいかも
  • perfect.lmn, perfect_mersenne.lmn
    • ここまで計算量に差が出るとは。自分でもびっくり。
  • 班ゼミでネタ出し
    • あんなんでいいんだろうか??