プログラミング言語論 第9回 論理型プログラミング言語 担当:犬塚.

Slides:



Advertisements
Similar presentations
3D Wand による 3 次 元形状計測. 3次元形状計測装置  3D Wand(テクノドリーム 21 社 製)  構成 3D Wand 本体: 7 つの発光ダイオー ドとラインレーザー発光装置が一体となっ た手に持って移動できる電池駆動の装置.
Advertisements

SPSSによるHosmer-Lemeshow検定について
確率と統計 - 確率2回目 - 平成 18 年 11 月 1 日. 2 今日の内容 1. 確率の復習(再整理) 2. 加法の定理 3. 乗法の定理へのイントロ.
レポート書き方. おしいレポート よく調べてある それぞれの、1文の言っていることは正 しい しかし、全体として、何が言いた いのかわからない 内容の重要だが、全体の構成も重 要である.
1 7.時間限定チューリングマシンと クラス P. 2 7 -1.入力サイズ チューリングマシンの入力記号 の長さ を 入力サイズという。 名称:合成数の問題 インスタンス:整数n 問:nは合成数か? 通常は、入力サイズとしてはもっとも短い表現での 長さが利用される。 例えば、次のような合成数の問題における入力サイズは、
7.n次の行列式   一般的な(n次の)行列式の定義には、数学的な概念がいろいろ必要である。まずそれらを順に見ていく。
9.線形写像.
概要 2009 年 10 月 23 日に、いて座に出現した X 線新星 (XTE J ) を、出現から消滅まで 全天 X 線監視装置 MAXI (マキシ)で観測したところ、 新種のブラックホール新星であることが判明した。 従来のブラックホールを、 多量のガスを一気に飲み込む「肉食系」と.
3.多項式計算アルゴリズム べき乗の計算 多項式の計算.
麻雀ゲーム 和島研究室 ソ 小林巧人
5.連立一次方程式.
相関.
1 情報量(2章). 2 物理的概念との対比1(入れ物と中 身) 塩水 塩 データ 情報 情報の量? 塩分の量! 情報の量は見た目ではわ からない。データと情報 は異なる概念。 塩分の量は見た目 ではわからない。 しかし、本質的な もの。
―本日の講義― ・平均と分散 -代表値 -ぱらつき(分散・標準偏差等) ・Excelによる演習
論理回路 第2回 今日の内容 前回の課題の説明 数の体系 – 数の表現 – 代表的な数 – 基数の変換 – 補数.
ノイズ. 雑音とも呼ばれる。(音でなくても、雑 音という) 入力データに含まれる、本来ほしくない 成分.
人工知能特論 II 第 6 回 二宮 崇 1. 今日の講義の予定 確率的文法 品詞解析 HMM 構文解析 PCFG 教科書 北研二 ( 著 ) 辻井潤一 ( 編 ) 言語と計算 4 確率的言語モデル 東大出版会 C. D. Manning & Hinrich Schütze “FOUNDATIONS.
広告付き価格サービ ス 小園一正. はじめに 世の中には様々な表現方法の広告があり ます。その中でも私たち学生にとって身 近にあるものを広告媒体として取り入れ られている。 価格サービス(無料配布のルーズリー フ)を体験したことにより興味を惹かれ るきっかけとなった。主な目的は、これ.
素数判定法 2011/6/20.
1章 行列と行列式.
本宮市立白岩小学校. 1 はじめに 2 家庭学習プログラム開発の視点 ① 先行学習(予習)を生かした 確かな学力を形成する授業づく り ② 家庭との連携を図った家庭学習の習慣化.
プログラミングⅠ( 1 組) 第 9 回
フーリエ級数. 一般的な波はこのように表せる a,b をフーリエ級数とい う 比率:
プログラミング入門2 第4回 式文 代入式 論理演算子 ループの脱出、スキップ 情報工学科 篠埜 功.
3.エントロピーの性質と各種情報量.
9.通信路符号化手法1 (誤り検出と誤り訂正の原理)
Excelによる積分.
1 6.低次の行列式とその応用. 2 行列式とは 行列式とは、正方行列の特徴を表す一つのスカ ラーである。すなわち、行列式は正方行列からスカ ラーに写す写像の一種とみなすこともできる。 正方行列 スカラー(実数) の行列に対する行列式を、 次の行列式という。 行列 の行列式を とも表す。 行列式と行列の記号.
計算のスピードアップ コンピュータでも、sin、cosの計算は大変です 足し算、引き算、掛け算、割り算は早いです
線形符号(10章).
1 0章 数学基礎. 2 ( 定義)集合 集合については、 3セメスタ開講の「離散数学」で詳しく扱う。 集合 大学では、高校より厳密に議論を行う。そのために、議論の 対象を明確にする必要がある。 ある “ もの ” (基本的な対象、概念)の集まりを、 集合という。 集合に含まれる “ もの ” を、集合の要素または元という。
10.PとNP完全問題との境界.
複素数.
4.プッシュダウンオートマトンと 文脈自由文法の等価性
1 0章 数学基礎. 2 ( 定義)集合 集合については、 3セメスタ開講の「離散数学」で詳しく扱う。 集合 大学では、高校より厳密に議論を行う。そのために、議論の 対象を明確にする必要がある。 ある “ もの ” (基本的な対象、概念)の集まりを、 集合という。 集合に含まれる “ もの ” を、集合の要素または元という。
人工知能特論II 第7回 二宮 崇.
信号測定. 正弦波 多くの場合正弦波は 0V の上下で振動する しかし、これでは AD 変換器に入れら れないので、オフ セットを調整して データを取った.
1 9.線形写像. 2 ここでは、行列の積によって、写像を 定義できることをみていく。 また、行列の積によって定義される写 像の性質を調べていく。
通信路(7章).
3.プッシュダウンオートマトンと 文脈自由文法
6.符号化法(6章).
ビット. 十進数と二進数 十進数  0から9までの数字を使って 0、1、2、3、4、5、6、7、8、9、 10、11、12 と数える 二進数  0と1を使って 0、1、10、11、100、101、11 0、111 と数える.
人工知能特論 II 第 4 回 二宮 崇 1. CCG (COMBINATORY CATEGORIAL GRAMMAR) 組合せ範疇文法 2 今日の講義の予定.
3.正方行列(単位行列、逆行列、対称行列、交代行列)
年度 情報数理学. 2 履修にあたって 2009 年度 大学院奇数セメスター(前期)開講 K336→ 大学院棟 D 416(次回から)教室: 時限: 火曜日3時限( 12:50 - 14:20 ) 担当 草苅良至 4/21( 火) 休講 → 補講 ?/? ? 時限 D416.
プログラミング演習B ML編 第3回 2010/6/15 (コミ) 2010/6/16 (情報・知能) 住井 ~sumii/class/proenb2010/ml3/
論理回路 第1回. 今日の内容 論理回路とは? 本講義の位置づけ,達成目標 講義スケジュールと内容 受講時の注意事項 成績の評価方法.
プログラミング言語論 第1回 イントロダクション 担当:犬塚. 講義内容と目的  プログラミング言語パラダイム  プログラミング言語の諸要素  プログラム理論  プログラムの意味論 講義の目的  プログラミング言語に関するアイデアを一通り習得する こと。
方程式を「算木」で 解いてみよう! 愛媛大学 教育学部 平田 浩一.
C言語応用 構造体.
3.多項式計算アルゴリズム べき乗の計算 多項式の計算.
Automatic Language Acquisition, an Interactive Approach † Robert J. Martin † 大西昇 ‡ 山村毅 † 名古屋大学 ‡ 愛知県立大学.
プログラミング言語論 第10回 Prolog入門 担当:犬塚.
プログラミング演習B ML編 第3回 2006/7/4 (通信コース) 2006/7/12 (情報コース) 住井 ~sumii/class/proenb2006/ml3/
JPN 312 (Fall 2007): Conversation and Composition 文句 ( もんく ) を言う.
HKS Analysis Log Jul 2006 Part1 D.Kawama. 第壱部 HKS Sieve Slit Analysis.
移動エージェントプログラムの 動作表示のためのアニメーション言 語 名古屋大学情報工学コース 坂部研究室 高岸 健.
1 プログラミング言語論 第13回 プログラムの意味論と検証 (2) 表示的意味論 担当:犬塚. 2 表示的意味論 denotational semantics  表示的意味論では、プログラムの要素とそれが 意味するものを対応付ける。 変数 式 文 A B … A+2 2B+C A:=A+2 if.
プログラミングⅠ( 2 組) 第 1 回 / pLB1.pptx.
8.任意のデータ構造 (グラフの表現とアルゴリズム)
プログラミング入門2 第3回 複合文、繰り返し 情報工学科 篠埜 功.
第14回 プログラムの意味論と検証(3) 不動点意味論 担当:犬塚
ことばとコンピュータ 2007 年度 1 学期 第 1 回. 2 ことばとコンピュータ 授業科目名:言語情報処理論 授業題目名:ことばとコンピュータ 履修コード: 5067 教室: 323 一学期開講 授業の進め方 – 基本的に講義中心ですすめ,時々コンピュー タを使う.
オセロの思考アルゴリズムについて 1103072 岩間 隆浩.
1 アルゴリズムの高速化. 2 アルゴリズムにおける 大幅な性能アップ 多項式時間アルゴリズム VS 対数時間アルゴリズム (最大公約数の問題) 指数時間アルゴリズム VS 多項式時間アルゴリズム (フィボナッチ数列を求める問題)
音の変化を視覚化する サウンドプレイヤーの作成
プログラミングの基礎知識 プログラミングの手順と重要概念 アルゴリズム. プログラミングの手順 コーディング エディタなどでコードを記述 コンパイル・インタープリタ 実行可能な形に翻訳 デバッグ(虫取り、不具合の調整) 完成!
11万km上空のかぐやから見た地球. デジタル信号処理 Digital Signal Processing 2010 年度春学期 Spring Semester, 2010 担当者: 栗濱 忠司( Professor ) 第3週第3週.
IIR 輪講復習 #18 Matrix decompositions and latent semantic indexing.
英語勉強会 名手⇒詫間 2015/10/22. 原文 This study says acquiring motor skills support system. There is how to acquire moor skills that coach advises learner. Motor.
Presentation transcript:

