Embedding CHR in LMNtal

Slides:



Advertisements
Similar presentations
P2P 技術を応用した 分散システムの排他制御機構の試作 九州工業大学 情報科学センター 山之上 卓.
Advertisements

人工知能 ( Artificial Intelligence ) 状態空間表現と探索 State Space Representation and Search Lecture 2 田中美栄子.
論理回路 第 11 回
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
シーケンス図の生成のための実行履歴圧縮手法
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
Chapter11-4(前半) 加藤健.
ラスタグラフィックス (raster graphics)
Shimatterシステムの 初期モデルの正規化
Web2.0とは? テクノロジー、コミュニティ、ビジネス
Ex7. Search for Vacuum Problem
知的インタフェース 例示によるプログラミング 予測インタフェース 制約インタフェース.
LMNtalからC言語への変換の設計と実装
Ex8. Search for Vacuum Problem(2)
データ構造とアルゴリズム 第10回 mallocとfree
Lightweight Language Weekend ls-lRシェル
LMNtalからC言語への変換の設計と実装
報告 (2006/9/6) 高橋 慧.
LMNtalからC言語への変換の設計と実装
プロセス制御工学 6.PID制御 京都大学  加納 学.
Observable modified Condition/Decision coverage
Hybrid ccにおけるアニメーションが破綻しないための処理系の改良
オペレーティングシステム 第12回 仮想記憶管理(3)
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
表現系工学特論 項書換え系(4) 完備化 1.語問題と等式証明 2.合流性とチャーチ・ロッサ性 3.完備化手続き.
論文紹介: A Second Look at Overloading
Solving Shape-Analysis Problems in Languages with Destructive Updating
サーバ負荷分散におけるOpenFlowを用いた省電力法
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
過負荷時の分散ソフトウェアの 性能劣化を改善する スケジューリングの提案
静的情報と動的情報を用いた プログラムスライス計算法
Googleのページランク 基本的な仕組は数学的 グラフの行列による表現 隣接行列(推移行列、遷移行列) 固有値と固有ベクトル W大学
プログラムの制御構造 選択・繰り返し.
最適化の方法 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第11章.
Prolog入門 ーIT中級者用ー.
22章以降 化学反応の速度 本章 ◎ 反応速度の定義とその測定方法の概観 ◎ 測定結果 ⇒ 反応速度は速度式という微分方程式で表現
論文紹介: Time Limited Model Checking
通信機構合わせた最適化をおこなう並列化ンパイラ
進化的計算手法の並列計算機への実装 三木 光範
東京工業大学 情報理工学研究科 数理・計算科学専攻 千葉研究室 栗田 亮
Talkプログラムのヒント 1 CS-B3 ネットワークプログラミング  &情報科学科実験I.
Structural operational semantics
東京工科大学 コンピュータサイエンス学部 亀田弘之
論文紹介 - Solving NP Complete Problems Using P Systems with Active Membranes 2004/10/20(Wed)
ファジィ制約充足問題への 連続領域の導入 Introducing continuous domains to
不確実データベースからの 負の相関ルールの抽出
任意数の制約階層化 2007/10/31 上田研究室 M2 西村 光弘.
Ex7. Search for Vacuum Problem
情報処理Ⅱ 第2回:2003年10月14日(火).
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
コンパイラ 2011年10月20日
Javaバーチャルマシンを利用した 動的依存関係解析手法の提案
文法と言語 ー文脈自由文法とLR構文解析ー
KL1 による並列プログラミング 早稲田大学理工学部情報学科 上田研究室 4 年 高木祐介
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
福井大学大学院工学研究科機械工学専攻 川谷 亮治
Type Systems and Programming Languages ; chapter 13 “Reference”
東京工科大学 コンピュータサイエンス学部 亀田弘之
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
PROGRAMMING IN HASKELL
The Personal Publication Reader: Illustrating Web Data Extraction, Personalization and Reasoning for the Semantic Web Robert Baumgartner*, Nicola Henze+,
コンパイラ 2012年10月11日
PROGRAMMING IN HASKELL
全体ミーティング(9/15) 村田雅之.
計算の理論 I プッシュダウンオートマトン 月曜3校時 大月 美佳 平成15年7月7日 佐賀大学知能情報システム学科.
FSE/ASE勉強会 A10:Software Maintenance II
Static Enforcement of Security with Types
情報処理Ⅱ 第8回:2003年12月9日(火).
Presentation transcript:

Embedding CHR in LMNtal 上田研究室 M2 原 耕司 2005/06/07(Wed) 1 / 20

Motivation しかし CHR は強力な制約処理系で応用例も多い Scheduling, Planning, Timetabling, Layout, Placement, Verification [Frü05] CHR は字面上は LMNtal で書ける しかし Propagation rule の実行で無限ループ 現状、実行はできていない。 CHR Interpreter on klic [加藤02] も未対応 2 / 20