プログラミング言語論 第9回 論理型プログラミング言語 担当:犬塚

今日の講義 論理型プログラミング言語パラダイム 構成的プログラミング 論理プログラミング 構成的数学、直観主義論理 導出原理、反駁 ホーン節、SLD導出 論理プログラム

論理とプログラミング言語の関連 プログラムの意味論、プログラムの検証 構成的プログラミング 論理プログラミング プログラムの意味や正しさを数理論理的手法で確かめる。 構成的プログラミング プログラムの仕様の満足できることを証明 証明=プログラム 論理プログラミング 論理式によってプログラムを記述するプログラミング言語パラダイム 証明=計算

構成的論理 構成的数学、有限の立場、直観主義論理などと呼ばれる立場の論理。 Brouwerの直観主義論理 排中律:P∨¬P、2重否定の法則:¬¬P⇔Pを認めない。 命題の証明のためには、具体的にその存在を組み立てないといけないとする立場。 計算機数学は、具体的に計算をするための数学なので、この立場は相性が良い。

直観主義論理 P∨Q が真であるには、PかQのどちらが真か明示しないといけない。 ∃x.P(x) が真であるには、P(a)が真となるaを明示しないといけない。 例: 命題: x y が有理数となる無理数 x, y が存在する。   証明(直観主義の立場では×) x = y =   とする。このとき x y は有理数か無理数のどちらか。 もし、これが有理数であるなら、これが求めるもの。     もし無理数なら x= 、y=  とすると x y=      で、 有理数となりこれが求めるもの。    いずれにしろ x とyが無理数で x y は有理数となるものがある。

構成的論理 構成的数学、有限の立場、直観主義論理などと呼ばれる立場の論理。 命題の証明のためには、具体的にその存在を組み立てないといけないとする立場。 計算機数学は、具体的に計算をするための数学なので、この立場は相性が良い。

構成的プログラミング 直感主義論理に基づいて、説明つきのプログラム、あるいは、プログラムの自動生成を行うプログラミングパラダイム。 プログラムの仕様を形式的(論理式などで)に与える。 その仕様を満足することができることを、直感主義の立場で証明する。 その証明がプログラム プログラムは証明であり、その仕様が既に与えられている。

論理プログラミング 論理表現を用いたプログラミング言語パラダイム 手続きとしてのプログラム(=howの知識)ではなく、それが何であるのは(=whatの知識)でプログラムする。 プログラムの満たすべき条件を論理式で記述する。 満たす対象の存在の自動証明を行う。 →証明によって計算が行われる。 処理系=自動証明記

論理プログラムの例 fact(1,1). fact(X,Y) ← X1 is X-1, fact(X1,Y1),Y is Y1*X. father(X,Y) ← parent(X,Y), male(X). brother(X,Y) ← parent(Z,X), parent(Z,Y), male(X).

論理プログラミングと人工知能 論理プログラミングは人工知能と相性がよい。 第5世代コンピュータプロジェクト(ICOT) 人工知能プログラミング=「知識+汎用エンジン」 論理プログラミング =「whatの知識(論理式)+自動証明器」 他のAIプログラミング 状態空間モデル+探索エンジン 制約条件+プランナー データ+学習エンジン 第5世代コンピュータプロジェクト(ICOT)