Motivation (2) LMNtal にあって CHR にないもの 良い部分を組み合わせたい! 膜(実行制御、計算の局所化) 分散・並列実行 良い部分を組み合わせたい! 3 / 20

Our Goal LMNtal で CHR の Propagation rule を重複なく適用できるようにする。 CHR のアプリが LMNtal 処理系でも(高速に)動作し、 分散・並列実行ができる事を示す。 4 / 20

CHR Applications POPULAR [Mol94, FMB96, FrBr97] 時間割作成・教室割り当て [Abd00] Siemens R&D などが開発 時間割作成・教室割り当て [Abd00] University of Minich で運用 1000 講義/週 5 / 20

What is CHR Operational Semantics and Confluence of Constraint Propagation Rules[Abd97] 実装に近い立場からの操作的意味論 上記論文に沿って説明します 6 / 20

Syntax Simplification rule Propagation rule Simpagation rule Rulename @ H1, ..., Hi <=> G1, ..., Gj | B1, ..., Bk Propagation rule Rulename @ H1, ..., Hi ==> G1, ..., Gj | B1, ..., Bk Simpagation rule Rulename @ H1, ..., HL \ HL+1, ..., Hi <=> G1, ..., Gj | B1, ..., Bk 実はすべて Simplification rule に直せる 消す 残す 残す 消す 7 / 20

Declarative Semantics 宣言的意味 Theory and Practice of Constraint Handling Rules[Frü98]より 8 / 20

Operational Semantics 操作的意味 これらから成る States Computation steps ⊂ States × States Initial and final states State 9 / 20

States GS :ゴールストア ユーザ定義制約と組み込み制約が入る CU :ユーザ定義制約ストア CB :組み込み制約ストア Τ :トークン(propagation rule 関連)  Set of ルール名 @ 反応できるユーザ定義制約 ν :GS, CU, CB に出てくる変数 10 / 20

State : Computation steps State の正規化関数 11 / 20

T(C, CU) ( ) 直感的な説明: C∧CUの一部が propagation rule の左辺と unify するならその制約を返す ( ) 要らない? 12 / 20

Example Computation 13 / 20

Initial and Final States Initial state Final state これ以上遷移できなく、CB ∋ false →成功 →失敗 14 / 20

Example – Loop detect (edge は省略) ポイント: edgeデータは消費されない edge(A,B), edge(B,C), edge(C,D), edge(D,E), edge(E,A) ==> loop([A,B,C,D,E]). edge(1,4), edge(1,9), edge(2,8), edge(3,10), edge(5,1), edge(5,8), edge(7,4), edge(7,5), edge(7,10), edge(8,3), edge(8,9), edge(9,3), edge(10,7). loop([3,10,7,5,8]), loop([8,3,10,7,5]), loop([5,8,3,10,7]), loop([7,5,8,3,10]), loop([10,7,5,8,3]). ポイント: edgeデータは消費されない (edge は省略) 15 / 20

現状の LMNtalで書いてみる (edge は省略) edge(A0, B0), edge(B1, C0), edge(C1, D0), edge(D1, E0), edge(E1, A1) :- A0=A1, B0=B1, C0=C1, D0=D1, E0=E1 | edge(A0, B0), edge(B1, C0), edge(C1, D0), edge(D1, E0), edge(E1, A1), loop([A0, B0, C0, D0, E0]). edge(1,4), edge(1,9), edge(2,8), edge(3,10), edge(5,1), edge(5,8), edge(7,4), edge(7,5), edge(7,10), edge(8,3), edge(8,9), edge(9,3), edge(10,7). loop([3,10,7,5,8]), @601 ==> loop([3,10,7,5,8]), loop([3,10,7,5,8]), @601 loop([3,10,7,5,8]), loop([3,10,7,5,8]), loop([3,10,7,5,8]), @601 ==> ...... (edge は省略) 16 / 20

問題点 同じ変数(の組み合わせ)に対してpropagation rule が何回も適用される CHR の各種処理系では各自の工夫で 回避している マッチした構造の履歴を記録 chr.hs in HaskellCHR [Gregory J. Duck 04] 処理系依存 CHR on LMNtal でも考えなければならない 17 / 20

CHR の処理系いろいろ ? CHR module on SWI-Prolog HaskellCHR, ToyCHR on Prolog Tom Schrijvers HaskellCHR, ToyCHR on Prolog Gregory J. Duck CHR Interpreter on klic Norio Kato /home/n-kato/klic/chr/ on LMNtal Koji Hara ? 18 / 20

LMNtal の他の話題との関連 集合(not 多重集合)は必要? 優先度との関連は? π計算の ! との関連は? 19 / 20

今後の研究 CHR の論文や処理系のソースを読む 履歴管理のアルゴリズムを検討 実装 CHR の例題を LMNtal 化する ライブラリの整備が必要かも operator(100, xfx, ‘::’) など 実行速度、メモリ効率などを測定する 20 / 20