三段論法(MP) P P→Q Q P→Q Q→R P→R P ¬P∨Q Q ¬P∨Q ¬Q∨R ¬P∨R  P ¬P∨Q    Q ¬P∨Q ¬Q∨R ¬P∨R MPや類似の推論形式は、正負のリテラルを打ち消す形式となっている。

節形式 リテラル(literal)=命題記号またはその否定 節(clause)=リテラルを選言(論理和) 例 P∨Q,¬P∨Q∨¬R  例 P∨Q,¬P∨Q∨¬R 節の連言(論理積)は、即ち、和積標準形である。 節をリテラルの集合として扱うことが多い。 和積標準形を(論理積を省略して)節の集合で表わす=節集合。 どんな論理式も、節集合に変形できる。

例 例 論理式 R∧{P∨¬(Q→R)}を節の連言に直す。 R∧{P∨¬(Q→R)} =R∧{P∨¬(¬Q∨R)} 例 論理式 R∧{P∨¬(Q→R)}を節の連言に直す。  R∧{P∨¬(Q→R)}  =R∧{P∨¬(¬Q∨R)}  =R∧{P∨(Q∧¬R)}  =R∧(P∨Q)∧(P∨¬R)  ={R,P∨Q,P∨¬R}  :節集合として扱う。  ={{R},{P,Q},{P,¬R}} :節もリテラルの集合。

(命題論理版の)導出原理 MPと同様、正負のリテラルを打ち消しあう推論の一般形を導出(融合)(resolution)という。 導出は妥当な推論であるという原理を導出(融合)原理(resulution principle)という。 導出原理 2つの節 C1,C2と正負のリテラルが l ∈ C1、¬l ∈ C2に対し、節 C1∪C2-{l,¬l}は C1, C2 から論理的に帰結する。   例 {{R},{P,Q},{P,¬R}}から、Pを得られる。

導出 節 C1 節 C2 ・・・∨ P ∨ ・・・ ・・・∨ ¬P ∨ ・・・ ・・・ C1 ∪ C2 - {P, ¬P}

反駁 導出を用いた背理法証明を反駁(refutation)という。 既知の事実(=前提=節集合)に、証明したい結論の否定を加え、導出を繰り返す。 矛盾が得られることを確認し、結論が正しいことを示す。 前提 結論の否定 節集合 2つの節を選択 P ¬P □ (空節  空節以外  =矛盾)   の節 成功

導出原理を用いた反駁の例 節1= ¬P∨Q∨R 節2= P 節3= ¬Q Q∨R 節4= ¬R R □ 前提1: くじに当たれば、自転車か旅行券をもらえる。 前提2: くじに当たった。 前提3: 自転車をもらっていない。 結 論: 旅行券をもらった。 P=くじに当たった。 Q=自転車をもらった(もらう)。 R=旅行券をもらった(もらう) 。 前提1 =P→(Q∨R)      = ¬P∨Q∨R 前提2 =P 前提3 =¬Q 結 論 =R 節1= ¬P∨Q∨R 節2= P 節3= ¬Q Q∨R 節4= ¬R R □ 空節=矛盾

述語論理における節 述語論理のリテラル =原子論理式(述語記号+項)か、その否定 述語論理の節 ∀x1...∀xn. (リテラルの選言)   リテラルに現れる変数記号が始めの部分ですべて束縛。 すべての節が全称限定されているので、∀を省略。  どんな述語論理式も恒偽性を保存したまま、節の連言の形式に変形することができる。  (反駁をつかって証明する限りは、恒偽性=矛盾を導くことができるという性質=を保証できれば十分)

(述語論理版)導出原理 次の2つの原理を組合わせる。 2つの節に正負のリテラルがあるとき、これを打ち消す。 l ∈ C1、¬l ∈ C2のとき節 C1∪C2-{l,¬l}を得る。 ∀x.P から、P中のxに任意の項を代入した式を得る。 変数 x1, x2, … を項 t1, t2, …で置換える代入(置換)をθ={ t1/x1, t2/x2 ,… }と書く。 導出原理 2つの節 C1,C2とリテラルが l1 ∈ C1、¬l2 ∈ C2に対し、 置換θがl1θ= l2θとするとき、 節 C1θ∪C2θ-{l1θ,¬ l2θ}は C1, C2 から論理的に帰結する。

単一化、最汎単一化 変数 x1, x2, … を項 t1, t2, …で置換える代入(置換)を θ={ t1/x1, t2/x2 ,… }と書く。 2つのリテラルが l1 ∈ C1、¬l2 ∈ C2に対し、l1θ= l2θとなる代入(置換)を、単一化置換(単一化子;ユニファイア)という。 l1θ= (l1ρ)σのように、θを2つの置換の合成で表せるとき、ρはθより一般的であるという。 最も一般的な単一化子を、最汎単一化子(mgu; most general unifier)という。

(述語論理版)導出 ・・・∨ l1 ∨ ・・・ ・・・∨ ¬ l2 ∨ ・・・ l2 = p(t1,…,tn) 節 C1 節 C2 ・・・∨ l1 ∨ ・・・ ・・・∨ ¬ l2 ∨ ・・・ l2 = p(t1,…,tn) l1 = p(s1,…,sn) θ l1θ = l2θとなるmgu ・・・ C1 θ∪ C2 θ- {l1θ,¬l2θ}

述語論理版の反駁 論理式を節集合(全称限定された節集合)で表す。 節集合から、2つの節を取り出す。 この2つに導出原理を適用する。 各節から、1つづつのリテラルに注目する。 そのリテラルにmguがないか探し、あればそれを用いて導出を適用する。 空節が導かれれば成功、そうでなければ導出を繰り返す。

節形式 (clausal form) 節中の正のリテラル/負のリテラルに分けて書くと次の通り。  (P1∨・・・∨Pn) ∨(¬Q1∨・・・∨ ¬ Qm) これは、次の通り変形できる。  (P1∨・・・∨Pn) ∨¬(Q1∧・・・∧ Qm)  = P1∨・・・∨Pn ←Q1∧・・・∧ Qm これをさらに省略して次のように書く。  P1 ,・・・, Pn ←Q1,・・・,Qm この形式を節形式(clausal form)という。 節形式では、←の左辺の「,」は選言、右辺の「,」は連言。

ホーン節 節形式、 P1 ,・・・, Pn ←Q1,・・・,Qm において n≦1のとき、ホーン節(Horn clause) という。 つまりホーン節は次の形式。 P ←Q1,・・・,Qm  P← ←Q1,・・・,Qm ←

ホーン節 ホーン節は次の4形式に分けられる。 P ←Q1,・・・,Qm P← ←Q1,・・・,Qm ← 「・・・ならば・・・である」という形。規則(ルール)節という。 P← 無条件に「・・・である」という形。事実節という。 ←Q1,・・・,Qm 「・・・ならば矛盾である」、 「・・・ということはない」という形。 結論の否定から矛盾を導く(反駁)で用いる。 「・・・ですか?」と質問しているのと同じ。ゴール節という。 ← 「矛盾」を表す。矛盾節、空節という。

SLD導出 プログラミング言語Prologでは、ホーン節に限定して、反駁用いる。 さらに、導出を次のとおり限定: 導出の片親を、結論の否定=ゴール節とする。 この導出によって得られた節次のゴール節とする。 導出に用いるリテラルを、ゴール節の最左リテラルとする。 導出の結果、もう片親から引き継ぐリテラルを、左側に挿入する。

SLD導出 ゴール節 ←A, ○, …,○. A’←△,…, △. 新たなゴール節 ←△,…, △, ○, …,○. ゴール節は、プログラムの呼出しと見なせる。 ゴール節の各リテラルは、副プログラムの呼び出し。 他のルール節は、副プログラムそのもの。 SLD導出は、手続き的なプログラム実行と類似。

まとめ 論理に基づいた2つのプログラミングパラダイム。 構成的プログラミング 論理プログラミング 構成的数学に基づいたプログラミングの概念。  (研究レベルであって、実用にはなっていない) 論理プログラミング 導出原理と反駁に基づいたプログラミング。 Prologの原理。 手続き的な解釈も可能であり、実用的なプログラミングも可能。